#define __STDC__ 1
#define __STDC_VERSION__ 201710L
#define __STDC_UTF_16__ 1
#define __STDC_UTF_32__ 1
#define __STDC_HOSTED__ 1
#define __GNUC__ 11
#define __GNUC_MINOR__ 2
#define __GNUC_PATCHLEVEL__ 0
#define __VERSION__ "11.2.0"
#define __ATOMIC_RELAXED 0
#define __ATOMIC_SEQ_CST 5
#define __ATOMIC_ACQUIRE 2
#define __ATOMIC_RELEASE 3
#define __ATOMIC_ACQ_REL 4
#define __ATOMIC_CONSUME 1
#define __OPTIMIZE__ 1
#define __FINITE_MATH_ONLY__ 0
#define __SIZEOF_INT__ 4
#define __SIZEOF_LONG__ 4
#define __SIZEOF_LONG_LONG__ 8
#define __SIZEOF_SHORT__ 2
#define __SIZEOF_FLOAT__ 4
#define __SIZEOF_DOUBLE__ 8
#define __SIZEOF_LONG_DOUBLE__ 12
#define __SIZEOF_SIZE_T__ 4
#define __CHAR_BIT__ 8
#define __BIGGEST_ALIGNMENT__ 16
#define __ORDER_LITTLE_ENDIAN__ 1234
#define __ORDER_BIG_ENDIAN__ 4321
#define __ORDER_PDP_ENDIAN__ 3412
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
#define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__
#define __SIZEOF_POINTER__ 4
#define __GNUC_EXECUTION_CHARSET_NAME "UTF-8"
#define __GNUC_WIDE_EXECUTION_CHARSET_NAME "UTF-16LE"
#define __SIZE_TYPE__ unsigned int
#define __PTRDIFF_TYPE__ int
#define __WCHAR_TYPE__ short unsigned int
#define __WINT_TYPE__ short unsigned int
#define __INTMAX_TYPE__ long long int
#define __UINTMAX_TYPE__ long long unsigned int
#define __CHAR16_TYPE__ short unsigned int
#define __CHAR32_TYPE__ unsigned int
#define __SIG_ATOMIC_TYPE__ int
#define __INT8_TYPE__ signed char
#define __INT16_TYPE__ short int
#define __INT32_TYPE__ int
#define __INT64_TYPE__ long long int
#define __UINT8_TYPE__ unsigned char
#define __UINT16_TYPE__ short unsigned int
#define __UINT32_TYPE__ unsigned int
#define __UINT64_TYPE__ long long unsigned int
#define __INT_LEAST8_TYPE__ signed char
#define __INT_LEAST16_TYPE__ short int
#define __INT_LEAST32_TYPE__ int
#define __INT_LEAST64_TYPE__ long long int
#define __UINT_LEAST8_TYPE__ unsigned char
#define __UINT_LEAST16_TYPE__ short unsigned int
#define __UINT_LEAST32_TYPE__ unsigned int
#define __UINT_LEAST64_TYPE__ long long unsigned int
#define __INT_FAST8_TYPE__ signed char
#define __INT_FAST16_TYPE__ short int
#define __INT_FAST32_TYPE__ int
#define __INT_FAST64_TYPE__ long long int
#define __UINT_FAST8_TYPE__ unsigned char
#define __UINT_FAST16_TYPE__ short unsigned int
#define __UINT_FAST32_TYPE__ unsigned int
#define __UINT_FAST64_TYPE__ long long unsigned int
#define __INTPTR_TYPE__ int
#define __UINTPTR_TYPE__ unsigned int
#define __GXX_ABI_VERSION 1016
#define __SCHAR_MAX__ 0x7f
#define __SHRT_MAX__ 0x7fff
#define __INT_MAX__ 0x7fffffff
#define __LONG_MAX__ 0x7fffffffL
#define __LONG_LONG_MAX__ 0x7fffffffffffffffLL
#define __WCHAR_MAX__ 0xffff
#define __WCHAR_MIN__ 0
#define __WINT_MAX__ 0xffff
#define __WINT_MIN__ 0
#define __PTRDIFF_MAX__ 0x7fffffff
#define __SIZE_MAX__ 0xffffffffU
#define __SCHAR_WIDTH__ 8
#define __SHRT_WIDTH__ 16
#define __INT_WIDTH__ 32
#define __LONG_WIDTH__ 32
#define __LONG_LONG_WIDTH__ 64
#define __WCHAR_WIDTH__ 16
#define __WINT_WIDTH__ 16
#define __PTRDIFF_WIDTH__ 32
#define __SIZE_WIDTH__ 32
#define __INTMAX_MAX__ 0x7fffffffffffffffLL
#define __INTMAX_C(c) c ## LL
#define __UINTMAX_MAX__ 0xffffffffffffffffULL
#define __UINTMAX_C(c) c ## ULL
#define __INTMAX_WIDTH__ 64
#define __SIG_ATOMIC_MAX__ 0x7fffffff
#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
#define __SIG_ATOMIC_WIDTH__ 32
#define __INT8_MAX__ 0x7f
#define __INT16_MAX__ 0x7fff
#define __INT32_MAX__ 0x7fffffff
#define __INT64_MAX__ 0x7fffffffffffffffLL
#define __UINT8_MAX__ 0xff
#define __UINT16_MAX__ 0xffff
#define __UINT32_MAX__ 0xffffffffU
#define __UINT64_MAX__ 0xffffffffffffffffULL
#define __INT_LEAST8_MAX__ 0x7f
#define __INT8_C(c) c
#define __INT_LEAST8_WIDTH__ 8
#define __INT_LEAST16_MAX__ 0x7fff
#define __INT16_C(c) c
#define __INT_LEAST16_WIDTH__ 16
#define __INT_LEAST32_MAX__ 0x7fffffff
#define __INT32_C(c) c
#define __INT_LEAST32_WIDTH__ 32
#define __INT_LEAST64_MAX__ 0x7fffffffffffffffLL
#define __INT64_C(c) c ## LL
#define __INT_LEAST64_WIDTH__ 64
#define __UINT_LEAST8_MAX__ 0xff
#define __UINT8_C(c) c
#define __UINT_LEAST16_MAX__ 0xffff
#define __UINT16_C(c) c
#define __UINT_LEAST32_MAX__ 0xffffffffU
#define __UINT32_C(c) c ## U
#define __UINT_LEAST64_MAX__ 0xffffffffffffffffULL
#define __UINT64_C(c) c ## ULL
#define __INT_FAST8_MAX__ 0x7f
#define __INT_FAST8_WIDTH__ 8
#define __INT_FAST16_MAX__ 0x7fff
#define __INT_FAST16_WIDTH__ 16
#define __INT_FAST32_MAX__ 0x7fffffff
#define __INT_FAST32_WIDTH__ 32
#define __INT_FAST64_MAX__ 0x7fffffffffffffffLL
#define __INT_FAST64_WIDTH__ 64
#define __UINT_FAST8_MAX__ 0xff
#define __UINT_FAST16_MAX__ 0xffff
#define __UINT_FAST32_MAX__ 0xffffffffU
#define __UINT_FAST64_MAX__ 0xffffffffffffffffULL
#define __INTPTR_MAX__ 0x7fffffff
#define __INTPTR_WIDTH__ 32
#define __UINTPTR_MAX__ 0xffffffffU
#define __GCC_IEC_559 2
#define __GCC_IEC_559_COMPLEX 2
#define __FLT_EVAL_METHOD__ 2
#define __FLT_EVAL_METHOD_TS_18661_3__ 2
#define __DEC_EVAL_METHOD__ 2
#define __FLT_RADIX__ 2
#define __FLT_MANT_DIG__ 24
#define __FLT_DIG__ 6
#define __FLT_MIN_EXP__ (-125)
#define __FLT_MIN_10_EXP__ (-37)
#define __FLT_MAX_EXP__ 128
#define __FLT_MAX_10_EXP__ 38
#define __FLT_DECIMAL_DIG__ 9
#define __FLT_MAX__ 3.40282346638528859811704183484516925e+38F
#define __FLT_NORM_MAX__ 3.40282346638528859811704183484516925e+38F
#define __FLT_MIN__ 1.17549435082228750796873653722224568e-38F
#define __FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F
#define __FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F
#define __FLT_HAS_DENORM__ 1
#define __FLT_HAS_INFINITY__ 1
#define __FLT_HAS_QUIET_NAN__ 1
#define __FLT_IS_IEC_60559__ 2
#define __DBL_MANT_DIG__ 53
#define __DBL_DIG__ 15
#define __DBL_MIN_EXP__ (-1021)
#define __DBL_MIN_10_EXP__ (-307)
#define __DBL_MAX_EXP__ 1024
#define __DBL_MAX_10_EXP__ 308
#define __DBL_DECIMAL_DIG__ 17
#define __DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L)
#define __DBL_NORM_MAX__ ((double)1.79769313486231570814527423731704357e+308L)
#define __DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L)
#define __DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L)
#define __DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L)
#define __DBL_HAS_DENORM__ 1
#define __DBL_HAS_INFINITY__ 1
#define __DBL_HAS_QUIET_NAN__ 1
#define __DBL_IS_IEC_60559__ 2
#define __LDBL_MANT_DIG__ 64
#define __LDBL_DIG__ 18
#define __LDBL_MIN_EXP__ (-16381)
#define __LDBL_MIN_10_EXP__ (-4931)
#define __LDBL_MAX_EXP__ 16384
#define __LDBL_MAX_10_EXP__ 4932
#define __DECIMAL_DIG__ 21
#define __LDBL_DECIMAL_DIG__ 21
#define __LDBL_MAX__ 1.18973149535723176502126385303097021e+4932L
#define __LDBL_NORM_MAX__ 1.18973149535723176502126385303097021e+4932L
#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L
#define __LDBL_EPSILON__ 1.08420217248550443400745280086994171e-19L
#define __LDBL_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951L
#define __LDBL_HAS_DENORM__ 1
#define __LDBL_HAS_INFINITY__ 1
#define __LDBL_HAS_QUIET_NAN__ 1
#define __LDBL_IS_IEC_60559__ 2
#define __FLT32_MANT_DIG__ 24
#define __FLT32_DIG__ 6
#define __FLT32_MIN_EXP__ (-125)
#define __FLT32_MIN_10_EXP__ (-37)
#define __FLT32_MAX_EXP__ 128
#define __FLT32_MAX_10_EXP__ 38
#define __FLT32_DECIMAL_DIG__ 9
#define __FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32
#define __FLT32_NORM_MAX__ 3.40282346638528859811704183484516925e+38F32
#define __FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32
#define __FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32
#define __FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32
#define __FLT32_HAS_DENORM__ 1
#define __FLT32_HAS_INFINITY__ 1
#define __FLT32_HAS_QUIET_NAN__ 1
#define __FLT32_IS_IEC_60559__ 2
#define __FLT64_MANT_DIG__ 53
#define __FLT64_DIG__ 15
#define __FLT64_MIN_EXP__ (-1021)
#define __FLT64_MIN_10_EXP__ (-307)
#define __FLT64_MAX_EXP__ 1024
#define __FLT64_MAX_10_EXP__ 308
#define __FLT64_DECIMAL_DIG__ 17
#define __FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64
#define __FLT64_NORM_MAX__ 1.79769313486231570814527423731704357e+308F64
#define __FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64
#define __FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64
#define __FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64
#define __FLT64_HAS_DENORM__ 1
#define __FLT64_HAS_INFINITY__ 1
#define __FLT64_HAS_QUIET_NAN__ 1
#define __FLT64_IS_IEC_60559__ 2
#define __FLT128_MANT_DIG__ 113
#define __FLT128_DIG__ 33
#define __FLT128_MIN_EXP__ (-16381)
#define __FLT128_MIN_10_EXP__ (-4931)
#define __FLT128_MAX_EXP__ 16384
#define __FLT128_MAX_10_EXP__ 4932
#define __FLT128_DECIMAL_DIG__ 36
#define __FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128
#define __FLT128_NORM_MAX__ 1.18973149535723176508575932662800702e+4932F128
#define __FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128
#define __FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128
#define __FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128
#define __FLT128_HAS_DENORM__ 1
#define __FLT128_HAS_INFINITY__ 1
#define __FLT128_HAS_QUIET_NAN__ 1
#define __FLT128_IS_IEC_60559__ 2
#define __FLT32X_MANT_DIG__ 53
#define __FLT32X_DIG__ 15
#define __FLT32X_MIN_EXP__ (-1021)
#define __FLT32X_MIN_10_EXP__ (-307)
#define __FLT32X_MAX_EXP__ 1024
#define __FLT32X_MAX_10_EXP__ 308
#define __FLT32X_DECIMAL_DIG__ 17
#define __FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x
#define __FLT32X_NORM_MAX__ 1.79769313486231570814527423731704357e+308F32x
#define __FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x
#define __FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x
#define __FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x
#define __FLT32X_HAS_DENORM__ 1
#define __FLT32X_HAS_INFINITY__ 1
#define __FLT32X_HAS_QUIET_NAN__ 1
#define __FLT32X_IS_IEC_60559__ 2
#define __FLT64X_MANT_DIG__ 64
#define __FLT64X_DIG__ 18
#define __FLT64X_MIN_EXP__ (-16381)
#define __FLT64X_MIN_10_EXP__ (-4931)
#define __FLT64X_MAX_EXP__ 16384
#define __FLT64X_MAX_10_EXP__ 4932
#define __FLT64X_DECIMAL_DIG__ 21
#define __FLT64X_MAX__ 1.18973149535723176502126385303097021e+4932F64x
#define __FLT64X_NORM_MAX__ 1.18973149535723176502126385303097021e+4932F64x
#define __FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x
#define __FLT64X_EPSILON__ 1.08420217248550443400745280086994171e-19F64x
#define __FLT64X_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951F64x
#define __FLT64X_HAS_DENORM__ 1
#define __FLT64X_HAS_INFINITY__ 1
#define __FLT64X_HAS_QUIET_NAN__ 1
#define __FLT64X_IS_IEC_60559__ 2
#define __DEC32_MANT_DIG__ 7
#define __DEC32_MIN_EXP__ (-94)
#define __DEC32_MAX_EXP__ 97
#define __DEC32_MIN__ 1E-95DF
#define __DEC32_MAX__ 9.999999E96DF
#define __DEC32_EPSILON__ 1E-6DF
#define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF
#define __DEC64_MANT_DIG__ 16
#define __DEC64_MIN_EXP__ (-382)
#define __DEC64_MAX_EXP__ 385
#define __DEC64_MIN__ 1E-383DD
#define __DEC64_MAX__ 9.999999999999999E384DD
#define __DEC64_EPSILON__ 1E-15DD
#define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD
#define __DEC128_MANT_DIG__ 34
#define __DEC128_MIN_EXP__ (-6142)
#define __DEC128_MAX_EXP__ 6145
#define __DEC128_MIN__ 1E-6143DL
#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
#define __DEC128_EPSILON__ 1E-33DL
#define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL
#define __REGISTER_PREFIX__ 
#define __USER_LABEL_PREFIX__ _
#define __GNUC_STDC_INLINE__ 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 1
#define __GCC_ATOMIC_BOOL_LOCK_FREE 2
#define __GCC_ATOMIC_CHAR_LOCK_FREE 2
#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
#define __GCC_ATOMIC_SHORT_LOCK_FREE 2
#define __GCC_ATOMIC_INT_LOCK_FREE 2
#define __GCC_ATOMIC_LONG_LOCK_FREE 2
#define __GCC_ATOMIC_LLONG_LOCK_FREE 2
#define __GCC_ATOMIC_TEST_AND_SET_TRUEVAL 1
#define __GCC_ATOMIC_POINTER_LOCK_FREE 2
#define __HAVE_SPECULATION_SAFE_VALUE 1
#define __GCC_HAVE_DWARF2_CFI_ASM 1
#define __PRAGMA_REDEFINE_EXTNAME 1
#define __SSP_STRONG__ 3
#define __SIZEOF_WCHAR_T__ 2
#define __SIZEOF_WINT_T__ 2
#define __SIZEOF_PTRDIFF_T__ 4
#define __i386 1
#define __i386__ 1
#define i386 1
#define _ILP32 1
#define __ILP32__ 1
#define __SIZEOF_FLOAT80__ 12
#define __SIZEOF_FLOAT128__ 16
#define __ATOMIC_HLE_ACQUIRE 65536
#define __ATOMIC_HLE_RELEASE 131072
#define __GCC_ASM_FLAG_OUTPUTS__ 1
#define __i686 1
#define __i686__ 1
#define __pentiumpro 1
#define __pentiumpro__ 1
#define __code_model_32__ 1
#define __LAHF_SAHF__ 1
#define __SEG_FS 1
#define __SEG_GS 1
#define _X86_ 1
#define __stdcall __attribute__((__stdcall__))
#define __fastcall __attribute__((__fastcall__))
#define __thiscall __attribute__((__thiscall__))
#define __cdecl __attribute__((__cdecl__))
#define _stdcall __attribute__((__stdcall__))
#define _fastcall __attribute__((__fastcall__))
#define _thiscall __attribute__((__thiscall__))
#define _cdecl __attribute__((__cdecl__))
#define __GXX_MERGED_TYPEINFO_NAMES 0
#define __GXX_TYPEINFO_EQUALITY_INLINE 0
#define __MSVCRT__ 1
#define __MINGW32__ 1
#define _WIN32 1
#define __WIN32 1
#define __WIN32__ 1
#define WIN32 1
#define __WINNT 1
#define __WINNT__ 1
#define WINNT 1
#define _INTEGRAL_MAX_BITS 64
#define __declspec(x) __attribute__((x))
#define __DECIMAL_BID_FORMAT__ 1
#define _REENTRANT 1
#define MJIT_HEADER 1
#define RUBY_EXPORT 1
#define CANONICALIZATION_FOR_MATHN 1
#define __USE_MINGW_ANSI_STDIO 1
#define FD_SETSIZE 2048
#define _WIN32_WINNT 0x0600
#define __MINGW_USE_VC2005_COMPAT 1
#define RUBY_INTERNAL_H 1
#define RUBY_H 1
#define HAVE_RUBY_DEFINES_H 1
#define HAVE_RUBY_ENCODING_H 1
#define HAVE_RUBY_INTERN_H 1
#define HAVE_RUBY_IO_H 1
#define HAVE_RUBY_MISSING_H 1
#define HAVE_RUBY_ONIGURUMA_H 1
#define HAVE_RUBY_RE_H 1
#define HAVE_RUBY_REGEX_H 1
#define HAVE_RUBY_RUBY_H 1
#define HAVE_RUBY_ST_H 1
#define HAVE_RUBY_THREAD_H 1
#define HAVE_RUBY_UTIL_H 1
#define HAVE_RUBY_VERSION_H 1
#define HAVE_RUBY_VM_H 1
#define HAVE_RUBY_WIN32_H 1
#define RUBY_RUBY_H 1
#define INCLUDE_RUBY_CONFIG_H 1
#define RUBY_MSVCRT_VERSION 60
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_UNISTD_H 1
#define __EXTENSIONS__ 1
#define _ALL_SOURCE 1
#define _GNU_SOURCE 1
#define _POSIX_PTHREAD_SEMANTICS 1
#define _TANDEM_SOURCE 1
#define RUBY_SYMBOL_EXPORT_BEGIN _Pragma("GCC visibility push(default)")
#define RUBY_SYMBOL_EXPORT_END _Pragma("GCC visibility pop")
#define HAVE_STMT_AND_DECL_IN_EXPR 1
#define HAVE_TYPE_NET_LUID 1
#define HAVE__GMTIME64_S 1
#define HAVE__WFREOPEN_S 1
#define HAVE_DIRENT_H 1
#define HAVE__BOOL 1
#define HAVE_STDBOOL_H 1
#define HAVE_DIRECT_H 1
#define HAVE_FCNTL_H 1
#define HAVE_FLOAT_H 1
#define HAVE_IEEEFP_H 1
#define HAVE_LIMITS_H 1
#define HAVE_LOCALE_H 1
#define HAVE_MALLOC_H 1
#define HAVE_PROCESS_H 1
#define HAVE_SETJMPEX_H 1
#define HAVE_STDALIGN_H 1
#define HAVE_SYS_FCNTL_H 1
#define HAVE_SYS_FILE_H 1
#define HAVE_SYS_UTIME_H 1
#define HAVE_TIME_H 1
#define HAVE_GMP_H 1
#define HAVE_LIBGMP 1
#define _FILE_OFFSET_BITS 64
#define HAVE_TYPEOF 1
#define HAVE_LONG_LONG 1
#define HAVE_OFF_T 1
#define SIZEOF_INT 4
#define SIZEOF_SHORT 2
#define SIZEOF_LONG 4
#define SIZEOF_LONG_LONG 8
#define SIZEOF___INT64 8
#define SIZEOF___INT128 0
#define SIZEOF_OFF_T 8
#define SIZEOF_VOIDP 4
#define SIZEOF_FLOAT 4
#define SIZEOF_DOUBLE 8
#define SIZEOF_TIME_T 8
#define SIZEOF_CLOCK_T 4
#define PACKED_STRUCT(x) x __attribute__((packed))
#define USE_UNALIGNED_MEMBER_ACCESS 1
#define PRI_LL_PREFIX "ll"
#define HAVE_PID_T 1
#define rb_pid_t pid_t
#define SIGNEDNESS_OF_PID_T -1
#define PIDT2NUM(v) INT2NUM(v)
#define NUM2PIDT(v) NUM2INT(v)
#define PRI_PIDT_PREFIX PRI_INT_PREFIX
#define rb_uid_t int
#define SIGNEDNESS_OF_UID_T -1
#define UIDT2NUM(v) INT2NUM(v)
#define NUM2UIDT(v) NUM2INT(v)
#define PRI_UIDT_PREFIX PRI_INT_PREFIX
#define rb_gid_t int
#define SIGNEDNESS_OF_GID_T -1
#define GIDT2NUM(v) INT2NUM(v)
#define NUM2GIDT(v) NUM2INT(v)
#define PRI_GIDT_PREFIX PRI_INT_PREFIX
#define HAVE_TIME_T 1
#define rb_time_t time_t
#define SIGNEDNESS_OF_TIME_T -1
#define TIMET2NUM(v) LL2NUM(v)
#define NUM2TIMET(v) NUM2LL(v)
#define PRI_TIMET_PREFIX PRI_LL_PREFIX
#define HAVE_DEV_T 1
#define rb_dev_t dev_t
#define SIGNEDNESS_OF_DEV_T +1
#define DEVT2NUM(v) UINT2NUM(v)
#define NUM2DEVT(v) NUM2UINT(v)
#define PRI_DEVT_PREFIX PRI_INT_PREFIX
#define HAVE_MODE_T 1
#define rb_mode_t mode_t
#define SIGNEDNESS_OF_MODE_T +1
#define MODET2NUM(v) USHORT2NUM(v)
#define NUM2MODET(v) NUM2USHORT(v)
#define PRI_MODET_PREFIX PRI_SHORT_PREFIX
#define rb_rlim_t long
#define SIGNEDNESS_OF_RLIM_T -1
#define RLIM2NUM(v) LONG2NUM(v)
#define NUM2RLIM(v) NUM2LONG(v)
#define PRI_RLIM_PREFIX PRI_LONG_PREFIX
#define HAVE_OFF_T 1
#define rb_off_t off_t
#define SIGNEDNESS_OF_OFF_T -1
#define OFFT2NUM(v) LL2NUM(v)
#define NUM2OFFT(v) NUM2LL(v)
#define PRI_OFFT_PREFIX PRI_LL_PREFIX
#define HAVE_CLOCKID_T 1
#define rb_clockid_t clockid_t
#define SIGNEDNESS_OF_CLOCKID_T -1
#define CLOCKID2NUM(v) INT2NUM(v)
#define NUM2CLOCKID(v) NUM2INT(v)
#define PRI_CLOCKID_PREFIX PRI_INT_PREFIX
#define HAVE_PROTOTYPES 1
#define TOKEN_PASTE(x,y) x ##y
#define STRINGIZE(expr) STRINGIZE0(expr)
#define HAVE_STDARG_PROTOTYPES 1
#define HAVE_VA_ARGS_MACRO 1
#define RUBY_ALIGNAS(x) __declspec(aligned(x))
#define RUBY_ALIGNOF alignof
#define CONSTFUNC(x) __attribute__ ((__const__)) x
#define PUREFUNC(x) __attribute__ ((__pure__)) x
#define NORETURN(x) __attribute__ ((__noreturn__)) x
#define DEPRECATED(x) __attribute__ ((__deprecated__)) x
#define DEPRECATED_BY(n,x) __attribute__ ((__deprecated__("by "#n))) x
#define DEPRECATED_TYPE(mesg,x) __attribute__ ((__deprecated__ mesg)) x
#define NOINLINE(x) __attribute__ ((__noinline__)) x
#define ALWAYS_INLINE(x) __attribute__ ((__always_inline__)) x
#define NO_SANITIZE(san,x) __attribute__ ((__no_sanitize__(san))) x
#define NO_SANITIZE_ADDRESS(x) __attribute__ ((__no_sanitize_address__)) x
#define NO_ADDRESS_SAFETY_ANALYSIS(x) __attribute__ ((__no_address_safety_analysis__)) x
#define WARN_UNUSED_RESULT(x) __attribute__ ((__warn_unused_result__)) x
#define MAYBE_UNUSED(x) __attribute__ ((__unused__)) x
#define ERRORFUNC(mesg,x) __attribute__ ((__error__ mesg)) x
#define WARNINGFUNC(mesg,x) __attribute__ ((__warning__ mesg)) x
#define WEAK(x) __attribute__ ((__weak__)) x
#define HAVE_FUNC_WEAK 1
#define FUNC_STDCALL(x) __attribute__ ((__stdcall__)) x
#define FUNC_CDECL(x) __attribute__ ((__cdecl__)) x
#define FUNC_FASTCALL(x) __attribute__ ((__fastcall__)) x
#define FUNC_UNOPTIMIZED(x) __attribute__ ((__optimize__("O0"))) x
#define FUNC_MINIMIZED(x) __attribute__ ((__optimize__("-Os","-fomit-frame-pointer"))) x
#define HAVE_ATTRIBUTE_FUNCTION_ALIAS 1
#define RUBY_ALIAS_FUNCTION_TYPE(type,prot,name,args) type prot __attribute__((alias(#name)));
#define RUBY_ALIAS_FUNCTION_VOID(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(void, prot, name, args)
#define HAVE_GCC_ATOMIC_BUILTINS 1
#define HAVE_GCC_SYNC_BUILTINS 1
#define UNREACHABLE __builtin_unreachable()
#define RUBY_FUNC_EXPORTED __attribute__ ((__visibility__("default"))) extern
#define RUBY_FUNCTION_NAME_STRING __func__
#define ENUM_OVER_INT 1
#define HAVE_DECL_SYS_NERR 1
#define HAVE_DECL_GETENV 1
#define SIZEOF_SIZE_T 4
#define SIZEOF_PTRDIFF_T 4
#define PRI_SIZE_PREFIX "z"
#define PRI_PTRDIFF_PREFIX "t"
#define HAVE_STRUCT_STAT_ST_RDEV 1
#define HAVE_ST_RDEV 1
#define SIZEOF_STRUCT_STAT_ST_SIZE SIZEOF_OFF_T
#define SIZEOF_STRUCT_STAT_ST_INO 2
#define HAVE_STRUCT_TIMEVAL 1
#define SIZEOF_STRUCT_TIMEVAL_TV_SEC SIZEOF_LONG
#define TYPEOF_TIMEVAL_TV_SEC long
#define HAVE_STRUCT_TIMESPEC 1
#define HAVE_STRUCT_TIMEZONE 1
#define HAVE_RB_FD_INIT 1
#define HAVE_INT8_T 1
#define SIZEOF_INT8_T 1
#define HAVE_UINT8_T 1
#define SIZEOF_UINT8_T 1
#define HAVE_INT16_T 1
#define SIZEOF_INT16_T 2
#define HAVE_UINT16_T 1
#define SIZEOF_UINT16_T 2
#define HAVE_INT32_T 1
#define SIZEOF_INT32_T 4
#define HAVE_UINT32_T 1
#define SIZEOF_UINT32_T 4
#define HAVE_INT64_T 1
#define SIZEOF_INT64_T 8
#define HAVE_UINT64_T 1
#define SIZEOF_UINT64_T 8
#define HAVE_INTPTR_T 1
#define SIZEOF_INTPTR_T 4
#define HAVE_UINTPTR_T 1
#define SIZEOF_UINTPTR_T 4
#define PRI_PTR_PREFIX ""
#define HAVE_SSIZE_T 1
#define SIZEOF_SSIZE_T 4
#define uid_t int
#define gid_t int
#define GETGROUPS_T int
#define RETSIGTYPE void
#define HAVE_ALLOCA 1
#define HAVE_ACOSH 1
#define HAVE_CBRT 1
#define HAVE_DUP2 1
#define HAVE_ERF 1
#define HAVE_FINITE 1
#define HAVE_FLOCK 1
#define HAVE_HYPOT 1
#define HAVE_ISINF 1
#define HAVE_ISNAN 1
#define HAVE_MEMMOVE 1
#define HAVE_NAN 1
#define HAVE_NEXTAFTER 1
#define HAVE_STRCHR 1
#define HAVE_STRERROR 1
#define HAVE_STRSTR 1
#define HAVE_SIGNBIT 1
#define vfork fork
#define HAVE_ATAN2L 1
#define HAVE_ATAN2F 1
#define HAVE_CHSIZE 1
#define HAVE_CLOCK_GETTIME 1
#define HAVE_COSH 1
#define HAVE_DUP 1
#define HAVE_FCNTL 1
#define HAVE_FMOD 1
#define HAVE_FSYNC 1
#define HAVE_FTRUNCATE 1
#define HAVE_FTRUNCATE64 1
#define HAVE_GETCWD 1
#define HAVE_GETLOGIN 1
#define HAVE_GETTIMEOFDAY 1
#define HAVE_GMTIME_R 1
#define HAVE_LCHOWN 1
#define HAVE_LINK 1
#define HAVE_LLABS 1
#define HAVE_LOG2 1
#define HAVE_LSTAT 1
#define HAVE_MBLEN 1
#define HAVE_MKTIME 1
#define HAVE_QSORT_S 1
#define HAVE_READLINK 1
#define HAVE_ROUND 1
#define HAVE_SEEKDIR 1
#define HAVE_SINH 1
#define HAVE_SPAWNV 1
#define HAVE_SYMLINK 1
#define HAVE_TANH 1
#define HAVE_TELLDIR 1
#define HAVE_TIMES 1
#define HAVE_TRUNCATE 1
#define HAVE_TRUNCATE64 1
#define HAVE_WAITPID 1
#define __STDC_WANT_LIB_EXT1__ 1
#define HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN 1
#define HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED 1
#define HAVE_BUILTIN___BUILTIN_BSWAP16 1
#define HAVE_BUILTIN___BUILTIN_BSWAP32 1
#define HAVE_BUILTIN___BUILTIN_BSWAP64 1
#define HAVE_BUILTIN___BUILTIN_POPCOUNT 1
#define HAVE_BUILTIN___BUILTIN_POPCOUNTLL 1
#define HAVE_BUILTIN___BUILTIN_CLZ 1
#define HAVE_BUILTIN___BUILTIN_CLZL 1
#define HAVE_BUILTIN___BUILTIN_CLZLL 1
#define HAVE_BUILTIN___BUILTIN_CTZ 1
#define HAVE_BUILTIN___BUILTIN_CTZLL 1
#define HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW 1
#define HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW 1
#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW 1
#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW_P 1
#define HAVE_BUILTIN___BUILTIN_CONSTANT_P 1
#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR 1
#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P 1
#define HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P 1
#define HAVE_BUILTIN___BUILTIN_TRAP 1
#define ATAN2_INF_C99 1
#define HAVE_CLOCK_GETRES 1
#define HAVE_DECL_TZNAME 1
#define HAVE_TZNAME 1
#define HAVE_DAYLIGHT 1
#define NEGATIVE_TIME_T 1
#define RSHIFT(x,y) ((x)>>(int)(y))
#define STACK_GROW_DIRECTION -1
#define DLEXT_MAXLEN 3
#define DLEXT ".so"
#define LIBDIR_BASENAME "lib"
#define EXECUTABLE_EXTS ".exe",".com",".cmd",".bat"
#define HAVE__SETJMPEX 1
#define RUBY_SETJMP(env) __builtin_setjmp((env))
#define RUBY_LONGJMP(env,val) __builtin_longjmp((env),val)
#define RUBY_JMP_BUF jmp_buf
#define USE_MJIT 1
#define LOAD_RELATIVE 1
#define RUBY_PLATFORM "i386-mingw32"
#define RUBY_DEFINES_H 1
#define HAVE_ATTRIBUTE_ERRORFUNC 1
#define HAVE_ATTRIBUTE_WARNINGFUNC 1
#define GCC_VERSION_SINCE(major,minor,patchlevel) ((__GNUC__ > (major)) || ((__GNUC__ == (major) && ((__GNUC_MINOR__ > (minor)) || (__GNUC_MINOR__ == (minor) && __GNUC_PATCHLEVEL__ >= (patchlevel))))))
#define GCC_VERSION_BEFORE(major,minor,patchlevel) ((__GNUC__ < (major)) || ((__GNUC__ == (major) && ((__GNUC_MINOR__ < (minor)) || (__GNUC_MINOR__ == (minor) && __GNUC_PATCHLEVEL__ <= (patchlevel))))))
#define RB_LIKELY(x) (__builtin_expect(!!(x), 1))
#define RB_UNLIKELY(x) (__builtin_expect(!!(x), 0))
#define COLDFUNC __attribute__((cold))
#define PRINTF_ARGS(decl,string_index,first_to_check) decl __attribute__((format(printf, string_index, first_to_check)))
#define RB_GNUC_EXTENSION __extension__
#define RB_GNUC_EXTENSION_BLOCK(x) __extension__ ({ x; })
#define _INC_STDIO 
#define _STDIO_CONFIG_DEFINED 
#define _INC_CORECRT 
#define _INC__MINGW_H 
#define _INC_CRTDEFS_MACRO 
#define __STRINGIFY(x) #x
#define __MINGW64_STRINGIFY(x) __STRINGIFY(x)
#define __MINGW64_VERSION_MAJOR 10
#define __MINGW64_VERSION_MINOR 0
#define __MINGW64_VERSION_BUGFIX 0
#define __MINGW64_VERSION_RC 0
#define __MINGW64_VERSION_STR __MINGW64_STRINGIFY(__MINGW64_VERSION_MAJOR) "." __MINGW64_STRINGIFY(__MINGW64_VERSION_MINOR) "." __MINGW64_STRINGIFY(__MINGW64_VERSION_BUGFIX)
#define __MINGW64_VERSION_STATE "alpha"
#define __MINGW32_MAJOR_VERSION 3
#define __MINGW32_MINOR_VERSION 11
#define _M_IX86 600
#undef __MINGW_USE_UNDERSCORE_PREFIX
#define __MINGW_USE_UNDERSCORE_PREFIX 1
#define __MINGW_IMP_SYMBOL(sym) _imp__ ##sym
#define __MINGW_IMP_LSYMBOL(sym) __imp__ ##sym
#define __MINGW_USYMBOL(sym) _ ##sym
#define __MINGW_LSYMBOL(sym) sym
#define __MINGW_ASM_CALL(func) __asm__(__MINGW64_STRINGIFY(__MINGW_USYMBOL(func)))
#define __MINGW_ASM_CRT_CALL(func) __asm__(__STRINGIFY(func))
#undef __MINGW_EXTENSION
#define __MINGW_EXTENSION __extension__
#define __C89_NAMELESS __MINGW_EXTENSION
#define __C89_NAMELESSSTRUCTNAME 
#define __C89_NAMELESSSTRUCTNAME1 
#define __C89_NAMELESSSTRUCTNAME2 
#define __C89_NAMELESSSTRUCTNAME3 
#define __C89_NAMELESSSTRUCTNAME4 
#define __C89_NAMELESSSTRUCTNAME5 
#define __C89_NAMELESSUNIONNAME 
#define __C89_NAMELESSUNIONNAME1 
#define __C89_NAMELESSUNIONNAME2 
#define __C89_NAMELESSUNIONNAME3 
#define __C89_NAMELESSUNIONNAME4 
#define __C89_NAMELESSUNIONNAME5 
#define __C89_NAMELESSUNIONNAME6 
#define __C89_NAMELESSUNIONNAME7 
#define __C89_NAMELESSUNIONNAME8 
#define __GNU_EXTENSION __MINGW_EXTENSION
#define __MINGW_HAVE_ANSI_C99_PRINTF 1
#define __MINGW_HAVE_WIDE_C99_PRINTF 1
#define __MINGW_HAVE_ANSI_C99_SCANF 1
#define __MINGW_HAVE_WIDE_C99_SCANF 1
#define __MINGW_POISON_NAME(__IFACE) __IFACE ##_layout_has_not_been_verified_and_its_declaration_is_most_likely_incorrect
#define __MSABI_LONG(x) x ## l
#define __MINGW_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
#define __MINGW_GNUC_PREREQ(major,minor) (__GNUC__ > (major) || (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
#define __MINGW_MSC_PREREQ(major,minor) 0
#define __MINGW_ATTRIB_DEPRECATED_STR(X) 
#define __MINGW_SEC_WARN_STR "This function or variable may be unsafe, use _CRT_SECURE_NO_WARNINGS to disable deprecation"
#define __MINGW_MSVC2005_DEPREC_STR "This POSIX function is deprecated beginning in Visual C++ 2005, use _CRT_NONSTDC_NO_DEPRECATE to disable deprecation"
#define __MINGW_ATTRIB_DEPRECATED_MSVC2005 __MINGW_ATTRIB_DEPRECATED_STR(__MINGW_MSVC2005_DEPREC_STR)
#define __MINGW_ATTRIB_DEPRECATED_SEC_WARN __MINGW_ATTRIB_DEPRECATED_STR(__MINGW_SEC_WARN_STR)
#define __MINGW_MS_PRINTF(__format,__args) __attribute__((__format__(ms_printf, __format,__args)))
#define __MINGW_MS_SCANF(__format,__args) __attribute__((__format__(ms_scanf, __format,__args)))
#define __MINGW_GNU_PRINTF(__format,__args) __attribute__((__format__(gnu_printf,__format,__args)))
#define __MINGW_GNU_SCANF(__format,__args) __attribute__((__format__(gnu_scanf, __format,__args)))
#undef __mingw_ovr
#undef __mingw_static_ovr
#define __mingw_ovr static __attribute__ ((__unused__)) __inline__ __cdecl
#define __mingw_static_ovr __mingw_ovr
#define __mingw_attribute_artificial __attribute__((__artificial__))
#define __MINGW_SELECTANY __attribute__((__selectany__))
#define __MINGW_FORTIFY_LEVEL 0
#define __mingw_bos_ovr __mingw_ovr
#define __MINGW_FORTIFY_VA_ARG 0
#define _INC_MINGW_SECAPI 
#undef _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES
#undef _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_MEMORY
#undef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES
#undef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT
#undef _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY
#define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 0
#define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_MEMORY 0
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 0
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 0
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY 0
#define __MINGW_CRT_NAME_CONCAT2(sym) ::sym ##_s
#define __CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY_0_3_(__ret,__func,__type1,__attrib1,__arg1,__type2,__attrib2,__arg2,__type3,__attrib3,__arg3) _CRTIMP __ret __cdecl __func(__type1 * __attrib1 __arg1, __type2 __attrib2 __arg2, __type3 __attrib3 __arg3) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
#define __LONG32 long
#define __MINGW_IMPORT extern __attribute__ ((__dllimport__))
#undef __USE_CRTIMP
#define __USE_CRTIMP 1
#define _CRTIMP __attribute__ ((__dllimport__))
#define __DECLSPEC_SUPPORTED 
#define USE___UUIDOF 0
#define _inline __inline
#define __CRT_INLINE extern inline __attribute__((__gnu_inline__))
#define __MINGW_INTRIN_INLINE extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
#define __UNUSED_PARAM(x) x __attribute__ ((__unused__))
#define __restrict_arr __restrict
#define __MINGW_ATTRIB_NORETURN __attribute__ ((__noreturn__))
#define __MINGW_ATTRIB_CONST __attribute__ ((__const__))
#define __MINGW_ATTRIB_MALLOC __attribute__ ((__malloc__))
#define __MINGW_ATTRIB_PURE __attribute__ ((__pure__))
#define __MINGW_ATTRIB_NONNULL(arg) __attribute__ ((__nonnull__ (arg)))
#define __MINGW_ATTRIB_UNUSED __attribute__ ((__unused__))
#define __MINGW_ATTRIB_USED __attribute__ ((__used__))
#define __MINGW_ATTRIB_DEPRECATED __attribute__ ((__deprecated__))
#define __MINGW_ATTRIB_DEPRECATED_MSG(x) __attribute__ ((__deprecated__(x)))
#define __MINGW_NOTHROW __attribute__ ((__nothrow__))
#define __MINGW_ATTRIB_NO_OPTIMIZE __attribute__((__optimize__ ("0")))
#define __MINGW_PRAGMA_PARAM(x) _Pragma (#x)
#define __MINGW_BROKEN_INTERFACE(x) __MINGW_PRAGMA_PARAM(message ("Interface " _CRT_STRINGIZE(x) " has unverified layout."))
#define __MSVCRT_VERSION__ 0x700
#define _INT128_DEFINED 
#define __int8 char
#define __int16 short
#define __int32 int
#define __int64 long long
#define __ptr32 
#define __ptr64 
#define __unaligned 
#define __w64 
#define __forceinline extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
#define __nothrow 
#define _INC_VADEFS 
#define MINGW_SDK_INIT 
#define MINGW_HAS_SECURE_API 1
#define __STDC_SECURE_LIB__ 200411L
#define __GOT_SECURE_LIB__ __STDC_SECURE_LIB__
#define MINGW_DDK_H 
#define MINGW_HAS_DDK_H 1
#undef _CRT_PACKING
#define _CRT_PACKING 8
#pragma pack(push,_CRT_PACKING)
#define __GNUC_VA_LIST 
  typedef __builtin_va_list __gnuc_va_list;
#define _VA_LIST_DEFINED 
  typedef __gnuc_va_list va_list;
#define _ADDRESSOF(v) (&(v))
#define _crt_va_start(v,l) __builtin_va_start(v,l)
#define _crt_va_arg(v,l) __builtin_va_arg(v,l)
#define _crt_va_end(v) __builtin_va_end(v)
#define _crt_va_copy(d,s) __builtin_va_copy(d,s)
#pragma pack(pop)
#define __CRT_STRINGIZE(_Value) #_Value
#define _CRT_STRINGIZE(_Value) __CRT_STRINGIZE(_Value)
#define __CRT_WIDE(_String) L ## _String
#define _CRT_WIDE(_String) __CRT_WIDE(_String)
#define _W64 
#define _CRTIMP_NOIA64 _CRTIMP
#define _CRTIMP2 _CRTIMP
#define _CRTIMP_ALTERNATIVE _CRTIMP
#define _CRT_ALTERNATIVE_IMPORTED 
#define _MRTIMP2 _CRTIMP
#define _DLL 
#define _MT 
#define _MCRTIMP _CRTIMP
#define _CRTIMP_PURE _CRTIMP
#define _PGLOBAL 
#define _AGLOBAL 
#define _SECURECRT_FILL_BUFFER_PATTERN 0xFD
#define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated)
#define _CRT_INSECURE_DEPRECATE_MEMORY(_Replacement) 
#define _CRT_INSECURE_DEPRECATE_GLOBALS(_Replacement) 
#define _CRT_MANAGED_HEAP_DEPRECATE 
#define _CRT_OBSOLETE(_NewItem) 
#define _CONST_RETURN 
#define UNALIGNED 
#define _CRT_ALIGN(x) __attribute__ ((__aligned__ (x)))
#define __CRTDECL __cdecl
#define _ARGMAX 100
#define _TRUNCATE ((size_t)-1)
#define _CRT_UNUSED(x) (void)x
#define __USE_MINGW_ANSI_STDIO 1
#undef _CRT_glob
#define _CRT_glob _dowildcard
#define __ANONYMOUS_DEFINED 
#define _ANONYMOUS_UNION __MINGW_EXTENSION
#define _ANONYMOUS_STRUCT __MINGW_EXTENSION
#define _UNION_NAME(x) 
#define _STRUCT_NAME(x) 
#define DUMMYUNIONNAME 
#define DUMMYUNIONNAME1 
#define DUMMYUNIONNAME2 
#define DUMMYUNIONNAME3 
#define DUMMYUNIONNAME4 
#define DUMMYUNIONNAME5 
#define DUMMYUNIONNAME6 
#define DUMMYUNIONNAME7 
#define DUMMYUNIONNAME8 
#define DUMMYUNIONNAME9 
#define DUMMYSTRUCTNAME 
#define DUMMYSTRUCTNAME1 
#define DUMMYSTRUCTNAME2 
#define DUMMYSTRUCTNAME3 
#define DUMMYSTRUCTNAME4 
#define DUMMYSTRUCTNAME5 
#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) 
#define __MINGW_DEBUGBREAK_IMPL !__has_builtin(__debugbreak)
void __attribute__((__cdecl__)) __debugbreak(void);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void __attribute__((__cdecl__)) __debugbreak(void)
{
  __asm__ __volatile__("int {$}3":);
}
const char *__mingw_get_crt_info (void);
#undef _CRT_PACKING
#define _CRT_PACKING 8
#pragma pack(push,_CRT_PACKING)
#define _CRTNOALIAS 
#define _CRTRESTRICT 
#define _SIZE_T_DEFINED 
#undef size_t
typedef unsigned int size_t;
#define _SSIZE_T_DEFINED 
#undef ssize_t
typedef int ssize_t;
typedef size_t rsize_t;
#define _RSIZE_T_DEFINED 
#define _INTPTR_T_DEFINED 
#define __intptr_t_defined 
#undef intptr_t
typedef int intptr_t;
#define _UINTPTR_T_DEFINED 
#define __uintptr_t_defined 
#undef uintptr_t
typedef unsigned int uintptr_t;
#define _PTRDIFF_T_DEFINED 
#define _PTRDIFF_T_ 
#undef ptrdiff_t
typedef int ptrdiff_t;
#define _WCHAR_T_DEFINED 
typedef unsigned short wchar_t;
#define _WCTYPE_T_DEFINED 
#define _WINT_T 
typedef unsigned short wint_t;
typedef unsigned short wctype_t;
#define _ERRCODE_DEFINED 
typedef int errno_t;
#define _TIME32_T_DEFINED 
typedef long __time32_t;
#define _TIME64_T_DEFINED 
__extension__ typedef long long __time64_t;
#define _TIME_T_DEFINED 
typedef __time64_t time_t;
#define _CRT_SECURE_CPP_NOTHROW throw()
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(__ret,__func,__dsttype,__dst) 
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(__ret,__func,__dsttype,__dst,__type1,__arg1) 
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2) 
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_3(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3) 
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_4(__ret,__func,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3,__type4,__arg4) 
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_1(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1) 
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_2(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2) 
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(__ret,__func,__type0,__arg0,__dsttype,__dst,__type1,__arg1,__type2,__arg2,__type3,__arg3) 
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_2_0(__ret,__func,__type1,__arg1,__type2,__arg2,__dsttype,__dst) 
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1) 
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2_ARGLIST(__ret,__func,__vfunc,__dsttype,__dst,__type1,__arg1,__type2,__arg2) 
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_SPLITPATH(__ret,__func,__dsttype,__src) 
#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0(__ret_type,__ret_policy,__decl_spec,__name,__dst_attr,__dst_type,__dst) __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name ##_s, __dst_attr, __dst_type, __dst)
#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1(__ret_type,__ret_policy,__decl_spec,__name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1) __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name ##_s, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2)
#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2(__ret_type,__ret_policy,__decl_spec,__name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1,__arg2_type,__arg2) __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name ##_s, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2)
#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3(__ret_type,__ret_policy,__decl_spec,__name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1,__arg2_type,__arg2,__arg3_type,__arg3) __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name ##_s, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2, __arg3_type, __arg3)
#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4(__ret_type,__ret_policy,__decl_spec,__name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1,__arg2_type,__arg2,__arg3_type,__arg3,__arg4_type,__arg4) __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(__ret_type, __ret_policy, __decl_spec, __func_name, __func_name ##_s, __dst_attr, __dst_type, __dst, __arg1_type, __arg1, __arg2_type, __arg2, __arg3_type, __arg3, __arg4_type, __arg4)
#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0_EX(__ret_type,__ret_policy,__decl_spec,__name,__sec_name,__dst_attr,__dst_type,__dst) 
#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(__ret_type,__ret_policy,__decl_spec,__name,__sec_name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1) 
#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_2_EX(__ret_type,__ret_policy,__decl_spec,__name,__sec_name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1,__arg2_type,__arg2) 
#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_3_EX(__ret_type,__ret_policy,__decl_spec,__name,__sec_name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1,__arg2_type,__arg2,__arg3_type,__arg3) 
#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_4_EX(__ret_type,__ret_policy,__decl_spec,__name,__sec_name,__dst_attr,__dst_type,__dst,__arg1_type,__arg1,__arg2_type,__arg2,__arg3_type,__arg3,__arg4_type,__arg4) 
struct threadlocaleinfostruct;
struct threadmbcinfostruct;
typedef struct threadlocaleinfostruct *pthreadlocinfo;
typedef struct threadmbcinfostruct *pthreadmbcinfo;
struct __lc_time_data;
typedef struct localeinfo_struct {
  pthreadlocinfo locinfo;
  pthreadmbcinfo mbcinfo;
} _locale_tstruct,*_locale_t;
#define _TAGLC_ID_DEFINED 
typedef struct tagLC_ID {
  unsigned short wLanguage;
  unsigned short wCountry;
  unsigned short wCodePage;
} LC_ID,*LPLC_ID;
#define _THREADLOCALEINFO 
typedef struct threadlocaleinfostruct {
  int refcount;
  unsigned int lc_codepage;
  unsigned int lc_collate_cp;
  unsigned long lc_handle[6];
  LC_ID lc_id[6];
  struct {
    char *locale;
    wchar_t *wlocale;
    int *refcount;
    int *wrefcount;
  } lc_category[6];
  int lc_clike;
  int mb_cur_max;
  int *lconv_intl_refcount;
  int *lconv_num_refcount;
  int *lconv_mon_refcount;
  struct lconv *lconv;
  int *ctype1_refcount;
  unsigned short *ctype1;
  const unsigned short *pctype;
  const unsigned char *pclmap;
  const unsigned char *pcumap;
  struct __lc_time_data *lc_time_curr;
} threadlocinfo;
#define __crt_typefix(ctype) 
#define _CRT_USE_WINAPI_FAMILY_DESKTOP_APP 
#pragma pack(pop)
#define _CRT_INTERNAL_PRINTF_LEGACY_VSPRINTF_NULL_TERMINATION 0x0001ULL
#define _CRT_INTERNAL_PRINTF_STANDARD_SNPRINTF_BEHAVIOR 0x0002ULL
#define _CRT_INTERNAL_PRINTF_LEGACY_WIDE_SPECIFIERS 0x0004ULL
#define _CRT_INTERNAL_PRINTF_LEGACY_MSVCRT_COMPATIBILITY 0x0008ULL
#define _CRT_INTERNAL_PRINTF_LEGACY_THREE_DIGIT_EXPONENTS 0x0010ULL
#define _CRT_INTERNAL_SCANF_SECURECRT 0x0001ULL
#define _CRT_INTERNAL_SCANF_LEGACY_WIDE_SPECIFIERS 0x0002ULL
#define _CRT_INTERNAL_SCANF_LEGACY_MSVCRT_COMPATIBILITY 0x0004ULL
#define _CRT_INTERNAL_LOCAL_PRINTF_OPTIONS _CRT_INTERNAL_PRINTF_LEGACY_WIDE_SPECIFIERS
#define _CRT_INTERNAL_LOCAL_SCANF_OPTIONS _CRT_INTERNAL_SCANF_LEGACY_WIDE_SPECIFIERS
#pragma pack(push,_CRT_PACKING)
       
#undef snprintf
       
#undef vsnprintf
       
#undef snwprintf
       
#undef vsnwprintf
#define BUFSIZ 512
#define _NFILE _NSTREAM_
#define _NSTREAM_ 512
#define _IOB_ENTRIES 20
#define EOF (-1)
  struct _iobuf {
    char *_ptr;
    int _cnt;
    char *_base;
    int _flag;
    int _file;
    int _charbuf;
    int _bufsiz;
    char *_tmpfname;
  };
  typedef struct _iobuf FILE;
#define _FILE_DEFINED 
#define _P_tmpdir "\\"
#define _wP_tmpdir L"\\"
#define L_tmpnam (sizeof(_P_tmpdir) + 12)
#define SEEK_CUR 1
#define SEEK_END 2
#define SEEK_SET 0
#define STDIN_FILENO 0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
#define FILENAME_MAX 260
#define FOPEN_MAX 20
#define _SYS_OPEN 20
#define TMP_MAX 32767
#define NULL ((void *)0)
#define _OFF_T_DEFINED 
#define _OFF_T_ 
  typedef long _off_t;
  typedef long off32_t;
#define _OFF64_T_DEFINED 
  __extension__ typedef long long _off64_t;
  __extension__ typedef long long off64_t;
#define _FILE_OFFSET_BITS_SET_OFFT 
typedef off64_t off_t;
__attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) __acrt_iob_func(unsigned index);
extern FILE (* _imp___iob)[];
#define __iob_func() (* __MINGW_IMP_SYMBOL(_iob))
#define _iob __iob_func()
#define _FPOS_T_DEFINED 
#undef _FPOSOFF
  __extension__ typedef long long fpos_t;
#define _FPOSOFF(fp) ((long)(fp))
#define _STDSTREAM_DEFINED 
#define stdin (__acrt_iob_func(0))
#define stdout (__acrt_iob_func(1))
#define stderr (__acrt_iob_func(2))
#define _IOFBF 0x0000
#define _IOLBF 0x0040
#define _IONBF 0x0004
#define _IOREAD 0x0001
#define _IOWRT 0x0002
#define _IOMYBUF 0x0008
#define _IOEOF 0x0010
#define _IOERR 0x0020
#define _IOSTRG 0x0040
#define _IORW 0x0080
#define _TWO_DIGIT_EXPONENT 0x1
extern
  __attribute__((__format__ (gnu_scanf, 2, 3))) __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_sscanf(const char * __restrict__ _Src,const char * __restrict__ _Format,...);
extern
  __attribute__((__format__ (gnu_scanf, 2, 0))) __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_vsscanf (const char * __restrict__ _Str,const char * __restrict__ Format,va_list argp);
extern
  __attribute__((__format__ (gnu_scanf, 1, 2))) __attribute__ ((__nonnull__ (1)))
  int __attribute__((__cdecl__)) __mingw_scanf(const char * __restrict__ _Format,...);
extern
  __attribute__((__format__ (gnu_scanf, 1, 0))) __attribute__ ((__nonnull__ (1)))
  int __attribute__((__cdecl__)) __mingw_vscanf(const char * __restrict__ Format, va_list argp);
extern
  __attribute__((__format__ (gnu_scanf, 2, 3))) __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_fscanf(FILE * __restrict__ _File,const char * __restrict__ _Format,...);
extern
  __attribute__((__format__ (gnu_scanf, 2, 0))) __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_vfscanf (FILE * __restrict__ fp, const char * __restrict__ Format,va_list argp);
extern
  __attribute__((__format__ (gnu_printf, 3, 0))) __attribute__ ((__nonnull__ (3)))
  int __attribute__((__cdecl__)) __mingw_vsnprintf(char * __restrict__ _DstBuf,size_t _MaxCount,const char * __restrict__ _Format,
                               va_list _ArgList);
extern
  __attribute__((__format__ (gnu_printf, 3, 4))) __attribute__ ((__nonnull__ (3)))
  int __attribute__((__cdecl__)) __mingw_snprintf(char * __restrict__ s, size_t n, const char * __restrict__ format, ...);
extern
  __attribute__((__format__ (gnu_printf, 1, 2))) __attribute__ ((__nonnull__ (1)))
  int __attribute__((__cdecl__)) __mingw_printf(const char * __restrict__ , ... ) __attribute__ ((__nothrow__));
extern
  __attribute__((__format__ (gnu_printf, 1, 0))) __attribute__ ((__nonnull__ (1)))
  int __attribute__((__cdecl__)) __mingw_vprintf (const char * __restrict__ , va_list) __attribute__ ((__nothrow__));
extern
  __attribute__((__format__ (gnu_printf, 2, 3))) __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_fprintf (FILE * __restrict__ , const char * __restrict__ , ...) __attribute__ ((__nothrow__));
extern
  __attribute__((__format__ (gnu_printf, 2, 0))) __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_vfprintf (FILE * __restrict__ , const char * __restrict__ , va_list) __attribute__ ((__nothrow__));
extern
  __attribute__((__format__ (gnu_printf, 2, 3))) __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_sprintf (char * __restrict__ , const char * __restrict__ , ...) __attribute__ ((__nothrow__));
extern
  __attribute__((__format__ (gnu_printf, 2, 0))) __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_vsprintf (char * __restrict__ , const char * __restrict__ , va_list) __attribute__ ((__nothrow__));
extern
  __attribute__((__format__ (gnu_printf, 2, 3))) __attribute__((nonnull (1,2)))
  int __attribute__((__cdecl__)) __mingw_asprintf(char ** __restrict__ , const char * __restrict__ , ...) __attribute__ ((__nothrow__));
extern
  __attribute__((__format__ (gnu_printf, 2, 0))) __attribute__((nonnull (1,2)))
  int __attribute__((__cdecl__)) __mingw_vasprintf(char ** __restrict__ , const char * __restrict__ , va_list) __attribute__ ((__nothrow__));
extern
  __attribute__((__format__ (ms_scanf, 2, 3))) __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __ms_sscanf(const char * __restrict__ _Src,const char * __restrict__ _Format,...);
extern
  __attribute__((__format__ (ms_scanf, 1, 2))) __attribute__ ((__nonnull__ (1)))
  int __attribute__((__cdecl__)) __ms_scanf(const char * __restrict__ _Format,...);
extern
  __attribute__((__format__ (ms_scanf, 2, 3))) __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __ms_fscanf(FILE * __restrict__ _File,const char * __restrict__ _Format,...);
extern
  __attribute__((__format__ (ms_printf, 1, 2))) __attribute__ ((__nonnull__ (1)))
  int __attribute__((__cdecl__)) __ms_printf(const char * __restrict__ , ... ) __attribute__ ((__nothrow__));
extern
  __attribute__((__format__ (ms_printf, 1, 0))) __attribute__ ((__nonnull__ (1)))
  int __attribute__((__cdecl__)) __ms_vprintf (const char * __restrict__ , va_list) __attribute__ ((__nothrow__));
extern
  __attribute__((__format__ (ms_printf, 2, 3))) __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __ms_fprintf (FILE * __restrict__ , const char * __restrict__ , ...) __attribute__ ((__nothrow__));
extern
  __attribute__((__format__ (ms_printf, 2, 0))) __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __ms_vfprintf (FILE * __restrict__ , const char * __restrict__ , va_list) __attribute__ ((__nothrow__));
extern
  __attribute__((__format__ (ms_printf, 2, 3))) __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __ms_sprintf (char * __restrict__ , const char * __restrict__ , ...) __attribute__ ((__nothrow__));
extern
  __attribute__((__format__ (ms_printf, 2, 0))) __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __ms_vsprintf (char * __restrict__ , const char * __restrict__ , va_list) __attribute__ ((__nothrow__));
#undef __MINGW_PRINTF_FORMAT
#undef __MINGW_SCANF_FORMAT
#define __MINGW_PRINTF_FORMAT gnu_printf
#define __MINGW_SCANF_FORMAT gnu_scanf
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__ ((__format__ (gnu_printf, 2, 3))) __attribute__((nonnull (1,2)))
int asprintf(char **__ret, const char *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vasprintf( __ret, __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__ ((__format__ (gnu_printf, 2, 0))) __attribute__((nonnull (1,2)))
int vasprintf(char **__ret, const char *__format, __builtin_va_list __local_argv)
{
  return __mingw_vasprintf( __ret, __format, __local_argv );
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__((__format__ (gnu_scanf, 2, 3))) __attribute__ ((__nonnull__ (2)))
int sscanf(const char *__source, const char *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vsscanf( __source, __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__((__format__ (gnu_scanf, 1, 2))) __attribute__ ((__nonnull__ (1)))
int scanf(const char *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vfscanf( (__acrt_iob_func(0)), __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__((__format__ (gnu_scanf, 2, 3))) __attribute__ ((__nonnull__ (2)))
int fscanf(FILE *__stream, const char *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vfscanf( __stream, __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wshadow"
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__((__format__ (gnu_scanf, 2, 0))) __attribute__ ((__nonnull__ (2)))
int vsscanf (const char *__source, const char *__format, __builtin_va_list __local_argv)
{
  return __mingw_vsscanf( __source, __format, __local_argv );
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__((__format__ (gnu_scanf, 1, 0))) __attribute__ ((__nonnull__ (1)))
int vscanf(const char *__format, __builtin_va_list __local_argv)
{
  return __mingw_vfscanf( (__acrt_iob_func(0)), __format, __local_argv );
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__((__format__ (gnu_scanf, 2, 0))) __attribute__ ((__nonnull__ (2)))
int vfscanf (FILE *__stream, const char *__format, __builtin_va_list __local_argv)
{
  return __mingw_vfscanf( __stream, __format, __local_argv );
}
#pragma GCC diagnostic pop
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__((__format__ (gnu_printf, 2, 3))) __attribute__ ((__nonnull__ (2)))
int fprintf (FILE *__stream, const char *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vfprintf( __stream, __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__((__format__ (gnu_printf, 1, 2))) __attribute__ ((__nonnull__ (1)))
int printf (const char *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vfprintf( (__acrt_iob_func(1)), __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__((__format__ (gnu_printf, 2, 3))) __attribute__ ((__nonnull__ (2)))
int sprintf (char *__stream, const char *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vsprintf( __stream, __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__((__format__ (gnu_printf, 2, 0))) __attribute__ ((__nonnull__ (2)))
int vfprintf (FILE *__stream, const char *__format, __builtin_va_list __local_argv)
{
  return __mingw_vfprintf( __stream, __format, __local_argv );
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__((__format__ (gnu_printf, 1, 0))) __attribute__ ((__nonnull__ (1)))
int vprintf (const char *__format, __builtin_va_list __local_argv)
{
  return __mingw_vfprintf( (__acrt_iob_func(1)), __format, __local_argv );
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__((__format__ (gnu_printf, 2, 0))) __attribute__ ((__nonnull__ (2)))
int vsprintf (char *__stream, const char *__format, __builtin_va_list __local_argv)
{
  return __mingw_vsprintf( __stream, __format, __local_argv );
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__((__format__ (gnu_printf, 3, 4))) __attribute__ ((__nonnull__ (3)))
int snprintf (char *__stream, size_t __n, const char *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vsnprintf( __stream, __n, __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
__attribute__((__format__ (gnu_printf, 3, 0))) __attribute__ ((__nonnull__ (3)))
int vsnprintf (char *__stream, size_t __n, const char *__format, __builtin_va_list __local_argv)
{
  return __mingw_vsnprintf( __stream, __n, __format, __local_argv );
}
#define __builtin_vsnprintf __mingw_vsnprintf
#define __builtin_vsprintf __mingw_vsprintf
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _filbuf(FILE *_File);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _flsbuf(int _Ch,FILE *_File);
  __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _fsopen(const char *_Filename,const char *_Mode,int _ShFlag);
  void __attribute__((__cdecl__)) clearerr(FILE *_File);
  int __attribute__((__cdecl__)) fclose(FILE *_File);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fcloseall(void);
  __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _fdopen(int _FileHandle,const char *_Mode);
  int __attribute__((__cdecl__)) feof(FILE *_File);
  int __attribute__((__cdecl__)) ferror(FILE *_File);
  int __attribute__((__cdecl__)) fflush(FILE *_File);
  int __attribute__((__cdecl__)) fgetc(FILE *_File);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fgetchar(void);
  int __attribute__((__cdecl__)) fgetpos(FILE * __restrict__ _File ,fpos_t * __restrict__ _Pos);
  int __attribute__((__cdecl__)) fgetpos64(FILE * __restrict__ _File ,fpos_t * __restrict__ _Pos);
  char *__attribute__((__cdecl__)) fgets(char * __restrict__ _Buf,int _MaxCount,FILE * __restrict__ _File);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fileno(FILE *_File);
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _tempnam(const char *_DirName,const char *_FilePrefix);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _flushall(void);
  FILE *__attribute__((__cdecl__)) fopen(const char * __restrict__ _Filename,const char * __restrict__ _Mode) ;
  FILE *fopen64(const char * __restrict__ filename,const char * __restrict__ mode);
  int __attribute__((__cdecl__)) fputc(int _Ch,FILE *_File);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fputchar(int _Ch);
  int __attribute__((__cdecl__)) fputs(const char * __restrict__ _Str,FILE * __restrict__ _File);
  size_t __attribute__((__cdecl__)) fread(void * __restrict__ _DstBuf,size_t _ElementSize,size_t _Count,FILE * __restrict__ _File);
  FILE *__attribute__((__cdecl__)) freopen(const char * __restrict__ _Filename,const char * __restrict__ _Mode,FILE * __restrict__ _File) ;
  int __attribute__((__cdecl__)) fsetpos(FILE *_File,const fpos_t *_Pos);
  int __attribute__((__cdecl__)) fsetpos64(FILE *_File,const fpos_t *_Pos);
  int __attribute__((__cdecl__)) fseek(FILE *_File,long _Offset,int _Origin);
  long __attribute__((__cdecl__)) ftell(FILE *_File);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fseeki64(FILE *_File,long long _Offset,int _Origin);
  __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _ftelli64(FILE *_File);
  int fseeko64(FILE* stream, _off64_t offset, int whence);
  int fseeko(FILE* stream, _off_t offset, int whence);
  _off_t ftello(FILE * stream);
  _off64_t ftello64(FILE * stream);
#define _FILE_OFFSET_BITS_SET_FSEEKO 
#define fseeko fseeko64
#define _FILE_OFFSET_BITS_SET_FTELLO 
#define ftello ftello64
  size_t __attribute__((__cdecl__)) fwrite(const void * __restrict__ _Str,size_t _Size,size_t _Count,FILE * __restrict__ _File);
  int __attribute__((__cdecl__)) getc(FILE *_File);
  int __attribute__((__cdecl__)) getchar(void);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _getmaxstdio(void);
  char *__attribute__((__cdecl__)) gets(char *_Buffer) ;
  int __attribute__((__cdecl__)) _getw(FILE *_File);
#define _CRT_PERROR_DEFINED 
  void __attribute__((__cdecl__)) perror(const char *_ErrMsg);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _pclose(FILE *_File);
  __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _popen(const char *_Command,const char *_Mode);
#define popen _popen
#define pclose _pclose
  int __attribute__((__cdecl__)) putc(int _Ch,FILE *_File);
  int __attribute__((__cdecl__)) putchar(int _Ch);
  int __attribute__((__cdecl__)) puts(const char *_Str);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _putw(int _Word,FILE *_File);
#define _CRT_DIRECTORY_DEFINED 
  int __attribute__((__cdecl__)) remove(const char *_Filename);
  int __attribute__((__cdecl__)) rename(const char *_OldFilename,const char *_NewFilename);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _unlink(const char *_Filename);
  int __attribute__((__cdecl__)) unlink(const char *_Filename) ;
  void __attribute__((__cdecl__)) rewind(FILE *_File);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _rmtmp(void);
  void __attribute__((__cdecl__)) setbuf(FILE * __restrict__ _File,char * __restrict__ _Buffer) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _setmaxstdio(int _Max);
  __attribute__ ((__dllimport__)) unsigned int __attribute__((__cdecl__)) _set_output_format(unsigned int _Format);
  __attribute__ ((__dllimport__)) unsigned int __attribute__((__cdecl__)) _get_output_format(void);
  int __attribute__((__cdecl__)) setvbuf(FILE * __restrict__ _File,char * __restrict__ _Buf,int _Mode,size_t _Size);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _scprintf(const char * __restrict__ _Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snscanf(const char * __restrict__ _Src,size_t _MaxCount,const char * __restrict__ _Format,...) ;
  FILE *__attribute__((__cdecl__)) tmpfile(void) ;
  char *__attribute__((__cdecl__)) tmpnam(char *_Buffer);
  int __attribute__((__cdecl__)) ungetc(int _Ch,FILE *_File);
  __attribute__((__format__ (ms_printf, 3, 4))) __attribute__ ((__nonnull__ (3)))
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snprintf(char * __restrict__ _Dest,size_t _Count,const char * __restrict__ _Format,...) ;
  __attribute__((__format__ (ms_printf, 3, 0))) __attribute__ ((__nonnull__ (3)))
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vsnprintf(char * __restrict__ _Dest,size_t _Count,const char * __restrict__ _Format,va_list _Args) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vscprintf(const char * __restrict__ _Format,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _set_printf_count_output(int _Value);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _get_printf_count_output(void);
#define _WSTDIO_DEFINED 
                                                     __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_swscanf(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,...);
                                                     __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_vswscanf (const wchar_t * __restrict__ _Str,const wchar_t * __restrict__ Format,va_list argp);
                                                     __attribute__ ((__nonnull__ (1)))
  int __attribute__((__cdecl__)) __mingw_wscanf(const wchar_t * __restrict__ _Format,...);
                                                     __attribute__ ((__nonnull__ (1)))
  int __attribute__((__cdecl__)) __mingw_vwscanf(const wchar_t * __restrict__ Format, va_list argp);
                                                     __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_fwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
                                                     __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_vfwscanf (FILE * __restrict__ fp, const wchar_t * __restrict__ Format,va_list argp);
                                                      __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_fwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
                                                      __attribute__ ((__nonnull__ (1)))
  int __attribute__((__cdecl__)) __mingw_wprintf(const wchar_t * __restrict__ _Format,...);
                                                     __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_vfwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list _ArgList);
                                                     __attribute__ ((__nonnull__ (1)))
  int __attribute__((__cdecl__)) __mingw_vwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList);
                                                      __attribute__ ((__nonnull__ (3)))
  int __attribute__((__cdecl__)) __mingw_snwprintf (wchar_t * __restrict__ s, size_t n, const wchar_t * __restrict__ format, ...);
                                                      __attribute__ ((__nonnull__ (3)))
  int __attribute__((__cdecl__)) __mingw_vsnwprintf (wchar_t * __restrict__ , size_t, const wchar_t * __restrict__ , va_list);
                                                      __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_swprintf(wchar_t * __restrict__ , const wchar_t * __restrict__ , ...);
                                                      __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __mingw_vswprintf(wchar_t * __restrict__ , const wchar_t * __restrict__ ,va_list);
                                                    __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __ms_swscanf(const wchar_t * __restrict__ _Src,const wchar_t * __restrict__ _Format,...);
                                                    __attribute__ ((__nonnull__ (1)))
  int __attribute__((__cdecl__)) __ms_wscanf(const wchar_t * __restrict__ _Format,...);
                                                    __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __ms_fwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
                                                     __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __ms_fwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,...);
                                                     __attribute__ ((__nonnull__ (1)))
  int __attribute__((__cdecl__)) __ms_wprintf(const wchar_t * __restrict__ _Format,...);
                                                    __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __ms_vfwprintf(FILE * __restrict__ _File,const wchar_t * __restrict__ _Format,va_list _ArgList);
                                                    __attribute__ ((__nonnull__ (1)))
  int __attribute__((__cdecl__)) __ms_vwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList);
                                                     __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __ms_swprintf(wchar_t * __restrict__ , const wchar_t * __restrict__ , ...);
                                                     __attribute__ ((__nonnull__ (2)))
  int __attribute__((__cdecl__)) __ms_vswprintf(wchar_t * __restrict__ , const wchar_t * __restrict__ ,va_list);
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
                                                     __attribute__ ((__nonnull__ (2)))
int swscanf(const wchar_t *__source, const wchar_t *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vswscanf( __source, __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
                                                     __attribute__ ((__nonnull__ (1)))
int wscanf(const wchar_t *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vfwscanf( (__acrt_iob_func(0)), __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
                                                     __attribute__ ((__nonnull__ (2)))
int fwscanf(FILE *__stream, const wchar_t *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vfwscanf( __stream, __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
                                                     __attribute__ ((__nonnull__ (2)))
int vswscanf (const wchar_t * __restrict__ __source, const wchar_t * __restrict__ __format, __builtin_va_list __local_argv)
{
  return __mingw_vswscanf( __source, __format, __local_argv );
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
                                                     __attribute__ ((__nonnull__ (1)))
int vwscanf(const wchar_t *__format, __builtin_va_list __local_argv)
{
  return __mingw_vfwscanf( (__acrt_iob_func(0)), __format, __local_argv );
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
                                                     __attribute__ ((__nonnull__ (2)))
int vfwscanf (FILE *__stream, const wchar_t *__format, __builtin_va_list __local_argv)
{
  return __mingw_vfwscanf( __stream, __format, __local_argv );
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
                                                      __attribute__ ((__nonnull__ (2)))
int fwprintf (FILE *__stream, const wchar_t *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vfwprintf( __stream, __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
                                                      __attribute__ ((__nonnull__ (1)))
int wprintf (const wchar_t *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vfwprintf( (__acrt_iob_func(1)), __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
                                                      __attribute__ ((__nonnull__ (2)))
int vfwprintf (FILE *__stream, const wchar_t *__format, __builtin_va_list __local_argv)
{
  return __mingw_vfwprintf( __stream, __format, __local_argv );
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
                                                      __attribute__ ((__nonnull__ (1)))
int vwprintf (const wchar_t *__format, __builtin_va_list __local_argv)
{
  return __mingw_vfwprintf( (__acrt_iob_func(1)), __format, __local_argv );
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
                                                      __attribute__ ((__nonnull__ (3)))
int snwprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
  __retval = __mingw_vsnwprintf( __stream, __n, __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
                                                      __attribute__ ((__nonnull__ (3)))
int vsnwprintf (wchar_t *__stream, size_t __n, const wchar_t *__format, __builtin_va_list __local_argv)
{
  return __mingw_vsnwprintf( __stream, __n, __format, __local_argv );
}
#define WEOF (wint_t)(0xFFFF)
  __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _wfsopen(const wchar_t *_Filename,const wchar_t *_Mode,int _ShFlag);
  wint_t __attribute__((__cdecl__)) fgetwc(FILE *_File);
  __attribute__ ((__dllimport__)) wint_t __attribute__((__cdecl__)) _fgetwchar(void);
  wint_t __attribute__((__cdecl__)) fputwc(wchar_t _Ch,FILE *_File);
  __attribute__ ((__dllimport__)) wint_t __attribute__((__cdecl__)) _fputwchar(wchar_t _Ch);
  wint_t __attribute__((__cdecl__)) getwc(FILE *_File);
  wint_t __attribute__((__cdecl__)) getwchar(void);
  wint_t __attribute__((__cdecl__)) putwc(wchar_t _Ch,FILE *_File);
  wint_t __attribute__((__cdecl__)) putwchar(wchar_t _Ch);
  wint_t __attribute__((__cdecl__)) ungetwc(wint_t _Ch,FILE *_File);
  wchar_t *__attribute__((__cdecl__)) fgetws(wchar_t * __restrict__ _Dst,int _SizeInWords,FILE * __restrict__ _File);
  int __attribute__((__cdecl__)) fputws(const wchar_t * __restrict__ _Str,FILE * __restrict__ _File);
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _getws(wchar_t *_String) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _putws(const wchar_t *_Str);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _scwprintf(const wchar_t * __restrict__ _Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _swprintf_c(wchar_t * __restrict__ _DstBuf,size_t _SizeInWords,const wchar_t * __restrict__ _Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vswprintf_c(wchar_t * __restrict__ _DstBuf,size_t _SizeInWords,const wchar_t * __restrict__ _Format,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snwprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,...) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vsnwprintf(wchar_t * __restrict__ _Dest,size_t _Count,const wchar_t * __restrict__ _Format,va_list _Args) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vscwprintf(const wchar_t * __restrict__ _Format,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _swprintf(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vswprintf(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Format,va_list _Args);
#define _INC_SWPRINTF_INL 
#undef __mingw_ovr
#define __mingw_ovr static __attribute__ ((__unused__)) __inline__ __cdecl
#undef __mingw_static_ovr
#define __mingw_static_ovr __mingw_ovr
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
                                                      __attribute__ ((__nonnull__ (3)))
int vswprintf (wchar_t *__stream, size_t __count, const wchar_t *__format, __builtin_va_list __local_argv)
{
  return vsnwprintf( __stream, __count, __format, __local_argv );
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
                                                      __attribute__ ((__nonnull__ (3)))
int swprintf (wchar_t *__stream, size_t __count, const wchar_t *__format, ...)
{
  int __retval;
  __builtin_va_list __local_argv;
  __builtin_va_start( __local_argv, __format );
  __retval = vswprintf( __stream, __count, __format, __local_argv );
  __builtin_va_end( __local_argv );
  return __retval;
}
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wtempnam(const wchar_t *_Directory,const wchar_t *_FilePrefix);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snwscanf(const wchar_t * __restrict__ _Src,size_t _MaxCount,const wchar_t * __restrict__ _Format,...);
  __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _wfdopen(int _FileHandle ,const wchar_t *_Mode);
  __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _wfopen(const wchar_t * __restrict__ _Filename,const wchar_t *__restrict__ _Mode) ;
  __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _wfreopen(const wchar_t * __restrict__ _Filename,const wchar_t * __restrict__ _Mode,FILE * __restrict__ _OldFile) ;
#define _CRT_WPERROR_DEFINED 
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _wperror(const wchar_t *_ErrMsg);
  __attribute__ ((__dllimport__)) FILE *__attribute__((__cdecl__)) _wpopen(const wchar_t *_Command,const wchar_t *_Mode);
#define wpopen _wpopen
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wremove(const wchar_t *_Filename);
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wtmpnam(wchar_t *_Buffer);
#undef _CRT_GETPUTWCHAR_NOINLINE
#define getwchar() fgetwc(stdin)
#define putwchar(_c) fputwc((_c),stdout)
#define getwc(_stm) fgetwc(_stm)
#define putwc(_c,_stm) fputwc(_c,_stm)
#define _STDIO_DEFINED 
#define _fgetc_nolock(_stream) (--(_stream)->_cnt >= 0 ? 0xff & *(_stream)->_ptr++ : _filbuf(_stream))
#define _fputc_nolock(_c,_stream) (--(_stream)->_cnt >= 0 ? 0xff & (*(_stream)->_ptr++ = (char)(_c)) : _flsbuf((_c),(_stream)))
#define _getc_nolock(_stream) _fgetc_nolock(_stream)
#define _putc_nolock(_c,_stream) _fputc_nolock(_c,_stream)
#define _getchar_nolock() _getc_nolock(stdin)
#define _putchar_nolock(_c) _putc_nolock((_c),stdout)
#define _getwchar_nolock() _getwc_nolock(stdin)
#define _putwchar_nolock(_c) _putwc_nolock((_c),stdout)
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _lock_file(FILE *_File);
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _unlock_file(FILE *_File);
#define P_tmpdir _P_tmpdir
#define SYS_OPEN _SYS_OPEN
  char *__attribute__((__cdecl__)) tempnam(const char *_Directory,const char *_FilePrefix) ;
  int __attribute__((__cdecl__)) fcloseall(void) ;
  FILE *__attribute__((__cdecl__)) fdopen(int _FileHandle,const char *_Format) ;
  int __attribute__((__cdecl__)) fgetchar(void) ;
  int __attribute__((__cdecl__)) fileno(FILE *_File) ;
  int __attribute__((__cdecl__)) flushall(void) ;
  int __attribute__((__cdecl__)) fputchar(int _Ch) ;
  int __attribute__((__cdecl__)) getw(FILE *_File) ;
  int __attribute__((__cdecl__)) putw(int _Ch,FILE *_File) ;
  int __attribute__((__cdecl__)) rmtmp(void) ;
#define __MINGW_MBWC_CONVERT_DEFINED 
int __attribute__((__cdecl__)) __mingw_str_wide_utf8 (const wchar_t * const wptr, char **mbptr, size_t * buflen);
int __attribute__((__cdecl__)) __mingw_str_utf8_wide (const char *const mbptr, wchar_t ** wptr, size_t * buflen);
void __attribute__((__cdecl__)) __mingw_str_free(void *ptr);
#define _WSPAWN_DEFINED 
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnl(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnle(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnlp(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnlpe(int _Mode,const wchar_t *_Filename,const wchar_t *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnv(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnve(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnvp(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wspawnvpe(int _Mode,const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
#define _P_WAIT 0
#define _P_NOWAIT 1
#define _OLD_P_OVERLAY 2
#define _P_NOWAITO 3
#define _P_DETACH 4
#define _P_OVERLAY 2
#define _WAIT_CHILD 0
#define _WAIT_GRANDCHILD 1
#define _SPAWNV_DEFINED 
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnv(int _Mode,const char *_Filename,const char *const *_ArgList);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnve(int _Mode,const char *_Filename,const char *const *_ArgList,const char *const *_Env);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnvp(int _Mode,const char *_Filename,const char *const *_ArgList);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnvpe(int _Mode,const char *_Filename,const char *const *_ArgList,const char *const *_Env);
       
       
       
       
#pragma pack(pop)
#define _INC_STDIO_S 
#define _SECIMP __declspec(dllimport)
#define _STDIO_S_DEFINED 
#define L_tmpnam_s L_tmpnam
#define TMP_MAX_S TMP_MAX
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) clearerr_s(FILE *_File);
  size_t __attribute__((__cdecl__)) fread_s(void *_DstBuf,size_t _DstSize,size_t _ElementSize,size_t _Count,FILE *_File);
  int __attribute__((__cdecl__)) fprintf_s(FILE *_File,const char *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fscanf_s_l(FILE *_File,const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) fscanf_s(FILE *_File, const char *_Format, ...);
  int __attribute__((__cdecl__)) printf_s(const char *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _scanf_l(const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _scanf_s_l(const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) scanf_s(const char *_Format, ...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snprintf_c(char *_DstBuf,size_t _MaxCount,const char *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vsnprintf_c(char *_DstBuf,size_t _MaxCount,const char *_Format,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fscanf_l(FILE *_File,const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _sscanf_l(const char *_Src,const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _sscanf_s_l(const char *_Src,const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) sscanf_s(const char *_Src,const char *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snscanf_s(const char *_Src,size_t _MaxCount,const char *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snscanf_l(const char *_Src,size_t _MaxCount,const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snscanf_s_l(const char *_Src,size_t _MaxCount,const char *_Format,_locale_t _Locale,...);
  int __attribute__((__cdecl__)) vfprintf_s(FILE *_File,const char *_Format,va_list _ArgList);
  int __attribute__((__cdecl__)) vprintf_s(const char *_Format,va_list _ArgList);
  int __attribute__((__cdecl__)) vsnprintf_s(char *_DstBuf,size_t _DstSize,size_t _MaxCount,const char *_Format,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vsnprintf_s(char *_DstBuf,size_t _DstSize,size_t _MaxCount,const char *_Format,va_list _ArgList);
  __attribute__((dllimport)) int __attribute__((__cdecl__)) vsprintf_s(char *_DstBuf,size_t _Size,const char *_Format,va_list _ArgList);
  __attribute__((dllimport)) int __attribute__((__cdecl__)) sprintf_s(char *_DstBuf,size_t _DstSize,const char *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snprintf_s(char *_DstBuf,size_t _DstSize,size_t _MaxCount,const char *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fprintf_p(FILE *_File,const char *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _printf_p(const char *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _sprintf_p(char *_Dst,size_t _MaxCount,const char *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vfprintf_p(FILE *_File,const char *_Format,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vprintf_p(const char *_Format,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vsprintf_p(char *_Dst,size_t _MaxCount,const char *_Format,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _scprintf_p(const char *_Format,...);
  __attribute__((dllimport)) int __attribute__((__cdecl__)) _vscprintf_p(const char *_Format,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _printf_l(const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _printf_p_l(const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vprintf_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vprintf_p_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fprintf_l(FILE *_File,const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fprintf_p_l(FILE *_File,const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vfprintf_l(FILE *_File,const char *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vfprintf_p_l(FILE *_File,const char *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _sprintf_l(char *_DstBuf,const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _sprintf_p_l(char *_DstBuf,size_t _MaxCount,const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vsprintf_l(char *_DstBuf,const char *_Format,_locale_t,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vsprintf_p_l(char *_DstBuf,size_t _MaxCount,const char *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _scprintf_l(const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _scprintf_p_l(const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vscprintf_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vscprintf_p_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _printf_s_l(const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vprintf_s_l(const char *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fprintf_s_l(FILE *_File,const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vfprintf_s_l(FILE *_File,const char *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _sprintf_s_l(char *_DstBuf,size_t _DstSize,const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vsprintf_s_l(char *_DstBuf,size_t _DstSize,const char *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snprintf_s_l(char *_DstBuf,size_t _DstSize,size_t _MaxCount,const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vsnprintf_s_l(char *_DstBuf,size_t _DstSize,size_t _MaxCount,const char *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snprintf_l(char *_DstBuf,size_t _MaxCount,const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snprintf_c_l(char *_DstBuf,size_t _MaxCount,const char *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vsnprintf_l(char *_DstBuf,size_t _MaxCount,const char *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vsnprintf_c_l(char *_DstBuf,size_t _MaxCount,const char *,_locale_t _Locale,va_list _ArgList);
 
 
 
 
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) fopen_s(FILE **_File,const char *_Filename,const char *_Mode);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) freopen_s(FILE** _File, const char *_Filename, const char *_Mode, FILE *_Stream);
  __attribute__ ((__dllimport__)) char* __attribute__((__cdecl__)) gets_s(char*,rsize_t);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) tmpnam_s(char*,rsize_t);
 
#define _WSTDIO_S_DEFINED 
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _getws_s(wchar_t *_Str,size_t _SizeInWords);
 
  int __attribute__((__cdecl__)) fwprintf_s(FILE *_File,const wchar_t *_Format,...);
  int __attribute__((__cdecl__)) wprintf_s(const wchar_t *_Format,...);
  int __attribute__((__cdecl__)) vfwprintf_s(FILE *_File,const wchar_t *_Format,va_list _ArgList);
  int __attribute__((__cdecl__)) vwprintf_s(const wchar_t *_Format,va_list _ArgList);
  int __attribute__((__cdecl__)) vswprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t *_Format,va_list _ArgList);
  int __attribute__((__cdecl__)) swprintf_s(wchar_t *_Dst,size_t _SizeInWords,const wchar_t *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vsnwprintf_s(wchar_t *_DstBuf,size_t _DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snwprintf_s(wchar_t *_DstBuf,size_t _DstSizeInWords,size_t _MaxCount,const wchar_t *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wprintf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vwprintf_s_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fwprintf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vfwprintf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _swprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vswprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vsnwprintf_s_l(wchar_t *_DstBuf,size_t _DstSize,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fwscanf_s_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) fwscanf_s(FILE *_File, const wchar_t *_Format, ...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _swscanf_s_l(const wchar_t *_Src,const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) swscanf_s(const wchar_t *_Src,const wchar_t *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snwscanf_s(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snwscanf_s_l(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wscanf_s_l(const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) wscanf_s(const wchar_t *_Format, ...);
 
 
 
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wfopen_s(FILE **_File,const wchar_t *_Filename,const wchar_t *_Mode);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wfreopen_s(FILE **_File,const wchar_t *_Filename,const wchar_t *_Mode,FILE *_OldFile);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wtmpnam_s(wchar_t *_DstBuf,size_t _SizeInWords);
 
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fwprintf_p(FILE *_File,const wchar_t *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wprintf_p(const wchar_t *_Format,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vfwprintf_p(FILE *_File,const wchar_t *_Format,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vwprintf_p(const wchar_t *_Format,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _swprintf_p(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,...);
  __attribute__((dllimport)) int __attribute__((__cdecl__)) _vswprintf_p(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _scwprintf_p(const wchar_t *_Format,...);
  __attribute__((dllimport)) int __attribute__((__cdecl__)) _vscwprintf_p(const wchar_t *_Format,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wprintf_l(const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wprintf_p_l(const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vwprintf_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fwprintf_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fwprintf_p_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vfwprintf_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vfwprintf_p_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _swprintf_c_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _swprintf_p_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vswprintf_c_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vswprintf_p_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _scwprintf_l(const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _scwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vscwprintf_p_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snwprintf_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vsnwprintf_l(wchar_t *_DstBuf,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) __swprintf_l(wchar_t *_Dest,const wchar_t *_Format,_locale_t _Plocinfo,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) __vswprintf_l(wchar_t *_Dest,const wchar_t *_Format,_locale_t _Plocinfo,va_list _Args);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _vscwprintf_l(const wchar_t *_Format,_locale_t _Locale,va_list _ArgList);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fwscanf_l(FILE *_File,const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _swscanf_l(const wchar_t *_Src,const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _snwscanf_l(const wchar_t *_Src,size_t _MaxCount,const wchar_t *_Format,_locale_t _Locale,...);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wscanf_l(const wchar_t *_Format,_locale_t _Locale,...);
#define _INC_TYPES 
#define _INC_CRTDEFS 
#define _INO_T_DEFINED 
typedef unsigned short _ino_t;
typedef unsigned short ino_t;
#define _DEV_T_DEFINED 
typedef unsigned int _dev_t;
typedef unsigned int dev_t;
#define _PID_T_ 
typedef int _pid_t;
#undef pid_t
typedef _pid_t pid_t;
#define _MODE_T_ 
typedef unsigned short _mode_t;
typedef _mode_t mode_t;
typedef unsigned int useconds_t;
#define _TIMESPEC_DEFINED 
struct timespec {
  time_t tv_sec;
  long tv_nsec;
};
struct itimerspec {
  struct timespec it_interval;
  struct timespec it_value;
};
#define _SIGSET_T_ 
typedef unsigned long _sigset_t;
#define _INC_STAT 
#define _IO_H_ 
#define _INC_STRING 
#define _NLSCMP_DEFINED 
#define _NLSCMPERROR 2147483647
#define _WConst_return _CONST_RETURN
#define _CRT_MEMORY_DEFINED 
  __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _memccpy(void *_Dst,const void *_Src,int _Val,size_t _MaxCount);
  void *__attribute__((__cdecl__)) memchr(const void *_Buf ,int _Val,size_t _MaxCount);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _memicmp(const void *_Buf1,const void *_Buf2,size_t _Size);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _memicmp_l(const void *_Buf1,const void *_Buf2,size_t _Size,_locale_t _Locale);
  int __attribute__((__cdecl__)) memcmp(const void *_Buf1,const void *_Buf2,size_t _Size);
  void * __attribute__((__cdecl__)) memcpy(void * __restrict__ _Dst,const void * __restrict__ _Src,size_t _Size) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) memcpy_s (void *_dest,size_t _numberOfElements,const void *_src,size_t _count);
  void * __attribute__((__cdecl__)) mempcpy (void *_Dst, const void *_Src, size_t _Size);
  void * __attribute__((__cdecl__)) memset(void *_Dst,int _Val,size_t _Size);
  void * __attribute__((__cdecl__)) memccpy(void *_Dst,const void *_Src,int _Val,size_t _Size) ;
  int __attribute__((__cdecl__)) memicmp(const void *_Buf1,const void *_Buf2,size_t _Size) ;
  char * __attribute__((__cdecl__)) _strset(char *_Str,int _Val) ;
  char * __attribute__((__cdecl__)) _strset_l(char *_Str,int _Val,_locale_t _Locale) ;
  char * __attribute__((__cdecl__)) strcpy(char * __restrict__ _Dest,const char * __restrict__ _Source);
  char * __attribute__((__cdecl__)) strcat(char * __restrict__ _Dest,const char * __restrict__ _Source);
  int __attribute__((__cdecl__)) strcmp(const char *_Str1,const char *_Str2);
  size_t __attribute__((__cdecl__)) strlen(const char *_Str);
  size_t __attribute__((__cdecl__)) strnlen(const char *_Str,size_t _MaxCount);
  void *__attribute__((__cdecl__)) memmove(void *_Dst,const void *_Src,size_t _Size) ;
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strdup(const char *_Src);
  char *__attribute__((__cdecl__)) strchr(const char *_Str,int _Val);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _stricmp(const char *_Str1,const char *_Str2);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strcmpi(const char *_Str1,const char *_Str2);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _stricmp_l(const char *_Str1,const char *_Str2,_locale_t _Locale);
  int __attribute__((__cdecl__)) strcoll(const char *_Str1,const char *_Str2);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strcoll_l(const char *_Str1,const char *_Str2,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _stricoll(const char *_Str1,const char *_Str2);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _stricoll_l(const char *_Str1,const char *_Str2,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strncoll (const char *_Str1,const char *_Str2,size_t _MaxCount);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strncoll_l(const char *_Str1,const char *_Str2,size_t _MaxCount,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strnicoll (const char *_Str1,const char *_Str2,size_t _MaxCount);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strnicoll_l(const char *_Str1,const char *_Str2,size_t _MaxCount,_locale_t _Locale);
  size_t __attribute__((__cdecl__)) strcspn(const char *_Str,const char *_Control);
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strerror(const char *_ErrMsg) ;
  char *__attribute__((__cdecl__)) strerror(int) ;
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strlwr(char *_String) ;
  char *strlwr_l(char *_String,_locale_t _Locale) ;
  char *__attribute__((__cdecl__)) strncat(char * __restrict__ _Dest,const char * __restrict__ _Source,size_t _Count) ;
  int __attribute__((__cdecl__)) strncmp(const char *_Str1,const char *_Str2,size_t _MaxCount);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strnicmp(const char *_Str1,const char *_Str2,size_t _MaxCount);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _strnicmp_l(const char *_Str1,const char *_Str2,size_t _MaxCount,_locale_t _Locale);
  char *strncpy(char * __restrict__ _Dest,const char * __restrict__ _Source,size_t _Count) ;
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strnset(char *_Str,int _Val,size_t _MaxCount) ;
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strnset_l(char *str,int c,size_t count,_locale_t _Locale) ;
  char *__attribute__((__cdecl__)) strpbrk(const char *_Str,const char *_Control);
  char *__attribute__((__cdecl__)) strrchr(const char *_Str,int _Ch);
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strrev(char *_Str);
  size_t __attribute__((__cdecl__)) strspn(const char *_Str,const char *_Control);
  char *__attribute__((__cdecl__)) strstr(const char *_Str,const char *_SubStr);
  char *__attribute__((__cdecl__)) strtok(char * __restrict__ _Str,const char * __restrict__ _Delim) ;
       
#undef strtok_r
  char *strtok_r(char * __restrict__ _Str, const char * __restrict__ _Delim, char ** __restrict__ __last);
       
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strupr(char *_String) ;
  __attribute__ ((__dllimport__)) char *_strupr_l(char *_String,_locale_t _Locale) ;
  size_t __attribute__((__cdecl__)) strxfrm(char * __restrict__ _Dst,const char * __restrict__ _Src,size_t _MaxCount);
  __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _strxfrm_l(char * __restrict__ _Dst,const char * __restrict__ _Src,size_t _MaxCount,_locale_t _Locale);
  char *__attribute__((__cdecl__)) strdup(const char *_Src) ;
  int __attribute__((__cdecl__)) strcmpi(const char *_Str1,const char *_Str2) ;
  int __attribute__((__cdecl__)) stricmp(const char *_Str1,const char *_Str2) ;
  char *__attribute__((__cdecl__)) strlwr(char *_Str) ;
  int __attribute__((__cdecl__)) strnicmp(const char *_Str1,const char *_Str,size_t _MaxCount) ;
  int __attribute__((__cdecl__)) strncasecmp (const char *, const char *, size_t);
  int __attribute__((__cdecl__)) strcasecmp (const char *, const char *);
  extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) strncasecmp (const char *__sz1, const char *__sz2, size_t __sizeMaxCompare) { return _strnicmp (__sz1, __sz2, __sizeMaxCompare); }
  extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) strcasecmp (const char *__sz1, const char *__sz2) { return _stricmp (__sz1, __sz2); }
  char *__attribute__((__cdecl__)) strnset(char *_Str,int _Val,size_t _MaxCount) ;
  char *__attribute__((__cdecl__)) strrev(char *_Str) ;
  char *__attribute__((__cdecl__)) strset(char *_Str,int _Val) ;
  char *__attribute__((__cdecl__)) strupr(char *_Str) ;
#define _WSTRING_DEFINED 
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcsdup(const wchar_t *_Str);
  wchar_t *__attribute__((__cdecl__)) wcscat(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source) ;
  wchar_t *__attribute__((__cdecl__)) wcschr(const wchar_t *_Str,wchar_t _Ch);
  int __attribute__((__cdecl__)) wcscmp(const wchar_t *_Str1,const wchar_t *_Str2);
  wchar_t *__attribute__((__cdecl__)) wcscpy(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source) ;
  size_t __attribute__((__cdecl__)) wcscspn(const wchar_t *_Str,const wchar_t *_Control);
  size_t __attribute__((__cdecl__)) wcslen(const wchar_t *_Str);
  size_t __attribute__((__cdecl__)) wcsnlen(const wchar_t *_Src,size_t _MaxCount);
  wchar_t *wcsncat(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _Count) ;
  int __attribute__((__cdecl__)) wcsncmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
  wchar_t *wcsncpy(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _Count) ;
  wchar_t *__attribute__((__cdecl__)) _wcsncpy_l(wchar_t * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _Count,_locale_t _Locale) ;
  wchar_t *__attribute__((__cdecl__)) wcspbrk(const wchar_t *_Str,const wchar_t *_Control);
  wchar_t *__attribute__((__cdecl__)) wcsrchr(const wchar_t *_Str,wchar_t _Ch);
  size_t __attribute__((__cdecl__)) wcsspn(const wchar_t *_Str,const wchar_t *_Control);
  wchar_t *__attribute__((__cdecl__)) wcsstr(const wchar_t *_Str,const wchar_t *_SubStr);
  wchar_t *__attribute__((__cdecl__)) wcstok(wchar_t * __restrict__ _Str,const wchar_t * __restrict__ _Delim) ;
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcserror(int _ErrNum) ;
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) __wcserror(const wchar_t *_Str) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsicmp(const wchar_t *_Str1,const wchar_t *_Str2);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsicmp_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsnicmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsnicmp_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale);
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcsnset(wchar_t *_Str,wchar_t _Val,size_t _MaxCount) ;
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcsrev(wchar_t *_Str);
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcsset(wchar_t *_Str,wchar_t _Val) ;
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcslwr(wchar_t *_String) ;
  __attribute__ ((__dllimport__)) wchar_t *_wcslwr_l(wchar_t *_String,_locale_t _Locale) ;
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcsupr(wchar_t *_String) ;
  __attribute__ ((__dllimport__)) wchar_t *_wcsupr_l(wchar_t *_String,_locale_t _Locale) ;
  size_t __attribute__((__cdecl__)) wcsxfrm(wchar_t * __restrict__ _Dst,const wchar_t * __restrict__ _Src,size_t _MaxCount);
  __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _wcsxfrm_l(wchar_t * __restrict__ _Dst,const wchar_t * __restrict__ _Src,size_t _MaxCount,_locale_t _Locale);
  int __attribute__((__cdecl__)) wcscoll(const wchar_t *_Str1,const wchar_t *_Str2);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcscoll_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsicoll(const wchar_t *_Str1,const wchar_t *_Str2);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsicoll_l(const wchar_t *_Str1,const wchar_t *_Str2,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsncoll(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsncoll_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsnicoll(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcsnicoll_l(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount,_locale_t _Locale);
  wchar_t *__attribute__((__cdecl__)) wcsdup(const wchar_t *_Str) ;
#define wcswcs wcsstr
  int __attribute__((__cdecl__)) wcsicmp(const wchar_t *_Str1,const wchar_t *_Str2) ;
  int __attribute__((__cdecl__)) wcsnicmp(const wchar_t *_Str1,const wchar_t *_Str2,size_t _MaxCount) ;
  wchar_t *__attribute__((__cdecl__)) wcsnset(wchar_t *_Str,wchar_t _Val,size_t _MaxCount) ;
  wchar_t *__attribute__((__cdecl__)) wcsrev(wchar_t *_Str) ;
  wchar_t *__attribute__((__cdecl__)) wcsset(wchar_t *_Str,wchar_t _Val) ;
  wchar_t *__attribute__((__cdecl__)) wcslwr(wchar_t *_Str) ;
  wchar_t *__attribute__((__cdecl__)) wcsupr(wchar_t *_Str) ;
  int __attribute__((__cdecl__)) wcsicoll(const wchar_t *_Str1,const wchar_t *_Str2) ;
#define _INC_STRING_S 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strset_s(char *_Dst,size_t _DstSize,int _Value);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strerror_s(char *_Buf,size_t _SizeInBytes,const char *_ErrMsg);
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) strerror_s(char *_Buf,size_t _SizeInBytes,int _ErrNum);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strlwr_s(char *_Str,size_t _Size);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strlwr_s_l(char *_Str,size_t _Size,_locale_t _Locale);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strnset_s(char *_Str,size_t _Size,int _Val,size_t _MaxCount);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strupr_s(char *_Str,size_t _Size);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strupr_s_l(char *_Str,size_t _Size,_locale_t _Locale);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) strncat_s(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strncat_s_l(char *_Dst,size_t _DstSizeInChars,const char *_Src,size_t _MaxCount,_locale_t _Locale);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) strcpy_s(char *_Dst, rsize_t _SizeInBytes, const char *_Src);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) strncpy_s(char *_Dst, size_t _DstSizeInChars, const char *_Src, size_t _MaxCount);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _strncpy_s_l(char *_Dst, size_t _DstSizeInChars, const char *_Src, size_t _MaxCount, _locale_t _Locale);
  ;
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) strtok_s(char *_Str,const char *_Delim,char **_Context);
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strtok_s_l(char *_Str,const char *_Delim,char **_Context,_locale_t _Locale);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) strcat_s(char *_Dst, rsize_t _SizeInBytes, const char * _Src);
 
  extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) size_t __attribute__((__cdecl__)) strnlen_s(const char * _src, size_t _count) {
    return _src ? strnlen(_src, _count) : 0;
  }
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) memmove_s(void *_dest,size_t _numberOfElements,const void *_src,size_t _count);
#define _WSTRING_S_DEFINED 
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) wcstok_s(wchar_t *_Str,const wchar_t *_Delim,wchar_t **_Context);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcserror_s(wchar_t *_Buf,size_t _SizeInWords,int _ErrNum);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) __wcserror_s(wchar_t *_Buffer,size_t _SizeInWords,const wchar_t *_ErrMsg);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsnset_s(wchar_t *_Dst,size_t _DstSizeInWords,wchar_t _Val,size_t _MaxCount);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsset_s(wchar_t *_Str,size_t _SizeInWords,wchar_t _Val);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcslwr_s(wchar_t *_Str,size_t _SizeInWords);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcslwr_s_l(wchar_t *_Str,size_t _SizeInWords,_locale_t _Locale);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsupr_s(wchar_t *_Str,size_t _Size);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsupr_s_l(wchar_t *_Str,size_t _Size,_locale_t _Locale);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) wcscpy_s(wchar_t *_Dst, rsize_t _SizeInWords, const wchar_t *_Src);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) wcscat_s(wchar_t * _Dst, rsize_t _SizeInWords, const wchar_t *_Src);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) wcsncat_s(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsncat_s_l(wchar_t *_Dst,size_t _DstSizeInChars,const wchar_t *_Src,size_t _MaxCount,_locale_t _Locale);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) wcsncpy_s(wchar_t *_Dst, size_t _DstSizeInChars, const wchar_t *_Src, size_t _MaxCount);
  ;
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsncpy_s_l(wchar_t *_Dst, size_t _DstSizeInChars, const wchar_t *_Src, size_t _MaxCount, _locale_t _Locale);
  ;
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wcstok_s_l(wchar_t *_Str,const wchar_t *_Delim,wchar_t **_Context,_locale_t _Locale);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsset_s_l(wchar_t *_Str,size_t _SizeInChars,unsigned int _Val,_locale_t _Locale);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcsnset_s_l(wchar_t *_Str,size_t _SizeInChars,unsigned int _Val, size_t _Count,_locale_t _Locale);
  extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) size_t __attribute__((__cdecl__)) wcsnlen_s(const wchar_t * _src, size_t _count) {
    return _src ? wcsnlen(_src, _count) : 0;
  }
#pragma pack(push,_CRT_PACKING)
__attribute__ ((__dllimport__)) char* __attribute__((__cdecl__)) _getcwd (char*, int);
  typedef unsigned long _fsize_t;
#define _FSIZE_T_DEFINED 
  struct _finddata32_t {
    unsigned attrib;
    __time32_t time_create;
    __time32_t time_access;
    __time32_t time_write;
    _fsize_t size;
    char name[260];
  };
  struct _finddata32i64_t {
    unsigned attrib;
    __time32_t time_create;
    __time32_t time_access;
    __time32_t time_write;
    __extension__ long long size;
    char name[260];
  };
  struct _finddata64i32_t {
    unsigned attrib;
    __time64_t time_create;
    __time64_t time_access;
    __time64_t time_write;
    _fsize_t size;
    char name[260];
  };
  struct __finddata64_t {
    unsigned attrib;
    __time64_t time_create;
    __time64_t time_access;
    __time64_t time_write;
    __extension__ long long size;
    char name[260];
  };
#define _finddata_t _finddata64i32_t
#define _finddatai64_t __finddata64_t
#define _findfirst _findfirst64i32
#define _findnext _findnext64i32
#define _findfirsti64 _findfirst64
#define _findnexti64 _findnext64
#define _FINDDATA_T_DEFINED 
  struct _wfinddata32_t {
    unsigned attrib;
    __time32_t time_create;
    __time32_t time_access;
    __time32_t time_write;
    _fsize_t size;
    wchar_t name[260];
  };
  struct _wfinddata32i64_t {
    unsigned attrib;
    __time32_t time_create;
    __time32_t time_access;
    __time32_t time_write;
    __extension__ long long size;
    wchar_t name[260];
  };
  struct _wfinddata64i32_t {
    unsigned attrib;
    __time64_t time_create;
    __time64_t time_access;
    __time64_t time_write;
    _fsize_t size;
    wchar_t name[260];
  };
  struct _wfinddata64_t {
    unsigned attrib;
    __time64_t time_create;
    __time64_t time_access;
    __time64_t time_write;
    __extension__ long long size;
    wchar_t name[260];
  };
#define _wfinddata_t _wfinddata64i32_t
#define _wfinddatai64_t _wfinddata64_t
#define _wfindfirst _wfindfirst64i32
#define _wfindnext _wfindnext64i32
#define _wfindfirsti64 _wfindfirst64
#define _wfindnexti64 _wfindnext64
#define _WFINDDATA_T_DEFINED 
#define _A_NORMAL 0x00
#define _A_RDONLY 0x01
#define _A_HIDDEN 0x02
#define _A_SYSTEM 0x04
#define _A_SUBDIR 0x10
#define _A_ARCH 0x20
#define F_OK 0
#define X_OK 1
#define W_OK 2
#define R_OK 4
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _access(const char *_Filename,int _AccessMode);
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _access_s(const char *_Filename,int _AccessMode);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _chmod(const char *_Filename,int _Mode);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _chsize(int _FileHandle,long _Size) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _chsize_s (int _FileHandle,long long _Size);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _close(int _FileHandle);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _commit(int _FileHandle);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _creat(const char *_Filename,int _PermissionMode) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _dup(int _FileHandle);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _dup2(int _FileHandleSrc,int _FileHandleDst);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _eof(int _FileHandle);
  __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _filelength(int _FileHandle);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _findfirst32(const char *_Filename,struct _finddata32_t *_FindData);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _findnext32(intptr_t _FindHandle,struct _finddata32_t *_FindData);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _findclose(intptr_t _FindHandle);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isatty(int _FileHandle);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _locking(int _FileHandle,int _LockMode,long _NumOfBytes);
  __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _lseek(int _FileHandle,long _Offset,int _Origin);
  _off64_t lseek64(int fd,_off64_t offset, int whence);
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _mktemp(char *_TemplateName) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _mktemp_s (char *_TemplateName,size_t _Size);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _pipe(int *_PtHandles,unsigned int _PipeSize,int _TextMode);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _read(int _FileHandle,void *_DstBuf,unsigned int _MaxCharCount);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _setmode(int _FileHandle,int _Mode);
  __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _tell(int _FileHandle);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _umask(int _Mode) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _umask_s (int _NewMode,int *_OldMode);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _write(int _FileHandle,const void *_Buf,unsigned int _MaxCharCount);
  __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _filelengthi64(int _FileHandle);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _findfirst32i64(const char *_Filename,struct _finddata32i64_t *_FindData);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _findfirst64(const char *_Filename,struct __finddata64_t *_FindData);
  intptr_t __attribute__((__cdecl__)) _findfirst64i32(const char *_Filename,struct _finddata64i32_t *_FindData);
  extern inline __attribute__((__gnu_inline__)) intptr_t __attribute__((__cdecl__)) _findfirst64i32(const char *_Filename,struct _finddata64i32_t *_FindData)
  {
    struct __finddata64_t fd;
    intptr_t ret = _findfirst64(_Filename,&fd);
    if (ret == -1) {
      memset(_FindData,0,sizeof(struct _finddata64i32_t));
      return -1;
    }
    _FindData->attrib=fd.attrib;
    _FindData->time_create=fd.time_create;
    _FindData->time_access=fd.time_access;
    _FindData->time_write=fd.time_write;
    _FindData->size=(_fsize_t) fd.size;
    strncpy(_FindData->name,fd.name,260);
    return ret;
  }
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _findnext32i64(intptr_t _FindHandle,struct _finddata32i64_t *_FindData);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _findnext64(intptr_t _FindHandle,struct __finddata64_t *_FindData);
  int __attribute__((__cdecl__)) _findnext64i32(intptr_t _FindHandle,struct _finddata64i32_t *_FindData);
  extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) _findnext64i32(intptr_t _FindHandle,struct _finddata64i32_t *_FindData)
  {
    struct __finddata64_t fd;
    int __ret = _findnext64(_FindHandle,&fd);
    if (__ret == -1) {
      memset(_FindData,0,sizeof(struct _finddata64i32_t));
      return -1;
    }
    _FindData->attrib=fd.attrib;
    _FindData->time_create=fd.time_create;
    _FindData->time_access=fd.time_access;
    _FindData->time_write=fd.time_write;
    _FindData->size=(_fsize_t) fd.size;
    strncpy(_FindData->name,fd.name,260);
    return __ret;
  }
  __extension__ long long __attribute__((__cdecl__)) _lseeki64(int _FileHandle,long long _Offset,int _Origin);
  __extension__ long long __attribute__((__cdecl__)) _telli64(int _FileHandle);
  int __attribute__((__cdecl__)) chdir (const char *) ;
  char *__attribute__((__cdecl__)) getcwd (char *, int) ;
  int __attribute__((__cdecl__)) mkdir (const char *) ;
  char *__attribute__((__cdecl__)) mktemp(char *) ;
  int __attribute__((__cdecl__)) rmdir (const char*) ;
  int __attribute__((__cdecl__)) chmod (const char *, int) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _sopen_s(int *_FileHandle,const char *_Filename,int _OpenFlag,int _ShareFlag,int _PermissionMode);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _open(const char *_Filename,int _OpenFlag,...) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _sopen(const char *_Filename,int _OpenFlag,int _ShareFlag,...) ;
#define _WIO_DEFINED 
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _waccess(const wchar_t *_Filename,int _AccessMode);
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _waccess_s (const wchar_t *_Filename,int _AccessMode);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wchmod(const wchar_t *_Filename,int _Mode);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wcreat(const wchar_t *_Filename,int _PermissionMode) ;
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wfindfirst32(const wchar_t *_Filename,struct _wfinddata32_t *_FindData);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wfindnext32(intptr_t _FindHandle,struct _wfinddata32_t *_FindData);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wunlink(const wchar_t *_Filename);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wrename(const wchar_t *_OldFilename,const wchar_t *_NewFilename);
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wmktemp(wchar_t *_TemplateName) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _wmktemp_s (wchar_t *_TemplateName, size_t _SizeInWords);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wfindfirst32i64(const wchar_t *_Filename,struct _wfinddata32i64_t *_FindData);
  intptr_t __attribute__((__cdecl__)) _wfindfirst64i32(const wchar_t *_Filename,struct _wfinddata64i32_t *_FindData);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wfindfirst64(const wchar_t *_Filename,struct _wfinddata64_t *_FindData);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wfindnext32i64(intptr_t _FindHandle,struct _wfinddata32i64_t *_FindData);
  int __attribute__((__cdecl__)) _wfindnext64i32(intptr_t _FindHandle,struct _wfinddata64i32_t *_FindData);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wfindnext64(intptr_t _FindHandle,struct _wfinddata64_t *_FindData);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wsopen_s(int *_FileHandle,const wchar_t *_Filename,int _OpenFlag,int _ShareFlag,int _PermissionFlag);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wopen(const wchar_t *_Filename,int _OpenFlag,...) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wsopen(const wchar_t *_Filename,int _OpenFlag,int _ShareFlag,...) ;
  int __attribute__((__cdecl__)) __lock_fhandle(int _Filehandle);
  void __attribute__((__cdecl__)) _unlock_fhandle(int _Filehandle);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _get_osfhandle(int _FileHandle);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _open_osfhandle(intptr_t _OSFileHandle,int _Flags);
  int __attribute__((__cdecl__)) access(const char *_Filename,int _AccessMode) ;
  int __attribute__((__cdecl__)) chmod(const char *_Filename,int _AccessMode) ;
  int __attribute__((__cdecl__)) chsize(int _FileHandle,long _Size) ;
  int __attribute__((__cdecl__)) close(int _FileHandle) ;
  int __attribute__((__cdecl__)) creat(const char *_Filename,int _PermissionMode) ;
  int __attribute__((__cdecl__)) dup(int _FileHandle) ;
  int __attribute__((__cdecl__)) dup2(int _FileHandleSrc,int _FileHandleDst) ;
  int __attribute__((__cdecl__)) eof(int _FileHandle) ;
  long __attribute__((__cdecl__)) filelength(int _FileHandle) ;
  int __attribute__((__cdecl__)) isatty(int _FileHandle) ;
  int __attribute__((__cdecl__)) locking(int _FileHandle,int _LockMode,long _NumOfBytes) ;
  long __attribute__((__cdecl__)) lseek(int _FileHandle,long _Offset,int _Origin) ;
  char *__attribute__((__cdecl__)) mktemp(char *_TemplateName) ;
  int __attribute__((__cdecl__)) open(const char *_Filename,int _OpenFlag,...) ;
  int __attribute__((__cdecl__)) read(int _FileHandle,void *_DstBuf,unsigned int _MaxCharCount) ;
  int __attribute__((__cdecl__)) setmode(int _FileHandle,int _Mode) ;
  int __attribute__((__cdecl__)) sopen(const char *_Filename,int _OpenFlag,int _ShareFlag,...) ;
  long __attribute__((__cdecl__)) tell(int _FileHandle) ;
  int __attribute__((__cdecl__)) umask(int _Mode) ;
  int __attribute__((__cdecl__)) write(int _Filehandle,const void *_Buf,unsigned int _MaxCharCount) ;
#define _FILE_OFFSET_BITS_SET_LSEEK 
#define lseek lseek64
#pragma pack(pop)
#pragma pack(push,_CRT_PACKING)
#define _fstat _fstat64i32
#define _fstati64 _fstat64
#define _stat _stat64i32
#define _stati64 _stat64
#define _wstat _wstat64i32
#define _wstati64 _wstat64
  struct _stat32 {
    _dev_t st_dev;
   _ino_t st_ino;
    unsigned short st_mode;
    short st_nlink;
    short st_uid;
    short st_gid;
    _dev_t st_rdev;
    _off_t st_size;
    __time32_t st_atime;
    __time32_t st_mtime;
    __time32_t st_ctime;
  };
  struct stat {
    _dev_t st_dev;
    _ino_t st_ino;
    unsigned short st_mode;
    short st_nlink;
    short st_uid;
    short st_gid;
    _dev_t st_rdev;
    _off_t st_size;
    time_t st_atime;
    time_t st_mtime;
    time_t st_ctime;
  };
  struct _stat32i64 {
    _dev_t st_dev;
    _ino_t st_ino;
    unsigned short st_mode;
    short st_nlink;
    short st_uid;
    short st_gid;
    _dev_t st_rdev;
    __extension__ long long st_size;
    __time32_t st_atime;
    __time32_t st_mtime;
    __time32_t st_ctime;
  };
  struct _stat64i32 {
    _dev_t st_dev;
    _ino_t st_ino;
    unsigned short st_mode;
    short st_nlink;
    short st_uid;
    short st_gid;
    _dev_t st_rdev;
    _off_t st_size;
    __time64_t st_atime;
    __time64_t st_mtime;
    __time64_t st_ctime;
  };
  struct _stat64 {
    _dev_t st_dev;
    _ino_t st_ino;
    unsigned short st_mode;
    short st_nlink;
    short st_uid;
    short st_gid;
    _dev_t st_rdev;
    __extension__ long long st_size;
    __time64_t st_atime;
    __time64_t st_mtime;
    __time64_t st_ctime;
  };
#define __stat64 _stat64
#define stat64 _stat64
#define fstat64 _fstat64
#define _STAT_DEFINED 
#define _S_IFMT 0xF000
#define _S_IFDIR 0x4000
#define _S_IFCHR 0x2000
#define _S_IFIFO 0x1000
#define _S_IFREG 0x8000
#define _S_IREAD 0x0100
#define _S_IWRITE 0x0080
#define _S_IEXEC 0x0040
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fstat32(int _FileDes,struct _stat32 *_Stat);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _stat32(const char *_Name,struct _stat32 *_Stat);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fstat64(int _FileDes,struct _stat64 *_Stat);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fstat32i64(int _FileDes,struct _stat32i64 *_Stat);
  int __attribute__((__cdecl__)) _fstat64i32(int _FileDes,struct _stat64i32 *_Stat);
  extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) _fstat64i32(int _FileDes,struct _stat64i32 *_Stat)
  {
    struct _stat64 st;
    int __ret=_fstat64(_FileDes,&st);
    if (__ret == -1) {
      memset(_Stat,0,sizeof(struct _stat64i32));
      return -1;
    }
    _Stat->st_dev=st.st_dev;
    _Stat->st_ino=st.st_ino;
    _Stat->st_mode=st.st_mode;
    _Stat->st_nlink=st.st_nlink;
    _Stat->st_uid=st.st_uid;
    _Stat->st_gid=st.st_gid;
    _Stat->st_rdev=st.st_rdev;
    _Stat->st_size=(_off_t) st.st_size;
    _Stat->st_atime=st.st_atime;
    _Stat->st_mtime=st.st_mtime;
    _Stat->st_ctime=st.st_ctime;
    return __ret;
  }
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _stat64(const char *_Name,struct _stat64 *_Stat);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _stat32i64(const char *_Name,struct _stat32i64 *_Stat);
  int __attribute__((__cdecl__)) _stat64i32(const char *_Name,struct _stat64i32 *_Stat);
  extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) _stat64i32(const char *_Name,struct _stat64i32 *_Stat)
  {
    struct _stat64 st;
    int __ret=_stat64(_Name,&st);
    if (__ret == -1) {
      memset(_Stat,0,sizeof(struct _stat64i32));
      return -1;
    }
    _Stat->st_dev=st.st_dev;
    _Stat->st_ino=st.st_ino;
    _Stat->st_mode=st.st_mode;
    _Stat->st_nlink=st.st_nlink;
    _Stat->st_uid=st.st_uid;
    _Stat->st_gid=st.st_gid;
    _Stat->st_rdev=st.st_rdev;
    _Stat->st_size=(_off_t) st.st_size;
    _Stat->st_atime=st.st_atime;
    _Stat->st_mtime=st.st_mtime;
    _Stat->st_ctime=st.st_ctime;
    return __ret;
  }
#define _WSTAT_DEFINED 
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wstat32(const wchar_t *_Name,struct _stat32 *_Stat);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wstat32i64(const wchar_t *_Name,struct _stat32i64 *_Stat);
  int __attribute__((__cdecl__)) _wstat64i32(const wchar_t *_Name,struct _stat64i32 *_Stat);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wstat64(const wchar_t *_Name,struct _stat64 *_Stat);
#define _S_IFBLK 0x3000
#define S_IFMT _S_IFMT
#define S_IFDIR _S_IFDIR
#define S_IFCHR _S_IFCHR
#define S_IFREG _S_IFREG
#define S_IREAD _S_IREAD
#define S_IWRITE _S_IWRITE
#define S_IEXEC _S_IEXEC
#define S_IFIFO _S_IFIFO
#define S_IFBLK _S_IFBLK
#define _S_IRWXU (_S_IREAD | _S_IWRITE | _S_IEXEC)
#define _S_IXUSR _S_IEXEC
#define _S_IWUSR _S_IWRITE
#define S_IRWXU _S_IRWXU
#define S_IXUSR _S_IXUSR
#define S_IWUSR _S_IWUSR
#define S_IRUSR _S_IRUSR
#define _S_IRUSR _S_IREAD
#define S_IRGRP (S_IRUSR >> 3)
#define S_IWGRP (S_IWUSR >> 3)
#define S_IXGRP (S_IXUSR >> 3)
#define S_IRWXG (S_IRWXU >> 3)
#define S_IROTH (S_IRGRP >> 3)
#define S_IWOTH (S_IWGRP >> 3)
#define S_IXOTH (S_IXGRP >> 3)
#define S_IRWXO (S_IRWXG >> 3)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
int __attribute__((__cdecl__)) fstat(int _Desc,struct stat *_Stat);
int __attribute__((__cdecl__)) stat(const char *_Filename,struct stat *_Stat);
int __attribute__((__cdecl__)) wstat(const wchar_t *_Filename,struct stat *_Stat);
extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__))
 fstat(int _Desc,struct stat *_Stat) {
  struct _stat64 st;
  int __ret=_fstat64(_Desc,&st);
  if (__ret == -1) {
    memset(_Stat,0,sizeof(struct stat));
    return -1;
  }
  _Stat->st_dev=st.st_dev;
  _Stat->st_ino=st.st_ino;
  _Stat->st_mode=st.st_mode;
  _Stat->st_nlink=st.st_nlink;
  _Stat->st_uid=st.st_uid;
  _Stat->st_gid=st.st_gid;
  _Stat->st_rdev=st.st_rdev;
  _Stat->st_size=(_off_t) st.st_size;
  _Stat->st_atime=st.st_atime;
  _Stat->st_mtime=st.st_mtime;
  _Stat->st_ctime=st.st_ctime;
  return __ret;
}
#define stat _stat64
#define fstat _fstat64
#pragma pack(pop)
#define _INC_STDLIB 
#define _INC_CORECRT_WSTDLIB 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _itow_s (int _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ltow_s (long _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ultow_s (unsigned long _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wgetenv_s(size_t *_ReturnSize,wchar_t *_DstBuf,size_t _DstSizeInWords,const wchar_t *_VarName);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wdupenv_s(wchar_t **_Buffer,size_t *_BufferSizeInWords,const wchar_t *_VarName);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _i64tow_s(long long _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ui64tow_s(unsigned long long _Val,wchar_t *_DstBuf,size_t _SizeInWords,int _Radix);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wmakepath_s(wchar_t *_PathResult,size_t _SizeInWords,const wchar_t *_Drive,const wchar_t *_Dir,const wchar_t *_Filename,const wchar_t *_Ext);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wputenv_s(const wchar_t *_Name,const wchar_t *_Value);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wsearchenv_s(const wchar_t *_Filename,const wchar_t *_EnvVar,wchar_t *_ResultPath,size_t _SizeInWords);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wsplitpath_s(const wchar_t *_FullPath,wchar_t *_Drive,size_t _DriveSizeInWords,wchar_t *_Dir,size_t _DirSizeInWords,wchar_t *_Filename,size_t _FilenameSizeInWords,wchar_t *_Ext,size_t _ExtSizeInWords);
 
#define _GCC_LIMITS_H_ 
#define _GCC_NEXT_LIMITS_H 
#define _INC_LIMITS 
#define PATH_MAX 260
#define CHAR_BIT 8
#define SCHAR_MIN (-128)
#define SCHAR_MAX 127
#define UCHAR_MAX 0xff
#define CHAR_MIN SCHAR_MIN
#define CHAR_MAX SCHAR_MAX
#define MB_LEN_MAX 5
#define SHRT_MIN (-32768)
#define SHRT_MAX 32767
#define USHRT_MAX 0xffffU
#define INT_MIN (-2147483647 - 1)
#define INT_MAX 2147483647
#define UINT_MAX 0xffffffffU
#define LONG_MIN (-2147483647L - 1)
#define LONG_MAX 2147483647L
#define ULONG_MAX 0xffffffffUL
#define LLONG_MAX 9223372036854775807ll
#define LLONG_MIN (-9223372036854775807ll - 1)
#define ULLONG_MAX 0xffffffffffffffffull
#define _I8_MIN (-127 - 1)
#define _I8_MAX 127
#define _UI8_MAX 0xffu
#define _I16_MIN (-32767 - 1)
#define _I16_MAX 32767
#define _UI16_MAX 0xffffu
#define _I32_MIN (-2147483647 - 1)
#define _I32_MAX 2147483647
#define _UI32_MAX 0xffffffffu
#undef LONG_LONG_MAX
#define LONG_LONG_MAX 9223372036854775807ll
#undef LONG_LONG_MIN
#define LONG_LONG_MIN (-LONG_LONG_MAX-1)
#undef ULONG_LONG_MAX
#define ULONG_LONG_MAX (2ull * LONG_LONG_MAX + 1ull)
#define _I64_MIN (-9223372036854775807ll - 1)
#define _I64_MAX 9223372036854775807ll
#define _UI64_MAX 0xffffffffffffffffull
#define SIZE_MAX UINT_MAX
#define SSIZE_MAX INT_MAX
#undef _GCC_NEXT_LIMITS_H
#define _LIMITS_H___ 
#undef CHAR_BIT
#define CHAR_BIT __CHAR_BIT__
#undef SCHAR_MIN
#define SCHAR_MIN (-SCHAR_MAX - 1)
#undef SCHAR_MAX
#define SCHAR_MAX __SCHAR_MAX__
#undef UCHAR_MAX
#define UCHAR_MAX (SCHAR_MAX * 2 + 1)
#undef CHAR_MIN
#define CHAR_MIN SCHAR_MIN
#undef CHAR_MAX
#define CHAR_MAX SCHAR_MAX
#undef SHRT_MIN
#define SHRT_MIN (-SHRT_MAX - 1)
#undef SHRT_MAX
#define SHRT_MAX __SHRT_MAX__
#undef USHRT_MAX
#define USHRT_MAX (SHRT_MAX * 2 + 1)
#undef INT_MIN
#define INT_MIN (-INT_MAX - 1)
#undef INT_MAX
#define INT_MAX __INT_MAX__
#undef UINT_MAX
#define UINT_MAX (INT_MAX * 2U + 1U)
#undef LONG_MIN
#define LONG_MIN (-LONG_MAX - 1L)
#undef LONG_MAX
#define LONG_MAX __LONG_MAX__
#undef ULONG_MAX
#define ULONG_MAX (LONG_MAX * 2UL + 1UL)
#undef LLONG_MIN
#define LLONG_MIN (-LLONG_MAX - 1LL)
#undef LLONG_MAX
#define LLONG_MAX __LONG_LONG_MAX__
#undef ULLONG_MAX
#define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
#undef LONG_LONG_MIN
#define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL)
#undef LONG_LONG_MAX
#define LONG_LONG_MAX __LONG_LONG_MAX__
#undef ULONG_LONG_MAX
#define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL)
#define __USE_MINGW_STRTOX 1
#pragma pack(push,_CRT_PACKING)
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
#define _ONEXIT_T_DEFINED 
  typedef int (__attribute__((__cdecl__)) *_onexit_t)(void);
#define onexit_t _onexit_t
#define _DIV_T_DEFINED 
  typedef struct _div_t {
    int quot;
    int rem;
  } div_t;
  typedef struct _ldiv_t {
    long quot;
    long rem;
  } ldiv_t;
#define _CRT_DOUBLE_DEC 
#pragma pack(4)
  typedef struct {
    unsigned char ld[10];
  } _LDOUBLE;
#pragma pack()
#define _PTR_LD(x) ((unsigned char *)(&(x)->ld))
  typedef struct {
    double x;
  } _CRT_DOUBLE;
  typedef struct {
    float f;
  } _CRT_FLOAT;
       
#undef long
  typedef struct {
    long double x;
  } _LONGDOUBLE;
       
#pragma pack(4)
  typedef struct {
    unsigned char ld12[12];
  } _LDBL12;
#pragma pack()
#define RAND_MAX 0x7fff
#define MB_CUR_MAX ___mb_cur_max_func()
  extern int * _imp____mb_cur_max;
#define __mb_cur_max (___mb_cur_max_func())
__attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) ___mb_cur_max_func(void);
#define __max(a,b) (((a) > (b)) ? (a) : (b))
#define __min(a,b) (((a) < (b)) ? (a) : (b))
#define _MAX_PATH 260
#define _MAX_DRIVE 3
#define _MAX_DIR 256
#define _MAX_FNAME 256
#define _MAX_EXT 256
#define _OUT_TO_DEFAULT 0
#define _OUT_TO_STDERR 1
#define _OUT_TO_MSGBOX 2
#define _REPORT_ERRMODE 3
#define _WRITE_ABORT_MSG 0x1
#define _CALL_REPORTFAULT 0x2
#define _MAX_ENV 32767
  typedef void (__attribute__((__cdecl__)) *_purecall_handler)(void);
  __attribute__ ((__dllimport__)) _purecall_handler __attribute__((__cdecl__)) _set_purecall_handler(_purecall_handler _Handler);
  __attribute__ ((__dllimport__)) _purecall_handler __attribute__((__cdecl__)) _get_purecall_handler(void);
  typedef void (__attribute__((__cdecl__)) *_invalid_parameter_handler)(const wchar_t *,const wchar_t *,const wchar_t *,unsigned int,uintptr_t);
  __attribute__ ((__dllimport__)) _invalid_parameter_handler __attribute__((__cdecl__)) _set_invalid_parameter_handler(_invalid_parameter_handler _Handler);
  __attribute__ ((__dllimport__)) _invalid_parameter_handler __attribute__((__cdecl__)) _get_invalid_parameter_handler(void);
#define _CRT_ERRNO_DEFINED 
  __attribute__ ((__dllimport__)) extern int *__attribute__((__cdecl__)) _errno(void);
#define errno (*_errno())
  errno_t __attribute__((__cdecl__)) _set_errno(int _Value);
  errno_t __attribute__((__cdecl__)) _get_errno(int *_Value);
  __attribute__ ((__dllimport__)) unsigned long *__attribute__((__cdecl__)) __doserrno(void);
#define _doserrno (*__doserrno())
  errno_t __attribute__((__cdecl__)) _set_doserrno(unsigned long _Value);
  errno_t __attribute__((__cdecl__)) _get_doserrno(unsigned long *_Value);
  extern __attribute__((dllimport)) char *_sys_errlist[1];
  extern __attribute__((dllimport)) int _sys_nerr;
  __attribute__ ((__dllimport__)) char ***__attribute__((__cdecl__)) __p___argv(void);
  __attribute__ ((__dllimport__)) int *__attribute__((__cdecl__)) __p__fmode(void);
  __attribute__ ((__dllimport__)) int *__attribute__((__cdecl__)) __p___argc(void);
  __attribute__ ((__dllimport__)) wchar_t ***__attribute__((__cdecl__)) __p___wargv(void);
  __attribute__ ((__dllimport__)) char ***__attribute__((__cdecl__)) __p__environ(void);
  __attribute__ ((__dllimport__)) wchar_t ***__attribute__((__cdecl__)) __p__wenviron(void);
  __attribute__ ((__dllimport__)) char **__attribute__((__cdecl__)) __p__pgmptr(void);
  __attribute__ ((__dllimport__)) wchar_t **__attribute__((__cdecl__)) __p__wpgmptr(void);
  errno_t __attribute__((__cdecl__)) _get_pgmptr(char **_Value);
  errno_t __attribute__((__cdecl__)) _get_wpgmptr(wchar_t **_Value);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _set_fmode(int _Mode);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _get_fmode(int *_PMode);
#define _fmode (* __p__fmode())
  extern int * _imp____argc;
#define __argc (* __MINGW_IMP_SYMBOL(__argc))
  extern char *** _imp____argv;
#define __argv (* __p___argv())
  extern wchar_t *** _imp____wargv;
#define __wargv (* __MINGW_IMP_SYMBOL(__wargv))
  extern char *** _imp___environ;
#define _environ (* __MINGW_IMP_SYMBOL(_environ))
  extern wchar_t *** _imp___wenviron;
#define _wenviron (* __MINGW_IMP_SYMBOL(_wenviron))
  extern char ** _imp___pgmptr;
#define _pgmptr (* __MINGW_IMP_SYMBOL(_pgmptr))
  extern wchar_t ** _imp___wpgmptr;
#define _wpgmptr (* __MINGW_IMP_SYMBOL(_wpgmptr))
  extern unsigned int * _imp___osplatform;
#define _osplatform (* __MINGW_IMP_SYMBOL(_osplatform))
  extern unsigned int * _imp___osver;
#define _osver (* __MINGW_IMP_SYMBOL(_osver))
  extern unsigned int * _imp___winver;
#define _winver (* __MINGW_IMP_SYMBOL(_winver))
  extern unsigned int * _imp___winmajor;
#define _winmajor (* __MINGW_IMP_SYMBOL(_winmajor))
  extern unsigned int * _imp___winminor;
#define _winminor (* __MINGW_IMP_SYMBOL(_winminor))
  errno_t __attribute__((__cdecl__)) _get_osplatform(unsigned int *_Value);
  errno_t __attribute__((__cdecl__)) _get_osver(unsigned int *_Value);
  errno_t __attribute__((__cdecl__)) _get_winver(unsigned int *_Value);
  errno_t __attribute__((__cdecl__)) _get_winmajor(unsigned int *_Value);
  errno_t __attribute__((__cdecl__)) _get_winminor(unsigned int *_Value);
#define _countof(_Array) (sizeof(_Array) / sizeof(_Array[0]))
#define _CRT_TERMINATE_DEFINED 
  void __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) exit(int _Code) __attribute__ ((__noreturn__));
  void __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _exit(int _Code) __attribute__ ((__noreturn__));
  void __attribute__((__cdecl__)) _Exit(int) __attribute__ ((__noreturn__));
  extern inline __attribute__((__gnu_inline__)) __attribute__ ((__noreturn__)) void __attribute__((__cdecl__)) _Exit(int status)
  { _exit(status); }
       
#undef abort
  void __attribute__((__cdecl__)) __attribute__ ((__noreturn__)) abort(void);
       
  __attribute__ ((__dllimport__)) unsigned int __attribute__((__cdecl__)) _set_abort_behavior(unsigned int _Flags,unsigned int _Mask);
#define _CRT_ABS_DEFINED 
  int __attribute__((__cdecl__)) abs(int _X);
  long __attribute__((__cdecl__)) labs(long _X);
  __extension__ long long __attribute__((__cdecl__)) _abs64(long long);
  extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) long long __attribute__((__cdecl__)) _abs64(long long x) {
    return __builtin_llabs(x);
  }
  int __attribute__((__cdecl__)) atexit(void (__attribute__((__cdecl__)) *)(void));
#define _CRT_ATOF_DEFINED 
  double __attribute__((__cdecl__)) atof(const char *_String);
  double __attribute__((__cdecl__)) _atof_l(const char *_String,_locale_t _Locale);
  int __attribute__((__cdecl__)) atoi(const char *_Str);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _atoi_l(const char *_Str,_locale_t _Locale);
  long __attribute__((__cdecl__)) atol(const char *_Str);
  __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _atol_l(const char *_Str,_locale_t _Locale);
#define _CRT_ALGO_DEFINED 
  void *__attribute__((__cdecl__)) bsearch(const void *_Key,const void *_Base,size_t _NumOfElements,size_t _SizeOfElements,int (__attribute__((__cdecl__)) *_PtFuncCompare)(const void *,const void *));
  void __attribute__((__cdecl__)) qsort(void *_Base,size_t _NumOfElements,size_t _SizeOfElements,int (__attribute__((__cdecl__)) *_PtFuncCompare)(const void *,const void *));
  unsigned short __attribute__((__cdecl__)) _byteswap_ushort(unsigned short _Short);
  unsigned long __attribute__((__cdecl__)) _byteswap_ulong (unsigned long _Long);
  __extension__ unsigned long long __attribute__((__cdecl__)) _byteswap_uint64(unsigned long long _Int64);
  div_t __attribute__((__cdecl__)) div(int _Numerator,int _Denominator);
  char *__attribute__((__cdecl__)) getenv(const char *_VarName) ;
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _itoa(int _Value,char *_Dest,int _Radix);
  __extension__ __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _i64toa(long long _Val,char *_DstBuf,int _Radix) ;
  __extension__ __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _ui64toa(unsigned long long _Val,char *_DstBuf,int _Radix) ;
  __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _atoi64(const char *_String);
  __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _atoi64_l(const char *_String,_locale_t _Locale);
  __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _strtoi64(const char *_String,char **_EndPtr,int _Radix);
  __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _strtoi64_l(const char *_String,char **_EndPtr,int _Radix,_locale_t _Locale);
  __extension__ __attribute__ ((__dllimport__)) unsigned long long __attribute__((__cdecl__)) _strtoui64(const char *_String,char **_EndPtr,int _Radix);
  __extension__ __attribute__ ((__dllimport__)) unsigned long long __attribute__((__cdecl__)) _strtoui64_l(const char *_String,char **_EndPtr,int _Radix,_locale_t _Locale);
  ldiv_t __attribute__((__cdecl__)) ldiv(long _Numerator,long _Denominator);
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _ltoa(long _Value,char *_Dest,int _Radix) ;
  int __attribute__((__cdecl__)) mblen(const char *_Ch,size_t _MaxCount);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _mblen_l(const char *_Ch,size_t _MaxCount,_locale_t _Locale);
  __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _mbstrlen(const char *_Str);
  __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _mbstrlen_l(const char *_Str,_locale_t _Locale);
  __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _mbstrnlen(const char *_Str,size_t _MaxCount);
  __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _mbstrnlen_l(const char *_Str,size_t _MaxCount,_locale_t _Locale);
  int __attribute__((__cdecl__)) mbtowc(wchar_t * __restrict__ _DstCh,const char * __restrict__ _SrcCh,size_t _SrcSizeInBytes);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _mbtowc_l(wchar_t * __restrict__ _DstCh,const char * __restrict__ _SrcCh,size_t _SrcSizeInBytes,_locale_t _Locale);
  size_t __attribute__((__cdecl__)) mbstowcs(wchar_t * __restrict__ _Dest,const char * __restrict__ _Source,size_t _MaxCount);
  __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _mbstowcs_l(wchar_t * __restrict__ _Dest,const char * __restrict__ _Source,size_t _MaxCount,_locale_t _Locale);
  int __attribute__((__cdecl__)) mkstemp(char *template_name);
  int __attribute__((__cdecl__)) rand(void);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _set_error_mode(int _Mode);
  void __attribute__((__cdecl__)) srand(unsigned int _Seed);
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
double __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) strtod(const char * __restrict__ _Str,char ** __restrict__ _EndPtr)
{
  double __attribute__((__cdecl__)) __mingw_strtod (const char * __restrict__, char ** __restrict__);
  return __mingw_strtod( _Str, _EndPtr);
}
static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
float __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) strtof(const char * __restrict__ _Str,char ** __restrict__ _EndPtr)
{
  float __attribute__((__cdecl__)) __mingw_strtof (const char * __restrict__, char ** __restrict__);
  return __mingw_strtof( _Str, _EndPtr);
}
  long double __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) strtold(const char * __restrict__ , char ** __restrict__ );
  extern double __attribute__((__cdecl__)) __attribute__ ((__nothrow__))
  __strtod (const char * __restrict__ , char ** __restrict__);
  float __attribute__((__cdecl__)) __mingw_strtof (const char * __restrict__, char ** __restrict__);
  double __attribute__((__cdecl__)) __mingw_strtod (const char * __restrict__, char ** __restrict__);
  long double __attribute__((__cdecl__)) __mingw_strtold(const char * __restrict__, char ** __restrict__);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _strtod_l(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,_locale_t _Locale);
  long __attribute__((__cdecl__)) strtol(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,int _Radix);
  __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _strtol_l(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,int _Radix,_locale_t _Locale);
  unsigned long __attribute__((__cdecl__)) strtoul(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,int _Radix);
  __attribute__ ((__dllimport__)) unsigned long __attribute__((__cdecl__)) _strtoul_l(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,int _Radix,_locale_t _Locale);
#define _CRT_SYSTEM_DEFINED 
  int __attribute__((__cdecl__)) system(const char *_Command);
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _ultoa(unsigned long _Value,char *_Dest,int _Radix) ;
  int __attribute__((__cdecl__)) wctomb(char *_MbCh,wchar_t _WCh) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wctomb_l(char *_MbCh,wchar_t _WCh,_locale_t _Locale) ;
  size_t __attribute__((__cdecl__)) wcstombs(char * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _MaxCount) ;
  __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _wcstombs_l(char * __restrict__ _Dest,const wchar_t * __restrict__ _Source,size_t _MaxCount,_locale_t _Locale) ;
#define _CRT_ALLOCATION_DEFINED 
  void *__attribute__((__cdecl__)) calloc(size_t _NumOfElements,size_t _SizeOfElements);
  void __attribute__((__cdecl__)) free(void *_Memory);
  void *__attribute__((__cdecl__)) malloc(size_t _Size);
  void *__attribute__((__cdecl__)) realloc(void *_Memory,size_t _NewSize);
  __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _recalloc(void *_Memory,size_t _Count,size_t _Size);
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _aligned_free(void *_Memory);
  __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _aligned_malloc(size_t _Size,size_t _Alignment);
  __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _aligned_offset_malloc(size_t _Size,size_t _Alignment,size_t _Offset);
  __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _aligned_realloc(void *_Memory,size_t _Size,size_t _Alignment);
  __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _aligned_recalloc(void *_Memory,size_t _Count,size_t _Size,size_t _Alignment);
  __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _aligned_offset_realloc(void *_Memory,size_t _Size,size_t _Alignment,size_t _Offset);
  __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _aligned_offset_recalloc(void *_Memory,size_t _Count,size_t _Size,size_t _Alignment,size_t _Offset);
#define _WSTDLIB_DEFINED 
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _itow(int _Value,wchar_t *_Dest,int _Radix) ;
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _ltow(long _Value,wchar_t *_Dest,int _Radix) ;
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _ultow(unsigned long _Value,wchar_t *_Dest,int _Radix) ;
  double __attribute__((__cdecl__)) __mingw_wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr);
  float __attribute__((__cdecl__)) __mingw_wcstof(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr);
  long double __attribute__((__cdecl__)) __mingw_wcstold(const wchar_t * __restrict__, wchar_t ** __restrict__);
  static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
  double __attribute__((__cdecl__)) wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr){
    return __mingw_wcstod(_Str,_EndPtr);
  }
  static __attribute__ ((__unused__)) __inline__ __attribute__((__cdecl__))
  float __attribute__((__cdecl__)) wcstof(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr){
    return __mingw_wcstof(_Str,_EndPtr);
  }
  long double __attribute__((__cdecl__)) wcstold(const wchar_t * __restrict__, wchar_t ** __restrict__);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _wcstod_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,_locale_t _Locale);
  long __attribute__((__cdecl__)) wcstol(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix);
  __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _wcstol_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix,_locale_t _Locale);
  unsigned long __attribute__((__cdecl__)) wcstoul(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix);
  __attribute__ ((__dllimport__)) unsigned long __attribute__((__cdecl__)) _wcstoul_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix,_locale_t _Locale);
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wgetenv(const wchar_t *_VarName) ;
#define _CRT_WSYSTEM_DEFINED 
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wsystem(const wchar_t *_Command);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _wtof(const wchar_t *_Str);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _wtof_l(const wchar_t *_Str,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wtoi(const wchar_t *_Str);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wtoi_l(const wchar_t *_Str,_locale_t _Locale);
  __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _wtol(const wchar_t *_Str);
  __attribute__ ((__dllimport__)) long __attribute__((__cdecl__)) _wtol_l(const wchar_t *_Str,_locale_t _Locale);
  __extension__ __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _i64tow(long long _Val,wchar_t *_DstBuf,int _Radix) ;
  __extension__ __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _ui64tow(unsigned long long _Val,wchar_t *_DstBuf,int _Radix) ;
  __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _wtoi64(const wchar_t *_Str);
  __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _wtoi64_l(const wchar_t *_Str,_locale_t _Locale);
  __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _wcstoi64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
  __extension__ __attribute__ ((__dllimport__)) long long __attribute__((__cdecl__)) _wcstoi64_l(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
  __extension__ __attribute__ ((__dllimport__)) unsigned long long __attribute__((__cdecl__)) _wcstoui64(const wchar_t *_Str,wchar_t **_EndPtr,int _Radix);
  __extension__ __attribute__ ((__dllimport__)) unsigned long long __attribute__((__cdecl__)) _wcstoui64_l(const wchar_t *_Str ,wchar_t **_EndPtr,int _Radix,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _putenv(const char *_EnvString);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wputenv(const wchar_t *_EnvString);
#define _CVTBUFSIZE (309+40)
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _fullpath(char *_FullPath,const char *_Path,size_t _SizeInBytes);
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _ecvt(double _Val,int _NumOfDigits,int *_PtDec,int *_PtSign) ;
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _fcvt(double _Val,int _NumOfDec,int *_PtDec,int *_PtSign) ;
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _gcvt(double _Val,int _NumOfDigits,char *_DstBuf) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _atodbl(_CRT_DOUBLE *_Result,char *_Str);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _atoldbl(_LDOUBLE *_Result,char *_Str);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _atoflt(_CRT_FLOAT *_Result,char *_Str);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _atodbl_l(_CRT_DOUBLE *_Result,char *_Str,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _atoldbl_l(_LDOUBLE *_Result,char *_Str,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _atoflt_l(_CRT_FLOAT *_Result,char *_Str,_locale_t _Locale);
#undef _lrotr
#undef _lrotl
unsigned long __attribute__((__cdecl__)) _lrotl(unsigned long,int);
unsigned long __attribute__((__cdecl__)) _lrotr(unsigned long,int);
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _makepath(char *_Path,const char *_Drive,const char *_Dir,const char *_Filename,const char *_Ext);
  _onexit_t __attribute__((__cdecl__)) _onexit(_onexit_t _Func);
       
       
#undef _rotl64
#undef _rotr64
  __extension__ unsigned long long __attribute__((__cdecl__)) _rotl64(unsigned long long _Val,int _Shift);
  __extension__ unsigned long long __attribute__((__cdecl__)) _rotr64(unsigned long long Value,int Shift);
       
       
       
       
#undef _rotr
#undef _rotl
  unsigned int __attribute__((__cdecl__)) _rotr(unsigned int _Val,int _Shift);
  unsigned int __attribute__((__cdecl__)) _rotl(unsigned int _Val,int _Shift);
       
       
  __extension__ unsigned long long __attribute__((__cdecl__)) _rotr64(unsigned long long _Val,int _Shift);
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _searchenv(const char *_Filename,const char *_EnvVar,char *_ResultPath) ;
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _splitpath(const char *_FullPath,char *_Drive,char *_Dir,char *_Filename,char *_Ext) ;
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _swab(char *_Buf1,char *_Buf2,int _SizeInBytes);
#define _WSTDLIBP_DEFINED 
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wfullpath(wchar_t *_FullPath,const wchar_t *_Path,size_t _SizeInWords);
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _wmakepath(wchar_t *_ResultPath,const wchar_t *_Drive,const wchar_t *_Dir,const wchar_t *_Filename,const wchar_t *_Ext);
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _wsearchenv(const wchar_t *_Filename,const wchar_t *_EnvVar,wchar_t *_ResultPath) ;
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _wsplitpath(const wchar_t *_FullPath,wchar_t *_Drive,wchar_t *_Dir,wchar_t *_Filename,wchar_t *_Ext) ;
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _beep(unsigned _Frequency,unsigned _Duration) __attribute__ ((__deprecated__));
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _seterrormode(int _Mode) __attribute__ ((__deprecated__));
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _sleep(unsigned long _Duration) __attribute__ ((__deprecated__));
#define sys_errlist _sys_errlist
#define sys_nerr _sys_nerr
#define environ _environ
  char *__attribute__((__cdecl__)) ecvt(double _Val,int _NumOfDigits,int *_PtDec,int *_PtSign) ;
  char *__attribute__((__cdecl__)) fcvt(double _Val,int _NumOfDec,int *_PtDec,int *_PtSign) ;
  char *__attribute__((__cdecl__)) gcvt(double _Val,int _NumOfDigits,char *_DstBuf) ;
  char *__attribute__((__cdecl__)) itoa(int _Val,char *_DstBuf,int _Radix) ;
  char *__attribute__((__cdecl__)) ltoa(long _Val,char *_DstBuf,int _Radix) ;
  int __attribute__((__cdecl__)) putenv(const char *_EnvString) ;
#define _CRT_SWAB_DEFINED 
  void __attribute__((__cdecl__)) swab(char *_Buf1,char *_Buf2,int _SizeInBytes) ;
  char *__attribute__((__cdecl__)) ultoa(unsigned long _Val,char *_Dstbuf,int _Radix) ;
  _onexit_t __attribute__((__cdecl__)) onexit(_onexit_t _Func);
  typedef struct { __extension__ long long quot, rem; } lldiv_t;
  __extension__ lldiv_t __attribute__((__cdecl__)) lldiv(long long, long long);
  __extension__ long long __attribute__((__cdecl__)) llabs(long long);
  __extension__ extern inline __attribute__((__gnu_inline__)) long long __attribute__((__cdecl__)) llabs(long long _j) { return (_j >= 0 ? _j : -_j); }
  __extension__ long long __attribute__((__cdecl__)) strtoll(const char * __restrict__, char ** __restrict, int);
  __extension__ unsigned long long __attribute__((__cdecl__)) strtoull(const char * __restrict__, char ** __restrict__, int);
  __extension__ long long __attribute__((__cdecl__)) atoll (const char *);
  __extension__ long long __attribute__((__cdecl__)) wtoll (const wchar_t *);
  __extension__ char *__attribute__((__cdecl__)) lltoa (long long, char *, int);
  __extension__ char *__attribute__((__cdecl__)) ulltoa (unsigned long long , char *, int);
  __extension__ wchar_t *__attribute__((__cdecl__)) lltow (long long, wchar_t *, int);
  __extension__ wchar_t *__attribute__((__cdecl__)) ulltow (unsigned long long, wchar_t *, int);
  __extension__ extern inline __attribute__((__gnu_inline__)) long long __attribute__((__cdecl__)) atoll (const char * _c) { return _atoi64 (_c); }
  __extension__ extern inline __attribute__((__gnu_inline__)) char *__attribute__((__cdecl__)) lltoa (long long _n, char * _c, int _i) { return _i64toa (_n, _c, _i); }
  __extension__ extern inline __attribute__((__gnu_inline__)) char *__attribute__((__cdecl__)) ulltoa (unsigned long long _n, char * _c, int _i) { return _ui64toa (_n, _c, _i); }
  __extension__ extern inline __attribute__((__gnu_inline__)) long long __attribute__((__cdecl__)) wtoll (const wchar_t * _w) { return _wtoi64 (_w); }
  __extension__ extern inline __attribute__((__gnu_inline__)) wchar_t *__attribute__((__cdecl__)) lltow (long long _n, wchar_t * _w, int _i) { return _i64tow (_n, _w, _i); }
  __extension__ extern inline __attribute__((__gnu_inline__)) wchar_t *__attribute__((__cdecl__)) ulltow (unsigned long long _n, wchar_t * _w, int _i) { return _ui64tow (_n, _w, _i); }
#pragma pack(pop)
#define _INC_STDLIB_S 
  __attribute__ ((__dllimport__)) void * __attribute__((__cdecl__)) bsearch_s(const void *_Key,const void *_Base,rsize_t _NumOfElements,rsize_t _SizeOfElements,int (__attribute__((__cdecl__)) * _PtFuncCompare)(void *, const void *, const void *), void *_Context);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _dupenv_s(char **_PBuffer,size_t *_PBufferSizeInBytes,const char *_VarName);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) getenv_s(size_t *_ReturnSize,char *_DstBuf,rsize_t _DstSize,const char *_VarName);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _itoa_s(int _Value,char *_DstBuf,size_t _Size,int _Radix);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _i64toa_s(long long _Val,char *_DstBuf,size_t _Size,int _Radix);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ui64toa_s(unsigned long long _Val,char *_DstBuf,size_t _Size,int _Radix);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ltoa_s(long _Val,char *_DstBuf,size_t _Size,int _Radix);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) mbstowcs_s(size_t *_PtNumOfCharConverted,wchar_t *_DstBuf,size_t _SizeInWords,const char *_SrcBuf,size_t _MaxCount);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _mbstowcs_s_l(size_t *_PtNumOfCharConverted,wchar_t *_DstBuf,size_t _SizeInWords,const char *_SrcBuf,size_t _MaxCount,_locale_t _Locale);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ultoa_s(unsigned long _Val,char *_DstBuf,size_t _Size,int _Radix);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) wctomb_s(int *_SizeConverted,char *_MbCh,rsize_t _SizeInBytes,wchar_t _WCh);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wctomb_s_l(int *_SizeConverted,char *_MbCh,size_t _SizeInBytes,wchar_t _WCh,_locale_t _Locale);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) wcstombs_s(size_t *_PtNumOfCharConverted,char *_Dst,size_t _DstSizeInBytes,const wchar_t *_Src,size_t _MaxCountInBytes);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _wcstombs_s_l(size_t *_PtNumOfCharConverted,char *_Dst,size_t _DstSizeInBytes,const wchar_t *_Src,size_t _MaxCountInBytes,_locale_t _Locale);
 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ecvt_s(char *_DstBuf,size_t _Size,double _Val,int _NumOfDights,int *_PtDec,int *_PtSign);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _fcvt_s(char *_DstBuf,size_t _Size,double _Val,int _NumOfDec,int *_PtDec,int *_PtSign);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _gcvt_s(char *_DstBuf,size_t _Size,double _Val,int _NumOfDigits);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _makepath_s(char *_PathResult,size_t _Size,const char *_Drive,const char *_Dir,const char *_Filename,const char *_Ext);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _putenv_s(const char *_Name,const char *_Value);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _searchenv_s(const char *_Filename,const char *_EnvVar,char *_ResultPath,size_t _SizeInBytes);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _splitpath_s(const char *_FullPath,char *_Drive,size_t _DriveSize,char *_Dir,size_t _DirSize,char *_Filename,size_t _FilenameSize,char *_Ext,size_t _ExtSize);
 
#define _QSORT_S_DEFINED 
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) qsort_s(void *_Base,size_t _NumOfElements,size_t _SizeOfElements,int (__attribute__((__cdecl__)) *_PtFuncCompare)(void *,const void *,const void *),void *_Context);
#define _MALLOC_H_ 
#pragma pack(push,_CRT_PACKING)
#define _HEAP_MAXREQ 0xFFFFFFE0
#define _STATIC_ASSERT(expr) extern void __static_assert_t(int [(expr)?1:-1])
#define _HEAPEMPTY (-1)
#define _HEAPOK (-2)
#define _HEAPBADBEGIN (-3)
#define _HEAPBADNODE (-4)
#define _HEAPEND (-5)
#define _HEAPBADPTR (-6)
#define _FREEENTRY 0
#define _USEDENTRY 1
#define _HEAPINFO_DEFINED 
  typedef struct _heapinfo {
    int *_pentry;
    size_t _size;
    int _useflag;
  } _HEAPINFO;
  extern unsigned int _amblksiz;
void * __mingw_aligned_malloc (size_t _Size, size_t _Alignment);
void __mingw_aligned_free (void *_Memory);
void * __mingw_aligned_offset_realloc (void *_Memory, size_t _Size, size_t _Alignment, size_t _Offset);
void * __mingw_aligned_realloc (void *_Memory, size_t _Size, size_t _Offset);
#define _MM_MALLOC_H_INCLUDED 
#define _INC_ERRNO 
#define EPERM 1
#define ENOENT 2
#define ENOFILE ENOENT
#define ESRCH 3
#define EINTR 4
#define EIO 5
#define ENXIO 6
#define E2BIG 7
#define ENOEXEC 8
#define EBADF 9
#define ECHILD 10
#define EAGAIN 11
#define ENOMEM 12
#define EACCES 13
#define EFAULT 14
#define EBUSY 16
#define EEXIST 17
#define EXDEV 18
#define ENODEV 19
#define ENOTDIR 20
#define EISDIR 21
#define ENFILE 23
#define EMFILE 24
#define ENOTTY 25
#define EFBIG 27
#define ENOSPC 28
#define ESPIPE 29
#define EROFS 30
#define EMLINK 31
#define EPIPE 32
#define EDOM 33
#define EDEADLK 36
#define ENAMETOOLONG 38
#define ENOLCK 39
#define ENOSYS 40
#define ENOTEMPTY 41
#define _SECURECRT_ERRCODE_VALUES_DEFINED 
#define EINVAL 22
#define ERANGE 34
#define EILSEQ 42
#define STRUNCATE 80
#define EDEADLOCK EDEADLK
#define ENOTSUP 129
#define EAFNOSUPPORT 102
#define EADDRINUSE 100
#define EADDRNOTAVAIL 101
#define EISCONN 113
#define ENOBUFS 119
#define ECONNABORTED 106
#define EALREADY 103
#define ECONNREFUSED 107
#define ECONNRESET 108
#define EDESTADDRREQ 109
#define EHOSTUNREACH 110
#define EMSGSIZE 115
#define ENETDOWN 116
#define ENETRESET 117
#define ENETUNREACH 118
#define ENOPROTOOPT 123
#define ENOTSOCK 128
#define ENOTCONN 126
#define ECANCELED 105
#define EINPROGRESS 112
#define EOPNOTSUPP 130
#define EWOULDBLOCK 140
#define EOWNERDEAD 133
#define EPROTO 134
#define EPROTONOSUPPORT 135
#define EBADMSG 104
#define EIDRM 111
#define ENODATA 120
#define ENOLINK 121
#define ENOMSG 122
#define ENOSR 124
#define ENOSTR 125
#define ENOTRECOVERABLE 127
#define ETIME 137
#define ETXTBSY 139
#define ETIMEDOUT 138
#define ELOOP 114
#define EPROTOTYPE 136
#define EOVERFLOW 132
static __inline__ void *
_mm_malloc (size_t __size, size_t __align)
{
  void * __malloc_ptr;
  void * __aligned_ptr;
  if (__align & (__align - 1))
    {
      (*_errno()) = 22;
      return ((void *) 0);
    }
  if (__size == 0)
    return ((void *) 0);
    if (__align < 2 * sizeof (void *))
      __align = 2 * sizeof (void *);
  __malloc_ptr = malloc (__size + __align);
  if (!__malloc_ptr)
    return ((void *) 0);
  __aligned_ptr = (void *) (((size_t) __malloc_ptr + __align)
       & ~((size_t) (__align) - 1));
  ((void **) __aligned_ptr)[-1] = __malloc_ptr;
  return __aligned_ptr;
}
static __inline__ void
_mm_free (void *__aligned_ptr)
{
  if (__aligned_ptr)
    free (((void **) __aligned_ptr)[-1]);
}
#define _MAX_WAIT_MALLOC_CRT 60000
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _resetstkoflw (void);
  __attribute__ ((__dllimport__)) unsigned long __attribute__((__cdecl__)) _set_malloc_crt_max_wait(unsigned long _NewValue);
  __attribute__ ((__dllimport__)) void *__attribute__((__cdecl__)) _expand(void *_Memory,size_t _NewSize);
  __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _msize(void *_Memory);
#undef _alloca
#define _alloca(x) __builtin_alloca((x))
  __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _get_sbh_threshold(void);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _set_sbh_threshold(size_t _NewValue);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _set_amblksiz(size_t _Value);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _get_amblksiz(size_t *_Value);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _heapadd(void *_Memory,size_t _Size);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _heapchk(void);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _heapmin(void);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _heapset(unsigned int _Fill);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _heapwalk(_HEAPINFO *_EntryInfo);
  __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _heapused(size_t *_Used,size_t *_Commit);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _get_heap_handle(void);
#define _ALLOCA_S_THRESHOLD 1024
#define _ALLOCA_S_STACK_MARKER 0xCCCC
#define _ALLOCA_S_HEAP_MARKER 0xDDDD
#define _ALLOCA_S_MARKER_SIZE 8
  static __inline void *_MarkAllocaS(void *_Ptr,unsigned int _Marker) {
    if(_Ptr) {
      *((unsigned int*)_Ptr) = _Marker;
      _Ptr = (char*)_Ptr + 8;
    }
    return _Ptr;
  }
#undef _malloca
#define _malloca(size) ((((size) + _ALLOCA_S_MARKER_SIZE) <= _ALLOCA_S_THRESHOLD) ? _MarkAllocaS(_alloca((size) + _ALLOCA_S_MARKER_SIZE),_ALLOCA_S_STACK_MARKER) : _MarkAllocaS(malloc((size) + _ALLOCA_S_MARKER_SIZE),_ALLOCA_S_HEAP_MARKER))
#undef _FREEA_INLINE
#define _FREEA_INLINE 
#undef _freea
  static __inline void __attribute__((__cdecl__)) _freea(void *_Memory) {
    unsigned int _Marker;
    if(_Memory) {
      _Memory = (char*)_Memory - 8;
      _Marker = *(unsigned int *)_Memory;
      if(_Marker==0xDDDD) {
 free(_Memory);
      }
    }
  }
#undef alloca
#define alloca(x) __builtin_alloca((x))
#pragma pack(pop)
#define _INC_STDDEF 
  __attribute__ ((__dllimport__)) extern unsigned long __attribute__((__cdecl__)) __threadid(void);
#define _threadid (__threadid())
  __attribute__ ((__dllimport__)) extern uintptr_t __attribute__((__cdecl__)) __threadhandle(void);
#define _STDDEF_H 
#define _STDDEF_H_ 
#define _ANSI_STDDEF_H 
#define __STDDEF_H__ 
#undef __need_ptrdiff_t
#undef __need_size_t
#undef __need_wchar_t
#undef NULL
#define NULL ((void *)0)
#undef __need_NULL
#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
#define _GCC_MAX_ALIGN_T 
#define __CLANG_MAX_ALIGN_T_DEFINED 
typedef struct {
  long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
  long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
} max_align_t;
#define _STRINGS_H_ 1
#define _INTTYPES_H_ 
#define _STDINT_H 
#define __need_wint_t 
#define __need_wchar_t 
#undef __need_ptrdiff_t
#undef __need_size_t
#undef __need_wchar_t
#undef __need_wint_t
#undef NULL
#define NULL ((void *)0)
#undef __need_NULL
#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
typedef signed char int8_t;
typedef unsigned char uint8_t;
typedef short int16_t;
typedef unsigned short uint16_t;
typedef int int32_t;
typedef unsigned uint32_t;
__extension__ typedef long long int64_t;
__extension__ typedef unsigned long long uint64_t;
typedef signed char int_least8_t;
typedef unsigned char uint_least8_t;
typedef short int_least16_t;
typedef unsigned short uint_least16_t;
typedef int int_least32_t;
typedef unsigned uint_least32_t;
__extension__ typedef long long int_least64_t;
__extension__ typedef unsigned long long uint_least64_t;
typedef signed char int_fast8_t;
typedef unsigned char uint_fast8_t;
typedef short int_fast16_t;
typedef unsigned short uint_fast16_t;
typedef int int_fast32_t;
typedef unsigned int uint_fast32_t;
__extension__ typedef long long int_fast64_t;
__extension__ typedef unsigned long long uint_fast64_t;
__extension__ typedef long long intmax_t;
__extension__ typedef unsigned long long uintmax_t;
#define INT8_MIN (-128)
#define INT16_MIN (-32768)
#define INT32_MIN (-2147483647 - 1)
#define INT64_MIN (-9223372036854775807LL - 1)
#define INT8_MAX 127
#define INT16_MAX 32767
#define INT32_MAX 2147483647
#define INT64_MAX 9223372036854775807LL
#define UINT8_MAX 255
#define UINT16_MAX 65535
#define UINT32_MAX 0xffffffffU
#define UINT64_MAX 0xffffffffffffffffULL
#define INT_LEAST8_MIN INT8_MIN
#define INT_LEAST16_MIN INT16_MIN
#define INT_LEAST32_MIN INT32_MIN
#define INT_LEAST64_MIN INT64_MIN
#define INT_LEAST8_MAX INT8_MAX
#define INT_LEAST16_MAX INT16_MAX
#define INT_LEAST32_MAX INT32_MAX
#define INT_LEAST64_MAX INT64_MAX
#define UINT_LEAST8_MAX UINT8_MAX
#define UINT_LEAST16_MAX UINT16_MAX
#define UINT_LEAST32_MAX UINT32_MAX
#define UINT_LEAST64_MAX UINT64_MAX
#define INT_FAST8_MIN INT8_MIN
#define INT_FAST16_MIN INT16_MIN
#define INT_FAST32_MIN INT32_MIN
#define INT_FAST64_MIN INT64_MIN
#define INT_FAST8_MAX INT8_MAX
#define INT_FAST16_MAX INT16_MAX
#define INT_FAST32_MAX INT32_MAX
#define INT_FAST64_MAX INT64_MAX
#define UINT_FAST8_MAX UINT8_MAX
#define UINT_FAST16_MAX UINT16_MAX
#define UINT_FAST32_MAX UINT32_MAX
#define UINT_FAST64_MAX UINT64_MAX
#define INTPTR_MIN INT32_MIN
#define INTPTR_MAX INT32_MAX
#define UINTPTR_MAX UINT32_MAX
#define INTMAX_MIN INT64_MIN
#define INTMAX_MAX INT64_MAX
#define UINTMAX_MAX UINT64_MAX
#define PTRDIFF_MIN INT32_MIN
#define PTRDIFF_MAX INT32_MAX
#define SIG_ATOMIC_MIN INT32_MIN
#define SIG_ATOMIC_MAX INT32_MAX
#define WCHAR_MIN 0U
#define WCHAR_MAX 0xffffU
#define WINT_MIN 0U
#define WINT_MAX 0xffffU
#define INT8_C(val) (INT_LEAST8_MAX-INT_LEAST8_MAX+(val))
#define INT16_C(val) (INT_LEAST16_MAX-INT_LEAST16_MAX+(val))
#define INT32_C(val) (INT_LEAST32_MAX-INT_LEAST32_MAX+(val))
#define INT64_C(val) val ##LL
#define UINT8_C(val) (val)
#define UINT16_C(val) (val)
#define UINT32_C(val) (val ##U)
#define UINT64_C(val) val ##ULL
#define INTMAX_C(val) val ##LL
#define UINTMAX_C(val) val ##ULL
#define _GCC_WRAP_STDINT_H 
#define __need_wchar_t 
#undef __need_ptrdiff_t
#undef __need_size_t
#undef __need_wchar_t
#undef NULL
#define NULL ((void *)0)
#undef __need_NULL
#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
typedef struct {
 intmax_t quot;
 intmax_t rem;
 } imaxdiv_t;
#define PRId64 "lld"
#define PRIi64 "lli"
#define PRIo64 "llo"
#define PRIu64 "llu"
#define PRIx64 "llx"
#define PRIX64 "llX"
#define PRId8 "d"
#define PRId16 "d"
#define PRId32 "d"
#define PRIdLEAST8 "d"
#define PRIdLEAST16 "d"
#define PRIdLEAST32 "d"
#define PRIdLEAST64 PRId64
#define PRIdFAST8 "d"
#define PRIdFAST16 "d"
#define PRIdFAST32 "d"
#define PRIdFAST64 PRId64
#define PRIdMAX PRId64
#define PRIi8 "i"
#define PRIi16 "i"
#define PRIi32 "i"
#define PRIiLEAST8 "i"
#define PRIiLEAST16 "i"
#define PRIiLEAST32 "i"
#define PRIiLEAST64 PRIi64
#define PRIiFAST8 "i"
#define PRIiFAST16 "i"
#define PRIiFAST32 "i"
#define PRIiFAST64 PRIi64
#define PRIiMAX PRIi64
#define PRIo8 "o"
#define PRIo16 "o"
#define PRIo32 "o"
#define PRIoLEAST8 "o"
#define PRIoLEAST16 "o"
#define PRIoLEAST32 "o"
#define PRIoLEAST64 PRIo64
#define PRIoFAST8 "o"
#define PRIoFAST16 "o"
#define PRIoFAST32 "o"
#define PRIoFAST64 PRIo64
#define PRIoMAX PRIo64
#define PRIu8 "u"
#define PRIu16 "u"
#define PRIu32 "u"
#define PRIuLEAST8 "u"
#define PRIuLEAST16 "u"
#define PRIuLEAST32 "u"
#define PRIuLEAST64 PRIu64
#define PRIuFAST8 "u"
#define PRIuFAST16 "u"
#define PRIuFAST32 "u"
#define PRIuFAST64 PRIu64
#define PRIuMAX PRIu64
#define PRIx8 "x"
#define PRIx16 "x"
#define PRIx32 "x"
#define PRIxLEAST8 "x"
#define PRIxLEAST16 "x"
#define PRIxLEAST32 "x"
#define PRIxLEAST64 PRIx64
#define PRIxFAST8 "x"
#define PRIxFAST16 "x"
#define PRIxFAST32 "x"
#define PRIxFAST64 PRIx64
#define PRIxMAX PRIx64
#define PRIX8 "X"
#define PRIX16 "X"
#define PRIX32 "X"
#define PRIXLEAST8 "X"
#define PRIXLEAST16 "X"
#define PRIXLEAST32 "X"
#define PRIXLEAST64 PRIX64
#define PRIXFAST8 "X"
#define PRIXFAST16 "X"
#define PRIXFAST32 "X"
#define PRIXFAST64 PRIX64
#define PRIXMAX PRIX64
#define SCNd16 "hd"
#define SCNd32 "d"
#define SCNd64 PRId64
#define SCNdLEAST16 "hd"
#define SCNdLEAST32 "d"
#define SCNdLEAST64 PRId64
#define SCNdFAST16 "hd"
#define SCNdFAST32 "d"
#define SCNdFAST64 PRId64
#define SCNdMAX PRId64
#define SCNi16 "hi"
#define SCNi32 "i"
#define SCNi64 PRIi64
#define SCNiLEAST16 "hi"
#define SCNiLEAST32 "i"
#define SCNiLEAST64 PRIi64
#define SCNiFAST16 "hi"
#define SCNiFAST32 "i"
#define SCNiFAST64 PRIi64
#define SCNiMAX PRIi64
#define SCNo16 "ho"
#define SCNo32 "o"
#define SCNo64 PRIo64
#define SCNoLEAST16 "ho"
#define SCNoLEAST32 "o"
#define SCNoLEAST64 PRIo64
#define SCNoFAST16 "ho"
#define SCNoFAST32 "o"
#define SCNoFAST64 PRIo64
#define SCNoMAX PRIo64
#define SCNx16 "hx"
#define SCNx32 "x"
#define SCNx64 PRIx64
#define SCNxLEAST16 "hx"
#define SCNxLEAST32 "x"
#define SCNxLEAST64 PRIx64
#define SCNxFAST16 "hx"
#define SCNxFAST32 "x"
#define SCNxFAST64 PRIx64
#define SCNxMAX PRIx64
#define SCNu16 "hu"
#define SCNu32 "u"
#define SCNu64 PRIu64
#define SCNuLEAST16 "hu"
#define SCNuLEAST32 "u"
#define SCNuLEAST64 PRIu64
#define SCNuFAST16 "hu"
#define SCNuFAST32 "u"
#define SCNuFAST64 PRIu64
#define SCNuMAX PRIu64
#define PRIdPTR "d"
#define PRIiPTR "i"
#define PRIoPTR "o"
#define PRIuPTR "u"
#define PRIxPTR "x"
#define PRIXPTR "X"
#define SCNdPTR "d"
#define SCNiPTR "i"
#define SCNoPTR "o"
#define SCNxPTR "x"
#define SCNuPTR "u"
#define SCNd8 "hhd"
#define SCNdLEAST8 "hhd"
#define SCNdFAST8 "hhd"
#define SCNi8 "hhi"
#define SCNiLEAST8 "hhi"
#define SCNiFAST8 "hhi"
#define SCNo8 "hho"
#define SCNoLEAST8 "hho"
#define SCNoFAST8 "hho"
#define SCNx8 "hhx"
#define SCNxLEAST8 "hhx"
#define SCNxFAST8 "hhx"
#define SCNu8 "hhu"
#define SCNuLEAST8 "hhu"
#define SCNuFAST8 "hhu"
intmax_t __attribute__((__cdecl__)) imaxabs (intmax_t j);
extern inline __attribute__((__gnu_inline__)) intmax_t __attribute__((__cdecl__)) imaxabs (intmax_t j)
 {return (j >= 0 ? j : -j);}
imaxdiv_t __attribute__((__cdecl__)) imaxdiv (intmax_t numer, intmax_t denom);
intmax_t __attribute__((__cdecl__)) strtoimax (const char* __restrict__ nptr,
                            char** __restrict__ endptr, int base);
uintmax_t __attribute__((__cdecl__)) strtoumax (const char* __restrict__ nptr,
        char** __restrict__ endptr, int base);
intmax_t __attribute__((__cdecl__)) wcstoimax (const wchar_t* __restrict__ nptr,
                            wchar_t** __restrict__ endptr, int base);
uintmax_t __attribute__((__cdecl__)) wcstoumax (const wchar_t* __restrict__ nptr,
        wchar_t** __restrict__ endptr, int base);
#define _STDALIGN_H 
#define alignas _Alignas
#define alignof _Alignof
#define __alignas_is_defined 1
#define __alignof_is_defined 1
#define _UNISTD_H 
#define __UNISTD_H_SOURCED__ 1
#define _INC_PROCESS 
#define _INC_CORECRT_STARTUP 
__attribute__ ((__dllimport__)) char **__attribute__((__cdecl__)) __p__acmdln(void);
#define _acmdln (*__p__acmdln())
__attribute__ ((__dllimport__)) wchar_t **__attribute__((__cdecl__)) __p__wcmdln(void);
#define _wcmdln (*__p__wcmdln())
typedef void (__attribute__((__cdecl__)) *_PVFV)(void);
typedef int (__attribute__((__cdecl__)) *_PIFV)(void);
typedef void (__attribute__((__cdecl__)) *_PVFI)(int);
typedef struct _onexit_table_t {
    _PVFV* _first;
    _PVFV* _last;
    _PVFV* _end;
} _onexit_table_t;
typedef int (__attribute__((__cdecl__)) *_onexit_t)(void);
__attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _initialize_onexit_table(_onexit_table_t*);
__attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _register_onexit_function(_onexit_table_t*,_onexit_t);
__attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _execute_onexit_table(_onexit_table_t*);
__attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _crt_atexit(_PVFV func);
__attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _crt_at_quick_exit(_PVFV func);
  typedef void (__attribute__((__cdecl__)) *_beginthread_proc_type)(void *);
  typedef unsigned (__attribute__((__stdcall__)) *_beginthreadex_proc_type)(void *);
  __attribute__ ((__dllimport__)) uintptr_t __attribute__((__cdecl__)) _beginthread(_beginthread_proc_type _StartAddress,unsigned _StackSize,void *_ArgList);
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _endthread(void) __attribute__ ((__noreturn__));
  __attribute__ ((__dllimport__)) uintptr_t __attribute__((__cdecl__)) _beginthreadex(void *_Security,unsigned _StackSize,_beginthreadex_proc_type _StartAddress,void *_ArgList,unsigned _InitFlag,unsigned *_ThrdAddr);
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _endthreadex(unsigned _Retval) __attribute__ ((__noreturn__));
  typedef void (__attribute__((__stdcall__)) *_tls_callback_type)(void*,unsigned long,void*);
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _register_thread_local_exe_atexit_callback(_tls_callback_type callback);
  void __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _cexit(void);
  void __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _c_exit(void);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _getpid(void);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _cwait(int *_TermStat,intptr_t _ProcHandle,int _Action);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execl(const char *_Filename,const char *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execle(const char *_Filename,const char *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execlp(const char *_Filename,const char *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execlpe(const char *_Filename,const char *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execv(const char *_Filename,const char *const *_ArgList);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execve(const char *_Filename,const char *const *_ArgList,const char *const *_Env);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execvp(const char *_Filename,const char *const *_ArgList);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _execvpe(const char *_Filename,const char *const *_ArgList,const char *const *_Env);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnl(int _Mode,const char *_Filename,const char *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnle(int _Mode,const char *_Filename,const char *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnlp(int _Mode,const char *_Filename,const char *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _spawnlpe(int _Mode,const char *_Filename,const char *_ArgList,...);
#define _WEXEC_DEFINED 
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexecl(const wchar_t *_Filename,const wchar_t *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexecle(const wchar_t *_Filename,const wchar_t *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexeclp(const wchar_t *_Filename,const wchar_t *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexeclpe(const wchar_t *_Filename,const wchar_t *_ArgList,...);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexecv(const wchar_t *_Filename,const wchar_t *const *_ArgList);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexecve(const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexecvp(const wchar_t *_Filename,const wchar_t *const *_ArgList);
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) _wexecvpe(const wchar_t *_Filename,const wchar_t *const *_ArgList,const wchar_t *const *_Env);
  intptr_t __attribute__((__cdecl__)) _loaddll(char *_Filename);
  int __attribute__((__cdecl__)) _unloaddll(intptr_t _Handle);
  int (__attribute__((__cdecl__)) *__attribute__((__cdecl__)) _getdllprocaddr(intptr_t _Handle,char *_ProcedureName,intptr_t _Ordinal))(void);
#define P_WAIT _P_WAIT
#define P_NOWAIT _P_NOWAIT
#define P_OVERLAY _P_OVERLAY
#define OLD_P_OVERLAY _OLD_P_OVERLAY
#define P_NOWAITO _P_NOWAITO
#define P_DETACH _P_DETACH
#define WAIT_CHILD _WAIT_CHILD
#define WAIT_GRANDCHILD _WAIT_GRANDCHILD
#define _CRT_GETPID_DEFINED 
  int __attribute__((__cdecl__)) getpid(void) ;
  intptr_t __attribute__((__cdecl__)) cwait(int *_TermStat,intptr_t _ProcHandle,int _Action) ;
  int __attribute__((__cdecl__)) execl(const char *_Filename,const char *_ArgList,...) ;
  int __attribute__((__cdecl__)) execle(const char *_Filename,const char *_ArgList,...) ;
  int __attribute__((__cdecl__)) execlp(const char *_Filename,const char *_ArgList,...) ;
  int __attribute__((__cdecl__)) execlpe(const char *_Filename,const char *_ArgList,...) ;
  intptr_t __attribute__((__cdecl__)) spawnl(int,const char *_Filename,const char *_ArgList,...) ;
  intptr_t __attribute__((__cdecl__)) spawnle(int,const char *_Filename,const char *_ArgList,...) ;
  intptr_t __attribute__((__cdecl__)) spawnlp(int,const char *_Filename,const char *_ArgList,...) ;
  intptr_t __attribute__((__cdecl__)) spawnlpe(int,const char *_Filename,const char *_ArgList,...) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) execv(const char *_Filename,char *const _ArgList[]) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) execve(const char *_Filename,char *const _ArgList[],char *const _Env[]) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) execvp(const char *_Filename,char *const _ArgList[]) ;
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) execvpe(const char *_Filename,char *const _ArgList[],char *const _Env[]) ;
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) spawnv(int,const char *_Filename,char *const _ArgList[]) ;
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) spawnve(int,const char *_Filename,char *const _ArgList[],char *const _Env[]) ;
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) spawnvp(int,const char *_Filename,char *const _ArgList[]) ;
  __attribute__ ((__dllimport__)) intptr_t __attribute__((__cdecl__)) spawnvpe(int,const char *_Filename,char *const _ArgList[],char *const _Env[]) ;
#define __GETOPT_H__ 
extern int optind;
extern int optopt;
extern int opterr;
extern char *optarg;
extern int getopt(int nargc, char * const *nargv, const char *options);
       
#undef sleep
unsigned int __attribute__((__cdecl__)) sleep (unsigned int);
       
int __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) usleep(useconds_t);
#define FTRUNCATE_DEFINED 
int ftruncate(int, off32_t);
int ftruncate64(int, off64_t);
int truncate(const char *, off32_t);
int truncate64(const char *, off64_t);
extern inline __attribute__((__gnu_inline__)) int ftruncate(int __fd, off32_t __length)
{
  return _chsize (__fd, __length);
}
#define _FILE_OFFSET_BITS_SET_FTRUNCATE 
#define ftruncate ftruncate64
#define WIN_PTHREADS_UNISTD_H 
#undef _POSIX_THREADS
#define _POSIX_THREADS 200112L
#undef _POSIX_READER_WRITER_LOCKS
#define _POSIX_READER_WRITER_LOCKS 200112L
#undef _POSIX_SPIN_LOCKS
#define _POSIX_SPIN_LOCKS 200112L
#undef _POSIX_BARRIERS
#define _POSIX_BARRIERS 200112L
#undef _POSIX_TIMEOUTS
#define _POSIX_TIMEOUTS 200112L
#undef _POSIX_CLOCK_SELECTION
#define _POSIX_CLOCK_SELECTION 200112
#undef _POSIX_SEMAPHORES
#define _POSIX_SEMAPHORES 200112
#undef __UNISTD_H_SOURCED__
#define RUBY_MISSING_H 1
#define _MATH_H_ 
       
struct _exception;
#pragma pack(push,_CRT_PACKING)
#define _DOMAIN 1
#define _SING 2
#define _OVERFLOW 3
#define _UNDERFLOW 4
#define _TLOSS 5
#define _PLOSS 6
#define DOMAIN _DOMAIN
#define SING _SING
#define OVERFLOW _OVERFLOW
#define UNDERFLOW _UNDERFLOW
#define TLOSS _TLOSS
#define PLOSS _PLOSS
#define M_E 2.7182818284590452354
#define M_LOG2E 1.4426950408889634074
#define M_LOG10E 0.43429448190325182765
#define M_LN2 0.69314718055994530942
#define M_LN10 2.30258509299404568402
#define M_PI 3.14159265358979323846
#define M_PI_2 1.57079632679489661923
#define M_PI_4 0.78539816339744830962
#define M_1_PI 0.31830988618379067154
#define M_2_PI 0.63661977236758134308
#define M_2_SQRTPI 1.12837916709551257390
#define M_SQRT2 1.41421356237309504880
#define M_SQRT1_2 0.70710678118654752440
#define __MINGW_FPCLASS_DEFINED 1
#define _FPCLASS_SNAN 0x0001
#define _FPCLASS_QNAN 0x0002
#define _FPCLASS_NINF 0x0004
#define _FPCLASS_NN 0x0008
#define _FPCLASS_ND 0x0010
#define _FPCLASS_NZ 0x0020
#define _FPCLASS_PZ 0x0040
#define _FPCLASS_PD 0x0080
#define _FPCLASS_PN 0x0100
#define _FPCLASS_PINF 0x0200
#define __mingw_types_compatible_p(type1,type2) __builtin_types_compatible_p (type1, type2)
#define __mingw_choose_expr __builtin_choose_expr
#define __MINGW_SOFTMATH 
  typedef union __mingw_dbl_type_t {
    double x;
    unsigned long long val;
    __extension__ struct {
      unsigned int low, high;
    } lh;
  } __mingw_dbl_type_t;
  typedef union __mingw_flt_type_t {
    float x;
    unsigned int val;
  } __mingw_flt_type_t;
  typedef union __mingw_ldbl_type_t
  {
    long double x;
    __extension__ struct {
      unsigned int low, high;
      int sign_exponent : 16;
      int res1 : 16;
      int res0 : 32;
    } lh;
  } __mingw_ldbl_type_t;
  extern double * _imp___HUGE;
#define _HUGE (* __MINGW_IMP_SYMBOL(_HUGE))
#define HUGE_VAL __builtin_huge_val()
#define _EXCEPTION_DEFINED 
  struct _exception {
    int type;
    const char *name;
    double arg1;
    double arg2;
    double retval;
  };
  void __mingw_raise_matherr (int typ, const char *name, double a1, double a2,
         double rslt);
  void __mingw_setusermatherr (int (__attribute__((__cdecl__)) *)(struct _exception *));
  __attribute__ ((__dllimport__)) void __setusermatherr(int (__attribute__((__cdecl__)) *)(struct _exception *));
#define __setusermatherr __mingw_setusermatherr
  double __attribute__((__cdecl__)) sin(double _X);
  double __attribute__((__cdecl__)) cos(double _X);
  double __attribute__((__cdecl__)) tan(double _X);
  double __attribute__((__cdecl__)) sinh(double _X);
  double __attribute__((__cdecl__)) cosh(double _X);
  double __attribute__((__cdecl__)) tanh(double _X);
  double __attribute__((__cdecl__)) asin(double _X);
  double __attribute__((__cdecl__)) acos(double _X);
  double __attribute__((__cdecl__)) atan(double _X);
  double __attribute__((__cdecl__)) atan2(double _Y,double _X);
  double __attribute__((__cdecl__)) exp(double _X);
  double __attribute__((__cdecl__)) log(double _X);
  double __attribute__((__cdecl__)) log10(double _X);
  double __attribute__((__cdecl__)) pow(double _X,double _Y);
  double __attribute__((__cdecl__)) sqrt(double _X);
  double __attribute__((__cdecl__)) ceil(double _X);
  double __attribute__((__cdecl__)) floor(double _X);
  extern float __attribute__((__cdecl__)) fabsf (float x);
  extern long double __attribute__((__cdecl__)) fabsl (long double);
  extern double __attribute__((__cdecl__)) fabs (double _X);
  extern inline __attribute__((__gnu_inline__)) float __attribute__((__cdecl__)) fabsf (float x)
  {
    float res = 0.0F;
    __asm__ __volatile__ ("fabs;" : "=t" (res) : "0" (x));
    return res;
  }
  extern inline __attribute__((__gnu_inline__)) long double __attribute__((__cdecl__)) fabsl (long double x)
  {
    long double res = 0.0l;
    __asm__ __volatile__ ("fabs;" : "=t" (res) : "0" (x));
    return res;
  }
  extern inline __attribute__((__gnu_inline__)) double __attribute__((__cdecl__)) fabs (double x)
  {
    double res = 0.0;
    __asm__ __volatile__ ("fabs;" : "=t" (res) : "0" (x));
    return res;
  }
  double __attribute__((__cdecl__)) ldexp(double _X,int _Y);
  double __attribute__((__cdecl__)) frexp(double _X,int *_Y);
  double __attribute__((__cdecl__)) modf(double _X,double *_Y);
  double __attribute__((__cdecl__)) fmod(double _X,double _Y);
  void __attribute__((__cdecl__)) sincos (double __x, double *p_sin, double *p_cos);
  void __attribute__((__cdecl__)) sincosl (long double __x, long double *p_sin, long double *p_cos);
  void __attribute__((__cdecl__)) sincosf (float __x, float *p_sin, float *p_cos);
#define EDOM 33
#define ERANGE 34
#define _COMPLEX_DEFINED 
  struct _complex {
    double x;
    double y;
  };
  double __attribute__((__cdecl__)) _cabs(struct _complex _ComplexA);
  double __attribute__((__cdecl__)) _hypot(double _X,double _Y);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _j0(double _X);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _j1(double _X);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _jn(int _X,double _Y);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _y0(double _X);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _y1(double _X);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _yn(int _X,double _Y);
#define _CRT_MATHERR_DEFINED 
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _matherr (struct _exception *);
#define _SIGN_DEFINED 
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _chgsign (double _X);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _copysign (double _Number,double _Sign);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _logb (double);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _nextafter (double, double);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _scalb (double, long);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _finite (double);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fpclass (double);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isnan (double);
__attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) j0 (double) ;
__attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) j1 (double) ;
__attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) jn (int, double) ;
__attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) y0 (double) ;
__attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) y1 (double) ;
__attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) yn (int, double) ;
__attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) chgsign (double);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) finite (double);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) fpclass (double);
#define FP_SNAN _FPCLASS_SNAN
#define FP_QNAN _FPCLASS_QNAN
#define FP_NINF _FPCLASS_NINF
#define FP_PINF _FPCLASS_PINF
#define FP_NDENORM _FPCLASS_ND
#define FP_PDENORM _FPCLASS_PD
#define FP_NZERO _FPCLASS_NZ
#define FP_PZERO _FPCLASS_PZ
#define FP_NNORM _FPCLASS_NN
#define FP_PNORM _FPCLASS_PN
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _set_SSE2_enable(int _Flag);
#define HUGE_VALF __builtin_huge_valf()
#define HUGE_VALL __builtin_huge_vall()
#define INFINITY __builtin_inff()
#define NAN __builtin_nanf("")
typedef long double float_t;
typedef long double double_t;
#define FP_NAN 0x0100
#define FP_NORMAL 0x0400
#define FP_INFINITE (FP_NAN | FP_NORMAL)
#define FP_ZERO 0x4000
#define FP_SUBNORMAL (FP_NORMAL | FP_ZERO)
  extern int __attribute__((__cdecl__)) __fpclassifyl (long double);
  extern int __attribute__((__cdecl__)) __fpclassifyf (float);
  extern int __attribute__((__cdecl__)) __fpclassify (double);
  extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __fpclassifyl (long double x) {
    unsigned short sw;
    __asm__ __volatile__ ("fxam; fstsw %%ax;" : "=a" (sw): "t" (x));
    return sw & (0x0100 | 0x0400 | 0x4000 );
  }
  extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __fpclassify (double x) {
    unsigned short sw;
    __asm__ __volatile__ ("fxam; fstsw %%ax;" : "=a" (sw): "t" (x));
    return sw & (0x0100 | 0x0400 | 0x4000 );
  }
  extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __fpclassifyf (float x) {
    unsigned short sw;
    __asm__ __volatile__ ("fxam; fstsw %%ax;" : "=a" (sw): "t" (x));
    return sw & (0x0100 | 0x0400 | 0x4000 );
  }
#define __dfp_expansion(__call,__fin,x) __fin
#define fpclassify(x) __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), double), __fpclassify(x), __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), float), __fpclassifyf(x), __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), long double), __fpclassifyl(x), __dfp_expansion(__fpclassify,(__builtin_trap(),0),x))))
#define isfinite(x) ((fpclassify(x) & FP_NAN) == 0)
#define isinf(x) (fpclassify(x) == FP_INFINITE)
  extern int __attribute__((__cdecl__)) __isnan (double);
  extern int __attribute__((__cdecl__)) __isnanf (float);
  extern int __attribute__((__cdecl__)) __isnanl (long double);
  extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __isnan (double _x)
  {
    unsigned short sw;
    __asm__ __volatile__ ("fxam;"
      "fstsw %%ax": "=a" (sw) : "t" (_x));
    return (sw & (0x0100 | 0x0400 | (0x0100 | 0x0400) | 0x4000 | (0x0400 | 0x4000)))
      == 0x0100;
  }
  extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __isnanf (float _x)
  {
    unsigned short sw;
    __asm__ __volatile__ ("fxam;"
      "fstsw %%ax": "=a" (sw) : "t" (_x));
    return (sw & (0x0100 | 0x0400 | (0x0100 | 0x0400) | 0x4000 | (0x0400 | 0x4000)))
      == 0x0100;
  }
  extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __isnanl (long double _x)
  {
    unsigned short sw;
    __asm__ __volatile__ ("fxam;"
      "fstsw %%ax": "=a" (sw) : "t" (_x));
    return (sw & (0x0100 | 0x0400 | (0x0100 | 0x0400) | 0x4000 | (0x0400 | 0x4000)))
      == 0x0100;
  }
#define isnan(x) __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), double), __isnan(x), __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), float), __isnanf(x), __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), long double), __isnanl(x), __dfp_expansion(__isnan,(__builtin_trap(),x),x))))
#define isnormal(x) (fpclassify(x) == FP_NORMAL)
  extern int __attribute__((__cdecl__)) __signbit (double);
  extern int __attribute__((__cdecl__)) __signbitf (float);
  extern int __attribute__((__cdecl__)) __signbitl (long double);
  extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __signbit (double x) {
    unsigned short stw;
    __asm__ __volatile__ ( "fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
    return stw & 0x0200;
  }
  extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __signbitf (float x) {
    unsigned short stw;
    __asm__ __volatile__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
    return stw & 0x0200;
  }
  extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) __signbitl (long double x) {
    unsigned short stw;
    __asm__ __volatile__ ("fxam; fstsw %%ax;": "=a" (stw) : "t" (x));
    return stw & 0x0200;
  }
#define signbit(x) __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), double), __signbit(x), __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), float), __signbitf(x), __mingw_choose_expr ( __mingw_types_compatible_p (__typeof__ (x), long double), __signbitl(x), __dfp_expansion(__signbit,(__builtin_trap(),x),x))))
  extern float __attribute__((__cdecl__)) sinf(float _X);
  extern long double __attribute__((__cdecl__)) sinl(long double);
  extern float __attribute__((__cdecl__)) cosf(float _X);
  extern long double __attribute__((__cdecl__)) cosl(long double);
  extern float __attribute__((__cdecl__)) tanf(float _X);
  extern long double __attribute__((__cdecl__)) tanl(long double);
  extern float __attribute__((__cdecl__)) asinf(float _X);
  extern long double __attribute__((__cdecl__)) asinl(long double);
  extern float __attribute__((__cdecl__)) acosf (float);
  extern long double __attribute__((__cdecl__)) acosl (long double);
  extern float __attribute__((__cdecl__)) atanf (float);
  extern long double __attribute__((__cdecl__)) atanl (long double);
  extern float __attribute__((__cdecl__)) atan2f (float, float);
  extern long double __attribute__((__cdecl__)) atan2l (long double, long double);
  extern float __attribute__((__cdecl__)) sinhf(float _X);
  extern inline __attribute__((__gnu_inline__)) float sinhf(float _X) { return ((float)sinh((double)_X)); }
  extern long double __attribute__((__cdecl__)) sinhl(long double);
  extern float __attribute__((__cdecl__)) coshf(float _X);
  extern inline __attribute__((__gnu_inline__)) float coshf(float _X) { return ((float)cosh((double)_X)); }
  extern long double __attribute__((__cdecl__)) coshl(long double);
  extern float __attribute__((__cdecl__)) tanhf(float _X);
  extern inline __attribute__((__gnu_inline__)) float tanhf(float _X) { return ((float)tanh((double)_X)); }
  extern long double __attribute__((__cdecl__)) tanhl(long double);
  extern double __attribute__((__cdecl__)) acosh (double);
  extern float __attribute__((__cdecl__)) acoshf (float);
  extern long double __attribute__((__cdecl__)) acoshl (long double);
  extern double __attribute__((__cdecl__)) asinh (double);
  extern float __attribute__((__cdecl__)) asinhf (float);
  extern long double __attribute__((__cdecl__)) asinhl (long double);
  extern double __attribute__((__cdecl__)) atanh (double);
  extern float __attribute__((__cdecl__)) atanhf (float);
  extern long double __attribute__((__cdecl__)) atanhl (long double);
  extern float __attribute__((__cdecl__)) expf(float _X);
  extern inline __attribute__((__gnu_inline__)) float expf(float _X) { return ((float)exp((double)_X)); }
  extern long double __attribute__((__cdecl__)) expl(long double);
  extern double __attribute__((__cdecl__)) exp2(double);
  extern float __attribute__((__cdecl__)) exp2f(float);
  extern long double __attribute__((__cdecl__)) exp2l(long double);
  extern double __attribute__((__cdecl__)) expm1(double);
  extern float __attribute__((__cdecl__)) expm1f(float);
  extern long double __attribute__((__cdecl__)) expm1l(long double);
  extern float frexpf(float _X,int *_Y);
  extern inline __attribute__((__gnu_inline__)) float frexpf(float _X,int *_Y) { return ((float)frexp((double)_X,_Y)); }
  extern long double __attribute__((__cdecl__)) frexpl(long double,int *);
#define FP_ILOGB0 ((int)0x80000000)
#define FP_ILOGBNAN ((int)0x7fffffff)
  extern int __attribute__((__cdecl__)) ilogb (double);
  extern int __attribute__((__cdecl__)) ilogbf (float);
  extern int __attribute__((__cdecl__)) ilogbl (long double);
  extern float __attribute__((__cdecl__)) ldexpf(float _X,int _Y);
  extern inline __attribute__((__gnu_inline__)) float __attribute__((__cdecl__)) ldexpf (float x, int expn) { return (float) ldexp ((double)x, expn); }
  extern long double __attribute__((__cdecl__)) ldexpl (long double, int);
  extern float __attribute__((__cdecl__)) logf (float);
  extern long double __attribute__((__cdecl__)) logl(long double);
  extern float __attribute__((__cdecl__)) log10f (float);
  extern long double __attribute__((__cdecl__)) log10l(long double);
  extern double __attribute__((__cdecl__)) log1p(double);
  extern float __attribute__((__cdecl__)) log1pf(float);
  extern long double __attribute__((__cdecl__)) log1pl(long double);
  extern double __attribute__((__cdecl__)) log2 (double);
  extern float __attribute__((__cdecl__)) log2f (float);
  extern long double __attribute__((__cdecl__)) log2l (long double);
  extern double __attribute__((__cdecl__)) logb (double);
  extern float __attribute__((__cdecl__)) logbf (float);
  extern long double __attribute__((__cdecl__)) logbl (long double);
  extern float __attribute__((__cdecl__)) modff (float, float*);
  extern long double __attribute__((__cdecl__)) modfl (long double, long double*);
  extern double __attribute__((__cdecl__)) scalbn (double, int);
  extern float __attribute__((__cdecl__)) scalbnf (float, int);
  extern long double __attribute__((__cdecl__)) scalbnl (long double, int);
  extern double __attribute__((__cdecl__)) scalbln (double, long);
  extern float __attribute__((__cdecl__)) scalblnf (float, long);
  extern long double __attribute__((__cdecl__)) scalblnl (long double, long);
  extern double __attribute__((__cdecl__)) cbrt (double);
  extern float __attribute__((__cdecl__)) cbrtf (float);
  extern long double __attribute__((__cdecl__)) cbrtl (long double);
  extern double __attribute__((__cdecl__)) hypot (double, double) ;
  extern float __attribute__((__cdecl__)) hypotf (float x, float y);
  extern inline __attribute__((__gnu_inline__)) float __attribute__((__cdecl__)) hypotf (float x, float y) { return (float) hypot ((double)x, (double)y);}
  extern long double __attribute__((__cdecl__)) hypotl (long double, long double);
  extern float __attribute__((__cdecl__)) powf(float _X,float _Y);
  extern inline __attribute__((__gnu_inline__)) float powf(float _X,float _Y) { return ((float)pow((double)_X,(double)_Y)); }
  extern long double __attribute__((__cdecl__)) powl (long double, long double);
  extern float __attribute__((__cdecl__)) sqrtf (float);
  extern long double sqrtl(long double);
  extern double __attribute__((__cdecl__)) erf (double);
  extern float __attribute__((__cdecl__)) erff (float);
  extern long double __attribute__((__cdecl__)) erfl (long double);
  extern double __attribute__((__cdecl__)) erfc (double);
  extern float __attribute__((__cdecl__)) erfcf (float);
  extern long double __attribute__((__cdecl__)) erfcl (long double);
  extern double __attribute__((__cdecl__)) lgamma (double);
  extern float __attribute__((__cdecl__)) lgammaf (float);
  extern long double __attribute__((__cdecl__)) lgammal (long double);
  extern int signgam;
  extern double __attribute__((__cdecl__)) tgamma (double);
  extern float __attribute__((__cdecl__)) tgammaf (float);
  extern long double __attribute__((__cdecl__)) tgammal (long double);
  extern float __attribute__((__cdecl__)) ceilf (float);
  extern long double __attribute__((__cdecl__)) ceill (long double);
  extern float __attribute__((__cdecl__)) floorf (float);
  extern long double __attribute__((__cdecl__)) floorl (long double);
  extern double __attribute__((__cdecl__)) nearbyint ( double);
  extern float __attribute__((__cdecl__)) nearbyintf (float);
  extern long double __attribute__((__cdecl__)) nearbyintl (long double);
extern double __attribute__((__cdecl__)) rint (double);
extern float __attribute__((__cdecl__)) rintf (float);
extern long double __attribute__((__cdecl__)) rintl (long double);
extern long __attribute__((__cdecl__)) lrint (double);
extern long __attribute__((__cdecl__)) lrintf (float);
extern long __attribute__((__cdecl__)) lrintl (long double);
__extension__ long long __attribute__((__cdecl__)) llrint (double);
__extension__ long long __attribute__((__cdecl__)) llrintf (float);
__extension__ long long __attribute__((__cdecl__)) llrintl (long double);
  extern double __attribute__((__cdecl__)) round (double);
  extern float __attribute__((__cdecl__)) roundf (float);
  extern long double __attribute__((__cdecl__)) roundl (long double);
  extern long __attribute__((__cdecl__)) lround (double);
  extern long __attribute__((__cdecl__)) lroundf (float);
  extern long __attribute__((__cdecl__)) lroundl (long double);
  __extension__ long long __attribute__((__cdecl__)) llround (double);
  __extension__ long long __attribute__((__cdecl__)) llroundf (float);
  __extension__ long long __attribute__((__cdecl__)) llroundl (long double);
  extern double __attribute__((__cdecl__)) trunc (double);
  extern float __attribute__((__cdecl__)) truncf (float);
  extern long double __attribute__((__cdecl__)) truncl (long double);
  extern float __attribute__((__cdecl__)) fmodf (float, float);
  extern long double __attribute__((__cdecl__)) fmodl (long double, long double);
  extern double __attribute__((__cdecl__)) remainder (double, double);
  extern float __attribute__((__cdecl__)) remainderf (float, float);
  extern long double __attribute__((__cdecl__)) remainderl (long double, long double);
  extern double __attribute__((__cdecl__)) remquo(double, double, int *);
  extern float __attribute__((__cdecl__)) remquof(float, float, int *);
  extern long double __attribute__((__cdecl__)) remquol(long double, long double, int *);
  extern double __attribute__((__cdecl__)) copysign (double, double);
  extern float __attribute__((__cdecl__)) copysignf (float, float);
  extern long double __attribute__((__cdecl__)) copysignl (long double, long double);
  extern inline __attribute__((__gnu_inline__)) double __attribute__((__cdecl__)) copysign (double x, double y)
  {
    __mingw_dbl_type_t hx, hy;
    hx.x = x; hy.x = y;
    hx.lh.high = (hx.lh.high & 0x7fffffff) | (hy.lh.high & 0x80000000);
    return hx.x;
  }
  extern inline __attribute__((__gnu_inline__)) float __attribute__((__cdecl__)) copysignf (float x, float y)
  {
    __mingw_flt_type_t hx, hy;
    hx.x = x; hy.x = y;
    hx.val = (hx.val & 0x7fffffff) | (hy.val & 0x80000000);
    return hx.x;
  }
  extern double __attribute__((__cdecl__)) nan(const char *tagp);
  extern float __attribute__((__cdecl__)) nanf(const char *tagp);
  extern long double __attribute__((__cdecl__)) nanl(const char *tagp);
#define _nan() nan("")
#define _nanf() nanf("")
#define _nanl() nanl("")
  extern double __attribute__((__cdecl__)) nextafter (double, double);
  extern float __attribute__((__cdecl__)) nextafterf (float, float);
  extern long double __attribute__((__cdecl__)) nextafterl (long double, long double);
  extern double __attribute__((__cdecl__)) nexttoward (double, long double);
  extern float __attribute__((__cdecl__)) nexttowardf (float, long double);
  extern long double __attribute__((__cdecl__)) nexttowardl (long double, long double);
  extern double __attribute__((__cdecl__)) fdim (double x, double y);
  extern float __attribute__((__cdecl__)) fdimf (float x, float y);
  extern long double __attribute__((__cdecl__)) fdiml (long double x, long double y);
  extern double __attribute__((__cdecl__)) fmax (double, double);
  extern float __attribute__((__cdecl__)) fmaxf (float, float);
  extern long double __attribute__((__cdecl__)) fmaxl (long double, long double);
  extern double __attribute__((__cdecl__)) fmin (double, double);
  extern float __attribute__((__cdecl__)) fminf (float, float);
  extern long double __attribute__((__cdecl__)) fminl (long double, long double);
  extern double __attribute__((__cdecl__)) fma (double, double, double);
  extern float __attribute__((__cdecl__)) fmaf (float, float, float);
  extern long double __attribute__((__cdecl__)) fmal (long double, long double, long double);
#define isgreater(x,y) __builtin_isgreater(x, y)
#define isgreaterequal(x,y) __builtin_isgreaterequal(x, y)
#define isless(x,y) __builtin_isless(x, y)
#define islessequal(x,y) __builtin_islessequal(x, y)
#define islessgreater(x,y) __builtin_islessgreater(x, y)
#define isunordered(x,y) __builtin_isunordered(x, y)
  __attribute__ ((__dllimport__)) float __attribute__((__cdecl__)) _hypotf(float _X,float _Y);
   __attribute__ ((__dllimport__)) float __attribute__((__cdecl__)) _copysignf (float _Number,float _Sign);
   __attribute__ ((__dllimport__)) float __attribute__((__cdecl__)) _chgsignf (float _X);
   __attribute__ ((__dllimport__)) float __attribute__((__cdecl__)) _logbf(float _X);
   __attribute__ ((__dllimport__)) float __attribute__((__cdecl__)) _nextafterf(float _X,float _Y);
   __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _finitef(float _X);
   __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isnanf(float _X);
   __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _fpclassf(float _X);
   extern long double __attribute__((__cdecl__)) _chgsignl (long double);
#define _copysignl copysignl
#define _hypotl hypotl
#define matherr _matherr
#define HUGE _HUGE
#pragma pack(pop)
#undef RUBY_EXTERN
#define RUBY_EXTERN extern

#pragma GCC visibility push(default)

extern char *crypt(const char *, const char *);
extern int eaccess(const char*, int);
extern double tgamma(double);
extern double lgamma_r(double, int *);
extern size_t strlcpy(char *, const char*, size_t);
extern size_t strlcat(char *, const char*, size_t);
extern int ffs(int);
extern void setproctitle(const char *fmt, ...);
extern void explicit_bzero(void *b, size_t len);

#pragma GCC visibility pop

#define RUBY 
#undef _
#define _(args) args
#undef __
#define __(args) args
#define ANYARGS 

#pragma GCC visibility push(default)

#define xmalloc ruby_xmalloc
#define xmalloc2 ruby_xmalloc2
#define xcalloc ruby_xcalloc
#define xrealloc ruby_xrealloc
#define xrealloc2 ruby_xrealloc2
#define xfree ruby_xfree
#define RUBY_ATTR_ALLOC_SIZE(params) __attribute__ ((alloc_size params))
void *ruby_xmalloc(size_t) __attribute__ ((alloc_size (1)));
void *ruby_xmalloc2(size_t,size_t) __attribute__ ((alloc_size (1,2)));
void *ruby_xcalloc(size_t,size_t) __attribute__ ((alloc_size (1,2)));
void *ruby_xrealloc(void*,size_t) __attribute__ ((alloc_size (2)));
void *ruby_xrealloc2(void*,size_t,size_t) __attribute__ ((alloc_size (2,3)));
void ruby_xfree(void*);
#define USE_GC_MALLOC_OBJ_INFO_DETAILS 0
#define STRINGIZE(expr) STRINGIZE0(expr)
#define STRINGIZE0(expr) #expr
#define HAVE_TRUE_LONG_LONG 1
#define LONG_LONG long long
#define DOSISH 1
#define DOSISH_DRIVE_LETTER 
#define RUBY_WIN32_H 1

#pragma GCC visibility push(default)

#define _WINSOCK2API_ 
#define _INC_CRT_UNICODE_MACROS 2
#define __MINGW_NAME_AW(func) func ##A
#define __MINGW_NAME_AW_EXT(func,ext) func ##A ##ext
#define __MINGW_NAME_UAW(func) func ##_A
#define __MINGW_NAME_UAW_EXT(func,ext) func ##_A_ ##ext
#define __MINGW_STRING_AW(str) str
#define __MINGW_PROCNAMEEXT_AW "A"
#define __MINGW_TYPEDEF_AW(type) typedef __MINGW_NAME_AW(type) type;
#define __MINGW_TYPEDEF_UAW(type) typedef __MINGW_NAME_UAW(type) type;
#define _WINSOCKAPI_ 
#define INCL_WINSOCK_API_TYPEDEFS 0
#define _WINDOWS_ 
#define _INC_SDKDDKVER 
#define _WIN32_WINNT_NT4 0x0400
#define _WIN32_WINNT_WIN2K 0x0500
#define _WIN32_WINNT_WINXP 0x0501
#define _WIN32_WINNT_WS03 0x0502
#define _WIN32_WINNT_WIN6 0x0600
#define _WIN32_WINNT_VISTA 0x0600
#define _WIN32_WINNT_WS08 0x0600
#define _WIN32_WINNT_LONGHORN 0x0600
#define _WIN32_WINNT_WIN7 0x0601
#define _WIN32_WINNT_WIN8 0x0602
#define _WIN32_WINNT_WINBLUE 0x0603
#define _WIN32_WINNT_WINTHRESHOLD 0x0A00
#define _WIN32_WINNT_WIN10 0x0A00
#define _WIN32_IE_IE20 0x0200
#define _WIN32_IE_IE30 0x0300
#define _WIN32_IE_IE302 0x0302
#define _WIN32_IE_IE40 0x0400
#define _WIN32_IE_IE401 0x0401
#define _WIN32_IE_IE50 0x0500
#define _WIN32_IE_IE501 0x0501
#define _WIN32_IE_IE55 0x0550
#define _WIN32_IE_IE60 0x0600
#define _WIN32_IE_IE60SP1 0x0601
#define _WIN32_IE_IE60SP2 0x0603
#define _WIN32_IE_IE70 0x0700
#define _WIN32_IE_IE80 0x0800
#define _WIN32_IE_IE90 0x0900
#define _WIN32_IE_IE100 0x0a00
#define _WIN32_IE_IE110 0x0A00
#define _WIN32_IE_NT4 _WIN32_IE_IE20
#define _WIN32_IE_NT4SP1 _WIN32_IE_IE20
#define _WIN32_IE_NT4SP2 _WIN32_IE_IE20
#define _WIN32_IE_NT4SP3 _WIN32_IE_IE302
#define _WIN32_IE_NT4SP4 _WIN32_IE_IE401
#define _WIN32_IE_NT4SP5 _WIN32_IE_IE401
#define _WIN32_IE_NT4SP6 _WIN32_IE_IE50
#define _WIN32_IE_WIN98 _WIN32_IE_IE401
#define _WIN32_IE_WIN98SE _WIN32_IE_IE50
#define _WIN32_IE_WINME _WIN32_IE_IE55
#define _WIN32_IE_WIN2K _WIN32_IE_IE501
#define _WIN32_IE_WIN2KSP1 _WIN32_IE_IE501
#define _WIN32_IE_WIN2KSP2 _WIN32_IE_IE501
#define _WIN32_IE_WIN2KSP3 _WIN32_IE_IE501
#define _WIN32_IE_WIN2KSP4 _WIN32_IE_IE501
#define _WIN32_IE_XP _WIN32_IE_IE60
#define _WIN32_IE_XPSP1 _WIN32_IE_IE60SP1
#define _WIN32_IE_XPSP2 _WIN32_IE_IE60SP2
#define _WIN32_IE_WS03 0x0602
#define _WIN32_IE_WS03SP1 _WIN32_IE_IE60SP2
#define _WIN32_IE_WIN6 _WIN32_IE_IE70
#define _WIN32_IE_LONGHORN _WIN32_IE_IE70
#define _WIN32_IE_WIN7 _WIN32_IE_IE80
#define _WIN32_IE_WIN8 _WIN32_IE_IE100
#define _WIN32_IE_WINBLUE _WIN32_IE_IE100
#define _WIN32_IE_WINTHRESHOLD _WIN32_IE_IE110
#define _WIN32_IE_WIN10 _WIN32_IE_IE110
#define NTDDI_WIN2K 0x05000000
#define NTDDI_WIN2KSP1 0x05000100
#define NTDDI_WIN2KSP2 0x05000200
#define NTDDI_WIN2KSP3 0x05000300
#define NTDDI_WIN2KSP4 0x05000400
#define NTDDI_WINXP 0x05010000
#define NTDDI_WINXPSP1 0x05010100
#define NTDDI_WINXPSP2 0x05010200
#define NTDDI_WINXPSP3 0x05010300
#define NTDDI_WINXPSP4 0x05010400
#define NTDDI_WS03 0x05020000
#define NTDDI_WS03SP1 0x05020100
#define NTDDI_WS03SP2 0x05020200
#define NTDDI_WS03SP3 0x05020300
#define NTDDI_WS03SP4 0x05020400
#define NTDDI_WIN6 0x06000000
#define NTDDI_WIN6SP1 0x06000100
#define NTDDI_WIN6SP2 0x06000200
#define NTDDI_WIN6SP3 0x06000300
#define NTDDI_WIN6SP4 0x06000400
#define NTDDI_VISTA NTDDI_WIN6
#define NTDDI_VISTASP1 NTDDI_WIN6SP1
#define NTDDI_VISTASP2 NTDDI_WIN6SP2
#define NTDDI_VISTASP3 NTDDI_WIN6SP3
#define NTDDI_VISTASP4 NTDDI_WIN6SP4
#define NTDDI_LONGHORN NTDDI_VISTA
#define NTDDI_WS08 NTDDI_WIN6SP1
#define NTDDI_WS08SP2 NTDDI_WIN6SP2
#define NTDDI_WS08SP3 NTDDI_WIN6SP3
#define NTDDI_WS08SP4 NTDDI_WIN6SP4
#define NTDDI_WIN7 0x06010000
#define NTDDI_WIN8 0x06020000
#define NTDDI_WINBLUE 0x06030000
#define NTDDI_WINTHRESHOLD 0x0A000000
#define NTDDI_WIN10 0x0A000000
#define NTDDI_WIN10_TH2 0x0A000001
#define NTDDI_WIN10_RS1 0x0A000002
#define NTDDI_WIN10_RS2 0x0A000003
#define NTDDI_WIN10_RS3 0x0A000004
#define NTDDI_WIN10_RS4 0x0A000005
#define NTDDI_WIN10_RS5 0x0A000006
#define NTDDI_WIN10_19H1 0x0A000007
#define NTDDI_WIN10_VB 0x0A000008
#define NTDDI_WIN10_MN 0x0A000009
#define NTDDI_WIN10_FE 0x0A00000A
#define NTDDI_WIN10_CO 0x0A00000B
#define WDK_NTDDI_VERSION NTDDI_WIN10_CO
#define OSVERSION_MASK 0xFFFF0000U
#define SPVERSION_MASK 0x0000FF00
#define SUBVERSION_MASK 0x000000FF
#define OSVER(Version) ((Version) & OSVERSION_MASK)
#define SPVER(Version) (((Version) & SPVERSION_MASK) >> 8)
#define SUBVER(Version) (((Version) & SUBVERSION_MASK))
#define NTDDI_VERSION_FROM_WIN32_WINNT2(Version) Version ##0000
#define NTDDI_VERSION_FROM_WIN32_WINNT(Version) NTDDI_VERSION_FROM_WIN32_WINNT2(Version)
#define NTDDI_VERSION NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT)
#define WINVER _WIN32_WINNT
#define _WIN32_IE _WIN32_IE_LONGHORN
#define _INC_WINDOWS 
#define _INC_EXCPT 
#pragma pack(push,_CRT_PACKING)
  struct _EXCEPTION_POINTERS;
#define EXCEPTION_DISPOSITION int
#define ExceptionContinueExecution 0
#define ExceptionContinueSearch 1
#define ExceptionNestedException 2
#define ExceptionCollidedUnwind 3
#define ExceptionExecuteHandler 4
  struct _EXCEPTION_RECORD;
  struct _CONTEXT;
  int __attribute__((__cdecl__)) _except_handler(struct _EXCEPTION_RECORD *_ExceptionRecord,void *_EstablisherFrame,struct _CONTEXT *_ContextRecord,void *_DispatcherContext);
#define GetExceptionCode _exception_code
#define exception_code _exception_code
#define GetExceptionInformation (struct _EXCEPTION_POINTERS *)_exception_info
#define exception_info (struct _EXCEPTION_POINTERS *)_exception_info
#define AbnormalTermination _abnormal_termination
#define abnormal_termination _abnormal_termination
  unsigned long __attribute__((__cdecl__)) _exception_code(void);
  void *__attribute__((__cdecl__)) _exception_info(void);
  int __attribute__((__cdecl__)) _abnormal_termination(void);
#define EXCEPTION_EXECUTE_HANDLER 1
#define EXCEPTION_CONTINUE_SEARCH 0
#define EXCEPTION_CONTINUE_EXECUTION -1
  typedef void (__attribute__((__cdecl__)) * _PHNDLR)(int);
  struct _XCPT_ACTION {
    unsigned long XcptNum;
    int SigNum;
    _PHNDLR XcptAction;
  };
  extern struct _XCPT_ACTION _XcptActTab[];
  extern int _XcptActTabCount;
  extern int _XcptActTabSize;
  extern int _First_FPE_Indx;
  extern int _Num_FPE;
  int __attribute__((__cdecl__)) __CppXcptFilter(unsigned long _ExceptionNum,struct _EXCEPTION_POINTERS * _ExceptionPtr);
  int __attribute__((__cdecl__)) _XcptFilter(unsigned long _ExceptionNum,struct _EXCEPTION_POINTERS * _ExceptionPtr);
  typedef int (*PEXCEPTION_HANDLER)(struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*);
#define __try1(pHandler) __asm__ __volatile__ ("pushl %0;pushl %%fs:0;movl %%esp,%%fs:0;" : : "g" (pHandler));
#define __except1 __asm__ __volatile__ ("movl (%%esp),%%eax;movl %%eax,%%fs:0;addl $8,%%esp;" : : : "%eax");
#pragma pack(pop)
#define _STDARG_H 
#define _ANSI_STDARG_H_ 
#undef __need___va_list
#define va_start(v,l) __builtin_va_start(v,l)
#define va_end(v) __builtin_va_end(v)
#define va_arg(v,l) __builtin_va_arg(v,l)
#define va_copy(d,s) __builtin_va_copy(d,s)
#define __va_copy(d,s) __builtin_va_copy(d,s)
#define _VA_LIST_ 
#define _VA_LIST 
#define _VA_LIST_T_H 
#define __va_list__ 
#define _INC_STDARG 
#define _WINDEF_ 
#define _INC_WINAPIFAMILY 
#define WINAPI_PARTITION_DESKTOP 0x1
#define WINAPI_PARTITION_APP 0x2
#define WINAPI_FAMILY_APP WINAPI_PARTITION_APP
#define WINAPI_FAMILY_DESKTOP_APP (WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_APP)
#define WINAPI_FAMILY WINAPI_FAMILY_DESKTOP_APP
#define WINAPI_FAMILY_PARTITION(v) ((WINAPI_FAMILY & v) == v)
#define WINAPI_FAMILY_ONE_PARTITION(vset,v) ((WINAPI_FAMILY & vset) == v)
#define _MINWINDEF_ 
#define SPECSTRINGS_H 
#define __specstrings 
#define SAL_HXX 
#define CONCURRENCYSAL_HXX 
#define _Benign_race_begin_ 
#define _Benign_race_end_ 
#define _No_competing_thread_begin_ 
#define _No_competing_thread_end_ 
#define _Acquires_exclusive_lock_(lock) 
#define _Acquires_lock_(lock) 
#define _Acquires_nonreentrant_lock_(lock) 
#define _Acquires_shared_lock_(lock) 
#define _Analysis_assume_lock_acquired_(lock) 
#define _Analysis_assume_lock_released_(lock) 
#define _Analysis_assume_lock_held_(lock) 
#define _Analysis_assume_lock_not_held_(lock) 
#define _Analysis_assume_same_lock_(lock1,lock2) 
#define _Analysis_suppress_lock_checking_(lock) 
#define _Create_lock_level_(level) 
#define _Csalcat1_(x,y) 
#define _Csalcat2_(x,y) 
#define _Function_ignore_lock_checking_(lock) 
#define _Guarded_by_(lock) 
#define _Has_lock_kind_(kind) 
#define _Has_lock_level_(level) 
#define _Interlocked_ 
#define _Internal_lock_level_order_(a,b) 
#define _Lock_level_order_(a,b) 
#define _No_competing_thread_ 
#define _Post_same_lock_(lock1,lock2) 
#define _Releases_exclusive_lock_(lock) 
#define _Releases_lock_(lock) 
#define _Releases_nonreentrant_lock_(lock) 
#define _Releases_shared_lock_(lock) 
#define _Requires_exclusive_lock_held_(lock) 
#define _Requires_shared_lock_held_(lock) 
#define _Requires_lock_held_(lock) 
#define _Requires_lock_not_held_(lock) 
#define _Requires_no_locks_held_ 
#define _Write_guarded_by_(lock) 
#define __inner_checkReturn __attribute__((warn_unused_result))
#define __checkReturn __inner_checkReturn
#define _In_ 
#define _In_opt_ 
#define _In_z_ 
#define _In_opt_z_ 
#define _In_reads_(s) 
#define _In_reads_opt_(s) 
#define _In_reads_bytes_(s) 
#define _In_reads_bytes_opt_(s) 
#define _In_reads_z_(s) 
#define _In_reads_opt_z_(s) 
#define _In_reads_or_z_(s) 
#define _In_reads_or_z_opt_(s) 
#define _In_reads_to_ptr_(p) 
#define _In_reads_to_ptr_opt_(p) 
#define _In_reads_to_ptr_z_(p) 
#define _In_reads_to_ptr_opt_z_(p) 
#define _In_count_(s) 
#define _In_opt_count_(s) 
#define _In_bytecount_(s) 
#define _In_opt_bytecount_(s) 
#define _In_count_c_(s) 
#define _In_opt_count_c_(s) 
#define _In_bytecount_c_(s) 
#define _In_opt_bytecount_c_(s) 
#define _In_z_count_(s) 
#define _In_opt_z_count_(s) 
#define _In_z_bytecount_(s) 
#define _In_opt_z_bytecount_(s) 
#define _In_z_count_c_(s) 
#define _In_opt_z_count_c_(s) 
#define _In_z_bytecount_c_(s) 
#define _In_opt_z_bytecount_c_(s) 
#define _In_ptrdiff_count_(s) 
#define _In_opt_ptrdiff_count_(s) 
#define _In_count_x_(s) 
#define _In_opt_count_x_(s) 
#define _In_bytecount_x_(s) 
#define _In_opt_bytecount_x_(s) 
#define _Out_ 
#define _Out_opt_ 
#define _Out_writes_(s) 
#define _Out_writes_opt_(s) 
#define _Out_writes_bytes_(s) 
#define _Out_writes_bytes_opt_(s) 
#define _Out_writes_z_(s) 
#define _Out_writes_opt_z_(s) 
#define _Out_writes_to_(s,c) 
#define _Out_writes_to_opt_(s,c) 
#define _Out_writes_all_(s) 
#define _Out_writes_all_opt_(s) 
#define _Out_writes_bytes_to_(s,c) 
#define _Out_writes_bytes_to_opt_(s,c) 
#define _Out_writes_bytes_all_(s) 
#define _Out_writes_bytes_all_opt_(s) 
#define _Out_writes_to_ptr_(p) 
#define _Out_writes_to_ptr_opt_(p) 
#define _Out_writes_to_ptr_z_(p) 
#define _Out_writes_to_ptr_opt_z_(p) 
#define _Out_cap_(s) 
#define _Out_opt_cap_(s) 
#define _Out_bytecap_(s) 
#define _Out_opt_bytecap_(s) 
#define _Out_cap_c_(s) 
#define _Out_opt_cap_c_(s) 
#define _Out_bytecap_c_(s) 
#define _Out_opt_bytecap_c_(s) 
#define _Out_cap_m_(m,s) 
#define _Out_opt_cap_m_(m,s) 
#define _Out_z_cap_m_(m,s) 
#define _Out_opt_z_cap_m_(m,s) 
#define _Out_ptrdiff_cap_(s) 
#define _Out_opt_ptrdiff_cap_(s) 
#define _Out_cap_x_(s) 
#define _Out_opt_cap_x_(s) 
#define _Out_bytecap_x_(s) 
#define _Out_opt_bytecap_x_(s) 
#define _Out_z_cap_(s) 
#define _Out_opt_z_cap_(s) 
#define _Out_z_bytecap_(s) 
#define _Out_opt_z_bytecap_(s) 
#define _Out_z_cap_c_(s) 
#define _Out_opt_z_cap_c_(s) 
#define _Out_z_bytecap_c_(s) 
#define _Out_opt_z_bytecap_c_(s) 
#define _Out_z_cap_x_(s) 
#define _Out_opt_z_cap_x_(s) 
#define _Out_z_bytecap_x_(s) 
#define _Out_opt_z_bytecap_x_(s) 
#define _Out_cap_post_count_(a,o) 
#define _Out_opt_cap_post_count_(a,o) 
#define _Out_bytecap_post_bytecount_(a,o) 
#define _Out_opt_bytecap_post_bytecount_(a,o) 
#define _Out_z_cap_post_count_(a,o) 
#define _Out_opt_z_cap_post_count_(a,o) 
#define _Out_z_bytecap_post_bytecount_(a,o) 
#define _Out_opt_z_bytecap_post_bytecount_(a,o) 
#define _Out_capcount_(c) 
#define _Out_opt_capcount_(c) 
#define _Out_bytecapcount_(c) 
#define _Out_opt_bytecapcount_(c) 
#define _Out_capcount_x_(c) 
#define _Out_opt_capcount_x_(c) 
#define _Out_bytecapcount_x_(c) 
#define _Out_opt_bytecapcount_x_(c) 
#define _Out_z_capcount_(c) 
#define _Out_opt_z_capcount_(c) 
#define _Out_z_bytecapcount_(c) 
#define _Out_opt_z_bytecapcount_(c) 
#define _Inout_ 
#define _Inout_opt_ 
#define _Inout_z_ 
#define _Inout_opt_z_ 
#define _Inout_updates_(s) 
#define _Inout_updates_opt_(s) 
#define _Inout_updates_z_(s) 
#define _Inout_updates_opt_z_(s) 
#define _Inout_updates_to_(s,c) 
#define _Inout_updates_to_opt_(s,c) 
#define _Inout_updates_all_(s) 
#define _Inout_updates_all_opt_(s) 
#define _Inout_updates_bytes_(s) 
#define _Inout_updates_bytes_opt_(s) 
#define _Inout_updates_bytes_to_(s,c) 
#define _Inout_updates_bytes_to_opt_(s,c) 
#define _Inout_updates_bytes_all_(s) 
#define _Inout_updates_bytes_all_opt_(s) 
#define _Inout_count_(s) 
#define _Inout_opt_count_(s) 
#define _Inout_bytecount_(s) 
#define _Inout_opt_bytecount_(s) 
#define _Inout_count_c_(s) 
#define _Inout_opt_count_c_(s) 
#define _Inout_bytecount_c_(s) 
#define _Inout_opt_bytecount_c_(s) 
#define _Inout_z_count_(s) 
#define _Inout_opt_z_count_(s) 
#define _Inout_z_bytecount_(s) 
#define _Inout_opt_z_bytecount_(s) 
#define _Inout_z_count_c_(s) 
#define _Inout_opt_z_count_c_(s) 
#define _Inout_z_bytecount_c_(s) 
#define _Inout_opt_z_bytecount_c_(s) 
#define _Inout_ptrdiff_count_(s) 
#define _Inout_opt_ptrdiff_count_(s) 
#define _Inout_count_x_(s) 
#define _Inout_opt_count_x_(s) 
#define _Inout_bytecount_x_(s) 
#define _Inout_opt_bytecount_x_(s) 
#define _Inout_cap_(s) 
#define _Inout_opt_cap_(s) 
#define _Inout_bytecap_(s) 
#define _Inout_opt_bytecap_(s) 
#define _Inout_cap_c_(s) 
#define _Inout_opt_cap_c_(s) 
#define _Inout_bytecap_c_(s) 
#define _Inout_opt_bytecap_c_(s) 
#define _Inout_cap_x_(s) 
#define _Inout_opt_cap_x_(s) 
#define _Inout_bytecap_x_(s) 
#define _Inout_opt_bytecap_x_(s) 
#define _Inout_z_cap_(s) 
#define _Inout_opt_z_cap_(s) 
#define _Inout_z_bytecap_(s) 
#define _Inout_opt_z_bytecap_(s) 
#define _Inout_z_cap_c_(s) 
#define _Inout_opt_z_cap_c_(s) 
#define _Inout_z_bytecap_c_(s) 
#define _Inout_opt_z_bytecap_c_(s) 
#define _Inout_z_cap_x_(s) 
#define _Inout_opt_z_cap_x_(s) 
#define _Inout_z_bytecap_x_(s) 
#define _Inout_opt_z_bytecap_x_(s) 
#define _Outptr_ 
#define _Outptr_result_maybenull_ 
#define _Outptr_opt_ 
#define _Outptr_opt_result_maybenull_ 
#define _Outptr_result_z_ 
#define _Outptr_opt_result_z_ 
#define _Outptr_result_maybenull_z_ 
#define _Outptr_opt_result_maybenull_z_ 
#define _Outptr_result_nullonfailure_ 
#define _Outptr_opt_result_nullonfailure_ 
#define _COM_Outptr_ 
#define _COM_Outptr_result_maybenull_ 
#define _COM_Outptr_opt_ 
#define _COM_Outptr_opt_result_maybenull_ 
#define _Outptr_result_buffer_(s) 
#define _Outptr_opt_result_buffer_(s) 
#define _Outptr_result_buffer_to_(s,c) 
#define _Outptr_opt_result_buffer_to_(s,c) 
#define _Outptr_result_buffer_all_(s) 
#define _Outptr_opt_result_buffer_all_(s) 
#define _Outptr_result_buffer_maybenull_(s) 
#define _Outptr_opt_result_buffer_maybenull_(s) 
#define _Outptr_result_buffer_to_maybenull_(s,c) 
#define _Outptr_opt_result_buffer_to_maybenull_(s,c) 
#define _Outptr_result_buffer_all_maybenull_(s) 
#define _Outptr_opt_result_buffer_all_maybenull_(s) 
#define _Outptr_result_bytebuffer_(s) 
#define _Outptr_opt_result_bytebuffer_(s) 
#define _Outptr_result_bytebuffer_to_(s,c) 
#define _Outptr_opt_result_bytebuffer_to_(s,c) 
#define _Outptr_result_bytebuffer_all_(s) 
#define _Outptr_opt_result_bytebuffer_all_(s) 
#define _Outptr_result_bytebuffer_maybenull_(s) 
#define _Outptr_opt_result_bytebuffer_maybenull_(s) 
#define _Outptr_result_bytebuffer_to_maybenull_(s,c) 
#define _Outptr_opt_result_bytebuffer_to_maybenull_(s,c) 
#define _Outptr_result_bytebuffer_all_maybenull_(s) 
#define _Outptr_opt_result_bytebuffer_all_maybenull_(s) 
#define _Outref_ 
#define _Outref_result_maybenull_ 
#define _Outref_result_buffer_(s) 
#define _Outref_result_bytebuffer_(s) 
#define _Outref_result_buffer_to_(s,c) 
#define _Outref_result_bytebuffer_to_(s,c) 
#define _Outref_result_buffer_all_(s) 
#define _Outref_result_bytebuffer_all_(s) 
#define _Outref_result_buffer_maybenull_(s) 
#define _Outref_result_bytebuffer_maybenull_(s) 
#define _Outref_result_buffer_to_maybenull_(s,c) 
#define _Outref_result_bytebuffer_to_maybenull_(s,c) 
#define _Outref_result_buffer_all_maybenull_(s) 
#define _Outref_result_bytebuffer_all_maybenull_(s) 
#define _Outref_result_nullonfailure_ 
#define _Result_nullonfailure_ 
#define _Result_zeroonfailure_ 
#define _Ret_z_ 
#define _Ret_maybenull_z_ 
#define _Ret_notnull_ 
#define _Ret_maybenull_ 
#define _Ret_null_ 
#define _Ret_valid_ 
#define _Ret_writes_(s) 
#define _Ret_writes_z_(s) 
#define _Ret_writes_bytes_(s) 
#define _Ret_writes_maybenull_(s) 
#define _Ret_writes_maybenull_z_(s) 
#define _Ret_writes_bytes_maybenull_(s) 
#define _Ret_writes_to_(s,c) 
#define _Ret_writes_bytes_to_(s,c) 
#define _Ret_writes_to_maybenull_(s,c) 
#define _Ret_writes_bytes_to_maybenull_(s,c) 
#define _Points_to_data_ 
#define _Literal_ 
#define _Notliteral_ 
#define _Deref_ret_range_(l,u) 
#define _Unchanged_(e) 
#define __in_opt 
#define __out_opt 
#define __inout_opt 
#define _In_range_(low,hi) 
#define _Out_range_(low,hi) 
#define _Ret_range_(low,hi) 
#define _Deref_in_range_(low,hi) 
#define _Deref_out_range_(low,hi) 
#define _Deref_inout_range_(low,hi) 
#define _Struct_size_bytes_(size) 
#define _Called_from_function_class_(name) 
#define _Check_return_ __checkReturn
#define _Function_class_(name) 
#define _Raises_SEH_exception_ 
#define _Maybe_raises_SEH_exception_ 
#define _Must_inspect_result_ 
#define _Use_decl_annotations_ 
#define _Always_(anno_list) 
#define _On_failure_(anno_list) 
#define _Return_type_success_(expr) 
#define _Success_(expr) 
#define _Reserved_ 
#define _Const_ 
#define _Readable_bytes_(s) 
#define _Readable_elements_(s) 
#define _Writable_bytes_(s) 
#define _Writable_elements_(s) 
#define _Null_terminated_ 
#define _NullNull_terminated_ 
#define _Field_size_(s) 
#define _Field_size_full_(s) 
#define _Field_size_full_opt_(s) 
#define _Field_size_opt_(s) 
#define _Field_size_part_(s,c) 
#define _Field_size_part_opt_(s,c) 
#define _Field_size_bytes_(size) 
#define _Field_size_bytes_full_(size) 
#define _Field_size_bytes_full_opt_(s) 
#define _Field_size_bytes_opt_(s) 
#define _Field_size_bytes_part_(s,c) 
#define _Field_size_bytes_part_opt_(s,c) 
#define _Field_z_ 
#define _Field_range_(min,max) 
#define _At_(e,a) 
#define _At_buffer_(e,i,c,a) 
#define _Group_(a) 
#define _When_(e,a) 
#define _Printf_format_string_ 
#define _Scanf_format_string_ 
#define _Scanf_s_format_string_ 
#define _Format_string_impl_(kind,where) 
#define _Printf_format_string_params_(x) 
#define _Scanf_format_string_params_(x) 
#define _Scanf_s_format_string_params_(x) 
#define _Analysis_mode_(x) 
#define _Analysis_assume_(expr) 
#define _Analysis_assume_nullterminated_(expr) 
#define _Post_ 
#define _Post_equal_to_(expr) 
#define _Post_readable_byte_size_(s) 
#define _Post_readable_size_(s) 
#define _Post_satisfies_(c) 
#define _Post_writable_byte_size_(s) 
#define _Post_writable_size_(s) 
#define _Pre_equal_to_(expr) 
#define _Pre_notnull_ 
#define _Pre_readable_byte_size_(s) 
#define _Pre_readable_size_(s) 
#define _Pre_satisfies_(c) 
#define _Pre_writable_byte_size_(s) 
#define _Pre_writable_size_(s) 
#define _Strict_type_match_ 
#define __in 
#define __out 
#define __bcount(size) 
#define __ecount(size) 
#define __in_bcount(size) 
#define __in_bcount_nz(size) 
#define __in_bcount_z(size) 
#define __in_ecount(size) 
#define __in_ecount_nz(size) 
#define __in_ecount_z(size) 
#define __out_bcount(size) 
#define __out_bcount_nz(size) 
#define __out_bcount_z(size) 
#define __out_bcount_full(size) 
#define __out_bcount_full_z(size) 
#define __out_bcount_part(size,length) 
#define __out_bcount_part_z(size,length) 
#define __out_ecount(size) 
#define __out_ecount_nz(size) 
#define __out_ecount_z(size) 
#define __out_ecount_full(size) 
#define __out_ecount_full_z(size) 
#define __out_ecount_part(size,length) 
#define __out_ecount_part_z(size,length) 
#define __inout 
#define __inout_bcount(size) 
#define __inout_bcount_nz(size) 
#define __inout_bcount_z(size) 
#define __inout_bcount_full(size) 
#define __inout_bcount_part(size,length) 
#define __inout_ecount(size) 
#define __inout_ecount_nz(size) 
#define __inout_ecount_z(size) 
#define __inout_ecount_full(size) 
#define __inout_ecount_part(size,length) 
#define __deref 
#define __deref_opt_out 
#define __deref_opt_out_bcount(x) 
#define __deref_out 
#define __deref_out_ecount(size) 
#define __deref_out_opt 
#define __range(x,y) 
#define SAL__deref_in 
#define SAL__deref_in_ecount(size) 
#define SAL__deref_in_bcount(size) 
#define SAL__deref_in_opt 
#define SAL__deref_in_ecount_opt(size) 
#define SAL__deref_in_bcount_opt(size) 
#define SAL__deref_opt_in 
#define SAL__deref_opt_in_ecount(size) 
#define SAL__deref_opt_in_bcount(size) 
#define SAL__deref_opt_in_opt 
#define SAL__deref_opt_in_ecount_opt(size) 
#define SAL__deref_opt_in_bcount_opt(size) 
#define SAL__out_awcount(expr,size) 
#define SAL__in_awcount(expr,size) 
#define SAL__null 
#define SAL__notnull 
#define SAL__maybenull 
#define SAL__readonly 
#define SAL__notreadonly 
#define SAL__maybereadonly 
#define SAL__valid 
#define SAL__notvalid 
#define SAL__maybevalid 
#define SAL__readableTo(extent) 
#define SAL__elem_readableTo(size) 
#define SAL__byte_readableTo(size) 
#define SAL__writableTo(size) 
#define SAL__elem_writableTo(size) 
#define SAL__byte_writableTo(size) 
#define SAL__deref 
#define SAL__pre 
#define SAL__post 
#define SAL__precond(expr) 
#define SAL__postcond(expr) 
#define SAL__exceptthat 
#define SAL__execeptthat 
#define SAL__inner_success(expr) 
#define SAL__inner_checkReturn 
#define SAL__inner_typefix(ctype) 
#define SAL__inner_override 
#define SAL__inner_callback 
#define SAL__inner_blocksOn(resource) 
#define SAL__inner_fallthrough_dec 
#define SAL__inner_fallthrough 
#define __refparam 
#define SAL__inner_control_entrypoint(category) 
#define SAL__inner_data_entrypoint(category) 
#define SAL__ecount(size) 
#define SAL__bcount(size) 
#define SAL__in 
#define SAL__in_opt 
#define SAL__in_nz 
#define SAL__in_nz_opt 
#define SAL__in_z 
#define SAL__in_z_opt 
#define SAL__in_ecount(size) 
#define SAL__in_ecount_nz(size) 
#define SAL__in_ecount_z(size) 
#define SAL__in_bcount(size) 
#define SAL__in_bcount_z(size) 
#define SAL__in_bcount_nz(size) 
#define SAL__in_ecount_opt(size) 
#define SAL__in_bcount_opt(size) 
#define SAL__in_ecount_z_opt(size) 
#define SAL__in_bcount_z_opt(size) 
#define SAL__in_ecount_nz_opt(size) 
#define SAL__in_bcount_nz_opt(size) 
#define SAL__out 
#define SAL__out_ecount(size) 
#define SAL__out_z 
#define SAL__out_nz 
#define SAL__out_nz_opt 
#define SAL__out_z_opt 
#define SAL__out_ecount_part(size,length) 
#define SAL__out_ecount_full(size) 
#define SAL__out_ecount_nz(size) 
#define SAL__out_ecount_z(size) 
#define SAL__out_ecount_part_z(size,length) 
#define SAL__out_ecount_full_z(size) 
#define SAL__out_bcount(size) 
#define SAL__out_bcount_part(size,length) 
#define SAL__out_bcount_full(size) 
#define SAL__out_bcount_z(size) 
#define SAL__out_bcount_part_z(size,length) 
#define SAL__out_bcount_full_z(size) 
#define SAL__out_bcount_nz(size) 
#define SAL__inout 
#define SAL__inout_ecount(size) 
#define SAL__inout_bcount(size) 
#define SAL__inout_ecount_part(size,length) 
#define SAL__inout_bcount_part(size,length) 
#define SAL__inout_ecount_full(size) 
#define SAL__inout_bcount_full(size) 
#define SAL__inout_z 
#define SAL__inout_ecount_z(size) 
#define SAL__inout_bcount_z(size) 
#define SAL__inout_nz 
#define SAL__inout_ecount_nz(size) 
#define SAL__inout_bcount_nz(size) 
#define SAL__ecount_opt(size) 
#define SAL__bcount_opt(size) 
#define SAL__out_opt 
#define SAL__out_ecount_opt(size) 
#define SAL__out_bcount_opt(size) 
#define SAL__out_ecount_part_opt(size,length) 
#define SAL__out_bcount_part_opt(size,length) 
#define SAL__out_ecount_full_opt(size) 
#define SAL__out_bcount_full_opt(size) 
#define SAL__out_ecount_z_opt(size) 
#define SAL__out_bcount_z_opt(size) 
#define SAL__out_ecount_part_z_opt(size,length) 
#define SAL__out_bcount_part_z_opt(size,length) 
#define SAL__out_ecount_full_z_opt(size) 
#define SAL__out_bcount_full_z_opt(size) 
#define SAL__out_ecount_nz_opt(size) 
#define SAL__out_bcount_nz_opt(size) 
#define SAL__inout_opt 
#define SAL__inout_ecount_opt(size) 
#define SAL__inout_bcount_opt(size) 
#define SAL__inout_ecount_part_opt(size,length) 
#define SAL__inout_bcount_part_opt(size,length) 
#define SAL__inout_ecount_full_opt(size) 
#define SAL__inout_bcount_full_opt(size) 
#define SAL__inout_z_opt 
#define SAL__inout_ecount_z_opt(size) 
#define SAL__inout_bcount_z_opt(size) 
#define SAL__inout_nz_opt 
#define SAL__inout_ecount_nz_opt(size) 
#define SAL__inout_bcount_nz_opt(size) 
#define SAL__deref_ecount(size) 
#define SAL__deref_bcount(size) 
#define SAL__deref_out 
#define SAL__deref_out_ecount(size) 
#define SAL__deref_out_bcount(size) 
#define SAL__deref_out_ecount_part(size,length) 
#define SAL__deref_out_bcount_part(size,length) 
#define SAL__deref_out_ecount_full(size) 
#define SAL__deref_out_bcount_full(size) 
#define SAL__deref_out_z 
#define SAL__deref_out_ecount_z(size) 
#define SAL__deref_out_bcount_z(size) 
#define SAL__deref_out_nz 
#define SAL__deref_out_ecount_nz(size) 
#define SAL__deref_out_bcount_nz(size) 
#define SAL__deref_inout 
#define SAL__deref_inout_ecount(size) 
#define SAL__deref_inout_bcount(size) 
#define SAL__deref_inout_ecount_part(size,length) 
#define SAL__deref_inout_bcount_part(size,length) 
#define SAL__deref_inout_ecount_full(size) 
#define SAL__deref_inout_bcount_full(size) 
#define SAL__deref_inout_z 
#define SAL__deref_inout_ecount_z(size) 
#define SAL__deref_inout_bcount_z(size) 
#define SAL__deref_inout_nz 
#define SAL__deref_inout_ecount_nz(size) 
#define SAL__deref_inout_bcount_nz(size) 
#define SAL__deref_ecount_opt(size) 
#define SAL__deref_bcount_opt(size) 
#define SAL__deref_out_opt 
#define SAL__deref_out_ecount_opt(size) 
#define SAL__deref_out_bcount_opt(size) 
#define SAL__deref_out_ecount_part_opt(size,length) 
#define SAL__deref_out_bcount_part_opt(size,length) 
#define SAL__deref_out_ecount_full_opt(size) 
#define SAL__deref_out_bcount_full_opt(size) 
#define SAL__deref_out_z_opt 
#define SAL__deref_out_ecount_z_opt(size) 
#define SAL__deref_out_bcount_z_opt(size) 
#define SAL__deref_out_nz_opt 
#define SAL__deref_out_ecount_nz_opt(size) 
#define SAL__deref_out_bcount_nz_opt(size) 
#define SAL__deref_inout_opt 
#define SAL__deref_inout_ecount_opt(size) 
#define SAL__deref_inout_bcount_opt(size) 
#define SAL__deref_inout_ecount_part_opt(size,length) 
#define SAL__deref_inout_bcount_part_opt(size,length) 
#define SAL__deref_inout_ecount_full_opt(size) 
#define SAL__deref_inout_bcount_full_opt(size) 
#define SAL__deref_inout_z_opt 
#define SAL__deref_inout_ecount_z_opt(size) 
#define SAL__deref_inout_bcount_z_opt(size) 
#define SAL__deref_inout_nz_opt 
#define SAL__deref_inout_ecount_nz_opt(size) 
#define SAL__deref_inout_bcount_nz_opt(size) 
#define SAL__deref_opt_ecount(size) 
#define SAL__deref_opt_bcount(size) 
#define SAL__deref_opt_out 
#define SAL__deref_opt_out_z 
#define SAL__deref_opt_out_ecount(size) 
#define SAL__deref_opt_out_bcount(size) 
#define SAL__deref_opt_out_ecount_part(size,length) 
#define SAL__deref_opt_out_bcount_part(size,length) 
#define SAL__deref_opt_out_ecount_full(size) 
#define SAL__deref_opt_out_bcount_full(size) 
#define SAL__deref_opt_inout 
#define SAL__deref_opt_inout_ecount(size) 
#define SAL__deref_opt_inout_bcount(size) 
#define SAL__deref_opt_inout_ecount_part(size,length) 
#define SAL__deref_opt_inout_bcount_part(size,length) 
#define SAL__deref_opt_inout_ecount_full(size) 
#define SAL__deref_opt_inout_bcount_full(size) 
#define SAL__deref_opt_inout_z 
#define SAL__deref_opt_inout_ecount_z(size) 
#define SAL__deref_opt_inout_bcount_z(size) 
#define SAL__deref_opt_inout_nz 
#define SAL__deref_opt_inout_ecount_nz(size) 
#define SAL__deref_opt_inout_bcount_nz(size) 
#define SAL__deref_opt_ecount_opt(size) 
#define SAL__deref_opt_bcount_opt(size) 
#define SAL__deref_opt_out_opt 
#define SAL__deref_opt_out_ecount_opt(size) 
#define SAL__deref_opt_out_bcount_opt(size) 
#define SAL__deref_opt_out_ecount_part_opt(size,length) 
#define SAL__deref_opt_out_bcount_part_opt(size,length) 
#define SAL__deref_opt_out_ecount_full_opt(size) 
#define SAL__deref_opt_out_bcount_full_opt(size) 
#define SAL__deref_opt_out_z_opt 
#define SAL__deref_opt_out_ecount_z_opt(size) 
#define SAL__deref_opt_out_bcount_z_opt(size) 
#define SAL__deref_opt_out_nz_opt 
#define SAL__deref_opt_out_ecount_nz_opt(size) 
#define SAL__deref_opt_out_bcount_nz_opt(size) 
#define SAL__deref_opt_inout_opt 
#define SAL__deref_opt_inout_ecount_opt(size) 
#define SAL__deref_opt_inout_bcount_opt(size) 
#define SAL__deref_opt_inout_ecount_part_opt(size,length) 
#define SAL__deref_opt_inout_bcount_part_opt(size,length) 
#define SAL__deref_opt_inout_ecount_full_opt(size) 
#define SAL__deref_opt_inout_bcount_full_opt(size) 
#define SAL__deref_opt_inout_z_opt 
#define SAL__deref_opt_inout_ecount_z_opt(size) 
#define SAL__deref_opt_inout_bcount_z_opt(size) 
#define SAL__deref_opt_inout_nz_opt 
#define SAL__deref_opt_inout_ecount_nz_opt(size) 
#define SAL__deref_opt_inout_bcount_nz_opt(size) 
#define SAL__success(expr) 
#define SAL__nullterminated 
#define SAL__nullnullterminated 
#define SAL__reserved 
#define SAL__checkReturn 
#define SAL__typefix(ctype) 
#define SAL__override 
#define SAL__callback 
#define SAL__format_string 
#define SAL__blocksOn(resource) 
#define SAL__control_entrypoint(category) 
#define SAL__data_entrypoint(category) 
#define __encoded_pointer 
#define _Post_equals_last_error_ 
#define __fallthrough 
#define __analysis_assume(expr) 
#define __CLR_OR_THIS_CALL 
#define __CLRCALL_OR_CDECL __cdecl
#define __STDC_WANT_SECURE_LIB__ 0
#define _CRT_SECURE_NO_DEPRECATE 
#define DECLSPEC_ADDRSAFE 
#define DRIVERSPECS_H 
#define _IRQL_raises_(x) 
#define _IRQL_requires_(x) 
#define _IRQL_requires_max_(x) 
#define _IRQL_requires_min_(x) 
#define _IRQL_requires_same_ 
#define _IRQL_restores_ 
#define _IRQL_saves_ 
#define __drv_aliasesMem 
#define __drv_allocatesMem(kind) 
#define __drv_arg(x,y) 
#define __drv_at(x,y) 
#define __drv_deref(x) 
#define __drv_dispatchType(x) 
#define __drv_dispatchType_other 
#define __drv_formatString(x) 
#define __drv_freesMem(kind) 
#define __drv_in(x) 
#define __drv_in_deref(x) 
#define __drv_maxIRQL(x) 
#define __drv_nonConstant 
#define __drv_out(x) 
#define __drv_out_deref(x) 
#define __drv_raisesIRQL(x) 
#define __drv_requiresIRQL(x) 
#define __drv_restoresIRQL 
#define __drv_restoresIRQLGlobal(x,y) 
#define __drv_savesIRQL 
#define __drv_savesIRQLGlobal(x,y) 
#define __drv_setsIRQL(x) 
#define __drv_useCancelIRQL 
#define __drv_valueIs(x) 
#define __drv_when(x,y) 
#define __internal_kernel_driver 
#define __kernel_code 
#define __kernel_driver 
#define __user_code 
#define __user_driver 
#define STRICT 1
#define BASETYPES 
  typedef unsigned long ULONG;
  typedef ULONG *PULONG;
  typedef unsigned short USHORT;
  typedef USHORT *PUSHORT;
  typedef unsigned char UCHAR;
  typedef UCHAR *PUCHAR;
  typedef char *PSZ;
#define MAX_PATH 260
#define FALSE 0
#define TRUE 1
#define IN 
#define OUT 
#define OPTIONAL 
#undef far
#undef near
#undef pascal
#define far 
#define near 
#define pascal __stdcall
#define cdecl 
#define CDECL 
#define CALLBACK __stdcall
#define WINAPI __stdcall
#define WINAPIV __cdecl
#define APIENTRY WINAPI
#define APIPRIVATE __stdcall
#define PASCAL __stdcall
#define WINAPI_INLINE WINAPI
#undef FAR
#undef NEAR
#define FAR 
#define NEAR 
#define CONST const
#define _DEF_WINBOOL_ 
typedef int WINBOOL;
       
#undef BOOL
  typedef int BOOL;
#define BOOL WINBOOL
typedef WINBOOL *PBOOL;
typedef WINBOOL *LPBOOL;
       
#undef BOOL
  typedef unsigned char BYTE;
  typedef unsigned short WORD;
  typedef unsigned long DWORD;
  typedef float FLOAT;
  typedef FLOAT *PFLOAT;
  typedef BYTE *PBYTE;
  typedef BYTE *LPBYTE;
  typedef int *PINT;
  typedef int *LPINT;
  typedef WORD *PWORD;
  typedef WORD *LPWORD;
  typedef long *LPLONG;
  typedef DWORD *PDWORD;
  typedef DWORD *LPDWORD;
  typedef void *LPVOID;
#define _LPCVOID_DEFINED 
  typedef const void *LPCVOID;
  typedef int INT;
  typedef unsigned int UINT;
  typedef unsigned int *PUINT;
#define _WINNT_ 
#define _INC_CTYPE 
#define _CRT_CTYPEDATA_DEFINED 
#define __PCTYPE_FUNC __pctype_func()
#define __pctype_func() (* __MINGW_IMP_SYMBOL(_pctype))
  extern unsigned short ** _imp___pctype;
#define _pctype (* __MINGW_IMP_SYMBOL(_pctype))
#define _CRT_WCTYPEDATA_DEFINED 
  extern unsigned short ** _imp___wctype;
#define _wctype (* __MINGW_IMP_SYMBOL(_wctype))
#define __pwctype_func() (* __MINGW_IMP_SYMBOL(_pwctype))
  extern unsigned short ** _imp___pwctype;
#define _pwctype (* __MINGW_IMP_SYMBOL(_pwctype))
  extern const unsigned char __newclmap[];
  extern const unsigned char __newcumap[];
  extern pthreadlocinfo __ptlocinfo;
  extern pthreadmbcinfo __ptmbcinfo;
  extern int __globallocalestatus;
  extern int __locale_changed;
  extern struct threadlocaleinfostruct __initiallocinfo;
  extern _locale_tstruct __initiallocalestructinfo;
  pthreadlocinfo __attribute__((__cdecl__)) __updatetlocinfo(void);
  pthreadmbcinfo __attribute__((__cdecl__)) __updatetmbcinfo(void);
#define _UPPER 0x1
#define _LOWER 0x2
#define _DIGIT 0x4
#define _SPACE 0x8
#define _PUNCT 0x10
#define _CONTROL 0x20
#define _BLANK 0x40
#define _HEX 0x80
#define _LEADBYTE 0x8000
#define _ALPHA (0x0100|_UPPER|_LOWER)
#define _CTYPE_DEFINED 
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isctype(int _C,int _Type);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isctype_l(int _C,int _Type,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isalpha(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isalpha_l(int _C,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isupper(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isupper_l(int _C,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) islower(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _islower_l(int _C,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isdigit(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isdigit_l(int _C,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isxdigit(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isxdigit_l(int _C,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isspace(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isspace_l(int _C,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) ispunct(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _ispunct_l(int _C,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isalnum(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isalnum_l(int _C,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isprint(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isprint_l(int _C,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) isgraph(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isgraph_l(int _C,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) iscntrl(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iscntrl_l(int _C,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) toupper(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) tolower(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _tolower(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _tolower_l(int _C,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _toupper(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _toupper_l(int _C,_locale_t _Locale);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) __isascii(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) __toascii(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) __iscsymf(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) __iscsym(int _C);
int __attribute__((__cdecl__)) isblank(int _C);
#define _WCTYPE_DEFINED 
  int __attribute__((__cdecl__)) iswalpha(wint_t _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswalpha_l(wint_t _C,_locale_t _Locale);
  int __attribute__((__cdecl__)) iswupper(wint_t _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswupper_l(wint_t _C,_locale_t _Locale);
  int __attribute__((__cdecl__)) iswlower(wint_t _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswlower_l(wint_t _C,_locale_t _Locale);
  int __attribute__((__cdecl__)) iswdigit(wint_t _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswdigit_l(wint_t _C,_locale_t _Locale);
  int __attribute__((__cdecl__)) iswxdigit(wint_t _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswxdigit_l(wint_t _C,_locale_t _Locale);
  int __attribute__((__cdecl__)) iswspace(wint_t _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswspace_l(wint_t _C,_locale_t _Locale);
  int __attribute__((__cdecl__)) iswpunct(wint_t _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswpunct_l(wint_t _C,_locale_t _Locale);
  int __attribute__((__cdecl__)) iswalnum(wint_t _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswalnum_l(wint_t _C,_locale_t _Locale);
  int __attribute__((__cdecl__)) iswprint(wint_t _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswprint_l(wint_t _C,_locale_t _Locale);
  int __attribute__((__cdecl__)) iswgraph(wint_t _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswgraph_l(wint_t _C,_locale_t _Locale);
  int __attribute__((__cdecl__)) iswcntrl(wint_t _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _iswcntrl_l(wint_t _C,_locale_t _Locale);
  int __attribute__((__cdecl__)) iswascii(wint_t _C);
  int __attribute__((__cdecl__)) isleadbyte(int _C);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _isleadbyte_l(int _C,_locale_t _Locale);
  wint_t __attribute__((__cdecl__)) towupper(wint_t _C);
  __attribute__ ((__dllimport__)) wint_t __attribute__((__cdecl__)) _towupper_l(wint_t _C,_locale_t _Locale);
  wint_t __attribute__((__cdecl__)) towlower(wint_t _C);
  __attribute__ ((__dllimport__)) wint_t __attribute__((__cdecl__)) _towlower_l(wint_t _C,_locale_t _Locale);
  int __attribute__((__cdecl__)) iswctype(wint_t _C,wctype_t _Type);
  int __attribute__((__cdecl__)) is_wctype(wint_t _C,wctype_t _Type);
int __attribute__((__cdecl__)) iswblank(wint_t _C);
#define __chvalidchk(a,b) (__PCTYPE_FUNC[(unsigned char)(a)] & (b))
#define _chvalidchk_l(_Char,_Flag,_Locale) (!_Locale ? __chvalidchk(_Char,_Flag) : ((_locale_t)_Locale)->locinfo->pctype[(unsigned char)(_Char)] & (_Flag))
#define _ischartype_l(_Char,_Flag,_Locale) (((_Locale)!=NULL && (((_locale_t)(_Locale))->locinfo->mb_cur_max) > 1) ? _isctype_l(_Char,(_Flag),_Locale) : _chvalidchk_l(_Char,_Flag,_Locale))
#define _isalpha_l(_Char,_Locale) _ischartype_l(_Char,_ALPHA,_Locale)
#define _isupper_l(_Char,_Locale) _ischartype_l(_Char,_UPPER,_Locale)
#define _islower_l(_Char,_Locale) _ischartype_l(_Char,_LOWER,_Locale)
#define _isdigit_l(_Char,_Locale) _ischartype_l(_Char,_DIGIT,_Locale)
#define _isxdigit_l(_Char,_Locale) _ischartype_l(_Char,_HEX,_Locale)
#define _isspace_l(_Char,_Locale) _ischartype_l(_Char,_SPACE,_Locale)
#define _ispunct_l(_Char,_Locale) _ischartype_l(_Char,_PUNCT,_Locale)
#define _isalnum_l(_Char,_Locale) _ischartype_l(_Char,_ALPHA|_DIGIT,_Locale)
#define _isprint_l(_Char,_Locale) _ischartype_l(_Char,_BLANK|_PUNCT|_ALPHA|_DIGIT,_Locale)
#define _isgraph_l(_Char,_Locale) _ischartype_l(_Char,_PUNCT|_ALPHA|_DIGIT,_Locale)
#define _iscntrl_l(_Char,_Locale) _ischartype_l(_Char,_CONTROL,_Locale)
#define _tolower(_Char) ((_Char)-'A'+'a')
#define _toupper(_Char) ((_Char)-'a'+'A')
#define __isascii(_Char) ((unsigned)(_Char) < 0x80)
#define __toascii(_Char) ((_Char) & 0x7f)
#define _WCTYPE_INLINE_DEFINED 
#undef _CRT_WCTYPE_NOINLINE
#define iswalpha(_c) (iswctype(_c,_ALPHA))
#define iswupper(_c) (iswctype(_c,_UPPER))
#define iswlower(_c) (iswctype(_c,_LOWER))
#define iswdigit(_c) (iswctype(_c,_DIGIT))
#define iswxdigit(_c) (iswctype(_c,_HEX))
#define iswspace(_c) (iswctype(_c,_SPACE))
#define iswpunct(_c) (iswctype(_c,_PUNCT))
#define iswalnum(_c) (iswctype(_c,_ALPHA|_DIGIT))
#define iswprint(_c) (iswctype(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT))
#define iswgraph(_c) (iswctype(_c,_PUNCT|_ALPHA|_DIGIT))
#define iswcntrl(_c) (iswctype(_c,_CONTROL))
#define iswascii(_c) ((unsigned)(_c) < 0x80)
#define _iswalpha_l(_c,_p) (_iswctype_l(_c,_ALPHA,_p))
#define _iswupper_l(_c,_p) (_iswctype_l(_c,_UPPER,_p))
#define _iswlower_l(_c,_p) (_iswctype_l(_c,_LOWER,_p))
#define _iswdigit_l(_c,_p) (_iswctype_l(_c,_DIGIT,_p))
#define _iswxdigit_l(_c,_p) (_iswctype_l(_c,_HEX,_p))
#define _iswspace_l(_c,_p) (_iswctype_l(_c,_SPACE,_p))
#define _iswpunct_l(_c,_p) (_iswctype_l(_c,_PUNCT,_p))
#define _iswalnum_l(_c,_p) (_iswctype_l(_c,_ALPHA|_DIGIT,_p))
#define _iswprint_l(_c,_p) (_iswctype_l(_c,_BLANK|_PUNCT|_ALPHA|_DIGIT,_p))
#define _iswgraph_l(_c,_p) (_iswctype_l(_c,_PUNCT|_ALPHA|_DIGIT,_p))
#define _iswcntrl_l(_c,_p) (_iswctype_l(_c,_CONTROL,_p))
#define __iscsymf(_c) (isalpha(_c) || ((_c)=='_'))
#define __iscsym(_c) (isalnum(_c) || ((_c)=='_'))
#define __iswcsymf(_c) (iswalpha(_c) || ((_c)=='_'))
#define __iswcsym(_c) (iswalnum(_c) || ((_c)=='_'))
#define _iscsymf_l(_c,_p) (_isalpha_l(_c,_p) || ((_c)=='_'))
#define _iscsym_l(_c,_p) (_isalnum_l(_c,_p) || ((_c)=='_'))
#define _iswcsymf_l(_c,_p) (_iswalpha_l(_c,_p) || ((_c)=='_'))
#define _iswcsym_l(_c,_p) (_iswalnum_l(_c,_p) || ((_c)=='_'))
#define isascii __isascii
#define toascii __toascii
#define iscsymf __iscsymf
#define iscsym __iscsym
#define _API_SET_H_ 
#define API_SET_PREFIX_NAME_A "API-"
#define API_SET_PREFIX_NAME_U L"API-"
#define API_SET_EXTENSION_NAME_A "EXT-"
#define API_SET_EXTENSION_NAME_U L"EXT-"
#define API_SET_SCHEMA_NAME ApiSetSchema
#define API_SET_SECTION_NAME ".apiset"
#define API_SET_SCHEMA_SUFFIX L".sys"
#define API_SET_SCHEMA_VERSION __MSABI_LONG(2U)
#define API_SET_HELPER_NAME ApiSetHelp
#define API_SET_LOAD_SCHEMA_ORDINAL 1
#define API_SET_LOOKUP_ORDINAL 2
#define API_SET_RELEASE_SCHEMA_ORDINAL 3
#define API_SET_STRING_X(s) #s
#define API_SET_STRING(s) API_SET_STRING_X(s)
#define API_SET_STRING_U_Y(s) L ## s
#define API_SET_STRING_U_X(s) API_SET_STRING_U_Y(s)
#define API_SET_STRING_U(s) API_SET_STRING_U_X(API_SET_STRING(s))
#define API_SET_OVERRIDE(X) X ##Implementation
#define API_SET_LEGACY_OVERRIDE_DEF(X) X = API_SET_OVERRIDE(X)
#define API_SET_OVERRIDE_DEF(X) API_SET_LEGACY_OVERRIDE_DEF(X) PRIVATE
#define API_SET_PRIVATE(X) X PRIVATE
#undef API_SET
#undef API_SET_LIBRARY
#define API_SET_LIBRARY(X) LIBRARY X
#define API_SET(X) X
#define ANYSIZE_ARRAY 1
#define __INTRINSIC_GROUP_WINNT 
       
#define _INTRIN_MAC_ 
#define __FLAGCONSTRAINT "=@ccc"
#define __FLAGSET 
#define __FLAGCLOBBER1 
#define __FLAGCLOBBER2 
#define __buildstos(x,y,z) void x(y *Dest, y Data, size_t Count) { __asm__ __volatile__ ("rep stos{" z "}" : "+D" (Dest), "+c" (Count) : [Data] "a" (Data) : "memory"); }
#define __buildlogicali(x,y,o) y x(volatile y *Destination, y Value) { return __sync_fetch_and_ ## o(Destination, Value); }
#define __buildbittesti(x,y,z,a) unsigned char x(y volatile *Base, y Offset) { unsigned char old; __asm__ __volatile__ (z : [old] __FLAGCONSTRAINT (old), [Base] "+m" (*Base) : [Offset] a "r" (Offset) : "memory" __FLAGCLOBBER1); return old; }
#define __buildpause() __asm__ __volatile__("rep nop")
#define __buildint(a) __asm__ __volatile__("int {$}" #a :)
#define __buildmemorybarrier() { unsigned char Barrier; __asm__ __volatile__("xchg{b %%| }al, %0" :"=m" (Barrier) : : "eax", "memory"); }
#define __buildreadseg(x,y,z,a) y x(unsigned __LONG32 Offset) { y ret; __asm__ ("mov{" a " %%" z ":%[offset], %[ret] | %[ret], %%" z ":%[offset]}" : [ret] "=r" (ret) : [offset] "m" ((*(y *) (size_t) Offset))); return ret; }
#define __buildwriteseg(x,y,z,a) void x(unsigned __LONG32 Offset, y Data) { __asm__ ("mov{" a " %[Data], %%" z ":%[offset] | %%" z ":%[offset], %[Data]}" : [offset] "=m" ((*(y *) (size_t) Offset)) : [Data] "ri" (Data)); }
#define __buildbitscan(x,y,z) unsigned char x(unsigned __LONG32 *Index, y Mask) { y n; unsigned char old; __asm__ (z : "=@ccnz" (old), [Index] "=r" (n) : [Mask] "r" (Mask)); *Index = n; return old; }
#define __buildbittest(x,y,z,a) unsigned char x(const y *Base, y Offset) { unsigned char old; __asm__ ("bt{" z " %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET : [old] __FLAGCONSTRAINT (old) : [Offset] a "r" (Offset), [Base] "rm" (*Base) : __FLAGCLOBBER2); return old; }
#define __buildbittestand(x,y,z,a,b) unsigned char x(y *Base, y Offset) { unsigned char old; __asm__ (z "{" b " %[Offset],%[Base] | %[Base],%[Offset]}" __FLAGSET : [old] __FLAGCONSTRAINT (old), [Base] "+rm" (*Base) : [Offset] a "r" (Offset) : __FLAGCLOBBER2); return old; }
#define __build_inport(x,y,z) y x(unsigned short Port) { y value; __asm__ __volatile__ ("in{" z " %w[port],%[value]| %[value],%w[port]}" : [value] "=a" (value) : [port] "Nd" (Port)); return value; }
#define __build_outport(x,y,z) void x(unsigned short Port, y Data) { __asm__ __volatile__ ("out{" z " %[data],%w[port]| %w[port],%[data]}" : : [data] "a" (Data), [port] "Nd" (Port)); }
#define __build_inportstring(x,y,z,a) void x(unsigned short Port, y *Buffer, unsigned __LONG32 Count) { __asm__ __volatile__ ("cld ; rep ins{" z "|" a "}" : "=D" (Buffer), "=c" (Count) : "d"(Port), "0"(Buffer), "1" (Count) : "memory"); }
#define __build_outportstring(x,y,z,a) void x(unsigned short Port, y *Buffer, unsigned __LONG32 Count) { __asm__ __volatile__ ("cld ; rep outs{" z "|" a "}" : "=S" (Buffer), "=c" (Count) : "d"(Port), "0"(Buffer), "1" (Count) : "memory"); }
#define __build_readcr(x,y,z) y x(void) { y value; __asm__ __volatile__ ("mov {%%cr" z ", %[value] | %[value], %%cr" z "}" : [value] "=q" (value)); return value; }
#define __build_writecr(x,y,z) void x(y Data) { __asm__ __volatile__ ("mov {%[Data], %%cr" z "|%%cr" z ", %[Data]}" : : [Data] "q" (Data) : "memory"); }
#define __buildmov(x,y,z) void x(y *Destination, y const *Source, size_t Count) { __asm__ __volatile__ ( "rep movs" z : "=D" (Destination), "=S" (Source), "=c" (Count) : "0" (Destination), "1" (Source), "2" (Count) : "memory"); }
#define _ReadWriteBarrier() __asm__ __volatile__ ("" ::: "memory")
#define _ReadBarrier _ReadWriteBarrier
#define _WriteBarrier _ReadWriteBarrier
#define __INTRINSIC_PROLOG(name) (!defined(__INTRINSIC_DEFINED_ ## name)) && ((!defined (__INTRINSIC_ONLYSPECIAL)) || (defined (__INTRINSIC_ONLYSPECIAL) && defined(__INTRINSIC_SPECIAL_ ## name)))
#define __INTRINSICS_USEINLINE __MINGW_INTRIN_INLINE
#undef __INTRINSIC_GROUP_WINNT
#define __INTRINSIC_ONLYSPECIAL 
#define __INTRINSIC_SPECIAL___faststorefence 
#define __INTRINSIC_SPECIAL___int2c 
#define __INTRINSIC_SPECIAL___stosb 
#define __INTRINSIC_SPECIAL___stosd 
#define __INTRINSIC_SPECIAL___stosq 
#define __INTRINSIC_SPECIAL___stosw 
#define __INTRINSIC_SPECIAL__InterlockedAnd 
#define __INTRINSIC_SPECIAL__InterlockedAnd64 
#define __INTRINSIC_SPECIAL__interlockedbittestandcomplement 
#define __INTRINSIC_SPECIAL__interlockedbittestandcomplement64 
#define __INTRINSIC_SPECIAL__interlockedbittestandreset 
#define __INTRINSIC_SPECIAL__interlockedbittestandreset64 
#define __INTRINSIC_SPECIAL__interlockedbittestandset 
#define __INTRINSIC_SPECIAL__interlockedbittestandset64 
#define __INTRINSIC_SPECIAL__InterlockedOr 
#define __INTRINSIC_SPECIAL__InterlockedOr64 
#define __INTRINSIC_SPECIAL__InterlockedXor 
#define __INTRINSIC_SPECIAL__InterlockedXor64 
#define __INTRINSIC_SPECIAL_InterlockedBitTestAndComplement 
#define __INTRINSIC_SPECIAL_InterlockedBitTestAndComplement64 
#define __INTRINSIC_SPECIAL_InterlockedBitTestAndReset 
#define __INTRINSIC_SPECIAL_InterlockedBitTestAndReset64 
#define __INTRINSIC_SPECIAL_InterlockedBitTestAndSet 
#define __INTRINSIC_SPECIAL_InterlockedBitTestAndSet64 
#define __INTRINSIC_SPECIAL__InterlockedIncrement16 
#define __INTRINSIC_SPECIAL__InterlockedDecrement16 
#define __INTRINSIC_SPECIAL__InterlockedCompareExchange16 
#define __INTRINSIC_SPECIAL__InterlockedIncrement 
#define __INTRINSIC_SPECIAL__InterlockedDecrement 
#define __INTRINSIC_SPECIAL__InterlockedAdd 
#define __INTRINSIC_SPECIAL__InterlockedExchange 
#define __INTRINSIC_SPECIAL__InterlockedExchangeAdd 
#define __INTRINSIC_SPECIAL__InterlockedCompareExchange 
#define __INTRINSIC_SPECIAL__InterlockedIncrement64 
#define __INTRINSIC_SPECIAL__InterlockedDecrement64 
#define __INTRINSIC_SPECIAL__InterlockedAdd64 
#define __INTRINSIC_SPECIAL__InterlockedExchangeAdd64 
#define __INTRINSIC_SPECIAL__InterlockedExchange64 
#define __INTRINSIC_SPECIAL__InterlockedCompareExchange64 
#define __INTRINSIC_SPECIAL__InterlockedExchangePointer 
#define __INTRINSIC_SPECIAL__InterlockedCompareExchangePointer 
#define __INTRINSIC_SPECIAL___readgsbyte 
#define __INTRINSIC_SPECIAL___readgsword 
#define __INTRINSIC_SPECIAL___readgsdword 
#define __INTRINSIC_SPECIAL___readgsqword 
#define __INTRINSIC_SPECIAL___writegsbyte 
#define __INTRINSIC_SPECIAL___writegsword 
#define __INTRINSIC_SPECIAL___writegsdword 
#define __INTRINSIC_SPECIAL___writegsqword 
#define __INTRINSIC_SPECIAL___readfsbyte 
#define __INTRINSIC_SPECIAL___readfsword 
#define __INTRINSIC_SPECIAL___readfsdword 
#define __INTRINSIC_SPECIAL___writefsbyte 
#define __INTRINSIC_SPECIAL___writefsword 
#define __INTRINSIC_SPECIAL___writefsdword 
#define __INTRINSIC_SPECIAL__BitScanForward 
#define __INTRINSIC_SPECIAL__BitScanForward64 
#define __INTRINSIC_SPECIAL__BitScanReverse 
#define __INTRINSIC_SPECIAL__BitScanReverse64 
#define __INTRINSIC_SPECIAL__bittest 
#define __INTRINSIC_SPECIAL__bittestandset 
#define __INTRINSIC_SPECIAL__bittestandreset 
#define __INTRINSIC_SPECIAL__bittestandcomplement 
#define __INTRINSIC_SPECIAL__bittest64 
#define __INTRINSIC_SPECIAL__bittestandset64 
#define __INTRINSIC_SPECIAL__bittestandreset64 
#define __INTRINSIC_SPECIAL__bittestandcomplement64 
#define __INTRINSIC_SPECIAL___movsb 
#define __INTRINSIC_SPECIAL___movsw 
#define __INTRINSIC_SPECIAL___movsd 
#define __INTRINSIC_SPECIAL___movsq 
#undef _lrotl
#undef _lrotr
long _InterlockedAnd(long volatile *, long);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
long _InterlockedAnd(volatile long *Destination, long Value) { return __sync_fetch_and_and(Destination, Value); }
#define __INTRINSIC_DEFINED__InterlockedAnd 
long _InterlockedOr(long volatile *, long);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
long _InterlockedOr(volatile long *Destination, long Value) { return __sync_fetch_and_or(Destination, Value); }
#define __INTRINSIC_DEFINED__InterlockedOr 
long _InterlockedXor(long volatile *, long);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
long _InterlockedXor(volatile long *Destination, long Value) { return __sync_fetch_and_xor(Destination, Value); }
#define __INTRINSIC_DEFINED__InterlockedXor 
short _InterlockedIncrement16(short volatile *Addend);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
short _InterlockedIncrement16(short volatile *Addend) {
    return __sync_add_and_fetch(Addend, 1);
}
#define __INTRINSIC_DEFINED__InterlockedIncrement16 
short _InterlockedDecrement16(short volatile *Addend);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
short _InterlockedDecrement16(short volatile *Addend) {
    return __sync_sub_and_fetch(Addend, 1);
}
#define __INTRINSIC_DEFINED__InterlockedDecrement16 
short _InterlockedCompareExchange16(short volatile *Destination, short ExChange, short Comperand);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
short _InterlockedCompareExchange16(short volatile *Destination, short ExChange, short Comperand) {
    return __sync_val_compare_and_swap(Destination, Comperand, ExChange);
}
#define __INTRINSIC_DEFINED__InterlockedCompareExchange16 
long _InterlockedExchangeAdd(long volatile *Addend, long Value);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
long _InterlockedExchangeAdd(long volatile *Addend, long Value) {
    return __sync_fetch_and_add(Addend, Value);
}
#define __INTRINSIC_DEFINED__InterlockedExchangeAdd 
long _InterlockedCompareExchange(long volatile *Destination, long ExChange, long Comperand);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
long _InterlockedCompareExchange(long volatile *Destination, long ExChange, long Comperand) {
    return __sync_val_compare_and_swap(Destination, Comperand, ExChange);
}
#define __INTRINSIC_DEFINED__InterlockedCompareExchange 
long _InterlockedIncrement(long volatile *Addend);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
long _InterlockedIncrement(long volatile *Addend) {
   return __sync_add_and_fetch(Addend, 1);
}
#define __INTRINSIC_DEFINED__InterlockedIncrement 
long _InterlockedDecrement(long volatile *Addend);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
long _InterlockedDecrement(long volatile *Addend) {
   return __sync_sub_and_fetch(Addend, 1);
}
#define __INTRINSIC_DEFINED__InterlockedDecrement 
long _InterlockedAdd(long volatile *Addend, long Value);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
long _InterlockedAdd(long volatile *Addend, long Value) {
    return __sync_add_and_fetch(Addend, Value);
}
#define __INTRINSIC_DEFINED__InterlockedAdd 
__extension__ long long _InterlockedAdd64(long long volatile *Addend, long long Value);
__extension__ extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
long long _InterlockedAdd64(long long volatile *Addend, long long Value) {
    return __sync_add_and_fetch(Addend, Value);
}
#define __INTRINSIC_DEFINED__InterlockedAdd64 
long _InterlockedExchange(long volatile *Target, long Value);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
long _InterlockedExchange(long volatile *Target, long Value) {
    return __sync_lock_test_and_set(Target, Value);
}
#define __INTRINSIC_DEFINED__InterlockedExchange 
__extension__ long long _InterlockedCompareExchange64(long long volatile *Destination, long long ExChange, long long Comperand);
__extension__ extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
long long _InterlockedCompareExchange64(long long volatile *Destination, long long ExChange, long long Comperand) {
    return __sync_val_compare_and_swap(Destination, Comperand, ExChange);
}
#define __INTRINSIC_DEFINED__InterlockedCompareExchange64 
void *_InterlockedCompareExchangePointer(void * volatile *Destination, void *ExChange, void *Comperand);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
void *_InterlockedCompareExchangePointer(void *volatile *Destination, void *ExChange, void *Comperand) {
    return __sync_val_compare_and_swap(Destination, Comperand, ExChange);
}
#define __INTRINSIC_DEFINED__InterlockedCompareExchangePointer 
void *_InterlockedExchangePointer(void *volatile *Target,void *Value);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
void *_InterlockedExchangePointer(void *volatile *Target,void *Value) {
    return __sync_lock_test_and_set(Target, Value);
}
#define __INTRINSIC_DEFINED__InterlockedExchangePointer 
void __int2c(void);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
void __int2c(void) {
    __asm__ __volatile__("int {$}" "0x2c" :);
}
#define __INTRINSIC_DEFINED___int2c 
void __stosb(unsigned char *, unsigned char, size_t);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
void __stosb(unsigned char *Dest, unsigned char Data, size_t Count) { __asm__ __volatile__ ("rep stos{" "b|b" "}" : "+D" (Dest), "+c" (Count) : [Data] "a" (Data) : "memory"); }
#define __INTRINSIC_DEFINED___stosb 
void __stosw(unsigned short *, unsigned short, size_t);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
void __stosw(unsigned short *Dest, unsigned short Data, size_t Count) { __asm__ __volatile__ ("rep stos{" "w|w" "}" : "+D" (Dest), "+c" (Count) : [Data] "a" (Data) : "memory"); }
#define __INTRINSIC_DEFINED___stosw 
void __stosd(unsigned long *, unsigned long, size_t);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
void __stosd(unsigned long *Dest, unsigned long Data, size_t Count) { __asm__ __volatile__ ("rep stos{" "l|d" "}" : "+D" (Dest), "+c" (Count) : [Data] "a" (Data) : "memory"); }
#define __INTRINSIC_DEFINED___stosd 
unsigned char _interlockedbittestandset(long volatile *a, long b);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned char _interlockedbittestandset(long volatile *Base, long Offset) { unsigned char old; __asm__ __volatile__ ("lock bts{l %[Offset],%[Base] | %[Base],%[Offset]}" : [old] "=@ccc" (old), [Base] "+m" (*Base) : [Offset] "I" "r" (Offset) : "memory" ); return old; }
#define __INTRINSIC_DEFINED__interlockedbittestandset 
unsigned char _interlockedbittestandreset(long volatile *a, long b);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned char _interlockedbittestandreset(long volatile *Base, long Offset) { unsigned char old; __asm__ __volatile__ ("lock btr{l %[Offset],%[Base] | %[Base],%[Offset]}" : [old] "=@ccc" (old), [Base] "+m" (*Base) : [Offset] "I" "r" (Offset) : "memory" ); return old; }
#define __INTRINSIC_DEFINED__interlockedbittestandreset 
unsigned char _interlockedbittestandcomplement(long volatile *a, long b);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned char _interlockedbittestandcomplement(long volatile *Base, long Offset) { unsigned char old; __asm__ __volatile__ ("lock btc{l %[Offset],%[Base] | %[Base],%[Offset]}" : [old] "=@ccc" (old), [Base] "+m" (*Base) : [Offset] "I" "r" (Offset) : "memory" ); return old; }
#define __INTRINSIC_DEFINED__interlockedbittestandcomplement 
unsigned char InterlockedBitTestAndSet(volatile long *a, long b);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned char InterlockedBitTestAndSet(long volatile *Base, long Offset) { unsigned char old; __asm__ __volatile__ ("lock bts{l %[Offset],%[Base] | %[Base],%[Offset]}" : [old] "=@ccc" (old), [Base] "+m" (*Base) : [Offset] "I" "r" (Offset) : "memory" ); return old; }
#define __INTRINSIC_DEFINED_InterlockedBitTestAndSet 
unsigned char InterlockedBitTestAndReset(volatile long *a, long b);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned char InterlockedBitTestAndReset(long volatile *Base, long Offset) { unsigned char old; __asm__ __volatile__ ("lock btr{l %[Offset],%[Base] | %[Base],%[Offset]}" : [old] "=@ccc" (old), [Base] "+m" (*Base) : [Offset] "I" "r" (Offset) : "memory" ); return old; }
#define __INTRINSIC_DEFINED_InterlockedBitTestAndReset 
unsigned char InterlockedBitTestAndComplement(volatile long *a, long b);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned char InterlockedBitTestAndComplement(long volatile *Base, long Offset) { unsigned char old; __asm__ __volatile__ ("lock btc{l %[Offset],%[Base] | %[Base],%[Offset]}" : [old] "=@ccc" (old), [Base] "+m" (*Base) : [Offset] "I" "r" (Offset) : "memory" ); return old; }
#define __INTRINSIC_DEFINED_InterlockedBitTestAndComplement 
unsigned char _BitScanForward(unsigned long *Index, unsigned long Mask);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned char _BitScanForward(unsigned long *Index, unsigned long Mask) { unsigned long n; unsigned char old; __asm__ ("bsf{l %[Mask],%[Index] | %[Index],%[Mask]}" : "=@ccnz" (old), [Index] "=r" (n) : [Mask] "r" (Mask)); *Index = n; return old; }
#define __INTRINSIC_DEFINED__BitScanForward 
unsigned char _BitScanReverse(unsigned long *Index, unsigned long Mask);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned char _BitScanReverse(unsigned long *Index, unsigned long Mask) { unsigned long n; unsigned char old; __asm__ ("bsr{l %[Mask],%[Index] | %[Index],%[Mask]}" : "=@ccnz" (old), [Index] "=r" (n) : [Mask] "r" (Mask)); *Index = n; return old; }
#define __INTRINSIC_DEFINED__BitScanReverse 
unsigned char _bittest(long const *a, long b);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned char _bittest(const long *Base, long Offset) { unsigned char old; __asm__ ("bt{" "l" " %[Offset],%[Base] | %[Base],%[Offset]}" : [old] "=@ccc" (old) : [Offset] "I" "r" (Offset), [Base] "rm" (*Base) : ); return old; }
#define __INTRINSIC_DEFINED__bittest 
unsigned char _bittestandset(long *a, long b);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned char _bittestandset(long *Base, long Offset) { unsigned char old; __asm__ ("bts" "{" "l" " %[Offset],%[Base] | %[Base],%[Offset]}" : [old] "=@ccc" (old), [Base] "+rm" (*Base) : [Offset] "I" "r" (Offset) : ); return old; }
#define __INTRINSIC_DEFINED__bittestandset 
unsigned char _bittestandreset(long *a, long b);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned char _bittestandreset(long *Base, long Offset) { unsigned char old; __asm__ ("btr" "{" "l" " %[Offset],%[Base] | %[Base],%[Offset]}" : [old] "=@ccc" (old), [Base] "+rm" (*Base) : [Offset] "I" "r" (Offset) : ); return old; }
#define __INTRINSIC_DEFINED__bittestandreset 
unsigned char _bittestandcomplement(long *a, long b);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned char _bittestandcomplement(long *Base, long Offset) { unsigned char old; __asm__ ("btc" "{" "l" " %[Offset],%[Base] | %[Base],%[Offset]}" : [old] "=@ccc" (old), [Base] "+rm" (*Base) : [Offset] "I" "r" (Offset) : ); return old; }
#define __INTRINSIC_DEFINED__bittestandcomplement 
void __movsb(unsigned char *Destination, unsigned char const *Source, size_t Count);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
void __movsb(unsigned char *Destination, unsigned char const *Source, size_t Count) { __asm__ __volatile__ ( "rep movs" "b" : "=D" (Destination), "=S" (Source), "=c" (Count) : "0" (Destination), "1" (Source), "2" (Count) : "memory"); }
#define __INTRINSIC_DEFINED___movsb 
void __movsw(unsigned short *Dest, unsigned short const *Source, size_t Count);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
void __movsw(unsigned short *Destination, unsigned short const *Source, size_t Count) { __asm__ __volatile__ ( "rep movs" "w" : "=D" (Destination), "=S" (Source), "=c" (Count) : "0" (Destination), "1" (Source), "2" (Count) : "memory"); }
#define __INTRINSIC_DEFINED___movsw 
void __movsd(unsigned long *Dest, unsigned long const *Source, size_t Count);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
void __movsd(unsigned long *Destination, unsigned long const *Source, size_t Count) { __asm__ __volatile__ ( "rep movs" "d" : "=D" (Destination), "=S" (Source), "=c" (Count) : "0" (Destination), "1" (Source), "2" (Count) : "memory"); }
#define __INTRINSIC_DEFINED___movsd 
unsigned char __readfsbyte(unsigned long Offset);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned char __readfsbyte(unsigned long Offset) { unsigned char ret; __asm__ ("mov{" "b" " %%" "fs" ":%[offset], %[ret] | %[ret], %%" "fs" ":%[offset]}" : [ret] "=r" (ret) : [offset] "m" ((*(unsigned char *) (size_t) Offset))); return ret; }
#define __INTRINSIC_DEFINED___readfsbyte 
unsigned short __readfsword(unsigned long Offset);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned short __readfsword(unsigned long Offset) { unsigned short ret; __asm__ ("mov{" "w" " %%" "fs" ":%[offset], %[ret] | %[ret], %%" "fs" ":%[offset]}" : [ret] "=r" (ret) : [offset] "m" ((*(unsigned short *) (size_t) Offset))); return ret; }
#define __INTRINSIC_DEFINED___readfsword 
unsigned long __readfsdword(unsigned long Offset);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
unsigned long __readfsdword(unsigned long Offset) { unsigned long ret; __asm__ ("mov{" "l" " %%" "fs" ":%[offset], %[ret] | %[ret], %%" "fs" ":%[offset]}" : [ret] "=r" (ret) : [offset] "m" ((*(unsigned long *) (size_t) Offset))); return ret; }
#define __INTRINSIC_DEFINED___readfsdword 
void __writefsbyte(unsigned long Offset,unsigned char Data);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
void __writefsbyte(unsigned long Offset, unsigned char Data) { __asm__ ("mov{" "b" " %[Data], %%" "fs" ":%[offset] | %%" "fs" ":%[offset], %[Data]}" : [offset] "=m" ((*(unsigned char *) (size_t) Offset)) : [Data] "ri" (Data)); }
#define __INTRINSIC_DEFINED___writefsbyte 
void __writefsword(unsigned long Offset,unsigned short Data);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
void __writefsword(unsigned long Offset, unsigned short Data) { __asm__ ("mov{" "w" " %[Data], %%" "fs" ":%[offset] | %%" "fs" ":%[offset], %[Data]}" : [offset] "=m" ((*(unsigned short *) (size_t) Offset)) : [Data] "ri" (Data)); }
#define __INTRINSIC_DEFINED___writefsword 
void __writefsdword(unsigned long Offset,unsigned long Data);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
void __writefsdword(unsigned long Offset, unsigned long Data) { __asm__ ("mov{" "l" " %[Data], %%" "fs" ":%[offset] | %%" "fs" ":%[offset], %[Data]}" : [offset] "=m" ((*(unsigned long *) (size_t) Offset)) : [Data] "ri" (Data)); }
#define __INTRINSIC_DEFINED___writefsdword 
#undef __INTRINSIC_ONLYSPECIAL
#undef __INTRINSIC_PROLOG
#undef __INTRINSIC_EPILOG
#undef __INTRINSICS_USEINLINE
#undef __FLAGCONSTRAINT
#undef __FLAGSET
#undef __FLAGCLOBBER1
#undef __FLAGCLOBBER2
       
#undef __has_builtin
#define RESTRICTED_POINTER 
#undef UNALIGNED
#undef UNALIGNED64
#undef ALIGNMENT_MACHINE
#define UNALIGNED 
#define UNALIGNED64 
#define MAX_NATURAL_ALIGNMENT sizeof(DWORD)
#define MEMORY_ALLOCATION_ALIGNMENT 8
#define TYPE_ALIGNMENT(t) FIELD_OFFSET(struct { char x; t test; }, test)
#define PROBE_ALIGNMENT(_s) TYPE_ALIGNMENT (DWORD)
#define C_ASSERT(e) extern void __C_ASSERT__(int [(e)?1:-1])
#define _BASETSD_H_ 
typedef unsigned long POINTER_64_INT;
#define POINTER_32 
#define POINTER_64 
#define FIRMWARE_PTR 
#define POINTER_SIGNED 
#define POINTER_UNSIGNED 
#define SPOINTER_32 POINTER_SIGNED POINTER_32
#define UPOINTER_32 POINTER_UNSIGNED POINTER_32
  typedef signed char INT8,*PINT8;
  typedef signed short INT16,*PINT16;
  typedef signed int INT32,*PINT32;
  __extension__ typedef signed long long INT64,*PINT64;
  typedef unsigned char UINT8,*PUINT8;
  typedef unsigned short UINT16,*PUINT16;
  typedef unsigned int UINT32,*PUINT32;
  __extension__ typedef unsigned long long UINT64,*PUINT64;
  typedef signed int LONG32,*PLONG32;
  typedef unsigned int ULONG32,*PULONG32;
  typedef unsigned int DWORD32,*PDWORD32;
  typedef int INT_PTR,*PINT_PTR;
  typedef unsigned int UINT_PTR,*PUINT_PTR;
  typedef long LONG_PTR,*PLONG_PTR;
  typedef unsigned long ULONG_PTR,*PULONG_PTR;
#define __int3264 int
#define ADDRESS_TAG_BIT __MSABI_LONG (0x80000000U)
  typedef unsigned short UHALF_PTR,*PUHALF_PTR;
  typedef short HALF_PTR,*PHALF_PTR;
  typedef long SHANDLE_PTR;
  typedef unsigned long HANDLE_PTR;
#define HandleToULong(h) ((ULONG) (ULONG_PTR) (h))
#define HandleToLong(h) ((LONG) (LONG_PTR) (h))
#define ULongToHandle(ul) ((HANDLE) (ULONG_PTR) (ul))
#define LongToHandle(h) ((HANDLE) (LONG_PTR) (h))
#define PtrToUlong(p) ((ULONG) (ULONG_PTR) (p))
#define PtrToLong(p) ((LONG) (LONG_PTR) (p))
#define PtrToUint(p) ((UINT) (UINT_PTR) (p))
#define PtrToInt(p) ((INT) (INT_PTR) (p))
#define PtrToUshort(p) ((unsigned short) (ULONG_PTR) (p))
#define PtrToShort(p) ((short) (LONG_PTR) (p))
#define IntToPtr(i) ((VOID *) (INT_PTR) ((int)i))
#define UIntToPtr(ui) ((VOID *) (UINT_PTR) ((unsigned int)ui))
#define LongToPtr(l) ((VOID *) (LONG_PTR) ((__LONG32) l))
#define ULongToPtr(ul) ((VOID *) (ULONG_PTR) ((unsigned __LONG32) ul))
  static __inline void * PtrToPtr64 (const void *p) { return ((void *) (ULONG_PTR) p); }
  static __inline void *Ptr64ToPtr (const void * p) { return ((void *) (ULONG_PTR) p); }
  static __inline void * HandleToHandle64 (const void *h) { return ((void *) (LONG_PTR) h); }
  static __inline void *Handle64ToHandle (const void * h) { return ((void *) (ULONG_PTR) h); }
#define Ptr32ToPtr(p) ((void *) p)
#define Handle32ToHandle(h) (Ptr32ToPtr (h))
#define PtrToPtr32(p) ((void *POINTER_32) p)
#define HandleToHandle32(h) (PtrToPtr32 (h))
#define HandleToUlong(h) HandleToULong (h)
#define UlongToHandle(ul) ULongToHandle (ul)
#define UlongToPtr(ul) ULongToPtr (ul)
#define UintToPtr(ui) UIntToPtr (ui)
#define MAXUINT_PTR (~ ((UINT_PTR)0))
#define MAXINT_PTR ((INT_PTR) (MAXUINT_PTR >> 1))
#define MININT_PTR (~MAXINT_PTR)
#define MAXULONG_PTR (~ ((ULONG_PTR)0))
#define MAXLONG_PTR ((LONG_PTR) (MAXULONG_PTR >> 1))
#define MINLONG_PTR (~MAXLONG_PTR)
#define MAXUHALF_PTR ((UHALF_PTR)~0)
#define MAXHALF_PTR ((HALF_PTR) (MAXUHALF_PTR >> 1))
#define MINHALF_PTR (~MAXHALF_PTR)
  __extension__ typedef ULONG_PTR SIZE_T,*PSIZE_T;
  __extension__ typedef LONG_PTR SSIZE_T,*PSSIZE_T;
#define MAXUINT8 ((UINT8)~ ((UINT8)0))
#define MAXINT8 ((INT8) (MAXUINT8 >> 1))
#define MININT8 ((INT8)~MAXINT8)
#define MAXUINT16 ((UINT16)~ ((UINT16)0))
#define MAXINT16 ((INT16) (MAXUINT16 >> 1))
#define MININT16 ((INT16)~MAXINT16)
#define MAXUINT32 ((UINT32)~ ((UINT32)0))
#define MAXINT32 ((INT32) (MAXUINT32 >> 1))
#define MININT32 ((INT32)~MAXINT32)
#define MAXUINT64 ((UINT64)~ ((UINT64)0))
#define MAXINT64 ((INT64) (MAXUINT64 >> 1))
#define MININT64 ((INT64)~MAXINT64)
#define MAXULONG32 ((ULONG32)~ ((ULONG32)0))
#define MAXLONG32 ((LONG32) (MAXULONG32 >> 1))
#define MINLONG32 ((LONG32)~MAXLONG32)
#define MAXULONG64 ((ULONG64)~ ((ULONG64)0))
#define MAXLONG64 ((LONG64) (MAXULONG64 >> 1))
#define MINLONG64 ((LONG64)~MAXLONG64)
#define MAXULONGLONG ((ULONGLONG)~ ((ULONGLONG)0))
#define MINLONGLONG ((LONGLONG)~MAXLONGLONG)
#define MAXSIZE_T ((SIZE_T)~ ((SIZE_T)0))
#define MAXSSIZE_T ((SSIZE_T) (MAXSIZE_T >> 1))
#define MINSSIZE_T ((SSIZE_T)~MAXSSIZE_T)
#define MAXUINT ((UINT)~ ((UINT)0))
#define MAXINT ((INT) (MAXUINT >> 1))
#define MININT ((INT)~MAXINT)
#define MAXDWORD32 ((DWORD32)~ ((DWORD32)0))
#define MAXDWORD64 ((DWORD64)~ ((DWORD64)0))
  __extension__ typedef ULONG_PTR DWORD_PTR,*PDWORD_PTR;
  __extension__ typedef long long LONG64,*PLONG64;
  __extension__ typedef unsigned long long ULONG64,*PULONG64;
  __extension__ typedef unsigned long long DWORD64,*PDWORD64;
  __extension__ typedef ULONG_PTR KAFFINITY;
  __extension__ typedef KAFFINITY *PKAFFINITY;
#define DECLSPEC_IMPORT __declspec (dllimport)
#define DECLSPEC_NORETURN __declspec (noreturn)
#define DECLSPEC_NOTHROW __declspec (nothrow)
#define DECLSPEC_ALIGN(x) __attribute__ ((__aligned__ (x)))
#define SYSTEM_CACHE_ALIGNMENT_SIZE 64
#define DECLSPEC_CACHEALIGN DECLSPEC_ALIGN(SYSTEM_CACHE_ALIGNMENT_SIZE)
#define DECLSPEC_UUID(x) 
#define DECLSPEC_NOVTABLE 
#define DECLSPEC_SELECTANY __declspec(selectany)
#define NOP_FUNCTION (void)0
#define DECLSPEC_NOINLINE __attribute__((noinline))
#define FORCEINLINE __forceinline
#define DECLSPEC_DEPRECATED __declspec(deprecated)
#define DEPRECATE_SUPPORTED 
#define DECLSPEC_DEPRECATED_DDK 
#define PRAGMA_DEPRECATED_DDK 0
  typedef void *PVOID;
  typedef void *PVOID64;
#define FASTCALL __fastcall
#define NTAPI __stdcall
#define NTAPI_INLINE NTAPI
#define NTSYSAPI DECLSPEC_IMPORT
#define NTSYSCALLAPI DECLSPEC_IMPORT
#define VOID void
  typedef char CHAR;
  typedef short SHORT;
  typedef long LONG;
  typedef int INT;
#define __WCHAR_DEFINED 
  typedef wchar_t WCHAR;
  typedef WCHAR *PWCHAR,*LPWCH,*PWCH;
  typedef const WCHAR *LPCWCH,*PCWCH;
  typedef WCHAR *NWPSTR,*LPWSTR,*PWSTR;
  typedef PWSTR *PZPWSTR;
  typedef const PWSTR *PCZPWSTR;
  typedef WCHAR *LPUWSTR,*PUWSTR;
  typedef const WCHAR *LPCWSTR,*PCWSTR;
  typedef PCWSTR *PZPCWSTR;
  typedef const WCHAR *LPCUWSTR,*PCUWSTR;
  typedef WCHAR *PZZWSTR;
  typedef const WCHAR *PCZZWSTR;
  typedef WCHAR *PUZZWSTR;
  typedef const WCHAR *PCUZZWSTR;
  typedef WCHAR *PNZWCH;
  typedef const WCHAR *PCNZWCH;
  typedef WCHAR *PUNZWCH;
  typedef const WCHAR *PCUNZWCH;
  typedef const WCHAR *LPCWCHAR,*PCWCHAR;
  typedef const WCHAR *LPCUWCHAR,*PCUWCHAR;
  typedef unsigned long UCSCHAR;
#define UCSCHAR_INVALID_CHARACTER (0xffffffff)
#define MIN_UCSCHAR (0)
#define MAX_UCSCHAR (0x0010ffff)
  typedef UCSCHAR *PUCSCHAR;
  typedef const UCSCHAR *PCUCSCHAR;
  typedef UCSCHAR *PUCSSTR;
  typedef UCSCHAR *PUUCSSTR;
  typedef const UCSCHAR *PCUCSSTR;
  typedef const UCSCHAR *PCUUCSSTR;
  typedef UCSCHAR *PUUCSCHAR;
  typedef const UCSCHAR *PCUUCSCHAR;
  typedef CHAR *PCHAR,*LPCH,*PCH;
  typedef const CHAR *LPCCH,*PCCH;
  typedef CHAR *NPSTR,*LPSTR,*PSTR;
  typedef PSTR *PZPSTR;
  typedef const PSTR *PCZPSTR;
  typedef const CHAR *LPCSTR,*PCSTR;
  typedef PCSTR *PZPCSTR;
  typedef CHAR *PZZSTR;
  typedef const CHAR *PCZZSTR;
  typedef CHAR *PNZCH;
  typedef const CHAR *PCNZCH;
#define _TCHAR_DEFINED 
  typedef char TCHAR, *PTCHAR;
  typedef unsigned char TBYTE, *PTBYTE;
  typedef LPSTR LPTCH,PTCH;
  typedef LPCCH LPCTCH,PCTCH;
  typedef LPSTR PTSTR,LPTSTR,PUTSTR,LPUTSTR;
  typedef LPCSTR PCTSTR,LPCTSTR,PCUTSTR,LPCUTSTR;
  typedef PZZSTR PZZTSTR, PUZZTSTR;
  typedef PCZZSTR PCZZTSTR, PCUZZTSTR;
  typedef PZPSTR PZPTSTR;
  typedef PNZCH PNZTCH, PUNZTCH;
  typedef PCNZCH PCNZTCH, PCUNZTCH;
#define __TEXT(quote) quote
#define TEXT(quote) __TEXT(quote)
  typedef SHORT *PSHORT;
  typedef LONG *PLONG;
#define ___GROUP_AFFINITY_DEFINED 
typedef struct _GROUP_AFFINITY {
  KAFFINITY Mask;
  WORD Group;
  WORD Reserved[3];
} GROUP_AFFINITY, *PGROUP_AFFINITY;
  typedef void *HANDLE;
#define DECLARE_HANDLE(name) struct name ##__ { int unused; }; typedef struct name ##__ *name
  typedef HANDLE *PHANDLE;
  typedef BYTE FCHAR;
  typedef WORD FSHORT;
  typedef DWORD FLONG;
#define _HRESULT_DEFINED 
  typedef LONG HRESULT;
#define EXTERN_C extern
#define STDMETHODCALLTYPE WINAPI
#define STDMETHODVCALLTYPE __cdecl
#define STDAPICALLTYPE WINAPI
#define STDAPIVCALLTYPE __cdecl
#define STDAPI EXTERN_C HRESULT WINAPI
#define STDAPI_(type) EXTERN_C type WINAPI
#define STDMETHODIMP HRESULT WINAPI
#define STDMETHODIMP_(type) type WINAPI
#define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE
#define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE
#define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE
#define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE
#define IFACEMETHODIMP STDMETHODIMP
#define IFACEMETHODIMP_(type) STDMETHODIMP_(type)
#define IFACEMETHODIMPV STDMETHODIMPV
#define IFACEMETHODIMPV_(type) STDMETHODIMPV_(type)
  typedef char CCHAR;
#define _LCID_DEFINED 
typedef DWORD LCID;
  typedef PDWORD PLCID;
#define _LANGID_DEFINED 
  typedef WORD LANGID;
#define __COMPARTMENT_ID_DEFINED__ 
typedef enum {
  UNSPECIFIED_COMPARTMENT_ID = 0,
  DEFAULT_COMPARTMENT_ID
} COMPARTMENT_ID,*PCOMPARTMENT_ID;
#define APPLICATION_ERROR_MASK 0x20000000
#define ERROR_SEVERITY_SUCCESS 0x00000000
#define ERROR_SEVERITY_INFORMATIONAL 0x40000000
#define ERROR_SEVERITY_WARNING 0x80000000
#define ERROR_SEVERITY_ERROR 0xC0000000
    typedef struct _FLOAT128 {
      __extension__ long long LowPart;
      __extension__ long long HighPart;
  } FLOAT128;
  typedef FLOAT128 *PFLOAT128;
#define _ULONGLONG_ 
  __extension__ typedef long long LONGLONG;
  __extension__ typedef unsigned long long ULONGLONG;
#define MAXLONGLONG (0x7fffffffffffffffll)
  typedef LONGLONG *PLONGLONG;
  typedef ULONGLONG *PULONGLONG;
  typedef LONGLONG USN;
#define _LARGE_INTEGER_DEFINED 
  typedef union _LARGE_INTEGER {
    __extension__ struct {
      DWORD LowPart;
      LONG HighPart;
    } ;
    struct {
      DWORD LowPart;
      LONG HighPart;
    } u;
    LONGLONG QuadPart;
  } LARGE_INTEGER;
  typedef LARGE_INTEGER *PLARGE_INTEGER;
  typedef union _ULARGE_INTEGER {
    __extension__ struct {
      DWORD LowPart;
      DWORD HighPart;
    } ;
    struct {
      DWORD LowPart;
      DWORD HighPart;
    } u;
    ULONGLONG QuadPart;
  } ULARGE_INTEGER;
  typedef ULARGE_INTEGER *PULARGE_INTEGER;
  typedef struct _LUID {
    DWORD LowPart;
    LONG HighPart;
  } LUID,*PLUID;
#define _DWORDLONG_ 
  typedef ULONGLONG DWORDLONG;
  typedef DWORDLONG *PDWORDLONG;
#define Int32x32To64(a,b) (((LONGLONG) ((LONG) (a))) * ((LONGLONG) ((LONG) (b))))
#define UInt32x32To64(a,b) (((ULONGLONG) ((unsigned int) (a))) *((ULONGLONG) ((unsigned int) (b))))
#define Int64ShllMod32(a,b) (((ULONGLONG) (a)) << (b))
#define Int64ShraMod32(a,b) (((LONGLONG) (a)) >> (b))
#define Int64ShrlMod32(a,b) (((ULONGLONG) (a)) >> (b))
#define RotateLeft32 _rotl
#define RotateLeft64 _rotl64
#define RotateRight32 _rotr
#define RotateRight64 _rotr64
       
       
#undef _rotl
#undef _rotr
    unsigned int __attribute__((__cdecl__)) _rotl(unsigned int Value,int Shift);
    unsigned int __attribute__((__cdecl__)) _rotr(unsigned int Value,int Shift);
       
       
       
       
#undef _rotl64
#undef _rotr64
    __extension__ unsigned long long __attribute__((__cdecl__)) _rotl64(unsigned long long Value,int Shift);
    __extension__ unsigned long long __attribute__((__cdecl__)) _rotr64(unsigned long long Value,int Shift);
       
       
#define ANSI_NULL ((CHAR)0)
#define UNICODE_NULL ((WCHAR)0)
#define UNICODE_STRING_MAX_BYTES ((WORD) 65534)
#define UNICODE_STRING_MAX_CHARS (32767)
#define _BOOLEAN_ 
  typedef BYTE BOOLEAN;
  typedef BOOLEAN *PBOOLEAN;
#define _LIST_ENTRY_DEFINED 
  typedef struct _LIST_ENTRY {
    struct _LIST_ENTRY *Flink;
    struct _LIST_ENTRY *Blink;
  } LIST_ENTRY,*PLIST_ENTRY,* PRLIST_ENTRY;
  typedef struct _SINGLE_LIST_ENTRY {
    struct _SINGLE_LIST_ENTRY *Next;
  } SINGLE_LIST_ENTRY,*PSINGLE_LIST_ENTRY;
  typedef struct LIST_ENTRY32 {
    DWORD Flink;
    DWORD Blink;
  } LIST_ENTRY32;
  typedef LIST_ENTRY32 *PLIST_ENTRY32;
  typedef struct LIST_ENTRY64 {
    ULONGLONG Flink;
    ULONGLONG Blink;
  } LIST_ENTRY64;
  typedef LIST_ENTRY64 *PLIST_ENTRY64;
#define GUID_DEFINED 
typedef struct _GUID {
  unsigned long Data1;
  unsigned short Data2;
  unsigned short Data3;
  unsigned char Data4[8];
} GUID;
#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name
#define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46)
#define _GUIDDEF_H_ 
#define __LPGUID_DEFINED__ 
typedef GUID *LPGUID;
#define __LPCGUID_DEFINED__ 
typedef const GUID *LPCGUID;
#define __IID_DEFINED__ 
typedef GUID IID;
typedef IID *LPIID;
#define IID_NULL GUID_NULL
#define IsEqualIID(riid1,riid2) IsEqualGUID (riid1, riid2)
#define CLSID_DEFINED 
typedef GUID CLSID;
typedef CLSID *LPCLSID;
#define CLSID_NULL GUID_NULL
#define IsEqualCLSID(rclsid1,rclsid2) IsEqualGUID (rclsid1, rclsid2)
typedef GUID FMTID;
typedef FMTID *LPFMTID;
#define FMTID_NULL GUID_NULL
#define IsEqualFMTID(rfmtid1,rfmtid2) IsEqualGUID (rfmtid1, rfmtid2)
#define __MIDL_CONST const
#define _REFGUID_DEFINED 
#define REFGUID const GUID *__MIDL_CONST
#define _REFIID_DEFINED 
#define REFIID const IID *__MIDL_CONST
#define _REFCLSID_DEFINED 
#define REFCLSID const IID *__MIDL_CONST
#define _REFFMTID_DEFINED 
#define REFFMTID const IID *__MIDL_CONST
#define _SYS_GUID_OPERATORS_ 
#define InlineIsEqualGUID(rguid1,rguid2) ((&(rguid1)->Data1)[0] == (&(rguid2)->Data1)[0] && (&(rguid1)->Data1)[1] == (&(rguid2)->Data1)[1] && (&(rguid1)->Data1)[2] == (&(rguid2)->Data1)[2] && (&(rguid1)->Data1)[3] == (&(rguid2)->Data1)[3])
#define IsEqualGUID(rguid1,rguid2) (!memcmp (rguid1, rguid2, sizeof (GUID)))
#define IsEqualIID(riid1,riid2) IsEqualGUID (riid1, riid2)
#define IsEqualCLSID(rclsid1,rclsid2) IsEqualGUID (rclsid1, rclsid2)
#define _SYS_GUID_OPERATOR_EQ_ 
#define __OBJECTID_DEFINED 
  typedef struct _OBJECTID {
    GUID Lineage;
    DWORD Uniquifier;
  } OBJECTID;
#define MINCHAR 0x80
#define MAXCHAR 0x7f
#define MINSHORT 0x8000
#define MAXSHORT 0x7fff
#define MINLONG 0x80000000
#define MAXLONG 0x7fffffff
#define MAXBYTE 0xff
#define MAXWORD 0xffff
#define MAXDWORD 0xffffffff
#define FIELD_OFFSET(Type,Field) ((LONG) __builtin_offsetof(Type, Field))
#define RTL_FIELD_SIZE(type,field) (sizeof(((type *)0)->field))
#define RTL_SIZEOF_THROUGH_FIELD(type,field) (FIELD_OFFSET(type,field) + RTL_FIELD_SIZE(type,field))
#define RTL_CONTAINS_FIELD(Struct,Size,Field) ((((PCHAR)(&(Struct)->Field)) + sizeof((Struct)->Field)) <= (((PCHAR)(Struct))+(Size)))
#define RTL_NUMBER_OF_V1(A) (sizeof(A)/sizeof((A)[0]))
#define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A)
#define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V1(A)
#define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A)
#define _ARRAYSIZE(A) RTL_NUMBER_OF_V1(A)
#define RTL_FIELD_TYPE(type,field) (((type*)0)->field)
#define RTL_NUMBER_OF_FIELD(type,field) (RTL_NUMBER_OF(RTL_FIELD_TYPE(type,field)))
#define RTL_PADDING_BETWEEN_FIELDS(T,F1,F2) ((FIELD_OFFSET(T,F2) > FIELD_OFFSET(T,F1)) ? (FIELD_OFFSET(T,F2) - FIELD_OFFSET(T,F1) - RTL_FIELD_SIZE(T,F1)) : (FIELD_OFFSET(T,F1) - FIELD_OFFSET(T,F2) - RTL_FIELD_SIZE(T,F2)))
#define RTL_CONST_CAST(type) (type)
#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) 
#define COMPILETIME_OR_2FLAGS(a,b) ((UINT) (a) | (UINT) (b))
#define COMPILETIME_OR_3FLAGS(a,b,c) ((UINT) (a) | (UINT) (b) | (UINT) (c))
#define COMPILETIME_OR_4FLAGS(a,b,c,d) ((UINT) (a) | (UINT) (b) | (UINT) (c) | (UINT) (d))
#define COMPILETIME_OR_5FLAGS(a,b,c,d,e) ((UINT) (a) | (UINT) (b) | (UINT) (c) | (UINT) (d) | (UINT) (e))
#define RTL_BITS_OF(sizeOfArg) (sizeof(sizeOfArg) * 8)
#define RTL_BITS_OF_FIELD(type,field) (RTL_BITS_OF(RTL_FIELD_TYPE(type,field)))
#define CONTAINING_RECORD(address,type,field) ((type *)((PCHAR)(address) - (ULONG_PTR)(&((type *)0)->field)))
    typedef int __attribute__((__stdcall__)) EXCEPTION_ROUTINE (struct _EXCEPTION_RECORD *ExceptionRecord, PVOID EstablisherFrame, struct _CONTEXT *ContextRecord, PVOID DispatcherContext);
#define __PEXCEPTION_ROUTINE_DEFINED 
    typedef EXCEPTION_ROUTINE *PEXCEPTION_ROUTINE;
#define VER_WORKSTATION_NT 0x40000000
#define VER_SERVER_NT 0x80000000
#define VER_SUITE_SMALLBUSINESS 0x00000001
#define VER_SUITE_ENTERPRISE 0x00000002
#define VER_SUITE_BACKOFFICE 0x00000004
#define VER_SUITE_COMMUNICATIONS 0x00000008
#define VER_SUITE_TERMINAL 0x00000010
#define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020
#define VER_SUITE_EMBEDDEDNT 0x00000040
#define VER_SUITE_DATACENTER 0x00000080
#define VER_SUITE_SINGLEUSERTS 0x00000100
#define VER_SUITE_PERSONAL 0x00000200
#define VER_SUITE_BLADE 0x00000400
#define VER_SUITE_EMBEDDED_RESTRICTED 0x00000800
#define VER_SUITE_SECURITY_APPLIANCE 0x00001000
#define VER_SUITE_STORAGE_SERVER 0x00002000
#define VER_SUITE_COMPUTE_SERVER 0x00004000
#define VER_SUITE_WH_SERVER 0x00008000
#define PRODUCT_UNDEFINED 0x0
#define PRODUCT_ULTIMATE 0x1
#define PRODUCT_HOME_BASIC 0x2
#define PRODUCT_HOME_PREMIUM 0x3
#define PRODUCT_ENTERPRISE 0x4
#define PRODUCT_HOME_BASIC_N 0x5
#define PRODUCT_BUSINESS 0x6
#define PRODUCT_STANDARD_SERVER 0x7
#define PRODUCT_DATACENTER_SERVER 0x8
#define PRODUCT_SMALLBUSINESS_SERVER 0x9
#define PRODUCT_ENTERPRISE_SERVER 0xa
#define PRODUCT_STARTER 0xb
#define PRODUCT_DATACENTER_SERVER_CORE 0xc
#define PRODUCT_STANDARD_SERVER_CORE 0xd
#define PRODUCT_ENTERPRISE_SERVER_CORE 0xe
#define PRODUCT_ENTERPRISE_SERVER_IA64 0xf
#define PRODUCT_BUSINESS_N 0x10
#define PRODUCT_WEB_SERVER 0x11
#define PRODUCT_CLUSTER_SERVER 0x12
#define PRODUCT_HOME_SERVER 0x13
#define PRODUCT_STORAGE_EXPRESS_SERVER 0x14
#define PRODUCT_STORAGE_STANDARD_SERVER 0x15
#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x16
#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x17
#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x18
#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x19
#define PRODUCT_HOME_PREMIUM_N 0x1a
#define PRODUCT_ENTERPRISE_N 0x1b
#define PRODUCT_ULTIMATE_N 0x1c
#define PRODUCT_WEB_SERVER_CORE 0x1d
#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x1e
#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x1f
#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x20
#define PRODUCT_SERVER_FOUNDATION 0x21
#define PRODUCT_HOME_PREMIUM_SERVER 0x22
#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x23
#define PRODUCT_STANDARD_SERVER_V 0x24
#define PRODUCT_DATACENTER_SERVER_V 0x25
#define PRODUCT_SERVER_V 0x25
#define PRODUCT_ENTERPRISE_SERVER_V 0x26
#define PRODUCT_DATACENTER_SERVER_CORE_V 0x27
#define PRODUCT_STANDARD_SERVER_CORE_V 0x28
#define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x29
#define PRODUCT_HYPERV 0x2a
#define PRODUCT_STORAGE_EXPRESS_SERVER_CORE 0x2b
#define PRODUCT_STORAGE_STANDARD_SERVER_CORE 0x2c
#define PRODUCT_STORAGE_WORKGROUP_SERVER_CORE 0x2d
#define PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE 0x2e
#define PRODUCT_STARTER_N 0x2f
#define PRODUCT_PROFESSIONAL 0x30
#define PRODUCT_PROFESSIONAL_N 0x31
#define PRODUCT_SB_SOLUTION_SERVER 0x32
#define PRODUCT_SERVER_FOR_SB_SOLUTIONS 0x33
#define PRODUCT_STANDARD_SERVER_SOLUTIONS 0x34
#define PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE 0x35
#define PRODUCT_SB_SOLUTION_SERVER_EM 0x36
#define PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM 0x37
#define PRODUCT_SOLUTION_EMBEDDEDSERVER 0x38
#define PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE 0x39
#define PRODUCT_PROFESSIONAL_EMBEDDED 0x3A
#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT 0x3B
#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL 0x3C
#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC 0x3D
#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC 0x3E
#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE 0x3f
#define PRODUCT_CLUSTER_SERVER_V 0x40
#define PRODUCT_EMBEDDED 0x41
#define PRODUCT_STARTER_E 0x42
#define PRODUCT_HOME_BASIC_E 0x43
#define PRODUCT_HOME_PREMIUM_E 0x44
#define PRODUCT_PROFESSIONAL_E 0x45
#define PRODUCT_ENTERPRISE_E 0x46
#define PRODUCT_ULTIMATE_E 0x47
#define PRODUCT_ENTERPRISE_EVALUATION 0x48
#define PRODUCT_MULTIPOINT_STANDARD_SERVER 0x4C
#define PRODUCT_MULTIPOINT_PREMIUM_SERVER 0x4D
#define PRODUCT_STANDARD_EVALUATION_SERVER 0x4F
#define PRODUCT_DATACENTER_EVALUATION_SERVER 0x50
#define PRODUCT_ENTERPRISE_N_EVALUATION 0x54
#define PRODUCT_EMBEDDED_AUTOMOTIVE 0x55
#define PRODUCT_EMBEDDED_INDUSTRY_A 0x56
#define PRODUCT_THINPC 0x57
#define PRODUCT_EMBEDDED_A 0x58
#define PRODUCT_EMBEDDED_INDUSTRY 0x59
#define PRODUCT_EMBEDDED_E 0x5A
#define PRODUCT_EMBEDDED_INDUSTRY_E 0x5B
#define PRODUCT_EMBEDDED_INDUSTRY_A_E 0x5C
#define PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER 0x5F
#define PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER 0x60
#define PRODUCT_CORE_ARM 0x61
#define PRODUCT_CORE_N 0x62
#define PRODUCT_CORE_COUNTRYSPECIFIC 0x63
#define PRODUCT_CORE_SINGLELANGUAGE 0x64
#define PRODUCT_CORE_LANGUAGESPECIFIC 0x64
#define PRODUCT_CORE 0x65
#define PRODUCT_PROFESSIONAL_WMC 0x67
#define PRODUCT_MOBILE_CORE 0x68
#define PRODUCT_EMBEDDED_INDUSTRY_EVAL 0x69
#define PRODUCT_EMBEDDED_INDUSTRY_E_EVAL 0x6A
#define PRODUCT_EMBEDDED_EVAL 0x6B
#define PRODUCT_EMBEDDED_E_EVAL 0x6C
#define PRODUCT_NANO_SERVER 0x6D
#define PRODUCT_CLOUD_STORAGE_SERVER 0x6E
#define PRODUCT_CORE_CONNECTED 0x6F
#define PRODUCT_PROFESSIONAL_STUDENT 0x70
#define PRODUCT_CORE_CONNECTED_N 0x71
#define PRODUCT_PROFESSIONAL_STUDENT_N 0x72
#define PRODUCT_CORE_CONNECTED_SINGLELANGUAGE 0x73
#define PRODUCT_CORE_CONNECTED_COUNTRYSPECIFIC 0x74
#define PRODUCT_CONNECTED_CAR 0x75
#define PRODUCT_INDUSTRY_HANDHELD 0x76
#define PRODUCT_PPI_PRO 0x77
#define PRODUCT_ARM64_SERVER 0x78
#define PRODUCT_EDUCATION 0x79
#define PRODUCT_EDUCATION_N 0x7a
#define PRODUCT_IOTUAP 0x7B
#define PRODUCT_CLOUD_HOST_INFRASTRUCTURE_SERVER 0x7C
#define PRODUCT_ENTERPRISE_S 0x7D
#define PRODUCT_ENTERPRISE_S_N 0x7E
#define PRODUCT_PROFESSIONAL_S 0x7F
#define PRODUCT_PROFESSIONAL_S_N 0x80
#define PRODUCT_ENTERPRISE_S_EVALUATION 0x81
#define PRODUCT_ENTERPRISE_S_N_EVALUATION 0x82
#define PRODUCT_MOBILE_ENTERPRISE 0x85
#define PRODUCT_UNLICENSED 0xabcdabcd
#define LANG_NEUTRAL 0x00
#define LANG_INVARIANT 0x7f
#define LANG_AFRIKAANS 0x36
#define LANG_ALBANIAN 0x1c
#define LANG_ALSATIAN 0x84
#define LANG_AMHARIC 0x5e
#define LANG_ARABIC 0x01
#define LANG_ARMENIAN 0x2b
#define LANG_ASSAMESE 0x4d
#define LANG_AZERI 0x2c
#define LANG_AZERBAIJANI 0x2c
#define LANG_BANGLA 0x45
#define LANG_BASHKIR 0x6d
#define LANG_BASQUE 0x2d
#define LANG_BELARUSIAN 0x23
#define LANG_BENGALI 0x45
#define LANG_BRETON 0x7e
#define LANG_BOSNIAN 0x1a
#define LANG_BOSNIAN_NEUTRAL 0x781a
#define LANG_BULGARIAN 0x02
#define LANG_CATALAN 0x03
#define LANG_CENTRAL_KURDISH 0x92
#define LANG_CHEROKEE 0x5c
#define LANG_CHINESE 0x04
#define LANG_CHINESE_SIMPLIFIED 0x04
#define LANG_CHINESE_TRADITIONAL 0x7c04
#define LANG_CORSICAN 0x83
#define LANG_CROATIAN 0x1a
#define LANG_CZECH 0x05
#define LANG_DANISH 0x06
#define LANG_DARI 0x8c
#define LANG_DIVEHI 0x65
#define LANG_DUTCH 0x13
#define LANG_ENGLISH 0x09
#define LANG_ESTONIAN 0x25
#define LANG_FAEROESE 0x38
#define LANG_FARSI 0x29
#define LANG_FILIPINO 0x64
#define LANG_FINNISH 0x0b
#define LANG_FRENCH 0x0c
#define LANG_FRISIAN 0x62
#define LANG_FULAH 0x67
#define LANG_GALICIAN 0x56
#define LANG_GEORGIAN 0x37
#define LANG_GERMAN 0x07
#define LANG_GREEK 0x08
#define LANG_GREENLANDIC 0x6f
#define LANG_GUJARATI 0x47
#define LANG_HAUSA 0x68
#define LANG_HEBREW 0x0d
#define LANG_HINDI 0x39
#define LANG_HUNGARIAN 0x0e
#define LANG_ICELANDIC 0x0f
#define LANG_IGBO 0x70
#define LANG_INDONESIAN 0x21
#define LANG_INUKTITUT 0x5d
#define LANG_IRISH 0x3c
#define LANG_ITALIAN 0x10
#define LANG_JAPANESE 0x11
#define LANG_KANNADA 0x4b
#define LANG_KASHMIRI 0x60
#define LANG_KAZAK 0x3f
#define LANG_KHMER 0x53
#define LANG_KICHE 0x86
#define LANG_KINYARWANDA 0x87
#define LANG_KONKANI 0x57
#define LANG_KOREAN 0x12
#define LANG_KYRGYZ 0x40
#define LANG_LAO 0x54
#define LANG_LATVIAN 0x26
#define LANG_LITHUANIAN 0x27
#define LANG_LOWER_SORBIAN 0x2e
#define LANG_LUXEMBOURGISH 0x6e
#define LANG_MACEDONIAN 0x2f
#define LANG_MALAY 0x3e
#define LANG_MALAYALAM 0x4c
#define LANG_MALTESE 0x3a
#define LANG_MANIPURI 0x58
#define LANG_MAORI 0x81
#define LANG_MAPUDUNGUN 0x7a
#define LANG_MARATHI 0x4e
#define LANG_MOHAWK 0x7c
#define LANG_MONGOLIAN 0x50
#define LANG_NEPALI 0x61
#define LANG_NORWEGIAN 0x14
#define LANG_OCCITAN 0x82
#define LANG_ODIA 0x48
#define LANG_ORIYA 0x48
#define LANG_PASHTO 0x63
#define LANG_PERSIAN 0x29
#define LANG_POLISH 0x15
#define LANG_PORTUGUESE 0x16
#define LANG_PULAR 0x67
#define LANG_PUNJABI 0x46
#define LANG_QUECHUA 0x6b
#define LANG_ROMANIAN 0x18
#define LANG_ROMANSH 0x17
#define LANG_RUSSIAN 0x19
#define LANG_SAKHA 0x85
#define LANG_SAMI 0x3b
#define LANG_SANSKRIT 0x4f
#define LANG_SCOTTISH_GAELIC 0x91
#define LANG_SERBIAN 0x1a
#define LANG_SERBIAN_NEUTRAL 0x7c1a
#define LANG_SINDHI 0x59
#define LANG_SINHALESE 0x5b
#define LANG_SLOVAK 0x1b
#define LANG_SLOVENIAN 0x24
#define LANG_SOTHO 0x6c
#define LANG_SPANISH 0x0a
#define LANG_SWAHILI 0x41
#define LANG_SWEDISH 0x1d
#define LANG_SYRIAC 0x5a
#define LANG_TAJIK 0x28
#define LANG_TAMAZIGHT 0x5f
#define LANG_TAMIL 0x49
#define LANG_TATAR 0x44
#define LANG_TELUGU 0x4a
#define LANG_THAI 0x1e
#define LANG_TIBETAN 0x51
#define LANG_TIGRIGNA 0x73
#define LANG_TIGRINYA 0x73
#define LANG_TSWANA 0x32
#define LANG_TURKISH 0x1f
#define LANG_TURKMEN 0x42
#define LANG_UIGHUR 0x80
#define LANG_UKRAINIAN 0x22
#define LANG_UPPER_SORBIAN 0x2e
#define LANG_URDU 0x20
#define LANG_UZBEK 0x43
#define LANG_VALENCIAN 0x03
#define LANG_VIETNAMESE 0x2a
#define LANG_WELSH 0x52
#define LANG_WOLOF 0x88
#define LANG_XHOSA 0x34
#define LANG_YAKUT 0x85
#define LANG_YI 0x78
#define LANG_YORUBA 0x6a
#define LANG_ZULU 0x35
#define SUBLANG_NEUTRAL 0x00
#define SUBLANG_DEFAULT 0x01
#define SUBLANG_SYS_DEFAULT 0x02
#define SUBLANG_CUSTOM_DEFAULT 0x03
#define SUBLANG_CUSTOM_UNSPECIFIED 0x04
#define SUBLANG_UI_CUSTOM_DEFAULT 0x05
#define SUBLANG_AFRIKAANS_SOUTH_AFRICA 0x01
#define SUBLANG_ALBANIAN_ALBANIA 0x01
#define SUBLANG_ALSATIAN_FRANCE 0x01
#define SUBLANG_AMHARIC_ETHIOPIA 0x01
#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
#define SUBLANG_ARABIC_IRAQ 0x02
#define SUBLANG_ARABIC_EGYPT 0x03
#define SUBLANG_ARABIC_LIBYA 0x04
#define SUBLANG_ARABIC_ALGERIA 0x05
#define SUBLANG_ARABIC_MOROCCO 0x06
#define SUBLANG_ARABIC_TUNISIA 0x07
#define SUBLANG_ARABIC_OMAN 0x08
#define SUBLANG_ARABIC_YEMEN 0x09
#define SUBLANG_ARABIC_SYRIA 0x0a
#define SUBLANG_ARABIC_JORDAN 0x0b
#define SUBLANG_ARABIC_LEBANON 0x0c
#define SUBLANG_ARABIC_KUWAIT 0x0d
#define SUBLANG_ARABIC_UAE 0x0e
#define SUBLANG_ARABIC_BAHRAIN 0x0f
#define SUBLANG_ARABIC_QATAR 0x10
#define SUBLANG_ARMENIAN_ARMENIA 0x01
#define SUBLANG_ASSAMESE_INDIA 0x01
#define SUBLANG_AZERI_LATIN 0x01
#define SUBLANG_AZERI_CYRILLIC 0x02
#define SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN 0x01
#define SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC 0x02
#define SUBLANG_BANGLA_INDIA 0x01
#define SUBLANG_BANGLA_BANGLADESH 0x02
#define SUBLANG_BASHKIR_RUSSIA 0x01
#define SUBLANG_BASQUE_BASQUE 0x01
#define SUBLANG_BELARUSIAN_BELARUS 0x01
#define SUBLANG_BENGALI_INDIA 0x01
#define SUBLANG_BENGALI_BANGLADESH 0x02
#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05
#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08
#define SUBLANG_BRETON_FRANCE 0x01
#define SUBLANG_BULGARIAN_BULGARIA 0x01
#define SUBLANG_CATALAN_CATALAN 0x01
#define SUBLANG_CENTRAL_KURDISH_IRAQ 0x01
#define SUBLANG_CHEROKEE_CHEROKEE 0x01
#define SUBLANG_CHINESE_TRADITIONAL 0x01
#define SUBLANG_CHINESE_SIMPLIFIED 0x02
#define SUBLANG_CHINESE_HONGKONG 0x03
#define SUBLANG_CHINESE_SINGAPORE 0x04
#define SUBLANG_CHINESE_MACAU 0x05
#define SUBLANG_CORSICAN_FRANCE 0x01
#define SUBLANG_CZECH_CZECH_REPUBLIC 0x01
#define SUBLANG_CROATIAN_CROATIA 0x01
#define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04
#define SUBLANG_DANISH_DENMARK 0x01
#define SUBLANG_DARI_AFGHANISTAN 0x01
#define SUBLANG_DIVEHI_MALDIVES 0x01
#define SUBLANG_DUTCH 0x01
#define SUBLANG_DUTCH_BELGIAN 0x02
#define SUBLANG_ENGLISH_US 0x01
#define SUBLANG_ENGLISH_UK 0x02
#define SUBLANG_ENGLISH_AUS 0x03
#define SUBLANG_ENGLISH_CAN 0x04
#define SUBLANG_ENGLISH_NZ 0x05
#define SUBLANG_ENGLISH_IRELAND 0x06
#define SUBLANG_ENGLISH_EIRE 0x06
#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
#define SUBLANG_ENGLISH_JAMAICA 0x08
#define SUBLANG_ENGLISH_CARIBBEAN 0x09
#define SUBLANG_ENGLISH_BELIZE 0x0a
#define SUBLANG_ENGLISH_TRINIDAD 0x0b
#define SUBLANG_ENGLISH_ZIMBABWE 0x0c
#define SUBLANG_ENGLISH_PHILIPPINES 0x0d
#define SUBLANG_ENGLISH_INDIA 0x10
#define SUBLANG_ENGLISH_MALAYSIA 0x11
#define SUBLANG_ENGLISH_SINGAPORE 0x12
#define SUBLANG_ESTONIAN_ESTONIA 0x01
#define SUBLANG_FAEROESE_FAROE_ISLANDS 0x01
#define SUBLANG_FILIPINO_PHILIPPINES 0x01
#define SUBLANG_FINNISH_FINLAND 0x01
#define SUBLANG_FRENCH 0x01
#define SUBLANG_FRENCH_BELGIAN 0x02
#define SUBLANG_FRENCH_CANADIAN 0x03
#define SUBLANG_FRENCH_SWISS 0x04
#define SUBLANG_FRENCH_LUXEMBOURG 0x05
#define SUBLANG_FRENCH_MONACO 0x06
#define SUBLANG_FRISIAN_NETHERLANDS 0x01
#define SUBLANG_FULAH_SENEGAL 0x02
#define SUBLANG_GALICIAN_GALICIAN 0x01
#define SUBLANG_GEORGIAN_GEORGIA 0x01
#define SUBLANG_GERMAN 0x01
#define SUBLANG_GERMAN_SWISS 0x02
#define SUBLANG_GERMAN_AUSTRIAN 0x03
#define SUBLANG_GERMAN_LUXEMBOURG 0x04
#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
#define SUBLANG_GREEK_GREECE 0x01
#define SUBLANG_GREENLANDIC_GREENLAND 0x01
#define SUBLANG_GUJARATI_INDIA 0x01
#define SUBLANG_HAUSA_NIGERIA_LATIN 0x01
#define SUBLANG_HAUSA_NIGERIA SUBLANG_HAUSA_NIGERIA_LATIN
#define SUBLANG_HAWAIIAN_US 0x01
#define SUBLANG_HEBREW_ISRAEL 0x01
#define SUBLANG_HINDI_INDIA 0x01
#define SUBLANG_HUNGARIAN_HUNGARY 0x01
#define SUBLANG_ICELANDIC_ICELAND 0x01
#define SUBLANG_IGBO_NIGERIA 0x01
#define SUBLANG_INDONESIAN_INDONESIA 0x01
#define SUBLANG_INUKTITUT_CANADA 0x01
#define SUBLANG_INUKTITUT_CANADA_LATIN 0x02
#define SUBLANG_IRISH_IRELAND 0x02
#define SUBLANG_ITALIAN 0x01
#define SUBLANG_ITALIAN_SWISS 0x02
#define SUBLANG_JAPANESE_JAPAN 0x01
#define SUBLANG_KANNADA_INDIA 0x01
#define SUBLANG_KASHMIRI_INDIA 0x02
#define SUBLANG_KASHMIRI_SASIA 0x02
#define SUBLANG_KAZAK_KAZAKHSTAN 0x01
#define SUBLANG_KHMER_CAMBODIA 0x01
#define SUBLANG_KICHE_GUATEMALA 0x01
#define SUBLANG_KINYARWANDA_RWANDA 0x01
#define SUBLANG_KONKANI_INDIA 0x01
#define SUBLANG_KOREAN 0x01
#define SUBLANG_KYRGYZ_KYRGYZSTAN 0x01
#define SUBLANG_LAO_LAO 0x01
#define SUBLANG_LAO_LAO_PDR SUBLANG_LAO_LAO
#define SUBLANG_LATVIAN_LATVIA 0x01
#define SUBLANG_LITHUANIAN_LITHUANIA 0x01
#define SUBLANG_LITHUANIAN 0x01
#define SUBLANG_LOWER_SORBIAN_GERMANY 0x02
#define SUBLANG_LUXEMBOURGISH_LUXEMBOURG 0x01
#define SUBLANG_MACEDONIAN_MACEDONIA 0x01
#define SUBLANG_MALAY_MALAYSIA 0x01
#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
#define SUBLANG_MALAYALAM_INDIA 0x01
#define SUBLANG_MALTESE_MALTA 0x01
#define SUBLANG_MAORI_NEW_ZEALAND 0x01
#define SUBLANG_MAPUDUNGUN_CHILE 0x01
#define SUBLANG_MARATHI_INDIA 0x01
#define SUBLANG_MOHAWK_MOHAWK 0x01
#define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01
#define SUBLANG_MONGOLIAN_PRC 0x02
#define SUBLANG_NEPALI_NEPAL 0x01
#define SUBLANG_NEPALI_INDIA 0x02
#define SUBLANG_NORWEGIAN_BOKMAL 0x01
#define SUBLANG_NORWEGIAN_NYNORSK 0x02
#define SUBLANG_OCCITAN_FRANCE 0x01
#define SUBLANG_ORIYA_INDIA 0x01
#define SUBLANG_PASHTO_AFGHANISTAN 0x01
#define SUBLANG_PERSIAN_IRAN 0x01
#define SUBLANG_POLISH_POLAND 0x01
#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01
#define SUBLANG_PORTUGUESE_PORTUGAL 0x02
#define SUBLANG_PORTUGUESE 0x02
#define SUBLANG_PULAR_SENEGAL 0x02
#define SUBLANG_PUNJABI_INDIA 0x01
#define SUBLANG_PUNJABI_PAKISTAN 0x02
#define SUBLANG_QUECHUA_BOLIVIA 0x01
#define SUBLANG_QUECHUA_ECUADOR 0x02
#define SUBLANG_QUECHUA_PERU 0x03
#define SUBLANG_ROMANIAN_ROMANIA 0x01
#define SUBLANG_ROMANSH_SWITZERLAND 0x01
#define SUBLANG_RUSSIAN_RUSSIA 0x01
#define SUBLANG_SAKHA_RUSSIA 0x01
#define SUBLANG_SAMI_NORTHERN_NORWAY 0x01
#define SUBLANG_SAMI_NORTHERN_SWEDEN 0x02
#define SUBLANG_SAMI_NORTHERN_FINLAND 0x03
#define SUBLANG_SAMI_LULE_NORWAY 0x04
#define SUBLANG_SAMI_LULE_SWEDEN 0x05
#define SUBLANG_SAMI_SOUTHERN_NORWAY 0x06
#define SUBLANG_SAMI_SOUTHERN_SWEDEN 0x07
#define SUBLANG_SAMI_SKOLT_FINLAND 0x08
#define SUBLANG_SAMI_INARI_FINLAND 0x09
#define SUBLANG_SANSKRIT_INDIA 0x01
#define SUBLANG_SCOTTISH_GAELIC 0x01
#define SUBLANG_SERBIAN_LATIN 0x02
#define SUBLANG_SERBIAN_CYRILLIC 0x03
#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN 0x06
#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x07
#define SUBLANG_SERBIAN_MONTENEGRO_LATIN 0x0b
#define SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC 0x0c
#define SUBLANG_SERBIAN_SERBIA_LATIN 0x09
#define SUBLANG_SERBIAN_SERBIA_CYRILLIC 0x0a
#define SUBLANG_SINDHI_INDIA 0x01
#define SUBLANG_SINDHI_AFGHANISTAN 0x02
#define SUBLANG_SINDHI_PAKISTAN 0x02
#define SUBLANG_SINHALESE_SRI_LANKA 0x01
#define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA 0x01
#define SUBLANG_SLOVAK_SLOVAKIA 0x01
#define SUBLANG_SLOVENIAN_SLOVENIA 0x01
#define SUBLANG_SPANISH 0x01
#define SUBLANG_SPANISH_MEXICAN 0x02
#define SUBLANG_SPANISH_MODERN 0x03
#define SUBLANG_SPANISH_GUATEMALA 0x04
#define SUBLANG_SPANISH_COSTA_RICA 0x05
#define SUBLANG_SPANISH_PANAMA 0x06
#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
#define SUBLANG_SPANISH_VENEZUELA 0x08
#define SUBLANG_SPANISH_COLOMBIA 0x09
#define SUBLANG_SPANISH_PERU 0x0a
#define SUBLANG_SPANISH_ARGENTINA 0x0b
#define SUBLANG_SPANISH_ECUADOR 0x0c
#define SUBLANG_SPANISH_CHILE 0x0d
#define SUBLANG_SPANISH_URUGUAY 0x0e
#define SUBLANG_SPANISH_PARAGUAY 0x0f
#define SUBLANG_SPANISH_BOLIVIA 0x10
#define SUBLANG_SPANISH_EL_SALVADOR 0x11
#define SUBLANG_SPANISH_HONDURAS 0x12
#define SUBLANG_SPANISH_NICARAGUA 0x13
#define SUBLANG_SPANISH_PUERTO_RICO 0x14
#define SUBLANG_SPANISH_US 0x15
#define SUBLANG_SWAHILI_KENYA 0x01
#define SUBLANG_SWEDISH_SWEDEN 0x01
#define SUBLANG_SWEDISH 0x01
#define SUBLANG_SWEDISH_FINLAND 0x02
#define SUBLANG_SYRIAC 0x01
#define SUBLANG_SYRIAC_SYRIA SUBLANG_SYRIAC
#define SUBLANG_TAJIK_TAJIKISTAN 0x01
#define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02
#define SUBLANG_TAMAZIGHT_MOROCCO_TIFINAGH 0x04
#define SUBLANG_TAMIL_INDIA 0x01
#define SUBLANG_TAMIL_SRI_LANKA 0x02
#define SUBLANG_TATAR_RUSSIA 0x01
#define SUBLANG_TELUGU_INDIA 0x01
#define SUBLANG_THAI_THAILAND 0x01
#define SUBLANG_TIBETAN_PRC 0x01
#define SUBLANG_TIBETAN_BHUTAN 0x02
#define SUBLANG_TIGRIGNA_ERITREA 0x02
#define SUBLANG_TIGRINYA_ERITREA 0x02
#define SUBLANG_TIGRINYA_ETHIOPIA 0x01
#define SUBLANG_TSWANA_BOTSWANA 0x02
#define SUBLANG_TSWANA_SOUTH_AFRICA 0x01
#define SUBLANG_TURKISH_TURKEY 0x01
#define SUBLANG_TURKMEN_TURKMENISTAN 0x01
#define SUBLANG_UIGHUR_PRC 0x01
#define SUBLANG_UKRAINIAN_UKRAINE 0x01
#define SUBLANG_UPPER_SORBIAN_GERMANY 0x01
#define SUBLANG_URDU_PAKISTAN 0x01
#define SUBLANG_URDU_INDIA 0x02
#define SUBLANG_UZBEK_LATIN 0x01
#define SUBLANG_UZBEK_CYRILLIC 0x02
#define SUBLANG_VALENCIAN_VALENCIA 0x02
#define SUBLANG_VIETNAMESE_VIETNAM 0x01
#define SUBLANG_WELSH_UNITED_KINGDOM 0x01
#define SUBLANG_WOLOF_SENEGAL 0x01
#define SUBLANG_YORUBA_NIGERIA 0x01
#define SUBLANG_XHOSA_SOUTH_AFRICA 0x01
#define SUBLANG_YAKUT_RUSSIA 0x01
#define SUBLANG_YI_PRC 0x01
#define SUBLANG_ZULU_SOUTH_AFRICA 0x01
#define SORT_DEFAULT 0x0
#define SORT_INVARIANT_MATH 0x1
#define SORT_JAPANESE_XJIS 0x0
#define SORT_JAPANESE_UNICODE 0x1
#define SORT_JAPANESE_RADICALSTROKE 0x4
#define SORT_CHINESE_BIG5 0x0
#define SORT_CHINESE_PRCP 0x0
#define SORT_CHINESE_UNICODE 0x1
#define SORT_CHINESE_PRC 0x2
#define SORT_CHINESE_BOPOMOFO 0x3
#define SORT_CHINESE_RADICALSTROKE 0x4
#define SORT_KOREAN_KSC 0x0
#define SORT_KOREAN_UNICODE 0x1
#define SORT_GERMAN_PHONE_BOOK 0x1
#define SORT_HUNGARIAN_DEFAULT 0x0
#define SORT_HUNGARIAN_TECHNICAL 0x1
#define SORT_GEORGIAN_TRADITIONAL 0x0
#define SORT_GEORGIAN_MODERN 0x1
#define MAKELANGID(p,s) ((((WORD)(s)) << 10) | (WORD)(p))
#define PRIMARYLANGID(lgid) ((WORD)(lgid) & 0x3ff)
#define SUBLANGID(lgid) ((WORD)(lgid) >> 10)
#define NLS_VALID_LOCALE_MASK 0x000fffff
#define MAKELCID(lgid,srtid) ((DWORD)((((DWORD)((WORD)(srtid))) << 16) | ((DWORD)((WORD)(lgid)))))
#define MAKESORTLCID(lgid,srtid,ver) ((DWORD)((MAKELCID(lgid,srtid)) | (((DWORD)((WORD)(ver))) << 20)))
#define LANGIDFROMLCID(lcid) ((WORD)(lcid))
#define SORTIDFROMLCID(lcid) ((WORD)((((DWORD)(lcid)) >> 16) & 0xf))
#define SORTVERSIONFROMLCID(lcid) ((WORD)((((DWORD)(lcid)) >> 20) & 0xf))
#define LOCALE_NAME_MAX_LENGTH 85
#define LANG_SYSTEM_DEFAULT (MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT))
#define LANG_USER_DEFAULT (MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT))
#define LOCALE_SYSTEM_DEFAULT (MAKELCID(LANG_SYSTEM_DEFAULT,SORT_DEFAULT))
#define LOCALE_USER_DEFAULT (MAKELCID(LANG_USER_DEFAULT,SORT_DEFAULT))
#define LOCALE_NEUTRAL (MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT))
#define LOCALE_CUSTOM_DEFAULT (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_DEFAULT), SORT_DEFAULT))
#define LOCALE_CUSTOM_UNSPECIFIED (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_UNSPECIFIED), SORT_DEFAULT))
#define LOCALE_CUSTOM_UI_DEFAULT (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_UI_CUSTOM_DEFAULT), SORT_DEFAULT))
#define LOCALE_INVARIANT (MAKELCID(MAKELANGID(LANG_INVARIANT,SUBLANG_NEUTRAL),SORT_DEFAULT))
#define UNREFERENCED_PARAMETER(P) {(P) = (P);}
#define UNREFERENCED_LOCAL_VARIABLE(V) {(V) = (V);}
#define DBG_UNREFERENCED_PARAMETER(P) (P)
#define DBG_UNREFERENCED_LOCAL_VARIABLE(V) (V)
#define DEFAULT_UNREACHABLE 
#define STATUS_WAIT_0 ((DWORD)0x00000000)
#define STATUS_ABANDONED_WAIT_0 ((DWORD)0x00000080)
#define STATUS_USER_APC ((DWORD)0x000000C0)
#define STATUS_TIMEOUT ((DWORD)0x00000102)
#define STATUS_PENDING ((DWORD)0x00000103)
#define DBG_EXCEPTION_HANDLED ((DWORD)0x00010001)
#define DBG_CONTINUE ((DWORD)0x00010002)
#define STATUS_SEGMENT_NOTIFICATION ((DWORD)0x40000005)
#define STATUS_FATAL_APP_EXIT ((DWORD)0x40000015)
#define DBG_TERMINATE_THREAD ((DWORD)0x40010003)
#define DBG_TERMINATE_PROCESS ((DWORD)0x40010004)
#define DBG_CONTROL_C ((DWORD)0x40010005)
#define DBG_PRINTEXCEPTION_C ((DWORD)0x40010006)
#define DBG_RIPEXCEPTION ((DWORD)0x40010007)
#define DBG_CONTROL_BREAK ((DWORD)0x40010008)
#define DBG_COMMAND_EXCEPTION ((DWORD)0x40010009)
#define DBG_PRINTEXCEPTION_WIDE_C ((DWORD)0x4001000A)
#define STATUS_GUARD_PAGE_VIOLATION ((DWORD)0x80000001)
#define STATUS_DATATYPE_MISALIGNMENT ((DWORD)0x80000002)
#define STATUS_BREAKPOINT ((DWORD)0x80000003)
#define STATUS_SINGLE_STEP ((DWORD)0x80000004)
#define STATUS_LONGJUMP ((DWORD)0x80000026)
#define STATUS_UNWIND_CONSOLIDATE ((DWORD)0x80000029)
#define DBG_EXCEPTION_NOT_HANDLED ((DWORD)0x80010001)
#define STATUS_ACCESS_VIOLATION ((DWORD)0xC0000005)
#define STATUS_IN_PAGE_ERROR ((DWORD)0xC0000006)
#define STATUS_INVALID_HANDLE ((DWORD)0xC0000008)
#define STATUS_INVALID_PARAMETER ((DWORD)0xC000000D)
#define STATUS_NO_MEMORY ((DWORD)0xC0000017)
#define STATUS_ILLEGAL_INSTRUCTION ((DWORD)0xC000001D)
#define STATUS_NONCONTINUABLE_EXCEPTION ((DWORD)0xC0000025)
#define STATUS_INVALID_DISPOSITION ((DWORD)0xC0000026)
#define STATUS_ARRAY_BOUNDS_EXCEEDED ((DWORD)0xC000008C)
#define STATUS_FLOAT_DENORMAL_OPERAND ((DWORD)0xC000008D)
#define STATUS_FLOAT_DIVIDE_BY_ZERO ((DWORD)0xC000008E)
#define STATUS_FLOAT_INEXACT_RESULT ((DWORD)0xC000008F)
#define STATUS_FLOAT_INVALID_OPERATION ((DWORD)0xC0000090)
#define STATUS_FLOAT_OVERFLOW ((DWORD)0xC0000091)
#define STATUS_FLOAT_STACK_CHECK ((DWORD)0xC0000092)
#define STATUS_FLOAT_UNDERFLOW ((DWORD)0xC0000093)
#define STATUS_INTEGER_DIVIDE_BY_ZERO ((DWORD)0xC0000094)
#define STATUS_INTEGER_OVERFLOW ((DWORD)0xC0000095)
#define STATUS_PRIVILEGED_INSTRUCTION ((DWORD)0xC0000096)
#define STATUS_STACK_OVERFLOW ((DWORD)0xC00000FD)
#define STATUS_DLL_NOT_FOUND ((DWORD)0xC0000135)
#define STATUS_ORDINAL_NOT_FOUND ((DWORD)0xC0000138)
#define STATUS_ENTRYPOINT_NOT_FOUND ((DWORD)0xC0000139)
#define STATUS_CONTROL_C_EXIT ((DWORD)0xC000013A)
#define STATUS_DLL_INIT_FAILED ((DWORD)0xC0000142)
#define STATUS_FLOAT_MULTIPLE_FAULTS ((DWORD)0xC00002B4)
#define STATUS_FLOAT_MULTIPLE_TRAPS ((DWORD)0xC00002B5)
#define STATUS_REG_NAT_CONSUMPTION ((DWORD)0xC00002C9)
#define STATUS_HEAP_CORRUPTION ((DWORD)0xC0000374)
#define STATUS_STACK_BUFFER_OVERRUN ((DWORD)0xC0000409)
#define STATUS_INVALID_CRUNTIME_PARAMETER ((DWORD)0xC0000417)
#define STATUS_ASSERTION_FAILURE ((DWORD)0xC0000420)
#define STATUS_SXS_EARLY_DEACTIVATION ((DWORD)0xC015000F)
#define STATUS_SXS_INVALID_DEACTIVATION ((DWORD)0xC0150010)
#define MAXIMUM_WAIT_OBJECTS 64
#define MAXIMUM_SUSPEND_COUNT MAXCHAR
  typedef ULONG_PTR KSPIN_LOCK;
  typedef KSPIN_LOCK *PKSPIN_LOCK;
    typedef struct __attribute__ ((__aligned__ (16))) _M128A {
      ULONGLONG Low;
      LONGLONG High;
    } M128A,*PM128A;
    typedef struct __attribute__ ((__aligned__ (16))) _XSAVE_FORMAT {
      WORD ControlWord;
      WORD StatusWord;
      BYTE TagWord;
      BYTE Reserved1;
      WORD ErrorOpcode;
      DWORD ErrorOffset;
      WORD ErrorSelector;
      WORD Reserved2;
      DWORD DataOffset;
      WORD DataSelector;
      WORD Reserved3;
      DWORD MxCsr;
      DWORD MxCsr_Mask;
      M128A FloatRegisters[8];
      M128A XmmRegisters[8];
      BYTE Reserved4[220];
      DWORD Cr0NpxState;
    } XSAVE_FORMAT,*PXSAVE_FORMAT;
    typedef struct __attribute__ ((__aligned__ (8))) _XSAVE_AREA_HEADER {
      DWORD64 Mask;
      DWORD64 Reserved[7];
    } XSAVE_AREA_HEADER,*PXSAVE_AREA_HEADER;
    typedef struct __attribute__ ((__aligned__ (16))) _XSAVE_AREA {
      XSAVE_FORMAT LegacyState;
      XSAVE_AREA_HEADER Header;
    } XSAVE_AREA,*PXSAVE_AREA;
    typedef struct _XSTATE_CONTEXT {
      DWORD64 Mask;
      DWORD Length;
      DWORD Reserved1;
      PXSAVE_AREA Area;
      DWORD Reserved2;
      PVOID Buffer;
      DWORD Reserved3;
    } XSTATE_CONTEXT,*PXSTATE_CONTEXT;
    typedef struct _SCOPE_TABLE_AMD64 {
      DWORD Count;
      struct {
 DWORD BeginAddress;
 DWORD EndAddress;
 DWORD HandlerAddress;
 DWORD JumpTarget;
      } ScopeRecord[1];
    } SCOPE_TABLE_AMD64,*PSCOPE_TABLE_AMD64;
#define BitTest _bittest
#define BitTestAndComplement _bittestandcomplement
#define BitTestAndSet _bittestandset
#define BitTestAndReset _bittestandreset
#define BitScanForward _BitScanForward
#define BitScanReverse _BitScanReverse
#define InterlockedIncrement16 _InterlockedIncrement16
#define InterlockedDecrement16 _InterlockedDecrement16
#define InterlockedCompareExchange16 _InterlockedCompareExchange16
#define InterlockedAnd _InterlockedAnd
#define InterlockedOr _InterlockedOr
#define InterlockedXor _InterlockedXor
#define InterlockedIncrement _InterlockedIncrement
#define InterlockedIncrementAcquire InterlockedIncrement
#define InterlockedIncrementRelease InterlockedIncrement
#define InterlockedDecrement _InterlockedDecrement
#define InterlockedDecrementAcquire InterlockedDecrement
#define InterlockedDecrementRelease InterlockedDecrement
#define InterlockedAdd _InterlockedAdd
#define InterlockedExchange _InterlockedExchange
#define InterlockedExchangeAdd _InterlockedExchangeAdd
#define InterlockedCompareExchange _InterlockedCompareExchange
#define InterlockedCompareExchangeAcquire InterlockedCompareExchange
#define InterlockedCompareExchangeRelease InterlockedCompareExchange
#define InterlockedAnd64 _InterlockedAnd64
#define InterlockedAndAffinity InterlockedAnd64
#define InterlockedOr64 _InterlockedOr64
#define InterlockedOrAffinity InterlockedOr64
#define InterlockedXor64 _InterlockedXor64
#define InterlockedIncrement64 _InterlockedIncrement64
#define InterlockedDecrement64 _InterlockedDecrement64
#define InterlockedAdd64 _InterlockedAdd64
#define InterlockedExchange64 _InterlockedExchange64
#define InterlockedExchangeAcquire64 InterlockedExchange64
#define InterlockedExchangeAdd64 _InterlockedExchangeAdd64
#define InterlockedCompareExchange64 _InterlockedCompareExchange64
#define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64
#define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64
#define InterlockedExchangePointer _InterlockedExchangePointer
#define InterlockedCompareExchangePointer(Destination,ExChange,Comperand) (PVOID) (LONG_PTR)InterlockedCompareExchange ((LONG volatile *) (Destination),(LONG) (LONG_PTR) (ExChange),(LONG) (LONG_PTR) (Comperand))
#define InterlockedCompareExchangePointerAcquire InterlockedCompareExchangePointer
#define InterlockedCompareExchangePointerRelease InterlockedCompareExchangePointer
#define YieldProcessor __buildpause
void MemoryBarrier(void);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void MemoryBarrier(void)
{ unsigned char Barrier; __asm__ __volatile__("xchg{b %%| }al, %0" :"=m" (Barrier) : : "eax", "memory"); }
#define PreFetchCacheLine(l,a) 
#define ReadForWriteAccess(p) (*(p))
#define PF_TEMPORAL_LEVEL_1 
#define PF_NON_TEMPORAL_LEVEL_ALL 
#define PcTeb 0x18
  struct _TEB *NtCurrentTeb(void);
  PVOID GetCurrentFiber(void);
  PVOID GetFiberData(void);
#define DbgRaiseAssertionFailure __int2c
  extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) struct _TEB *NtCurrentTeb(void)
  {
    return (struct _TEB *)__readfsdword(0x18);
  }
  extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) PVOID GetCurrentFiber(void)
  {
    return(PVOID)__readfsdword(0x10);
  }
  extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) PVOID GetFiberData(void)
  {
      return *(PVOID *)GetCurrentFiber();
  }
#define EXCEPTION_READ_FAULT 0
#define EXCEPTION_WRITE_FAULT 1
#define EXCEPTION_EXECUTE_FAULT 8
#define SIZE_OF_80387_REGISTERS 80
#define CONTEXT_i386 0x00010000
#define CONTEXT_i486 0x00010000
#define CONTEXT_CONTROL (CONTEXT_i386 | __MSABI_LONG(0x00000001))
#define CONTEXT_INTEGER (CONTEXT_i386 | __MSABI_LONG(0x00000002))
#define CONTEXT_SEGMENTS (CONTEXT_i386 | __MSABI_LONG(0x00000004))
#define CONTEXT_FLOATING_POINT (CONTEXT_i386 | __MSABI_LONG(0x00000008))
#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | __MSABI_LONG(0x00000010))
#define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386 | __MSABI_LONG(0x00000020))
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS)
#define MAXIMUM_SUPPORTED_EXTENSION 512
    typedef struct _FLOATING_SAVE_AREA {
      DWORD ControlWord;
      DWORD StatusWord;
      DWORD TagWord;
      DWORD ErrorOffset;
      DWORD ErrorSelector;
      DWORD DataOffset;
      DWORD DataSelector;
      BYTE RegisterArea[80];
      DWORD Cr0NpxState;
    } FLOATING_SAVE_AREA;
    typedef FLOATING_SAVE_AREA *PFLOATING_SAVE_AREA;
    typedef struct _CONTEXT {
      DWORD ContextFlags;
      DWORD Dr0;
      DWORD Dr1;
      DWORD Dr2;
      DWORD Dr3;
      DWORD Dr6;
      DWORD Dr7;
      FLOATING_SAVE_AREA FloatSave;
      DWORD 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;
      BYTE ExtendedRegisters[512];
    } CONTEXT;
    typedef CONTEXT *PCONTEXT;
#define _LDT_ENTRY_DEFINED 
    typedef struct _LDT_ENTRY {
      WORD LimitLow;
      WORD BaseLow;
      union {
 struct {
   BYTE BaseMid;
   BYTE Flags1;
   BYTE Flags2;
   BYTE BaseHi;
 } Bytes;
 struct {
   DWORD BaseMid : 8;
   DWORD Type : 5;
   DWORD Dpl : 2;
   DWORD Pres : 1;
   DWORD LimitHi : 4;
   DWORD Sys : 1;
   DWORD Reserved_0 : 1;
   DWORD Default_Big : 1;
   DWORD Granularity : 1;
   DWORD BaseHi : 8;
 } Bits;
      } HighWord;
    } LDT_ENTRY,*PLDT_ENTRY;
#define EXCEPTION_NONCONTINUABLE 0x1
#define EXCEPTION_UNWINDING 0x2
#define EXCEPTION_EXIT_UNWIND 0x4
#define EXCEPTION_STACK_INVALID 0x8
#define EXCEPTION_NESTED_CALL 0x10
#define EXCEPTION_TARGET_UNWIND 0x20
#define EXCEPTION_COLLIDED_UNWIND 0x40
#define EXCEPTION_UNWIND 0x66
#define IS_UNWINDING(f) ((f & EXCEPTION_UNWIND) != 0)
#define IS_DISPATCHING(f) ((f & EXCEPTION_UNWIND) == 0)
#define IS_TARGET_UNWIND(f) ((f & EXCEPTION_TARGET_UNWIND) != 0)
#define EXCEPTION_MAXIMUM_PARAMETERS 15
    typedef struct _EXCEPTION_RECORD {
      DWORD ExceptionCode;
      DWORD ExceptionFlags;
      struct _EXCEPTION_RECORD *ExceptionRecord;
      PVOID ExceptionAddress;
      DWORD NumberParameters;
      ULONG_PTR ExceptionInformation[15];
    } EXCEPTION_RECORD;
    typedef EXCEPTION_RECORD *PEXCEPTION_RECORD;
    typedef struct _EXCEPTION_RECORD32 {
      DWORD ExceptionCode;
      DWORD ExceptionFlags;
      DWORD ExceptionRecord;
      DWORD ExceptionAddress;
      DWORD NumberParameters;
      DWORD ExceptionInformation[15];
    } EXCEPTION_RECORD32,*PEXCEPTION_RECORD32;
    typedef struct _EXCEPTION_RECORD64 {
      DWORD ExceptionCode;
      DWORD ExceptionFlags;
      DWORD64 ExceptionRecord;
      DWORD64 ExceptionAddress;
      DWORD NumberParameters;
      DWORD __unusedAlignment;
      DWORD64 ExceptionInformation[15];
    } EXCEPTION_RECORD64,*PEXCEPTION_RECORD64;
    typedef struct _EXCEPTION_POINTERS {
      PEXCEPTION_RECORD ExceptionRecord;
      PCONTEXT ContextRecord;
    } EXCEPTION_POINTERS,*PEXCEPTION_POINTERS;
    typedef PVOID PACCESS_TOKEN;
    typedef PVOID PSECURITY_DESCRIPTOR;
    typedef PVOID PSID;
    typedef PVOID PCLAIMS_BLOB;
    typedef DWORD ACCESS_MASK;
    typedef ACCESS_MASK *PACCESS_MASK;
#define DELETE (__MSABI_LONG(0x00010000))
#define READ_CONTROL (__MSABI_LONG(0x00020000))
#define WRITE_DAC (__MSABI_LONG(0x00040000))
#define WRITE_OWNER (__MSABI_LONG(0x00080000))
#define SYNCHRONIZE (__MSABI_LONG(0x00100000))
#define STANDARD_RIGHTS_REQUIRED (__MSABI_LONG(0x000F0000))
#define STANDARD_RIGHTS_READ (READ_CONTROL)
#define STANDARD_RIGHTS_WRITE (READ_CONTROL)
#define STANDARD_RIGHTS_EXECUTE (READ_CONTROL)
#define STANDARD_RIGHTS_ALL (__MSABI_LONG(0x001F0000))
#define SPECIFIC_RIGHTS_ALL (__MSABI_LONG(0x0000FFFF))
#define ACCESS_SYSTEM_SECURITY (__MSABI_LONG(0x01000000))
#define MAXIMUM_ALLOWED (__MSABI_LONG(0x02000000))
#define GENERIC_READ (__MSABI_LONG(0x80000000))
#define GENERIC_WRITE (__MSABI_LONG(0x40000000))
#define GENERIC_EXECUTE (__MSABI_LONG(0x20000000))
#define GENERIC_ALL (__MSABI_LONG(0x10000000))
    typedef struct _GENERIC_MAPPING {
      ACCESS_MASK GenericRead;
      ACCESS_MASK GenericWrite;
      ACCESS_MASK GenericExecute;
      ACCESS_MASK GenericAll;
    } GENERIC_MAPPING;
    typedef GENERIC_MAPPING *PGENERIC_MAPPING;
#pragma pack(push,4)
    typedef struct _LUID_AND_ATTRIBUTES {
      LUID Luid;
      DWORD Attributes;
    } LUID_AND_ATTRIBUTES,*PLUID_AND_ATTRIBUTES;
    typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[1];
    typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
#pragma pack(pop)
#define SID_IDENTIFIER_AUTHORITY_DEFINED 
    typedef struct _SID_IDENTIFIER_AUTHORITY {
      BYTE Value[6];
    } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY;
#define SID_DEFINED 
    typedef struct _SID {
      BYTE Revision;
      BYTE SubAuthorityCount;
      SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
      DWORD SubAuthority[1];
    } SID,*PISID;
#define SID_REVISION (1)
#define SID_MAX_SUB_AUTHORITIES (15)
#define SID_RECOMMENDED_SUB_AUTHORITIES (1)
#define SECURITY_MAX_SID_SIZE (sizeof (SID) - sizeof (DWORD) + (SID_MAX_SUB_AUTHORITIES *sizeof (DWORD)))
#define SID_HASH_SIZE 32
    typedef enum _SID_NAME_USE {
      SidTypeUser = 1,SidTypeGroup,SidTypeDomain,SidTypeAlias,SidTypeWellKnownGroup,SidTypeDeletedAccount,SidTypeInvalid,SidTypeUnknown,SidTypeComputer,SidTypeLabel,SidTypeLogonSession
    } SID_NAME_USE,*PSID_NAME_USE;
    typedef struct _SID_AND_ATTRIBUTES {
      PSID Sid;
      DWORD Attributes;
    } SID_AND_ATTRIBUTES,*PSID_AND_ATTRIBUTES;
    typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[1];
    typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
    typedef ULONG_PTR SID_HASH_ENTRY, *PSID_HASH_ENTRY;
    typedef struct _SID_AND_ATTRIBUTES_HASH {
      DWORD SidCount;
      PSID_AND_ATTRIBUTES SidAttr;
      SID_HASH_ENTRY Hash[32];
    } SID_AND_ATTRIBUTES_HASH, *PSID_AND_ATTRIBUTES_HASH;
#define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
#define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
#define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
#define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3}
#define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4}
#define SECURITY_RESOURCE_MANAGER_AUTHORITY {0,0,0,0,0,9}
#define SECURITY_NULL_RID (__MSABI_LONG(0x00000000))
#define SECURITY_WORLD_RID (__MSABI_LONG(0x00000000))
#define SECURITY_LOCAL_RID (__MSABI_LONG(0x00000000))
#define SECURITY_LOCAL_LOGON_RID (__MSABI_LONG(0x00000001))
#define SECURITY_CREATOR_OWNER_RID (__MSABI_LONG(0x00000000))
#define SECURITY_CREATOR_GROUP_RID (__MSABI_LONG(0x00000001))
#define SECURITY_CREATOR_OWNER_SERVER_RID (__MSABI_LONG(0x00000002))
#define SECURITY_CREATOR_GROUP_SERVER_RID (__MSABI_LONG(0x00000003))
#define SECURITY_CREATOR_OWNER_RIGHTS_RID (__MSABI_LONG(0x00000004))
#define SECURITY_NT_AUTHORITY {0,0,0,0,0,5}
#define SECURITY_DIALUP_RID (__MSABI_LONG(0x00000001))
#define SECURITY_NETWORK_RID (__MSABI_LONG(0x00000002))
#define SECURITY_BATCH_RID (__MSABI_LONG(0x00000003))
#define SECURITY_INTERACTIVE_RID (__MSABI_LONG(0x00000004))
#define SECURITY_LOGON_IDS_RID (__MSABI_LONG(0x00000005))
#define SECURITY_LOGON_IDS_RID_COUNT (__MSABI_LONG(3))
#define SECURITY_SERVICE_RID (__MSABI_LONG(0x00000006))
#define SECURITY_ANONYMOUS_LOGON_RID (__MSABI_LONG(0x00000007))
#define SECURITY_PROXY_RID (__MSABI_LONG(0x00000008))
#define SECURITY_ENTERPRISE_CONTROLLERS_RID (__MSABI_LONG(0x00000009))
#define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID
#define SECURITY_PRINCIPAL_SELF_RID (__MSABI_LONG(0x0000000A))
#define SECURITY_AUTHENTICATED_USER_RID (__MSABI_LONG(0x0000000B))
#define SECURITY_RESTRICTED_CODE_RID (__MSABI_LONG(0x0000000C))
#define SECURITY_TERMINAL_SERVER_RID (__MSABI_LONG(0x0000000D))
#define SECURITY_REMOTE_LOGON_RID (__MSABI_LONG(0x0000000E))
#define SECURITY_THIS_ORGANIZATION_RID (__MSABI_LONG(0x0000000F))
#define SECURITY_IUSER_RID (__MSABI_LONG(0x00000011))
#define SECURITY_LOCAL_SYSTEM_RID (__MSABI_LONG(0x00000012))
#define SECURITY_LOCAL_SERVICE_RID (__MSABI_LONG(0x00000013))
#define SECURITY_NETWORK_SERVICE_RID (__MSABI_LONG(0x00000014))
#define SECURITY_NT_NON_UNIQUE (__MSABI_LONG(0x00000015))
#define SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT (__MSABI_LONG(3))
#define SECURITY_ENTERPRISE_READONLY_CONTROLLERS_RID (__MSABI_LONG(0x00000016))
#define SECURITY_BUILTIN_DOMAIN_RID (__MSABI_LONG(0x00000020))
#define SECURITY_WRITE_RESTRICTED_CODE_RID (__MSABI_LONG(0x00000021))
#define SECURITY_PACKAGE_BASE_RID (__MSABI_LONG(0x00000040))
#define SECURITY_PACKAGE_RID_COUNT (__MSABI_LONG(2))
#define SECURITY_PACKAGE_NTLM_RID (__MSABI_LONG(0x0000000A))
#define SECURITY_PACKAGE_SCHANNEL_RID (__MSABI_LONG(0x0000000E))
#define SECURITY_PACKAGE_DIGEST_RID (__MSABI_LONG(0x00000015))
#define SECURITY_CRED_TYPE_BASE_RID (__MSABI_LONG(0x00000041))
#define SECURITY_CRED_TYPE_RID_COUNT (__MSABI_LONG(2))
#define SECURITY_CRED_TYPE_THIS_ORG_CERT_RID (__MSABI_LONG(0x00000001))
#define SECURITY_MIN_BASE_RID (__MSABI_LONG(0x00000050))
#define SECURITY_SERVICE_ID_BASE_RID (__MSABI_LONG(0x00000050))
#define SECURITY_SERVICE_ID_RID_COUNT (__MSABI_LONG(6))
#define SECURITY_RESERVED_ID_BASE_RID (__MSABI_LONG(0x00000051))
#define SECURITY_APPPOOL_ID_BASE_RID (__MSABI_LONG(0x00000052))
#define SECURITY_APPPOOL_ID_RID_COUNT (__MSABI_LONG(6))
#define SECURITY_VIRTUALSERVER_ID_BASE_RID (__MSABI_LONG(0x00000053))
#define SECURITY_VIRTUALSERVER_ID_RID_COUNT (__MSABI_LONG(6))
#define SECURITY_USERMODEDRIVERHOST_ID_BASE_RID (__MSABI_LONG(0x00000054))
#define SECURITY_USERMODEDRIVERHOST_ID_RID_COUNT (__MSABI_LONG(6))
#define SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_BASE_RID (__MSABI_LONG(0x00000055))
#define SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_RID_COUNT (__MSABI_LONG(6))
#define SECURITY_WMIHOST_ID_BASE_RID (__MSABI_LONG(0x00000056))
#define SECURITY_WMIHOST_ID_RID_COUNT (__MSABI_LONG(6))
#define SECURITY_TASK_ID_BASE_RID (__MSABI_LONG(0x00000057))
#define SECURITY_NFS_ID_BASE_RID (__MSABI_LONG(0x00000058))
#define SECURITY_COM_ID_BASE_RID (__MSABI_LONG(0x00000059))
#define SECURITY_WINDOW_MANAGER_BASE_RID (__MSABI_LONG(0x0000005a))
#define SECURITY_RDV_GFX_BASE_RID (__MSABI_LONG(0x0000005b))
#define SECURITY_DASHOST_ID_BASE_RID (__MSABI_LONG(0x0000005c))
#define SECURITY_DASHOST_ID_RID_COUNT (__MSABI_LONG(6))
#define SECURITY_VIRTUALACCOUNT_ID_RID_COUNT (__MSABI_LONG(6))
#define SECURITY_MAX_BASE_RID (__MSABI_LONG(0x0000006f))
#define SECURITY_MAX_ALWAYS_FILTERED (__MSABI_LONG(0x000003E7))
#define SECURITY_MIN_NEVER_FILTERED (__MSABI_LONG(0x000003E8))
#define SECURITY_OTHER_ORGANIZATION_RID (__MSABI_LONG(0x000003E8))
#define SECURITY_WINDOWSMOBILE_ID_BASE_RID (__MSABI_LONG(0x00000070))
#define DOMAIN_GROUP_RID_AUTHORIZATION_DATA_IS_COMPOUNDED (__MSABI_LONG(0x000001f0))
#define DOMAIN_GROUP_RID_AUTHORIZATION_DATA_CONTAINS_CLAIMS (__MSABI_LONG(0x000001f1))
#define DOMAIN_GROUP_RID_ENTERPRISE_READONLY_DOMAIN_CONTROLLERS (__MSABI_LONG(0x000001f2))
#define FOREST_USER_RID_MAX (__MSABI_LONG(0x000001F3))
#define DOMAIN_USER_RID_ADMIN (__MSABI_LONG(0x000001F4))
#define DOMAIN_USER_RID_GUEST (__MSABI_LONG(0x000001F5))
#define DOMAIN_USER_RID_KRBTGT (__MSABI_LONG(0x000001F6))
#define DOMAIN_USER_RID_MAX (__MSABI_LONG(0x000003E7))
#define DOMAIN_GROUP_RID_ADMINS (__MSABI_LONG(0x00000200))
#define DOMAIN_GROUP_RID_USERS (__MSABI_LONG(0x00000201))
#define DOMAIN_GROUP_RID_GUESTS (__MSABI_LONG(0x00000202))
#define DOMAIN_GROUP_RID_COMPUTERS (__MSABI_LONG(0x00000203))
#define DOMAIN_GROUP_RID_CONTROLLERS (__MSABI_LONG(0x00000204))
#define DOMAIN_GROUP_RID_CERT_ADMINS (__MSABI_LONG(0x00000205))
#define DOMAIN_GROUP_RID_SCHEMA_ADMINS (__MSABI_LONG(0x00000206))
#define DOMAIN_GROUP_RID_ENTERPRISE_ADMINS (__MSABI_LONG(0x00000207))
#define DOMAIN_GROUP_RID_POLICY_ADMINS (__MSABI_LONG(0x00000208))
#define DOMAIN_GROUP_RID_READONLY_CONTROLLERS (__MSABI_LONG(0x00000209))
#define DOMAIN_GROUP_RID_CLONEABLE_CONTROLLERS (__MSABI_LONG(0x0000020a))
#define DOMAIN_ALIAS_RID_ADMINS (__MSABI_LONG(0x00000220))
#define DOMAIN_ALIAS_RID_USERS (__MSABI_LONG(0x00000221))
#define DOMAIN_ALIAS_RID_GUESTS (__MSABI_LONG(0x00000222))
#define DOMAIN_ALIAS_RID_POWER_USERS (__MSABI_LONG(0x00000223))
#define DOMAIN_ALIAS_RID_ACCOUNT_OPS (__MSABI_LONG(0x00000224))
#define DOMAIN_ALIAS_RID_SYSTEM_OPS (__MSABI_LONG(0x00000225))
#define DOMAIN_ALIAS_RID_PRINT_OPS (__MSABI_LONG(0x00000226))
#define DOMAIN_ALIAS_RID_BACKUP_OPS (__MSABI_LONG(0x00000227))
#define DOMAIN_ALIAS_RID_REPLICATOR (__MSABI_LONG(0x00000228))
#define DOMAIN_ALIAS_RID_RAS_SERVERS (__MSABI_LONG(0x00000229))
#define DOMAIN_ALIAS_RID_PREW2KCOMPACCESS (__MSABI_LONG(0x0000022A))
#define DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS (__MSABI_LONG(0x0000022B))
#define DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS (__MSABI_LONG(0x0000022C))
#define DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS (__MSABI_LONG(0x0000022D))
#define DOMAIN_ALIAS_RID_MONITORING_USERS (__MSABI_LONG(0x0000022E))
#define DOMAIN_ALIAS_RID_LOGGING_USERS (__MSABI_LONG(0x0000022F))
#define DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS (__MSABI_LONG(0x00000230))
#define DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS (__MSABI_LONG(0x00000231))
#define DOMAIN_ALIAS_RID_DCOM_USERS (__MSABI_LONG(0x00000232))
#define DOMAIN_ALIAS_RID_IUSERS (__MSABI_LONG(0x00000238))
#define DOMAIN_ALIAS_RID_CRYPTO_OPERATORS (__MSABI_LONG(0x00000239))
#define DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP (__MSABI_LONG(0x0000023B))
#define DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP (__MSABI_LONG(0x0000023C))
#define DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP (__MSABI_LONG(0x0000023D))
#define DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP (__MSABI_LONG(0x0000023e))
#define DOMAIN_ALIAS_RID_RDS_REMOTE_ACCESS_SERVERS (__MSABI_LONG(0x0000023f))
#define DOMAIN_ALIAS_RID_RDS_ENDPOINT_SERVERS (__MSABI_LONG(0x00000240))
#define DOMAIN_ALIAS_RID_RDS_MANAGEMENT_SERVERS (__MSABI_LONG(0x00000241))
#define DOMAIN_ALIAS_RID_HYPER_V_ADMINS (__MSABI_LONG(0x00000242))
#define DOMAIN_ALIAS_RID_ACCESS_CONTROL_ASSISTANCE_OPS (__MSABI_LONG(0x00000243))
#define DOMAIN_ALIAS_RID_REMOTE_MANAGEMENT_USERS (__MSABI_LONG(0x00000244))
#define SECURITY_APP_PACKAGE_AUTHORITY {0, 0, 0, 0, 0, 15}
#define SECURITY_APP_PACKAGE_BASE_RID (__MSABI_LONG(0x00000002))
#define SECURITY_BUILTIN_APP_PACKAGE_RID_COUNT (__MSABI_LONG(2))
#define SECURITY_APP_PACKAGE_RID_COUNT (__MSABI_LONG(8))
#define SECURITY_CAPABILITY_BASE_RID (__MSABI_LONG(0x00000003))
#define SECURITY_BUILTIN_CAPABILITY_RID_COUNT (__MSABI_LONG(2))
#define SECURITY_CAPABILITY_RID_COUNT (__MSABI_LONG(5))
#define SECURITY_BUILTIN_PACKAGE_ANY_PACKAGE (__MSABI_LONG(0x00000001))
#define SECURITY_BUILTIN_PACKAGE_ANY_RESTRICTED_PACKAGE (__MSABI_LONG(0x00000002))
#define SECURITY_CAPABILITY_INTERNET_CLIENT (__MSABI_LONG(0x00000001))
#define SECURITY_CAPABILITY_INTERNET_CLIENT_SERVER (__MSABI_LONG(0x00000002))
#define SECURITY_CAPABILITY_PRIVATE_NETWORK_CLIENT_SERVER (__MSABI_LONG(0x00000003))
#define SECURITY_CAPABILITY_PICTURES_LIBRARY (__MSABI_LONG(0x00000004))
#define SECURITY_CAPABILITY_VIDEOS_LIBRARY (__MSABI_LONG(0x00000005))
#define SECURITY_CAPABILITY_MUSIC_LIBRARY (__MSABI_LONG(0x00000006))
#define SECURITY_CAPABILITY_DOCUMENTS_LIBRARY (__MSABI_LONG(0x00000007))
#define SECURITY_CAPABILITY_ENTERPRISE_AUTHENTICATION (__MSABI_LONG(0x00000008))
#define SECURITY_CAPABILITY_SHARED_USER_CERTIFICATES (__MSABI_LONG(0x00000009))
#define SECURITY_CAPABILITY_REMOVABLE_STORAGE (__MSABI_LONG(0x0000000a))
#define SECURITY_CAPABILITY_APPOINTMENTS (__MSABI_LONG(0x0000000b))
#define SECURITY_CAPABILITY_CONTACTS (__MSABI_LONG(0x0000000c))
#define SECURITY_CAPABILITY_INTERNET_EXPLORER (__MSABI_LONG(0x00001000))
#define SECURITY_MANDATORY_LABEL_AUTHORITY {0,0,0,0,0,16}
#define SECURITY_MANDATORY_UNTRUSTED_RID (__MSABI_LONG(0x00000000))
#define SECURITY_MANDATORY_LOW_RID (__MSABI_LONG(0x00001000))
#define SECURITY_MANDATORY_MEDIUM_RID (__MSABI_LONG(0x00002000))
#define SECURITY_MANDATORY_HIGH_RID (__MSABI_LONG(0x00003000))
#define SECURITY_MANDATORY_SYSTEM_RID (__MSABI_LONG(0x00004000))
#define SECURITY_MANDATORY_PROTECTED_PROCESS_RID (__MSABI_LONG(0x00005000))
#define SECURITY_MANDATORY_MAXIMUM_USER_RID SECURITY_MANDATORY_SYSTEM_RID
#define MANDATORY_LEVEL_TO_MANDATORY_RID(IL) (IL * 0x1000)
#define SECURITY_SCOPED_POLICY_ID_AUTHORITY {0, 0, 0, 0, 0, 17}
#define SECURITY_AUTHENTICATION_AUTHORITY {0, 0, 0, 0, 0, 18}
#define SECURITY_AUTHENTICATION_AUTHORITY_RID_COUNT (__MSABI_LONG(1))
#define SECURITY_AUTHENTICATION_AUTHORITY_ASSERTED_RID (__MSABI_LONG(0x00000001))
#define SECURITY_AUTHENTICATION_SERVICE_ASSERTED_RID (__MSABI_LONG(0x00000002))
#define SECURITY_TRUSTED_INSTALLER_RID1 956008885
#define SECURITY_TRUSTED_INSTALLER_RID2 3418522649
#define SECURITY_TRUSTED_INSTALLER_RID3 1831038044
#define SECURITY_TRUSTED_INSTALLER_RID4 1853292631
#define SECURITY_TRUSTED_INSTALLER_RID5 2271478464
    typedef enum {
      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
} WELL_KNOWN_SID_TYPE;
#define SYSTEM_LUID { 0x3e7, 0x0 }
#define ANONYMOUS_LOGON_LUID { 0x3e6, 0x0 }
#define LOCALSERVICE_LUID { 0x3e5, 0x0 }
#define NETWORKSERVICE_LUID { 0x3e4, 0x0 }
#define IUSER_LUID { 0x3e3, 0x0 }
#define SE_GROUP_MANDATORY (__MSABI_LONG(0x00000001))
#define SE_GROUP_ENABLED_BY_DEFAULT (__MSABI_LONG(0x00000002))
#define SE_GROUP_ENABLED (__MSABI_LONG(0x00000004))
#define SE_GROUP_OWNER (__MSABI_LONG(0x00000008))
#define SE_GROUP_USE_FOR_DENY_ONLY (__MSABI_LONG(0x00000010))
#define SE_GROUP_INTEGRITY (__MSABI_LONG(0x00000020))
#define SE_GROUP_INTEGRITY_ENABLED (__MSABI_LONG(0x00000040))
#define SE_GROUP_LOGON_ID (__MSABI_LONG(0xC0000000))
#define SE_GROUP_RESOURCE (__MSABI_LONG(0x20000000))
#define SE_GROUP_VALID_ATTRIBUTES (SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED | SE_GROUP_OWNER | SE_GROUP_USE_FOR_DENY_ONLY | SE_GROUP_LOGON_ID | SE_GROUP_RESOURCE | SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED)
#define ACL_REVISION (2)
#define ACL_REVISION_DS (4)
#define ACL_REVISION1 (1)
#define MIN_ACL_REVISION ACL_REVISION2
#define ACL_REVISION2 (2)
#define ACL_REVISION3 (3)
#define ACL_REVISION4 (4)
#define MAX_ACL_REVISION ACL_REVISION4
    typedef struct _ACL {
      BYTE AclRevision;
      BYTE Sbz1;
      WORD AclSize;
      WORD AceCount;
      WORD Sbz2;
    } ACL;
    typedef ACL *PACL;
    typedef struct _ACE_HEADER {
      BYTE AceType;
      BYTE AceFlags;
      WORD AceSize;
    } ACE_HEADER;
    typedef ACE_HEADER *PACE_HEADER;
#define ACCESS_MIN_MS_ACE_TYPE (0x0)
#define ACCESS_ALLOWED_ACE_TYPE (0x0)
#define ACCESS_DENIED_ACE_TYPE (0x1)
#define SYSTEM_AUDIT_ACE_TYPE (0x2)
#define SYSTEM_ALARM_ACE_TYPE (0x3)
#define ACCESS_MAX_MS_V2_ACE_TYPE (0x3)
#define ACCESS_ALLOWED_COMPOUND_ACE_TYPE (0x4)
#define ACCESS_MAX_MS_V3_ACE_TYPE (0x4)
#define ACCESS_MIN_MS_OBJECT_ACE_TYPE (0x5)
#define ACCESS_ALLOWED_OBJECT_ACE_TYPE (0x5)
#define ACCESS_DENIED_OBJECT_ACE_TYPE (0x6)
#define SYSTEM_AUDIT_OBJECT_ACE_TYPE (0x7)
#define SYSTEM_ALARM_OBJECT_ACE_TYPE (0x8)
#define ACCESS_MAX_MS_OBJECT_ACE_TYPE (0x8)
#define ACCESS_MAX_MS_V4_ACE_TYPE (0x8)
#define ACCESS_MAX_MS_ACE_TYPE (0x8)
#define ACCESS_ALLOWED_CALLBACK_ACE_TYPE (0x9)
#define ACCESS_DENIED_CALLBACK_ACE_TYPE (0xA)
#define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE (0xB)
#define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE (0xC)
#define SYSTEM_AUDIT_CALLBACK_ACE_TYPE (0xD)
#define SYSTEM_ALARM_CALLBACK_ACE_TYPE (0xE)
#define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE (0xF)
#define SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE (0x10)
#define SYSTEM_MANDATORY_LABEL_ACE_TYPE (0x11)
#define SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE (0x12)
#define SYSTEM_SCOPED_POLICY_ID_ACE_TYPE (0x13)
#define ACCESS_MAX_MS_V5_ACE_TYPE (0x13)
#define OBJECT_INHERIT_ACE (0x1)
#define CONTAINER_INHERIT_ACE (0x2)
#define NO_PROPAGATE_INHERIT_ACE (0x4)
#define INHERIT_ONLY_ACE (0x8)
#define INHERITED_ACE (0x10)
#define VALID_INHERIT_FLAGS (0x1F)
#define SUCCESSFUL_ACCESS_ACE_FLAG (0x40)
#define FAILED_ACCESS_ACE_FLAG (0x80)
    typedef struct _ACCESS_ALLOWED_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD SidStart;
    } ACCESS_ALLOWED_ACE;
    typedef ACCESS_ALLOWED_ACE *PACCESS_ALLOWED_ACE;
    typedef struct _ACCESS_DENIED_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD SidStart;
    } ACCESS_DENIED_ACE;
    typedef ACCESS_DENIED_ACE *PACCESS_DENIED_ACE;
    typedef struct _SYSTEM_AUDIT_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD SidStart;
    } SYSTEM_AUDIT_ACE;
    typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE;
    typedef struct _SYSTEM_ALARM_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD SidStart;
    } SYSTEM_ALARM_ACE;
    typedef SYSTEM_ALARM_ACE *PSYSTEM_ALARM_ACE;
    typedef struct _SYSTEM_RESOURCE_ATTRIBUTE_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD SidStart;
    } SYSTEM_RESOURCE_ATTRIBUTE_ACE,*PSYSTEM_RESOURCE_ATTRIBUTE_ACE;
    typedef struct _SYSTEM_SCOPED_POLICY_ID_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD SidStart;
    } SYSTEM_SCOPED_POLICY_ID_ACE,*PSYSTEM_SCOPED_POLICY_ID_ACE;
    typedef struct _SYSTEM_MANDATORY_LABEL_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD SidStart;
    } SYSTEM_MANDATORY_LABEL_ACE, *PSYSTEM_MANDATORY_LABEL_ACE;
#define SYSTEM_MANDATORY_LABEL_NO_WRITE_UP 0x1
#define SYSTEM_MANDATORY_LABEL_NO_READ_UP 0x2
#define SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP 0x4
#define SYSTEM_MANDATORY_LABEL_VALID_MASK (SYSTEM_MANDATORY_LABEL_NO_WRITE_UP | SYSTEM_MANDATORY_LABEL_NO_READ_UP | SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP)
    typedef struct _ACCESS_ALLOWED_OBJECT_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD Flags;
      GUID ObjectType;
      GUID InheritedObjectType;
      DWORD SidStart;
    } ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE;
    typedef struct _ACCESS_DENIED_OBJECT_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD Flags;
      GUID ObjectType;
      GUID InheritedObjectType;
      DWORD SidStart;
    } ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE;
    typedef struct _SYSTEM_AUDIT_OBJECT_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD Flags;
      GUID ObjectType;
      GUID InheritedObjectType;
      DWORD SidStart;
    } SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE;
    typedef struct _SYSTEM_ALARM_OBJECT_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD Flags;
      GUID ObjectType;
      GUID InheritedObjectType;
      DWORD SidStart;
    } SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE;
    typedef struct _ACCESS_ALLOWED_CALLBACK_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD SidStart;
    } ACCESS_ALLOWED_CALLBACK_ACE,*PACCESS_ALLOWED_CALLBACK_ACE;
    typedef struct _ACCESS_DENIED_CALLBACK_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD SidStart;
    } ACCESS_DENIED_CALLBACK_ACE,*PACCESS_DENIED_CALLBACK_ACE;
    typedef struct _SYSTEM_AUDIT_CALLBACK_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD SidStart;
    } SYSTEM_AUDIT_CALLBACK_ACE,*PSYSTEM_AUDIT_CALLBACK_ACE;
    typedef struct _SYSTEM_ALARM_CALLBACK_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD SidStart;
    } SYSTEM_ALARM_CALLBACK_ACE,*PSYSTEM_ALARM_CALLBACK_ACE;
    typedef struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD Flags;
      GUID ObjectType;
      GUID InheritedObjectType;
      DWORD SidStart;
    } ACCESS_ALLOWED_CALLBACK_OBJECT_ACE,*PACCESS_ALLOWED_CALLBACK_OBJECT_ACE;
    typedef struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD Flags;
      GUID ObjectType;
      GUID InheritedObjectType;
      DWORD SidStart;
    } ACCESS_DENIED_CALLBACK_OBJECT_ACE,*PACCESS_DENIED_CALLBACK_OBJECT_ACE;
    typedef struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD Flags;
      GUID ObjectType;
      GUID InheritedObjectType;
      DWORD SidStart;
    } SYSTEM_AUDIT_CALLBACK_OBJECT_ACE,*PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE;
    typedef struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE {
      ACE_HEADER Header;
      ACCESS_MASK Mask;
      DWORD Flags;
      GUID ObjectType;
      GUID InheritedObjectType;
      DWORD SidStart;
    } SYSTEM_ALARM_CALLBACK_OBJECT_ACE,*PSYSTEM_ALARM_CALLBACK_OBJECT_ACE;
#define ACE_OBJECT_TYPE_PRESENT 0x1
#define ACE_INHERITED_OBJECT_TYPE_PRESENT 0x2
    typedef enum _ACL_INFORMATION_CLASS {
      AclRevisionInformation = 1,AclSizeInformation
    } ACL_INFORMATION_CLASS;
    typedef struct _ACL_REVISION_INFORMATION {
      DWORD AclRevision;
    } ACL_REVISION_INFORMATION;
    typedef ACL_REVISION_INFORMATION *PACL_REVISION_INFORMATION;
    typedef struct _ACL_SIZE_INFORMATION {
      DWORD AceCount;
      DWORD AclBytesInUse;
      DWORD AclBytesFree;
    } ACL_SIZE_INFORMATION;
    typedef ACL_SIZE_INFORMATION *PACL_SIZE_INFORMATION;
#define SECURITY_DESCRIPTOR_REVISION (1)
#define SECURITY_DESCRIPTOR_REVISION1 (1)
#define SECURITY_DESCRIPTOR_MIN_LENGTH (sizeof(SECURITY_DESCRIPTOR))
    typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL;
#define SE_OWNER_DEFAULTED (0x0001)
#define SE_GROUP_DEFAULTED (0x0002)
#define SE_DACL_PRESENT (0x0004)
#define SE_DACL_DEFAULTED (0x0008)
#define SE_SACL_PRESENT (0x0010)
#define SE_SACL_DEFAULTED (0x0020)
#define SE_DACL_AUTO_INHERIT_REQ (0x0100)
#define SE_SACL_AUTO_INHERIT_REQ (0x0200)
#define SE_DACL_AUTO_INHERITED (0x0400)
#define SE_SACL_AUTO_INHERITED (0x0800)
#define SE_DACL_PROTECTED (0x1000)
#define SE_SACL_PROTECTED (0x2000)
#define SE_RM_CONTROL_VALID (0x4000)
#define SE_SELF_RELATIVE (0x8000)
    typedef struct _SECURITY_DESCRIPTOR_RELATIVE {
      BYTE Revision;
      BYTE Sbz1;
      SECURITY_DESCRIPTOR_CONTROL Control;
      DWORD Owner;
      DWORD Group;
      DWORD Sacl;
      DWORD Dacl;
    } SECURITY_DESCRIPTOR_RELATIVE,*PISECURITY_DESCRIPTOR_RELATIVE;
    typedef struct _SECURITY_DESCRIPTOR {
      BYTE Revision;
      BYTE Sbz1;
      SECURITY_DESCRIPTOR_CONTROL Control;
      PSID Owner;
      PSID Group;
      PACL Sacl;
      PACL Dacl;
    } SECURITY_DESCRIPTOR,*PISECURITY_DESCRIPTOR;
    typedef struct _OBJECT_TYPE_LIST {
      WORD Level;
      WORD Sbz;
      GUID *ObjectType;
    } OBJECT_TYPE_LIST,*POBJECT_TYPE_LIST;
#define ACCESS_OBJECT_GUID 0
#define ACCESS_PROPERTY_SET_GUID 1
#define ACCESS_PROPERTY_GUID 2
#define ACCESS_MAX_LEVEL 4
    typedef enum _AUDIT_EVENT_TYPE {
      AuditEventObjectAccess,AuditEventDirectoryServiceAccess
    } AUDIT_EVENT_TYPE,*PAUDIT_EVENT_TYPE;
#define AUDIT_ALLOW_NO_PRIVILEGE 0x1
#define ACCESS_DS_SOURCE_A "DS"
#define ACCESS_DS_SOURCE_W L"DS"
#define ACCESS_DS_OBJECT_TYPE_NAME_A "Directory Service Object"
#define ACCESS_DS_OBJECT_TYPE_NAME_W L"Directory Service Object"
#define SE_PRIVILEGE_ENABLED_BY_DEFAULT (__MSABI_LONG(0x00000001))
#define SE_PRIVILEGE_ENABLED (__MSABI_LONG(0x00000002))
#define SE_PRIVILEGE_REMOVED (0X00000004L)
#define SE_PRIVILEGE_USED_FOR_ACCESS (__MSABI_LONG(0x80000000))
#define SE_PRIVILEGE_VALID_ATTRIBUTES (SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS)
#define PRIVILEGE_SET_ALL_NECESSARY (1)
    typedef struct _PRIVILEGE_SET {
      DWORD PrivilegeCount;
      DWORD Control;
      LUID_AND_ATTRIBUTES Privilege[1];
    } PRIVILEGE_SET,*PPRIVILEGE_SET;
#define ACCESS_REASON_TYPE_MASK 0x00ff0000
#define ACCESS_REASON_DATA_MASK 0x0000ffff
#define ACCESS_REASON_STAGING_MASK 0x80000000
#define ACCESS_REASON_EXDATA_MASK 0x7f000000
    typedef enum _ACCESS_REASON_TYPE {
      AccessReasonNone = 0x00000000,
      AccessReasonAllowedAce = 0x00010000,
      AccessReasonDeniedAce = 0x00020000,
      AccessReasonAllowedParentAce = 0x00030000,
      AccessReasonDeniedParentAce = 0x00040000,
      AccessReasonNotGrantedByCape = 0x00050000,
      AccessReasonNotGrantedByParentCape = 0x00060000,
      AccessReasonNotGrantedToAppContainer = 0x00070000,
      AccessReasonMissingPrivilege = 0x00100000,
      AccessReasonFromPrivilege = 0x00200000,
      AccessReasonIntegrityLevel = 0x00300000,
      AccessReasonOwnership = 0x00400000,
      AccessReasonNullDacl = 0x00500000,
      AccessReasonEmptyDacl = 0x00600000,
      AccessReasonNoSD = 0x00700000,
      AccessReasonNoGrant = 0x00800000
    } ACCESS_REASON_TYPE;
    typedef DWORD ACCESS_REASON;
    typedef struct _ACCESS_REASONS {
      ACCESS_REASON Data[32];
    } ACCESS_REASONS,*PACCESS_REASONS;
#define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001
#define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002
#define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003
    typedef struct _SE_SECURITY_DESCRIPTOR {
      DWORD Size;
      DWORD Flags;
      PSECURITY_DESCRIPTOR SecurityDescriptor;
    } SE_SECURITY_DESCRIPTOR,*PSE_SECURITY_DESCRIPTOR;
    typedef struct _SE_ACCESS_REQUEST {
      DWORD Size;
      PSE_SECURITY_DESCRIPTOR SeSecurityDescriptor;
      ACCESS_MASK DesiredAccess;
      ACCESS_MASK PreviouslyGrantedAccess;
      PSID PrincipalSelfSid;
      PGENERIC_MAPPING GenericMapping;
      DWORD ObjectTypeListCount;
      POBJECT_TYPE_LIST ObjectTypeList;
    } SE_ACCESS_REQUEST,*PSE_ACCESS_REQUEST;
    typedef struct _SE_ACCESS_REPLY {
      DWORD Size;
      DWORD ResultListCount;
      PACCESS_MASK GrantedAccess;
      PDWORD AccessStatus;
      PACCESS_REASONS AccessReason;
      PPRIVILEGE_SET *Privileges;
    } SE_ACCESS_REPLY,*PSE_ACCESS_REPLY;
#define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege")
#define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege")
#define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege")
#define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege")
#define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege")
#define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege")
#define SE_TCB_NAME TEXT("SeTcbPrivilege")
#define SE_SECURITY_NAME TEXT("SeSecurityPrivilege")
#define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege")
#define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege")
#define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege")
#define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege")
#define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege")
#define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege")
#define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege")
#define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege")
#define SE_BACKUP_NAME TEXT("SeBackupPrivilege")
#define SE_RESTORE_NAME TEXT("SeRestorePrivilege")
#define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege")
#define SE_DEBUG_NAME TEXT("SeDebugPrivilege")
#define SE_AUDIT_NAME TEXT("SeAuditPrivilege")
#define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege")
#define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege")
#define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege")
#define SE_UNDOCK_NAME TEXT("SeUndockPrivilege")
#define SE_SYNC_AGENT_NAME TEXT("SeSyncAgentPrivilege")
#define SE_ENABLE_DELEGATION_NAME TEXT("SeEnableDelegationPrivilege")
#define SE_MANAGE_VOLUME_NAME TEXT("SeManageVolumePrivilege")
#define SE_IMPERSONATE_NAME TEXT("SeImpersonatePrivilege")
#define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege")
#define SE_TRUSTED_CREDMAN_ACCESS_NAME TEXT("SeTrustedCredManAccessPrivilege")
#define SE_RELABEL_NAME TEXT("SeRelabelPrivilege")
#define SE_INC_WORKING_SET_NAME TEXT("SeIncreaseWorkingSetPrivilege")
#define SE_TIME_ZONE_NAME TEXT("SeTimeZonePrivilege")
#define SE_CREATE_SYMBOLIC_LINK_NAME TEXT("SeCreateSymbolicLinkPrivilege")
    typedef enum _SECURITY_IMPERSONATION_LEVEL {
      SecurityAnonymous,SecurityIdentification,SecurityImpersonation,SecurityDelegation
    } SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL;
#define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation
#define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous
#define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation
#define VALID_IMPERSONATION_LEVEL(L) (((L) >= SECURITY_MIN_IMPERSONATION_LEVEL) && ((L) <= SECURITY_MAX_IMPERSONATION_LEVEL))
#define TOKEN_ASSIGN_PRIMARY (0x0001)
#define TOKEN_DUPLICATE (0x0002)
#define TOKEN_IMPERSONATE (0x0004)
#define TOKEN_QUERY (0x0008)
#define TOKEN_QUERY_SOURCE (0x0010)
#define TOKEN_ADJUST_PRIVILEGES (0x0020)
#define TOKEN_ADJUST_GROUPS (0x0040)
#define TOKEN_ADJUST_DEFAULT (0x0080)
#define TOKEN_ADJUST_SESSIONID (0x0100)
#define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT)
#define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID)
#define TOKEN_READ (STANDARD_RIGHTS_READ | TOKEN_QUERY)
#define TOKEN_WRITE (STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT)
#define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE)
    typedef enum _TOKEN_TYPE {
      TokenPrimary = 1,TokenImpersonation
    } TOKEN_TYPE;
    typedef TOKEN_TYPE *PTOKEN_TYPE;
    typedef enum _TOKEN_ELEVATION_TYPE {
      TokenElevationTypeDefault = 1,
      TokenElevationTypeFull,
      TokenElevationTypeLimited
    } TOKEN_ELEVATION_TYPE, *PTOKEN_ELEVATION_TYPE;
    typedef enum _TOKEN_INFORMATION_CLASS {
      TokenUser = 1,
      TokenGroups,
      TokenPrivileges,
      TokenOwner,
      TokenPrimaryGroup,
      TokenDefaultDacl,
      TokenSource,
      TokenType,
      TokenImpersonationLevel,
      TokenStatistics,
      TokenRestrictedSids,
      TokenSessionId,
      TokenGroupsAndPrivileges,
      TokenSessionReference,
      TokenSandBoxInert,
      TokenAuditPolicy,
      TokenOrigin,
      TokenElevationType,
      TokenLinkedToken,
      TokenElevation,
      TokenHasRestrictions,
      TokenAccessInformation,
      TokenVirtualizationAllowed,
      TokenVirtualizationEnabled,
      TokenIntegrityLevel,
      TokenUIAccess,
      TokenMandatoryPolicy,
      TokenLogonSid,
      TokenIsAppContainer,
      TokenCapabilities,
      TokenAppContainerSid,
      TokenAppContainerNumber,
      TokenUserClaimAttributes,
      TokenDeviceClaimAttributes,
      TokenRestrictedUserClaimAttributes,
      TokenRestrictedDeviceClaimAttributes,
      TokenDeviceGroups,
      TokenRestrictedDeviceGroups,
      TokenSecurityAttributes,
      TokenIsRestricted,
      MaxTokenInfoClass
    } TOKEN_INFORMATION_CLASS,*PTOKEN_INFORMATION_CLASS;
    typedef struct _TOKEN_USER {
      SID_AND_ATTRIBUTES User;
    } TOKEN_USER,*PTOKEN_USER;
    typedef struct _TOKEN_GROUPS {
      DWORD GroupCount;
      SID_AND_ATTRIBUTES Groups[1];
    } TOKEN_GROUPS,*PTOKEN_GROUPS;
    typedef struct _TOKEN_PRIVILEGES {
      DWORD PrivilegeCount;
      LUID_AND_ATTRIBUTES Privileges[1];
    } TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES;
    typedef struct _TOKEN_OWNER {
      PSID Owner;
    } TOKEN_OWNER,*PTOKEN_OWNER;
    typedef struct _TOKEN_PRIMARY_GROUP {
      PSID PrimaryGroup;
    } TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP;
    typedef struct _TOKEN_DEFAULT_DACL {
      PACL DefaultDacl;
    } TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL;
    typedef struct _TOKEN_USER_CLAIMS {
      PCLAIMS_BLOB UserClaims;
    } TOKEN_USER_CLAIMS,*PTOKEN_USER_CLAIMS;
    typedef struct _TOKEN_DEVICE_CLAIMS {
      PCLAIMS_BLOB DeviceClaims;
    } TOKEN_DEVICE_CLAIMS,*PTOKEN_DEVICE_CLAIMS;
    typedef struct _TOKEN_GROUPS_AND_PRIVILEGES {
      DWORD SidCount;
      DWORD SidLength;
      PSID_AND_ATTRIBUTES Sids;
      DWORD RestrictedSidCount;
      DWORD RestrictedSidLength;
      PSID_AND_ATTRIBUTES RestrictedSids;
      DWORD PrivilegeCount;
      DWORD PrivilegeLength;
      PLUID_AND_ATTRIBUTES Privileges;
      LUID AuthenticationId;
    } TOKEN_GROUPS_AND_PRIVILEGES,*PTOKEN_GROUPS_AND_PRIVILEGES;
    typedef struct _TOKEN_LINKED_TOKEN {
      HANDLE LinkedToken;
    } TOKEN_LINKED_TOKEN,*PTOKEN_LINKED_TOKEN;
    typedef struct _TOKEN_ELEVATION {
      DWORD TokenIsElevated;
    } TOKEN_ELEVATION,*PTOKEN_ELEVATION;
    typedef struct _TOKEN_MANDATORY_LABEL {
      SID_AND_ATTRIBUTES Label;
    } TOKEN_MANDATORY_LABEL,*PTOKEN_MANDATORY_LABEL;
#define TOKEN_MANDATORY_POLICY_OFF 0x0
#define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1
#define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2
#define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN)
    typedef struct _TOKEN_MANDATORY_POLICY {
      DWORD Policy;
    } TOKEN_MANDATORY_POLICY,*PTOKEN_MANDATORY_POLICY;
    typedef struct _TOKEN_ACCESS_INFORMATION {
      PSID_AND_ATTRIBUTES_HASH SidHash;
      PSID_AND_ATTRIBUTES_HASH RestrictedSidHash;
      PTOKEN_PRIVILEGES Privileges;
      LUID AuthenticationId;
      TOKEN_TYPE TokenType;
      SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
      TOKEN_MANDATORY_POLICY MandatoryPolicy;
      DWORD Flags;
      DWORD AppContainerNumber;
      PSID PackageSid;
      PSID_AND_ATTRIBUTES_HASH CapabilitiesHash;
    } TOKEN_ACCESS_INFORMATION,*PTOKEN_ACCESS_INFORMATION;
#define POLICY_AUDIT_SUBCATEGORY_COUNT (56)
    typedef struct _TOKEN_AUDIT_POLICY {
      UCHAR PerUserPolicy[(((56)) >> 1) + 1];
    } TOKEN_AUDIT_POLICY, *PTOKEN_AUDIT_POLICY;
#define TOKEN_SOURCE_LENGTH 8
    typedef struct _TOKEN_SOURCE {
      CHAR SourceName[8];
      LUID SourceIdentifier;
    } TOKEN_SOURCE,*PTOKEN_SOURCE;
    typedef struct _TOKEN_STATISTICS {
      LUID TokenId;
      LUID AuthenticationId;
      LARGE_INTEGER ExpirationTime;
      TOKEN_TYPE TokenType;
      SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
      DWORD DynamicCharged;
      DWORD DynamicAvailable;
      DWORD GroupCount;
      DWORD PrivilegeCount;
      LUID ModifiedId;
    } TOKEN_STATISTICS,*PTOKEN_STATISTICS;
    typedef struct _TOKEN_CONTROL {
      LUID TokenId;
      LUID AuthenticationId;
      LUID ModifiedId;
      TOKEN_SOURCE TokenSource;
    } TOKEN_CONTROL,*PTOKEN_CONTROL;
    typedef struct _TOKEN_ORIGIN {
      LUID OriginatingLogonSession;
    } TOKEN_ORIGIN,*PTOKEN_ORIGIN;
    typedef enum _MANDATORY_LEVEL {
      MandatoryLevelUntrusted = 0,
      MandatoryLevelLow,
      MandatoryLevelMedium,
      MandatoryLevelHigh,
      MandatoryLevelSystem,
      MandatoryLevelSecureProcess,
      MandatoryLevelCount
    } MANDATORY_LEVEL,*PMANDATORY_LEVEL;
    typedef struct _TOKEN_APPCONTAINER_INFORMATION {
      PSID TokenAppContainer;
    } TOKEN_APPCONTAINER_INFORMATION,*PTOKEN_APPCONTAINER_INFORMATION;
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_INVALID 0x00
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_INT64 0x01
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_UINT64 0x02
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_STRING 0x03
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_FQBN 0x04
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_SID 0x05
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_BOOLEAN 0x06
    typedef struct _CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE {
      DWORD64 Version;
      PWSTR Name;
    } CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE,*PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE;
    typedef struct _CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE {
      PVOID pValue;
      DWORD ValueLength;
    } CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE, *PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE;
#define CLAIM_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING 0x10
#define CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE 0x0001
#define CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE 0x0002
#define CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY 0x0004
#define CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT 0x0008
#define CLAIM_SECURITY_ATTRIBUTE_DISABLED 0x0010
#define CLAIM_SECURITY_ATTRIBUTE_MANDATORY 0x0020
#define CLAIM_SECURITY_ATTRIBUTE_VALID_FLAGS (CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE | CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE | CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY | CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT | CLAIM_SECURITY_ATTRIBUTE_DISABLED | CLAIM_SECURITY_ATTRIBUTE_MANDATORY)
#define CLAIM_SECURITY_ATTRIBUTE_CUSTOM_FLAGS 0xffff0000
    typedef struct _CLAIM_SECURITY_ATTRIBUTE_V1 {
      PWSTR Name;
      WORD ValueType;
      WORD Reserved;
      DWORD Flags;
      DWORD ValueCount;
      union {
 PLONG64 pInt64;
 PDWORD64 pUint64;
 PWSTR *ppString;
 PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE pFqbn;
 PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE pOctetString;
      } Values;
    } CLAIM_SECURITY_ATTRIBUTE_V1,*PCLAIM_SECURITY_ATTRIBUTE_V1;
    typedef struct _CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 {
      DWORD Name;
      WORD ValueType;
      WORD Reserved;
      DWORD Flags;
      DWORD ValueCount;
      union {
 DWORD pInt64[1];
 DWORD pUint64[1];
 DWORD ppString[1];
 DWORD pFqbn[1];
 DWORD pOctetString[1];
      } Values;
    } CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1,*PCLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1;
#define CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1 1
#define CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1
    typedef struct _CLAIM_SECURITY_ATTRIBUTES_INFORMATION {
      WORD Version;
      WORD Reserved;
      DWORD AttributeCount;
      union {
 PCLAIM_SECURITY_ATTRIBUTE_V1 pAttributeV1;
      } Attribute;
    } CLAIM_SECURITY_ATTRIBUTES_INFORMATION,*PCLAIM_SECURITY_ATTRIBUTES_INFORMATION;
#define SECURITY_DYNAMIC_TRACKING (TRUE)
#define SECURITY_STATIC_TRACKING (FALSE)
    typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE;
    typedef struct _SECURITY_QUALITY_OF_SERVICE {
      DWORD Length;
      SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
      SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
      BOOLEAN EffectiveOnly;
    } SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE;
    typedef struct _SE_IMPERSONATION_STATE {
      PACCESS_TOKEN Token;
      BOOLEAN CopyOnOpen;
      BOOLEAN EffectiveOnly;
      SECURITY_IMPERSONATION_LEVEL Level;
    } SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE;
#define DISABLE_MAX_PRIVILEGE 0x1
#define SANDBOX_INERT 0x2
#define LUA_TOKEN 0x4
#define WRITE_RESTRICTED 0x8
    typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION;
#define OWNER_SECURITY_INFORMATION (__MSABI_LONG(0x00000001))
#define GROUP_SECURITY_INFORMATION (__MSABI_LONG(0x00000002))
#define DACL_SECURITY_INFORMATION (__MSABI_LONG(0x00000004))
#define SACL_SECURITY_INFORMATION (__MSABI_LONG(0x00000008))
#define LABEL_SECURITY_INFORMATION (__MSABI_LONG(0x00000010))
#define ATTRIBUTE_SECURITY_INFORMATION (__MSABI_LONG(0x00000020))
#define SCOPE_SECURITY_INFORMATION (__MSABI_LONG(0x00000040))
#define BACKUP_SECURITY_INFORMATION (__MSABI_LONG(0x00010000))
#define PROTECTED_DACL_SECURITY_INFORMATION (__MSABI_LONG(0x80000000))
#define PROTECTED_SACL_SECURITY_INFORMATION (__MSABI_LONG(0x40000000))
#define UNPROTECTED_DACL_SECURITY_INFORMATION (__MSABI_LONG(0x20000000))
#define UNPROTECTED_SACL_SECURITY_INFORMATION (__MSABI_LONG(0x10000000))
    typedef enum _SE_LEARNING_MODE_DATA_TYPE {
      SeLearningModeInvalidType = 0,
      SeLearningModeSettings,
      SeLearningModeMax
    } SE_LEARNING_MODE_DATA_TYPE;
#define SE_LEARNING_MODE_FLAG_PERMISSIVE 0x00000001
    typedef struct _SECURITY_CAPABILITIES {
      PSID AppContainerSid;
      PSID_AND_ATTRIBUTES Capabilities;
      DWORD CapabilityCount;
      DWORD Reserved;
    } SECURITY_CAPABILITIES,*PSECURITY_CAPABILITIES,*LPSECURITY_CAPABILITIES;
#define PROCESS_TERMINATE (0x0001)
#define PROCESS_CREATE_THREAD (0x0002)
#define PROCESS_SET_SESSIONID (0x0004)
#define PROCESS_VM_OPERATION (0x0008)
#define PROCESS_VM_READ (0x0010)
#define PROCESS_VM_WRITE (0x0020)
#define PROCESS_DUP_HANDLE (0x0040)
#define PROCESS_CREATE_PROCESS (0x0080)
#define PROCESS_SET_QUOTA (0x0100)
#define PROCESS_SET_INFORMATION (0x0200)
#define PROCESS_QUERY_INFORMATION (0x0400)
#define PROCESS_SUSPEND_RESUME (0x0800)
#define PROCESS_QUERY_LIMITED_INFORMATION (0x1000)
#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xffff)
#define MAXIMUM_PROC_PER_GROUP 32
#define MAXIMUM_PROCESSORS MAXIMUM_PROC_PER_GROUP
#define THREAD_TERMINATE (0x0001)
#define THREAD_SUSPEND_RESUME (0x0002)
#define THREAD_GET_CONTEXT (0x0008)
#define THREAD_SET_CONTEXT (0x0010)
#define THREAD_SET_INFORMATION (0x0020)
#define THREAD_QUERY_INFORMATION (0x0040)
#define THREAD_SET_THREAD_TOKEN (0x0080)
#define THREAD_IMPERSONATE (0x0100)
#define THREAD_DIRECT_IMPERSONATION (0x0200)
#define THREAD_SET_LIMITED_INFORMATION (0x0400)
#define THREAD_QUERY_LIMITED_INFORMATION (0x0800)
#define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xffff)
#define JOB_OBJECT_ASSIGN_PROCESS (0x0001)
#define JOB_OBJECT_SET_ATTRIBUTES (0x0002)
#define JOB_OBJECT_QUERY (0x0004)
#define JOB_OBJECT_TERMINATE (0x0008)
#define JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010)
#define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1F)
    typedef struct _JOB_SET_ARRAY {
      HANDLE JobHandle;
      DWORD MemberLevel;
      DWORD Flags;
    } JOB_SET_ARRAY,*PJOB_SET_ARRAY;
#define FLS_MAXIMUM_AVAILABLE 128
#define TLS_MINIMUM_AVAILABLE 64
    typedef struct _EXCEPTION_REGISTRATION_RECORD {
      __extension__ union {
        struct _EXCEPTION_REGISTRATION_RECORD *Next;
        struct _EXCEPTION_REGISTRATION_RECORD *prev;
      };
      __extension__ union {
        PEXCEPTION_ROUTINE Handler;
        PEXCEPTION_ROUTINE handler;
      };
    } EXCEPTION_REGISTRATION_RECORD;
    typedef EXCEPTION_REGISTRATION_RECORD *PEXCEPTION_REGISTRATION_RECORD;
    typedef EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION;
    typedef PEXCEPTION_REGISTRATION_RECORD PEXCEPTION_REGISTRATION;
#define _NT_TIB_DEFINED 
    __extension__ typedef struct _NT_TIB {
      struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
      PVOID StackBase;
      PVOID StackLimit;
      PVOID SubSystemTib;
      __extension__ union {
 PVOID FiberData;
 DWORD Version;
      };
      PVOID ArbitraryUserPointer;
      struct _NT_TIB *Self;
    } NT_TIB;
    typedef NT_TIB *PNT_TIB;
    __extension__ typedef struct _NT_TIB32 {
      DWORD ExceptionList;
      DWORD StackBase;
      DWORD StackLimit;
      DWORD SubSystemTib;
      __extension__ union {
 DWORD FiberData;
 DWORD Version;
      };
      DWORD ArbitraryUserPointer;
      DWORD Self;
    } NT_TIB32,*PNT_TIB32;
    __extension__ typedef struct _NT_TIB64 {
      DWORD64 ExceptionList;
      DWORD64 StackBase;
      DWORD64 StackLimit;
      DWORD64 SubSystemTib;
      __extension__ union {
 DWORD64 FiberData;
 DWORD Version;
      };
      DWORD64 ArbitraryUserPointer;
      DWORD64 Self;
    } NT_TIB64,*PNT_TIB64;
#define THREAD_BASE_PRIORITY_LOWRT 15
#define THREAD_BASE_PRIORITY_MAX 2
#define THREAD_BASE_PRIORITY_MIN (-2)
#define THREAD_BASE_PRIORITY_IDLE (-15)
    typedef struct _UMS_CREATE_THREAD_ATTRIBUTES {
      DWORD UmsVersion;
      PVOID UmsContext;
      PVOID UmsCompletionList;
    } UMS_CREATE_THREAD_ATTRIBUTES,*PUMS_CREATE_THREAD_ATTRIBUTES;
#define COMPONENT_KTM 0x01
#define COMPONENT_VALID_FLAGS COMPONENT_KTM
    typedef struct _COMPONENT_FILTER {
      DWORD ComponentFlags;
    } COMPONENT_FILTER,*PCOMPONENT_FILTER;
#define DYNAMIC_EH_CONTINUATION_TARGET_ADD 0x00000001
#define DYNAMIC_EH_CONTINUATION_TARGET_PROCESSED 0x00000002
    typedef struct _PROCESS_DYNAMIC_EH_CONTINUATION_TARGET {
      ULONG_PTR TargetAddress;
      ULONG_PTR Flags;
    } PROCESS_DYNAMIC_EH_CONTINUATION_TARGET,*PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET;
    typedef struct _PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION {
      WORD NumberOfTargets;
      WORD Reserved;
      DWORD Reserved2;
      PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET Targets;
    } PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION,*PPROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION;
#define DYNAMIC_ENFORCED_ADDRESS_RANGE_ADD 0x00000001
#define DYNAMIC_ENFORCED_ADDRESS_RANGE_PROCESSED 0x00000002
    typedef struct _PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE {
      ULONG_PTR BaseAddress;
      SIZE_T Size;
      DWORD Flags;
    } PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE,*PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE;
    typedef struct _PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION {
      WORD NumberOfRanges;
      WORD Reserved;
      DWORD Reserved2;
      PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE Ranges;
    } PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION,*PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION;
    typedef struct _QUOTA_LIMITS {
      SIZE_T PagedPoolLimit;
      SIZE_T NonPagedPoolLimit;
      SIZE_T MinimumWorkingSetSize;
      SIZE_T MaximumWorkingSetSize;
      SIZE_T PagefileLimit;
      LARGE_INTEGER TimeLimit;
    } QUOTA_LIMITS,*PQUOTA_LIMITS;
#define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001
#define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002
#define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004
#define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008
#define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010
    typedef union _RATE_QUOTA_LIMIT {
      DWORD RateData;
      __extension__ struct {
        DWORD RatePercent : 7;
        DWORD Reserved0 : 25;
      } ;
    } RATE_QUOTA_LIMIT, *PRATE_QUOTA_LIMIT;
    typedef struct _QUOTA_LIMITS_EX {
      SIZE_T PagedPoolLimit;
      SIZE_T NonPagedPoolLimit;
      SIZE_T MinimumWorkingSetSize;
      SIZE_T MaximumWorkingSetSize;
      SIZE_T PagefileLimit;
      LARGE_INTEGER TimeLimit;
      SIZE_T WorkingSetLimit;
      SIZE_T Reserved2;
      SIZE_T Reserved3;
      SIZE_T Reserved4;
      DWORD Flags;
      RATE_QUOTA_LIMIT CpuRateLimit;
    } QUOTA_LIMITS_EX,*PQUOTA_LIMITS_EX;
    typedef struct _IO_COUNTERS {
      ULONGLONG ReadOperationCount;
      ULONGLONG WriteOperationCount;
      ULONGLONG OtherOperationCount;
      ULONGLONG ReadTransferCount;
      ULONGLONG WriteTransferCount;
      ULONGLONG OtherTransferCount;
    } IO_COUNTERS;
    typedef IO_COUNTERS *PIO_COUNTERS;
#define MAX_HW_COUNTERS 16
#define THREAD_PROFILING_FLAG_DISPATCH 0x1
    typedef enum _HARDWARE_COUNTER_TYPE {
      PMCCounter,
      MaxHardwareCounterType
    } HARDWARE_COUNTER_TYPE, *PHARDWARE_COUNTER_TYPE;
    typedef enum _PROCESS_MITIGATION_POLICY {
      ProcessDEPPolicy,
      ProcessASLRPolicy,
      ProcessDynamicCodePolicy,
      ProcessStrictHandleCheckPolicy,
      ProcessSystemCallDisablePolicy,
      ProcessMitigationOptionsMask,
      ProcessExtensionPointDisablePolicy,
      ProcessControlFlowGuardPolicy,
      ProcessSignaturePolicy,
      ProcessFontDisablePolicy,
      ProcessImageLoadPolicy,
      ProcessSystemCallFilterPolicy,
      ProcessPayloadRestrictionPolicy,
      ProcessChildProcessPolicy,
      ProcessSideChannelIsolationPolicy,
      ProcessUserShadowStackPolicy,
      ProcessRedirectionTrustPolicy,
      MaxProcessMitigationPolicy
    } PROCESS_MITIGATION_POLICY,*PPROCESS_MITIGATION_POLICY;
    typedef struct _PROCESS_MITIGATION_ASLR_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD EnableBottomUpRandomization : 1;
          DWORD EnableForceRelocateImages : 1;
          DWORD EnableHighEntropy : 1;
          DWORD DisallowStrippedImages : 1;
          DWORD ReservedFlags : 28;
        };
      };
    } PROCESS_MITIGATION_ASLR_POLICY,*PPROCESS_MITIGATION_ASLR_POLICY;
    typedef struct _PROCESS_MITIGATION_DEP_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD Enable : 1;
          DWORD DisableAtlThunkEmulation : 1;
          DWORD ReservedFlags : 30;
        };
      };
      BOOLEAN Permanent;
    } PROCESS_MITIGATION_DEP_POLICY,*PPROCESS_MITIGATION_DEP_POLICY;
    typedef struct _PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD RaiseExceptionOnInvalidHandleReference : 1;
          DWORD HandleExceptionsPermanentlyEnabled : 1;
          DWORD ReservedFlags : 30;
        };
      };
    } PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY,*PPROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY;
    typedef struct _PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD DisallowWin32kSystemCalls : 1;
          DWORD ReservedFlags : 31;
        };
      };
    } PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY,*PPROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY;
    typedef struct _PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD DisableExtensionPoints : 1;
          DWORD ReservedFlags : 31;
        };
      };
    } PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY,*PPROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY;
    typedef struct _PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD EnableControlFlowGuard :1;
          DWORD EnableExportSuppression :1;
          DWORD StrictMode :1;
          DWORD ReservedFlags :29;
        };
      };
    } PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY, *PPROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY;
    typedef struct _PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD MicrosoftSignedOnly :1;
          DWORD StoreSignedOnly :1;
          DWORD MitigationOptIn :1;
          DWORD ReservedFlags :29;
        };
      };
    } PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY, *PPROCESS_MITIGATION_BINARY_SIGNATURE_POLICY;
    typedef struct _PROCESS_MITIGATION_DYNAMIC_CODE_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD ProhibitDynamicCode :1;
          DWORD AllowThreadOptOut :1;
          DWORD AllowRemoteDowngrade :1;
          DWORD ReservedFlags :30;
        };
      };
    } PROCESS_MITIGATION_DYNAMIC_CODE_POLICY, *PPROCESS_MITIGATION_DYNAMIC_CODE_POLICY;
    typedef struct _PROCESS_MITIGATION_FONT_DISABLE_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD DisableNonSystemFonts :1;
          DWORD AuditNonSystemFontLoading :1;
          DWORD ReservedFlags :30;
        };
      };
    } PROCESS_MITIGATION_FONT_DISABLE_POLICY, *PPROCESS_MITIGATION_FONT_DISABLE_POLICY;
    typedef struct _PROCESS_MITIGATION_IMAGE_LOAD_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD NoRemoteImages :1;
          DWORD NoLowMandatoryLabelImages :1;
          DWORD PreferSystem32Images :1;
          DWORD ReservedFlags :29;
        };
      };
    } PROCESS_MITIGATION_IMAGE_LOAD_POLICY, *PPROCESS_MITIGATION_IMAGE_LOAD_POLICY;
    typedef struct _PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD FilterId :4;
          DWORD ReservedFlags :28;
        };
      };
    } PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY, *PPROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY;
    typedef struct _PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD EnableExportAddressFilter :1;
          DWORD AuditExportAddressFilter :1;
          DWORD EnableExportAddressFilterPlus :1;
          DWORD AuditExportAddressFilterPlus :1;
          DWORD EnableImportAddressFilter :1;
          DWORD AuditImportAddressFilter :1;
          DWORD EnableRopStackPivot :1;
          DWORD AuditRopStackPivot :1;
          DWORD EnableRopCallerCheck :1;
          DWORD AuditRopCallerCheck :1;
          DWORD EnableRopSimExec :1;
          DWORD AuditRopSimExec :1;
          DWORD ReservedFlags :20;
        };
      };
    } PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY, *PPROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY;
    typedef struct _PROCESS_MITIGATION_CHILD_PROCESS_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD NoChildProcessCreation :1;
          DWORD AuditNoChildProcessCreation :1;
          DWORD AllowSecureProcessCreation :1;
          DWORD ReservedFlags :29;
        };
      };
    } PROCESS_MITIGATION_CHILD_PROCESS_POLICY, *PPROCESS_MITIGATION_CHILD_PROCESS_POLICY;
    typedef struct _PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD SmtBranchTargetIsolation :1;
          DWORD IsolateSecurityDomain :1;
          DWORD DisablePageCombine :1;
          DWORD SpeculativeStoreBypassDisable :1;
          DWORD ReservedFlags :28;
        };
      };
    } PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY, *PPROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY;
    typedef struct _PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD EnableUserShadowStack : 1;
          DWORD AuditUserShadowStack : 1;
          DWORD SetContextIpValidation : 1;
          DWORD AuditSetContextIpValidation : 1;
          DWORD EnableUserShadowStackStrictMode : 1;
          DWORD BlockNonCetBinaries : 1;
          DWORD BlockNonCetBinariesNonEhcont : 1;
          DWORD AuditBlockNonCetBinaries : 1;
          DWORD CetDynamicApisOutOfProcOnly : 1;
          DWORD SetContextIpValidationRelaxedMode : 1;
          DWORD ReservedFlags : 22;
        };
      };
    } PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY, *PPROCESS_MITIGATION_USER_SHADOW_STACK_POLICY;
    typedef struct _PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY {
      __extension__ union {
        DWORD Flags;
        __extension__ struct {
          DWORD EnforceRedirectionTrust : 1;
          DWORD AuditRedirectionTrust : 1;
          DWORD ReservedFlags : 30;
        };
      };
    } PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY, *PPROCESS_MITIGATION_REDIRECTION_TRUST_POLICY;
    typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION {
      LARGE_INTEGER TotalUserTime;
      LARGE_INTEGER TotalKernelTime;
      LARGE_INTEGER ThisPeriodTotalUserTime;
      LARGE_INTEGER ThisPeriodTotalKernelTime;
      DWORD TotalPageFaultCount;
      DWORD TotalProcesses;
      DWORD ActiveProcesses;
      DWORD TotalTerminatedProcesses;
    } JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION;
    typedef struct _JOBOBJECT_BASIC_LIMIT_INFORMATION {
      LARGE_INTEGER PerProcessUserTimeLimit;
      LARGE_INTEGER PerJobUserTimeLimit;
      DWORD LimitFlags;
      SIZE_T MinimumWorkingSetSize;
      SIZE_T MaximumWorkingSetSize;
      DWORD ActiveProcessLimit;
      ULONG_PTR Affinity;
      DWORD PriorityClass;
      DWORD SchedulingClass;
    } JOBOBJECT_BASIC_LIMIT_INFORMATION,*PJOBOBJECT_BASIC_LIMIT_INFORMATION;
    typedef struct _JOBOBJECT_EXTENDED_LIMIT_INFORMATION {
      JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation;
      IO_COUNTERS IoInfo;
      SIZE_T ProcessMemoryLimit;
      SIZE_T JobMemoryLimit;
      SIZE_T PeakProcessMemoryUsed;
      SIZE_T PeakJobMemoryUsed;
    } JOBOBJECT_EXTENDED_LIMIT_INFORMATION,*PJOBOBJECT_EXTENDED_LIMIT_INFORMATION;
    typedef struct _JOBOBJECT_BASIC_PROCESS_ID_LIST {
      DWORD NumberOfAssignedProcesses;
      DWORD NumberOfProcessIdsInList;
      ULONG_PTR ProcessIdList[1];
    } JOBOBJECT_BASIC_PROCESS_ID_LIST,*PJOBOBJECT_BASIC_PROCESS_ID_LIST;
    typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS {
      DWORD UIRestrictionsClass;
    } JOBOBJECT_BASIC_UI_RESTRICTIONS,*PJOBOBJECT_BASIC_UI_RESTRICTIONS;
    typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION {
      DWORD SecurityLimitFlags;
      HANDLE JobToken;
      PTOKEN_GROUPS SidsToDisable;
      PTOKEN_PRIVILEGES PrivilegesToDelete;
      PTOKEN_GROUPS RestrictedSids;
    } JOBOBJECT_SECURITY_LIMIT_INFORMATION,*PJOBOBJECT_SECURITY_LIMIT_INFORMATION;
    typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION {
      DWORD EndOfJobTimeAction;
    } JOBOBJECT_END_OF_JOB_TIME_INFORMATION,*PJOBOBJECT_END_OF_JOB_TIME_INFORMATION;
    typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT {
      PVOID CompletionKey;
      HANDLE CompletionPort;
    } JOBOBJECT_ASSOCIATE_COMPLETION_PORT,*PJOBOBJECT_ASSOCIATE_COMPLETION_PORT;
    typedef struct _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION {
      JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo;
      IO_COUNTERS IoInfo;
    } JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION;
    typedef struct _JOBOBJECT_JOBSET_INFORMATION {
      DWORD MemberLevel;
    } JOBOBJECT_JOBSET_INFORMATION,*PJOBOBJECT_JOBSET_INFORMATION;
    typedef enum _JOBOBJECT_RATE_CONTROL_TOLERANCE {
      ToleranceLow = 1,
      ToleranceMedium,
      ToleranceHigh
    } JOBOBJECT_RATE_CONTROL_TOLERANCE;
    typedef enum _JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL {
      ToleranceIntervalShort = 1,
      ToleranceIntervalMedium,
      ToleranceIntervalLong
    } JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL;
    typedef struct _JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION {
      DWORD64 IoReadBytesLimit;
      DWORD64 IoWriteBytesLimit;
      LARGE_INTEGER PerJobUserTimeLimit;
      DWORD64 JobMemoryLimit;
      JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance;
      JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval;
      DWORD LimitFlags;
    } JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION,*PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION;
    typedef struct _JOBOBJECT_LIMIT_VIOLATION_INFORMATION {
      DWORD LimitFlags;
      DWORD ViolationLimitFlags;
      DWORD64 IoReadBytes;
      DWORD64 IoReadBytesLimit;
      DWORD64 IoWriteBytes;
      DWORD64 IoWriteBytesLimit;
      LARGE_INTEGER PerJobUserTime;
      LARGE_INTEGER PerJobUserTimeLimit;
      DWORD64 JobMemory;
      DWORD64 JobMemoryLimit;
      JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance;
      JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceLimit;
    } JOBOBJECT_LIMIT_VIOLATION_INFORMATION,*PJOBOBJECT_LIMIT_VIOLATION_INFORMATION;
    typedef struct _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION {
      DWORD ControlFlags;
      __extension__ union {
 DWORD CpuRate;
 DWORD Weight;
      };
    } JOBOBJECT_CPU_RATE_CONTROL_INFORMATION,*PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION;
#define JOB_OBJECT_TERMINATE_AT_END_OF_JOB 0
#define JOB_OBJECT_POST_AT_END_OF_JOB 1
#define JOB_OBJECT_MSG_END_OF_JOB_TIME 1
#define JOB_OBJECT_MSG_END_OF_PROCESS_TIME 2
#define JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT 3
#define JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO 4
#define JOB_OBJECT_MSG_NEW_PROCESS 6
#define JOB_OBJECT_MSG_EXIT_PROCESS 7
#define JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS 8
#define JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT 9
#define JOB_OBJECT_MSG_JOB_MEMORY_LIMIT 10
#define JOB_OBJECT_MSG_NOTIFICATION_LIMIT 11
#define JOB_OBJECT_MSG_JOB_CYCLE_TIME_LIMIT 12
#define JOB_OBJECT_MSG_MINIMUM 1
#define JOB_OBJECT_MSG_MAXIMUM 12
#define JOB_OBJECT_LIMIT_WORKINGSET 0x00000001
#define JOB_OBJECT_LIMIT_PROCESS_TIME 0x00000002
#define JOB_OBJECT_LIMIT_JOB_TIME 0x00000004
#define JOB_OBJECT_LIMIT_ACTIVE_PROCESS 0x00000008
#define JOB_OBJECT_LIMIT_AFFINITY 0x00000010
#define JOB_OBJECT_LIMIT_PRIORITY_CLASS 0x00000020
#define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME 0x00000040
#define JOB_OBJECT_LIMIT_SCHEDULING_CLASS 0x00000080
#define JOB_OBJECT_LIMIT_PROCESS_MEMORY 0x00000100
#define JOB_OBJECT_LIMIT_JOB_MEMORY 0x00000200
#define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION 0x00000400
#define JOB_OBJECT_LIMIT_BREAKAWAY_OK 0x00000800
#define JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK 0x00001000
#define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 0x00002000
#define JOB_OBJECT_LIMIT_SUBSET_AFFINITY 0x00004000
#define JOB_OBJECT_LIMIT_RESERVED3 0x00008000
#define JOB_OBJECT_LIMIT_JOB_READ_BYTES 0x00010000
#define JOB_OBJECT_LIMIT_JOB_WRITE_BYTES 0x00020000
#define JOB_OBJECT_LIMIT_RATE_CONTROL 0x00040000
#define JOB_OBJECT_LIMIT_RESERVED3 0x00008000
#define JOB_OBJECT_LIMIT_RESERVED4 0x00010000
#define JOB_OBJECT_LIMIT_RESERVED5 0x00020000
#define JOB_OBJECT_LIMIT_RESERVED6 0x00040000
#define JOB_OBJECT_LIMIT_VALID_FLAGS 0x0007ffff
#define JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS 0x000000ff
#define JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS 0x00007fff
#define JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS 0x0007ffff
#define JOB_OBJECT_NOTIFICATION_LIMIT_VALID_FLAGS 0x00070204
#define JOB_OBJECT_UILIMIT_NONE 0x00000000
#define JOB_OBJECT_UILIMIT_HANDLES 0x00000001
#define JOB_OBJECT_UILIMIT_READCLIPBOARD 0x00000002
#define JOB_OBJECT_UILIMIT_WRITECLIPBOARD 0x00000004
#define JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS 0x00000008
#define JOB_OBJECT_UILIMIT_DISPLAYSETTINGS 0x00000010
#define JOB_OBJECT_UILIMIT_GLOBALATOMS 0x00000020
#define JOB_OBJECT_UILIMIT_DESKTOP 0x00000040
#define JOB_OBJECT_UILIMIT_EXITWINDOWS 0x00000080
#define JOB_OBJECT_UILIMIT_ALL 0x000000FF
#define JOB_OBJECT_UI_VALID_FLAGS 0x000000FF
#define JOB_OBJECT_SECURITY_NO_ADMIN 0x00000001
#define JOB_OBJECT_SECURITY_RESTRICTED_TOKEN 0x00000002
#define JOB_OBJECT_SECURITY_ONLY_TOKEN 0x00000004
#define JOB_OBJECT_SECURITY_FILTER_TOKENS 0x00000008
#define JOB_OBJECT_SECURITY_VALID_FLAGS 0x0000000f
#define JOB_OBJECT_CPU_RATE_CONTROL_ENABLE 0x1
#define JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED 0x2
#define JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP 0x4
#define JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY 0x8
#define JOB_OBJECT_CPU_RATE_CONTROL_VALID_FLAGS 0xf
    typedef enum _JOBOBJECTINFOCLASS {
      JobObjectBasicAccountingInformation = 1, JobObjectBasicLimitInformation,
      JobObjectBasicProcessIdList, JobObjectBasicUIRestrictions,
      JobObjectSecurityLimitInformation, JobObjectEndOfJobTimeInformation,
      JobObjectAssociateCompletionPortInformation, JobObjectBasicAndIoAccountingInformation,
      JobObjectExtendedLimitInformation, JobObjectJobSetInformation,
      JobObjectGroupInformation,
      JobObjectNotificationLimitInformation,
      JobObjectLimitViolationInformation,
      JobObjectGroupInformationEx,
      JobObjectCpuRateControlInformation,
      JobObjectCompletionFilter,
      JobObjectCompletionCounter,
      JobObjectReserved1Information = 18,
      JobObjectReserved2Information,
      JobObjectReserved3Information,
      JobObjectReserved4Information,
      JobObjectReserved5Information,
      JobObjectReserved6Information,
      JobObjectReserved7Information,
      JobObjectReserved8Information,
      MaxJobObjectInfoClass
    } JOBOBJECTINFOCLASS;
    typedef enum _FIRMWARE_TYPE {
      FirmwareTypeUnknown,
      FirmwareTypeBios,
      FirmwareTypeUefi,
      FirmwareTypeMax
    } FIRMWARE_TYPE,*PFIRMWARE_TYPE;
#define EVENT_MODIFY_STATE 0x0002
#define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
#define MUTANT_QUERY_STATE 0x0001
#define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| MUTANT_QUERY_STATE)
#define SEMAPHORE_MODIFY_STATE 0x0002
#define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
#define TIMER_QUERY_STATE 0x0001
#define TIMER_MODIFY_STATE 0x0002
#define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| TIMER_QUERY_STATE|TIMER_MODIFY_STATE)
#define TIME_ZONE_ID_UNKNOWN 0
#define TIME_ZONE_ID_STANDARD 1
#define TIME_ZONE_ID_DAYLIGHT 2
    typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP {
      RelationProcessorCore,RelationNumaNode,RelationCache,
      RelationProcessorPackage,RelationGroup,RelationAll=0xffff
    } LOGICAL_PROCESSOR_RELATIONSHIP;
#define LTP_PC_SMT 0x1
    typedef enum _PROCESSOR_CACHE_TYPE {
      CacheUnified,CacheInstruction,CacheData,CacheTrace
    } PROCESSOR_CACHE_TYPE;
#define CACHE_FULLY_ASSOCIATIVE 0xFF
    typedef struct _CACHE_DESCRIPTOR {
      BYTE Level;
      BYTE Associativity;
      WORD LineSize;
      DWORD Size;
      PROCESSOR_CACHE_TYPE Type;
    } CACHE_DESCRIPTOR,*PCACHE_DESCRIPTOR;
    typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION {
      ULONG_PTR ProcessorMask;
      LOGICAL_PROCESSOR_RELATIONSHIP Relationship;
      __extension__ union {
 struct {
   BYTE Flags;
 } ProcessorCore;
 struct {
   DWORD NodeNumber;
 } NumaNode;
 CACHE_DESCRIPTOR Cache;
 ULONGLONG Reserved[2];
      } ;
    } SYSTEM_LOGICAL_PROCESSOR_INFORMATION,*PSYSTEM_LOGICAL_PROCESSOR_INFORMATION;
    typedef struct _PROCESSOR_RELATIONSHIP {
      BYTE Flags;
      BYTE Reserved[21];
      WORD GroupCount;
      GROUP_AFFINITY GroupMask[1];
    } PROCESSOR_RELATIONSHIP,*PPROCESSOR_RELATIONSHIP;
    typedef struct _NUMA_NODE_RELATIONSHIP {
      DWORD NodeNumber;
      BYTE Reserved[20];
      GROUP_AFFINITY GroupMask;
    } NUMA_NODE_RELATIONSHIP,*PNUMA_NODE_RELATIONSHIP;
    typedef struct _CACHE_RELATIONSHIP {
      BYTE Level;
      BYTE Associativity;
      WORD LineSize;
      DWORD CacheSize;
      PROCESSOR_CACHE_TYPE Type;
      BYTE Reserved[20];
      GROUP_AFFINITY GroupMask;
    } CACHE_RELATIONSHIP,*PCACHE_RELATIONSHIP;
    typedef struct _PROCESSOR_GROUP_INFO {
      BYTE MaximumProcessorCount;
      BYTE ActiveProcessorCount;
      BYTE Reserved[38];
      KAFFINITY ActiveProcessorMask;
    } PROCESSOR_GROUP_INFO,*PPROCESSOR_GROUP_INFO;
    typedef struct _GROUP_RELATIONSHIP {
      WORD MaximumGroupCount;
      WORD ActiveGroupCount;
      BYTE Reserved[20];
      PROCESSOR_GROUP_INFO GroupInfo[1];
    } GROUP_RELATIONSHIP,*PGROUP_RELATIONSHIP;
    struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX {
      LOGICAL_PROCESSOR_RELATIONSHIP Relationship;
      DWORD Size;
      __extension__ union {
 PROCESSOR_RELATIONSHIP Processor;
 NUMA_NODE_RELATIONSHIP NumaNode;
 CACHE_RELATIONSHIP Cache;
 GROUP_RELATIONSHIP Group;
      } ;
    };
    typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX,*PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX;
    typedef struct _SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION {
      DWORD64 CycleTime;
    } SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION,*PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION;
    typedef struct _SYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION {
      DWORD Machine : 16;
      DWORD KernelMode : 1;
      DWORD UserMode : 1;
      DWORD Native : 1;
      DWORD Process : 1;
      DWORD WoW64Container : 1;
      DWORD ReservedZero0 : 11;
    } SYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION,*PSYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION;
#define PROCESSOR_INTEL_386 386
#define PROCESSOR_INTEL_486 486
#define PROCESSOR_INTEL_PENTIUM 586
#define PROCESSOR_INTEL_IA64 2200
#define PROCESSOR_AMD_X8664 8664
#define PROCESSOR_MIPS_R4000 4000
#define PROCESSOR_ALPHA_21064 21064
#define PROCESSOR_PPC_601 601
#define PROCESSOR_PPC_603 603
#define PROCESSOR_PPC_604 604
#define PROCESSOR_PPC_620 620
#define PROCESSOR_HITACHI_SH3 10003
#define PROCESSOR_HITACHI_SH3E 10004
#define PROCESSOR_HITACHI_SH4 10005
#define PROCESSOR_MOTOROLA_821 821
#define PROCESSOR_SHx_SH3 103
#define PROCESSOR_SHx_SH4 104
#define PROCESSOR_STRONGARM 2577
#define PROCESSOR_ARM720 1824
#define PROCESSOR_ARM820 2080
#define PROCESSOR_ARM920 2336
#define PROCESSOR_ARM_7TDMI 70001
#define PROCESSOR_OPTIL 0x494f
#define PROCESSOR_ARCHITECTURE_INTEL 0
#define PROCESSOR_ARCHITECTURE_MIPS 1
#define PROCESSOR_ARCHITECTURE_ALPHA 2
#define PROCESSOR_ARCHITECTURE_PPC 3
#define PROCESSOR_ARCHITECTURE_SHX 4
#define PROCESSOR_ARCHITECTURE_ARM 5
#define PROCESSOR_ARCHITECTURE_IA64 6
#define PROCESSOR_ARCHITECTURE_ALPHA64 7
#define PROCESSOR_ARCHITECTURE_MSIL 8
#define PROCESSOR_ARCHITECTURE_AMD64 9
#define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10
#define PROCESSOR_ARCHITECTURE_NEUTRAL 11
#define PROCESSOR_ARCHITECTURE_ARM64 12
#define PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 13
#define PROCESSOR_ARCHITECTURE_IA32_ON_ARM64 14
#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xffff
#define PF_FLOATING_POINT_PRECISION_ERRATA 0
#define PF_FLOATING_POINT_EMULATED 1
#define PF_COMPARE_EXCHANGE_DOUBLE 2
#define PF_MMX_INSTRUCTIONS_AVAILABLE 3
#define PF_PPC_MOVEMEM_64BIT_OK 4
#define PF_ALPHA_BYTE_INSTRUCTIONS 5
#define PF_XMMI_INSTRUCTIONS_AVAILABLE 6
#define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7
#define PF_RDTSC_INSTRUCTION_AVAILABLE 8
#define PF_PAE_ENABLED 9
#define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10
#define PF_SSE_DAZ_MODE_AVAILABLE 11
#define PF_NX_ENABLED 12
#define PF_SSE3_INSTRUCTIONS_AVAILABLE 13
#define PF_COMPARE_EXCHANGE128 14
#define PF_COMPARE64_EXCHANGE128 15
#define PF_CHANNELS_ENABLED 16
#define PF_XSAVE_ENABLED 17
#define PF_ARM_VFP_32_REGISTERS_AVAILABLE 18
#define PF_ARM_NEON_INSTRUCTIONS_AVAILABLE 19
#define PF_SECOND_LEVEL_ADDRESS_TRANSLATION 20
#define PF_VIRT_FIRMWARE_ENABLED 21
#define PF_RDWRFSGSBASE_AVAILABLE 22
#define PF_FASTFAIL_AVAILABLE 23
#define PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE 24
#define PF_ARM_64BIT_LOADSTORE_ATOMIC 25
#define PF_ARM_EXTERNAL_CACHE_AVAILABLE 26
#define PF_ARM_FMAC_INSTRUCTIONS_AVAILABLE 27
#define PF_RDRAND_INSTRUCTION_AVAILABLE 28
#define PF_ARM_V8_INSTRUCTIONS_AVAILABLE 29
#define PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE 30
#define PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE 31
#define PF_RDTSCP_INSTRUCTION_AVAILABLE 32
#define PF_RDPID_INSTRUCTION_AVAILABLE 33
#define PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE 34
#define PF_MONITORX_INSTRUCTION_AVAILABLE 35
#define PF_SSSE3_INSTRUCTIONS_AVAILABLE 36
#define PF_SSE4_1_INSTRUCTIONS_AVAILABLE 37
#define PF_SSE4_2_INSTRUCTIONS_AVAILABLE 38
#define PF_AVX_INSTRUCTIONS_AVAILABLE 39
#define PF_AVX2_INSTRUCTIONS_AVAILABLE 40
#define PF_AVX512F_INSTRUCTIONS_AVAILABLE 41
#define PF_ERMS_AVAILABLE 42
#define PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE 43
#define PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE 44
#define XSTATE_LEGACY_FLOATING_POINT (0)
#define XSTATE_LEGACY_SSE (1)
#define XSTATE_GSSE (2)
#define XSTATE_AVX (XSTATE_GSSE)
#define XSTATE_MPX_BNDREGS (3)
#define XSTATE_MPX_BNDCSR (4)
#define XSTATE_AVX512_KMASK (5)
#define XSTATE_AVX512_ZMM_H (6)
#define XSTATE_AVX512_ZMM (7)
#define XSTATE_IPT (8)
#define XSTATE_PASID (10)
#define XSTATE_CET_U (11)
#define XSTATE_CET_S (12)
#define XSTATE_AMX_TILE_CONFIG (17)
#define XSTATE_AMX_TILE_DATA (18)
#define XSTATE_LWP (62)
#define MAXIMUM_XSTATE_FEATURES (64)
#define XSTATE_MASK_LEGACY_FLOATING_POINT (1ULL << (XSTATE_LEGACY_FLOATING_POINT))
#define XSTATE_MASK_LEGACY_SSE (1ULL << (XSTATE_LEGACY_SSE))
#define XSTATE_MASK_LEGACY (XSTATE_MASK_LEGACY_FLOATING_POINT | XSTATE_MASK_LEGACY_SSE)
#define XSTATE_MASK_GSSE (1LLU << (XSTATE_GSSE))
#define XSTATE_MASK_AVX (XSTATE_MASK_GSSE)
#define XSTATE_MASK_MPX ((1LLU << (XSTATE_MPX_BNDREGS)) | (1LLU << (XSTATE_MPX_BNDCSR)))
#define XSTATE_MASK_AVX512 ((1LLU << (XSTATE_AVX512_KMASK)) | (1LLU << (XSTATE_AVX512_ZMM_H)) | (1LLU << (XSTATE_AVX512_ZMM)))
#define XSTATE_MASK_IPT (1LLU << (XSTATE_IPT))
#define XSTATE_MASK_PASID (1LLU << (XSTATE_PASID))
#define XSTATE_MASK_CET_U (1LLU << (XSTATE_CET_U))
#define XSTATE_MASK_CET_S (1LLU << (XSTATE_CET_S))
#define XSTATE_MASK_AMX_TILE_CONFIG (1LLU << (XSTATE_AMX_TILE_CONFIG))
#define XSTATE_MASK_AMX_TILE_DATA (1LLU << (XSTATE_AMX_TILE_DATA))
#define XSTATE_MASK_LWP (1LLU << (XSTATE_LWP))
#define XSTATE_MASK_ALLOWED (XSTATE_MASK_LEGACY | XSTATE_MASK_AVX | XSTATE_MASK_MPX | XSTATE_MASK_AVX512 | XSTATE_MASK_IPT | XSTATE_MASK_CET_U | XSTATE_MASK_LWP)
#define XSTATE_MASK_PERSISTENT ((1LLU << (XSTATE_MPX_BNDCSR)) | XSTATE_MASK_LWP)
#define XSTATE_MASK_USER_VISIBLE_SUPERVISOR (XSTATE_MASK_CET_U)
#define XSTATE_MASK_LARGE_FEATURES (XSTATE_MASK_AMX_TILE_DATA)
    typedef struct _XSTATE_FEATURE {
      DWORD Offset;
      DWORD Size;
    } XSTATE_FEATURE,*PXSTATE_FEATURE;
    typedef struct _XSTATE_CONFIGURATION {
      DWORD64 EnabledFeatures;
      DWORD64 EnabledVolatileFeatures;
      DWORD Size;
      DWORD OptimizedSave : 1;
      XSTATE_FEATURE Features[(64)];
    } XSTATE_CONFIGURATION,*PXSTATE_CONFIGURATION;
    typedef struct _MEMORY_BASIC_INFORMATION {
      PVOID BaseAddress;
      PVOID AllocationBase;
      DWORD AllocationProtect;
      SIZE_T RegionSize;
      DWORD State;
      DWORD Protect;
      DWORD Type;
    } MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION;
    typedef struct _MEMORY_BASIC_INFORMATION32 {
      DWORD BaseAddress;
      DWORD AllocationBase;
      DWORD AllocationProtect;
      DWORD RegionSize;
      DWORD State;
      DWORD Protect;
      DWORD Type;
    } MEMORY_BASIC_INFORMATION32,*PMEMORY_BASIC_INFORMATION32;
    typedef struct __attribute__ ((__aligned__ (16))) _MEMORY_BASIC_INFORMATION64 {
      ULONGLONG BaseAddress;
      ULONGLONG AllocationBase;
      DWORD AllocationProtect;
      DWORD __alignment1;
      ULONGLONG RegionSize;
      DWORD State;
      DWORD Protect;
      DWORD Type;
      DWORD __alignment2;
    } MEMORY_BASIC_INFORMATION64,*PMEMORY_BASIC_INFORMATION64;
#define CFG_CALL_TARGET_VALID 0x01
#define CFG_CALL_TARGET_PROCESSED 0x02
#define CFG_CALL_TARGET_CONVERT_EXPORT_SUPPRESSED_TO_VALID 0x04
  typedef struct _CFG_CALL_TARGET_INFO {
    ULONG_PTR Offset;
    ULONG_PTR Flags;
  } CFG_CALL_TARGET_INFO, *PCFG_CALL_TARGET_INFO;
#define SECTION_QUERY 0x0001
#define SECTION_MAP_WRITE 0x0002
#define SECTION_MAP_READ 0x0004
#define SECTION_MAP_EXECUTE 0x0008
#define SECTION_EXTEND_SIZE 0x0010
#define SECTION_MAP_EXECUTE_EXPLICIT 0x0020
#define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY| SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE)
#define SESSION_QUERY_ACCESS 0x1
#define SESSION_MODIFY_ACCESS 0x2
#define SESSION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SESSION_QUERY_ACCESS | SESSION_MODIFY_ACCESS)
#define PAGE_NOACCESS 0x01
#define PAGE_READONLY 0x02
#define PAGE_READWRITE 0x04
#define PAGE_WRITECOPY 0x08
#define PAGE_EXECUTE 0x10
#define PAGE_EXECUTE_READ 0x20
#define PAGE_EXECUTE_READWRITE 0x40
#define PAGE_EXECUTE_WRITECOPY 0x80
#define PAGE_GUARD 0x100
#define PAGE_NOCACHE 0x200
#define PAGE_WRITECOMBINE 0x400
#define PAGE_GRAPHICS_NOACCESS 0x0800
#define PAGE_GRAPHICS_READONLY 0x1000
#define PAGE_GRAPHICS_READWRITE 0x2000
#define PAGE_GRAPHICS_EXECUTE 0x4000
#define PAGE_GRAPHICS_EXECUTE_READ 0x8000
#define PAGE_GRAPHICS_EXECUTE_READWRITE 0x10000
#define PAGE_GRAPHICS_COHERENT 0x20000
#define PAGE_ENCLAVE_THREAD_CONTROL 0x80000000
#define PAGE_REVERT_TO_FILE_MAP 0x80000000
#define PAGE_TARGETS_NO_UPDATE 0x40000000
#define PAGE_TARGETS_INVALID 0x40000000
#define PAGE_ENCLAVE_UNVALIDATED 0x20000000
#define PAGE_ENCLAVE_DECOMMIT 0x10000000
#define MEM_COMMIT 0x1000
#define MEM_RESERVE 0x2000
#define MEM_DECOMMIT 0x4000
#define MEM_RELEASE 0x8000
#define MEM_FREE 0x10000
#define MEM_PRIVATE 0x20000
#define MEM_MAPPED 0x40000
#define MEM_RESET 0x80000
#define MEM_TOP_DOWN 0x100000
#define MEM_WRITE_WATCH 0x200000
#define MEM_PHYSICAL 0x400000
#define MEM_ROTATE 0x800000
#define MEM_DIFFERENT_IMAGE_BASE_OK 0x800000
#define MEM_RESET_UNDO 0x1000000
#define MEM_LARGE_PAGES 0x20000000
#define MEM_4MB_PAGES 0x80000000
#define MEM_64K_PAGES (MEM_LARGE_PAGES | MEM_PHYSICAL)
  typedef struct _MEM_ADDRESS_REQUIREMENTS {
    PVOID LowestStartingAddress;
    PVOID HighestEndingAddress;
    SIZE_T Alignment;
  } MEM_ADDRESS_REQUIREMENTS, *PMEM_ADDRESS_REQUIREMENTS;
#define MEM_EXTENDED_PARAMETER_GRAPHICS 0x01
#define MEM_EXTENDED_PARAMETER_NONPAGED 0x02
#define MEM_EXTENDED_PARAMETER_ZERO_PAGES_OPTIONAL 0x04
#define MEM_EXTENDED_PARAMETER_NONPAGED_LARGE 0x08
#define MEM_EXTENDED_PARAMETER_NONPAGED_HUGE 0x10
  typedef enum MEM_EXTENDED_PARAMETER_TYPE {
    MemExtendedParameterInvalidType = 0,
    MemExtendedParameterAddressRequirements,
    MemExtendedParameterNumaNode,
    MemExtendedParameterPartitionHandle,
    MemExtendedParameterUserPhysicalHandle,
    MemExtendedParameterAttributeFlags,
    MemExtendedParameterMax
  } MEM_EXTENDED_PARAMETER_TYPE, *PMEM_EXTENDED_PARAMETER_TYPE;
#define MEM_EXTENDED_PARAMETER_TYPE_BITS 8
  typedef struct __attribute__ ((__aligned__ (8))) MEM_EXTENDED_PARAMETER {
    __extension__ struct {
        DWORD64 Type : 8;
        DWORD64 Reserved : 64 - 8;
    };
    __extension__ union {
        DWORD64 ULong64;
        PVOID Pointer;
        SIZE_T Size;
        HANDLE Handle;
        DWORD ULong;
    };
  } MEM_EXTENDED_PARAMETER, *PMEM_EXTENDED_PARAMETER;
#define SEC_PARTITION_OWNER_HANDLE 0x40000
#define SEC_64K_PAGES 0x80000
#define SEC_FILE 0x800000
#define SEC_IMAGE 0x1000000
#define SEC_PROTECTED_IMAGE 0x2000000
#define SEC_RESERVE 0x4000000
#define SEC_COMMIT 0x8000000
#define SEC_NOCACHE 0x10000000
#define SEC_WRITECOMBINE 0x40000000
#define SEC_LARGE_PAGES 0x80000000
#define SEC_IMAGE_NO_EXECUTE (SEC_IMAGE | SEC_NOCACHE)
  typedef enum MEM_SECTION_EXTENDED_PARAMETER_TYPE {
    MemSectionExtendedParameterInvalidType = 0,
    MemSectionExtendedParameterUserPhysicalFlags,
    MemSectionExtendedParameterNumaNode,
    MemSectionExtendedParameterMax
  } MEM_SECTION_EXTENDED_PARAMETER_TYPE, *PMEM_SECTION_EXTENDED_PARAMETER_TYPE;
#define MEM_IMAGE SEC_IMAGE
#define WRITE_WATCH_FLAG_RESET 0x01
#define MEM_UNMAP_WITH_TRANSIENT_BOOST 0x01
#define FILE_READ_DATA (0x0001)
#define FILE_LIST_DIRECTORY (0x0001)
#define FILE_WRITE_DATA (0x0002)
#define FILE_ADD_FILE (0x0002)
#define FILE_APPEND_DATA (0x0004)
#define FILE_ADD_SUBDIRECTORY (0x0004)
#define FILE_CREATE_PIPE_INSTANCE (0x0004)
#define FILE_READ_EA (0x0008)
#define FILE_WRITE_EA (0x0010)
#define FILE_EXECUTE (0x0020)
#define FILE_TRAVERSE (0x0020)
#define FILE_DELETE_CHILD (0x0040)
#define FILE_READ_ATTRIBUTES (0x0080)
#define FILE_WRITE_ATTRIBUTES (0x0100)
#define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
#define FILE_GENERIC_READ (STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE)
#define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE)
#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE)
#define FILE_SUPERSEDE 0x00000000
#define FILE_OPEN 0x00000001
#define FILE_CREATE 0x00000002
#define FILE_OPEN_IF 0x00000003
#define FILE_OVERWRITE 0x00000004
#define FILE_OVERWRITE_IF 0x00000005
#define FILE_MAXIMUM_DISPOSITION 0x00000005
#define FILE_DIRECTORY_FILE 0x00000001
#define FILE_WRITE_THROUGH 0x00000002
#define FILE_SEQUENTIAL_ONLY 0x00000004
#define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
#define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
#define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
#define FILE_NON_DIRECTORY_FILE 0x00000040
#define FILE_CREATE_TREE_CONNECTION 0x00000080
#define FILE_COMPLETE_IF_OPLOCKED 0x00000100
#define FILE_NO_EA_KNOWLEDGE 0x00000200
#define FILE_OPEN_REMOTE_INSTANCE 0x00000400
#define FILE_RANDOM_ACCESS 0x00000800
#define FILE_DELETE_ON_CLOSE 0x00001000
#define FILE_OPEN_BY_FILE_ID 0x00002000
#define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
#define FILE_NO_COMPRESSION 0x00008000
#define FILE_RESERVE_OPFILTER 0x00100000
#define FILE_OPEN_REPARSE_POINT 0x00200000
#define FILE_OPEN_NO_RECALL 0x00400000
#define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
#define FILE_SHARE_READ 0x00000001
#define FILE_SHARE_WRITE 0x00000002
#define FILE_SHARE_DELETE 0x00000004
#define FILE_SHARE_VALID_FLAGS 0x00000007
#define FILE_ATTRIBUTE_READONLY 0x00000001
#define FILE_ATTRIBUTE_HIDDEN 0x00000002
#define FILE_ATTRIBUTE_SYSTEM 0x00000004
#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
#define FILE_ATTRIBUTE_DEVICE 0x00000040
#define FILE_ATTRIBUTE_NORMAL 0x00000080
#define FILE_ATTRIBUTE_TEMPORARY 0x00000100
#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
#define FILE_ATTRIBUTE_COMPRESSED 0x00000800
#define FILE_ATTRIBUTE_OFFLINE 0x00001000
#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
#define FILE_ATTRIBUTE_ENCRYPTED 0x00004000
#define FILE_ATTRIBUTE_VIRTUAL 0x00010000
#define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
#define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
#define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
#define FILE_NOTIFY_CHANGE_SIZE 0x00000008
#define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
#define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
#define FILE_NOTIFY_CHANGE_CREATION 0x00000040
#define FILE_NOTIFY_CHANGE_SECURITY 0x00000100
#define FILE_ACTION_ADDED 0x00000001
#define FILE_ACTION_REMOVED 0x00000002
#define FILE_ACTION_MODIFIED 0x00000003
#define FILE_ACTION_RENAMED_OLD_NAME 0x00000004
#define FILE_ACTION_RENAMED_NEW_NAME 0x00000005
#define MAILSLOT_NO_MESSAGE ((DWORD)-1)
#define MAILSLOT_WAIT_FOREVER ((DWORD)-1)
#define FILE_CASE_SENSITIVE_SEARCH 0x00000001
#define FILE_CASE_PRESERVED_NAMES 0x00000002
#define FILE_UNICODE_ON_DISK 0x00000004
#define FILE_PERSISTENT_ACLS 0x00000008
#define FILE_FILE_COMPRESSION 0x00000010
#define FILE_VOLUME_QUOTAS 0x00000020
#define FILE_SUPPORTS_SPARSE_FILES 0x00000040
#define FILE_SUPPORTS_REPARSE_POINTS 0x00000080
#define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100
#define FILE_VOLUME_IS_COMPRESSED 0x00008000
#define FILE_SUPPORTS_OBJECT_IDS 0x00010000
#define FILE_SUPPORTS_ENCRYPTION 0x00020000
#define FILE_NAMED_STREAMS 0x00040000
#define FILE_READ_ONLY_VOLUME 0x00080000
#define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000
#define FILE_SUPPORTS_TRANSACTIONS 0x00200000
#define FILE_SUPPORTS_HARD_LINKS 0x00400000
#define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000
#define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000
#define FILE_SUPPORTS_USN_JOURNAL 0x02000000
#define FILE_SUPPORTS_INTEGRITY_STREAMS 0x04000000
    typedef struct FILE_ID_128 {
      BYTE Identifier[16];
    } FILE_ID_128, *PFILE_ID_128;
    typedef struct _FILE_NOTIFY_INFORMATION {
      DWORD NextEntryOffset;
      DWORD Action;
      DWORD FileNameLength;
      WCHAR FileName[1];
    } FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION;
    typedef union _FILE_SEGMENT_ELEMENT {
      PVOID64 Buffer;
      ULONGLONG Alignment;
    } FILE_SEGMENT_ELEMENT,*PFILE_SEGMENT_ELEMENT;
    typedef struct _REPARSE_GUID_DATA_BUFFER {
      DWORD ReparseTag;
      WORD ReparseDataLength;
      WORD Reserved;
      GUID ReparseGuid;
      struct {
 BYTE DataBuffer[1];
      } GenericReparseBuffer;
    } REPARSE_GUID_DATA_BUFFER,*PREPARSE_GUID_DATA_BUFFER;
#define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER,GenericReparseBuffer)
#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE (16 *1024)
#define SYMLINK_FLAG_RELATIVE 1
#define IO_REPARSE_TAG_RESERVED_ZERO (0)
#define IO_REPARSE_TAG_RESERVED_ONE (1)
#define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_ONE
#define IsReparseTagMicrosoft(_tag) (((_tag) & 0x80000000))
#define IsReparseTagNameSurrogate(_tag) (((_tag) & 0x20000000))
#define IO_REPARSE_TAG_MOUNT_POINT (__MSABI_LONG(0xA0000003))
#define IO_REPARSE_TAG_HSM (__MSABI_LONG(0xC0000004))
#define IO_REPARSE_TAG_DRIVE_EXTENDER (__MSABI_LONG(0x80000005))
#define IO_REPARSE_TAG_HSM2 (__MSABI_LONG(0x80000006))
#define IO_REPARSE_TAG_SIS (__MSABI_LONG(0x80000007))
#define IO_REPARSE_TAG_WIM (__MSABI_LONG(0x80000008))
#define IO_REPARSE_TAG_CSV (__MSABI_LONG(0x80000009))
#define IO_REPARSE_TAG_DFS (__MSABI_LONG(0x8000000A))
#define IO_REPARSE_TAG_FILTER_MANAGER (__MSABI_LONG(0x8000000B))
#define IO_REPARSE_TAG_SYMLINK (__MSABI_LONG(0xA000000C))
#define IO_REPARSE_TAG_IIS_CACHE (__MSABI_LONG(0xA0000010))
#define IO_REPARSE_TAG_DFSR (__MSABI_LONG(0x80000012))
#define IO_REPARSE_TAG_DEDUP (__MSABI_LONG(0x80000013))
#define IO_REPARSE_TAG_NFS (__MSABI_LONG(0x80000014))
#define IO_REPARSE_TAG_FILE_PLACEHOLDER (__MSABI_LONG(0x80000015))
#define IO_REPARSE_TAG_WOF (__MSABI_LONG(0x80000017))
#define IO_REPARSE_TAG_WCI (__MSABI_LONG(0x80000018))
#define IO_REPARSE_TAG_WCI_1 (__MSABI_LONG(0x90001018))
#define IO_REPARSE_TAG_GLOBAL_REPARSE (__MSABI_LONG(0xA0000019))
#define IO_REPARSE_TAG_CLOUD (__MSABI_LONG(0x9000001A))
#define IO_REPARSE_TAG_CLOUD_1 (__MSABI_LONG(0x9000101A))
#define IO_REPARSE_TAG_CLOUD_2 (__MSABI_LONG(0x9000201A))
#define IO_REPARSE_TAG_CLOUD_3 (__MSABI_LONG(0x9000301A))
#define IO_REPARSE_TAG_CLOUD_4 (__MSABI_LONG(0x9000401A))
#define IO_REPARSE_TAG_CLOUD_5 (__MSABI_LONG(0x9000501A))
#define IO_REPARSE_TAG_CLOUD_6 (__MSABI_LONG(0x9000601A))
#define IO_REPARSE_TAG_CLOUD_7 (__MSABI_LONG(0x9000701A))
#define IO_REPARSE_TAG_CLOUD_8 (__MSABI_LONG(0x9000801A))
#define IO_REPARSE_TAG_CLOUD_9 (__MSABI_LONG(0x9000901A))
#define IO_REPARSE_TAG_CLOUD_A (__MSABI_LONG(0x9000A01A))
#define IO_REPARSE_TAG_CLOUD_B (__MSABI_LONG(0x9000B01A))
#define IO_REPARSE_TAG_CLOUD_C (__MSABI_LONG(0x9000C01A))
#define IO_REPARSE_TAG_CLOUD_D (__MSABI_LONG(0x9000D01A))
#define IO_REPARSE_TAG_CLOUD_E (__MSABI_LONG(0x9000E01A))
#define IO_REPARSE_TAG_CLOUD_F (__MSABI_LONG(0x9000F01A))
#define IO_REPARSE_TAG_CLOUD_MASK (__MSABI_LONG(0x0000F000))
#define IO_REPARSE_TAG_APPEXECLINK (__MSABI_LONG(0x8000001B))
#define IO_REPARSE_TAG_PROJFS (__MSABI_LONG(0x9000001C))
#define IO_REPARSE_TAG_STORAGE_SYNC (__MSABI_LONG(0x8000001E))
#define IO_REPARSE_TAG_WCI_TOMBSTONE (__MSABI_LONG(0xA000001F))
#define IO_REPARSE_TAG_UNHANDLED (__MSABI_LONG(0x80000020))
#define IO_REPARSE_TAG_ONEDRIVE (__MSABI_LONG(0x80000021))
#define IO_REPARSE_TAG_PROJFS_TOMBSTONE (__MSABI_LONG(0xA0000022))
#define IO_REPARSE_TAG_AF_UNIX (__MSABI_LONG(0x80000023))
#define IO_COMPLETION_MODIFY_STATE 0x0002
#define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
#define DUPLICATE_CLOSE_SOURCE 0x00000001
#define DUPLICATE_SAME_ACCESS 0x00000002
#define POWERBUTTON_ACTION_INDEX_NOTHING 0
#define POWERBUTTON_ACTION_INDEX_SLEEP 1
#define POWERBUTTON_ACTION_INDEX_HIBERNATE 2
#define POWERBUTTON_ACTION_INDEX_SHUTDOWN 3
#define POWERBUTTON_ACTION_VALUE_NOTHING 0
#define POWERBUTTON_ACTION_VALUE_SLEEP 2
#define POWERBUTTON_ACTION_VALUE_HIBERNATE 3
#define POWERBUTTON_ACTION_VALUE_SHUTDOWN 6
#define PERFSTATE_POLICY_CHANGE_IDEAL 0
#define PERFSTATE_POLICY_CHANGE_SINGLE 1
#define PERFSTATE_POLICY_CHANGE_ROCKET 2
#define PERFSTATE_POLICY_CHANGE_MAX PERFSTATE_POLICY_CHANGE_ROCKET
#define PROCESSOR_PERF_BOOST_POLICY_DISABLED 0
#define PROCESSOR_PERF_BOOST_POLICY_MAX 100
#define PROCESSOR_PERF_BOOST_MODE_DISABLED 0
#define PROCESSOR_PERF_BOOST_MODE_ENABLED 1
#define PROCESSOR_PERF_BOOST_MODE_AGGRESSIVE 2
#define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_ENABLED 3
#define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE 4
#define PROCESSOR_PERF_BOOST_MODE_MAX PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE
#define CORE_PARKING_POLICY_CHANGE_IDEAL 0
#define CORE_PARKING_POLICY_CHANGE_SINGLE 1
#define CORE_PARKING_POLICY_CHANGE_ROCKET 2
#define CORE_PARKING_POLICY_CHANGE_MULTISTEP 3
#define CORE_PARKING_POLICY_CHANGE_MAX CORE_PARKING_POLICY_CHANGE_MULTISTEP
#define POWER_DEVICE_IDLE_POLICY_PERFORMANCE 0
#define POWER_DEVICE_IDLE_POLICY_CONSERVATIVE 1
    extern const GUID GUID_MAX_POWER_SAVINGS;
    extern const GUID GUID_MIN_POWER_SAVINGS;
    extern const GUID GUID_TYPICAL_POWER_SAVINGS;
    extern const GUID NO_SUBGROUP_GUID;
    extern const GUID ALL_POWERSCHEMES_GUID;
    extern const GUID GUID_POWERSCHEME_PERSONALITY;
    extern const GUID GUID_ACTIVE_POWERSCHEME;
    extern const GUID GUID_IDLE_RESILIENCY_SUBGROUP;
    extern const GUID GUID_IDLE_RESILIENCY_PERIOD;
    extern const GUID GUID_DISK_COALESCING_POWERDOWN_TIMEOUT;
    extern const GUID GUID_EXECUTION_REQUIRED_REQUEST_TIMEOUT;
    extern const GUID GUID_VIDEO_SUBGROUP;
    extern const GUID GUID_VIDEO_POWERDOWN_TIMEOUT;
    extern const GUID GUID_VIDEO_ANNOYANCE_TIMEOUT;
    extern const GUID GUID_VIDEO_ADAPTIVE_PERCENT_INCREASE;
    extern const GUID GUID_VIDEO_DIM_TIMEOUT;
    extern const GUID GUID_VIDEO_ADAPTIVE_POWERDOWN;
    extern const GUID GUID_MONITOR_POWER_ON;
    extern const GUID GUID_DEVICE_POWER_POLICY_VIDEO_BRIGHTNESS;
    extern const GUID GUID_DEVICE_POWER_POLICY_VIDEO_DIM_BRIGHTNESS;
    extern const GUID GUID_VIDEO_CURRENT_MONITOR_BRIGHTNESS;
    extern const GUID GUID_VIDEO_ADAPTIVE_DISPLAY_BRIGHTNESS;
    extern const GUID GUID_CONSOLE_DISPLAY_STATE;
    extern const GUID GUID_ALLOW_DISPLAY_REQUIRED;
    extern const GUID GUID_VIDEO_CONSOLE_LOCK_TIMEOUT;
    extern const GUID GUID_ADAPTIVE_POWER_BEHAVIOR_SUBGROUP;
    extern const GUID GUID_NON_ADAPTIVE_INPUT_TIMEOUT;
    extern const GUID GUID_DISK_SUBGROUP;
    extern const GUID GUID_DISK_POWERDOWN_TIMEOUT;
    extern const GUID GUID_DISK_IDLE_TIMEOUT;
    extern const GUID GUID_DISK_BURST_IGNORE_THRESHOLD;
    extern const GUID GUID_DISK_ADAPTIVE_POWERDOWN;
    extern const GUID GUID_SLEEP_SUBGROUP;
    extern const GUID GUID_SLEEP_IDLE_THRESHOLD;
    extern const GUID GUID_STANDBY_TIMEOUT;
    extern const GUID GUID_UNATTEND_SLEEP_TIMEOUT;
    extern const GUID GUID_HIBERNATE_TIMEOUT;
    extern const GUID GUID_HIBERNATE_FASTS4_POLICY;
    extern const GUID GUID_CRITICAL_POWER_TRANSITION;
    extern const GUID GUID_SYSTEM_AWAYMODE;
    extern const GUID GUID_ALLOW_AWAYMODE;
    extern const GUID GUID_ALLOW_STANDBY_STATES;
    extern const GUID GUID_ALLOW_RTC_WAKE;
    extern const GUID GUID_ALLOW_SYSTEM_REQUIRED;
    extern const GUID GUID_SYSTEM_BUTTON_SUBGROUP;
    extern const GUID GUID_POWERBUTTON_ACTION;
    extern const GUID GUID_SLEEPBUTTON_ACTION;
    extern const GUID GUID_USERINTERFACEBUTTON_ACTION;
    extern const GUID GUID_LIDCLOSE_ACTION;
    extern const GUID GUID_LIDOPEN_POWERSTATE;
    extern const GUID GUID_BATTERY_SUBGROUP;
    extern const GUID GUID_BATTERY_DISCHARGE_ACTION_0;
    extern const GUID GUID_BATTERY_DISCHARGE_LEVEL_0;
    extern const GUID GUID_BATTERY_DISCHARGE_FLAGS_0;
    extern const GUID GUID_BATTERY_DISCHARGE_ACTION_1;
    extern const GUID GUID_BATTERY_DISCHARGE_LEVEL_1;
    extern const GUID GUID_BATTERY_DISCHARGE_FLAGS_1;
    extern const GUID GUID_BATTERY_DISCHARGE_ACTION_2;
    extern const GUID GUID_BATTERY_DISCHARGE_LEVEL_2;
    extern const GUID GUID_BATTERY_DISCHARGE_FLAGS_2;
    extern const GUID GUID_BATTERY_DISCHARGE_ACTION_3;
    extern const GUID GUID_BATTERY_DISCHARGE_LEVEL_3;
    extern const GUID GUID_BATTERY_DISCHARGE_FLAGS_3;
    extern const GUID GUID_PROCESSOR_SETTINGS_SUBGROUP;
    extern const GUID GUID_PROCESSOR_THROTTLE_POLICY;
    extern const GUID GUID_PROCESSOR_THROTTLE_MAXIMUM;
    extern const GUID GUID_PROCESSOR_THROTTLE_MINIMUM;
    extern const GUID GUID_PROCESSOR_ALLOW_THROTTLING;
    extern const GUID GUID_PROCESSOR_IDLESTATE_POLICY;
    extern const GUID GUID_PROCESSOR_PERFSTATE_POLICY;
    extern const GUID GUID_PROCESSOR_PERF_INCREASE_THRESHOLD;
    extern const GUID GUID_PROCESSOR_PERF_DECREASE_THRESHOLD;
    extern const GUID GUID_PROCESSOR_PERF_INCREASE_POLICY;
    extern const GUID GUID_PROCESSOR_PERF_DECREASE_POLICY;
    extern const GUID GUID_PROCESSOR_PERF_INCREASE_TIME;
    extern const GUID GUID_PROCESSOR_PERF_DECREASE_TIME;
    extern const GUID GUID_PROCESSOR_PERF_TIME_CHECK;
    extern const GUID GUID_PROCESSOR_PERF_BOOST_POLICY;
    extern const GUID GUID_PROCESSOR_PERF_BOOST_MODE;
    extern const GUID GUID_PROCESSOR_IDLE_ALLOW_SCALING;
    extern const GUID GUID_PROCESSOR_IDLE_DISABLE;
    extern const GUID GUID_PROCESSOR_IDLE_STATE_MAXIMUM;
    extern const GUID GUID_PROCESSOR_IDLE_TIME_CHECK;
    extern const GUID GUID_PROCESSOR_IDLE_DEMOTE_THRESHOLD;
    extern const GUID GUID_PROCESSOR_IDLE_PROMOTE_THRESHOLD;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_INCREASE_THRESHOLD;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_DECREASE_THRESHOLD;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_INCREASE_POLICY;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_DECREASE_POLICY;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_MAX_CORES;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_MIN_CORES;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_INCREASE_TIME;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_DECREASE_TIME;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_DECREASE_FACTOR;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_THRESHOLD;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_AFFINITY_WEIGHTING;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_DECREASE_FACTOR;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_THRESHOLD;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_WEIGHTING;
    extern const GUID GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_THRESHOLD;
    extern const GUID GUID_PROCESSOR_PARKING_CORE_OVERRIDE;
    extern const GUID GUID_PROCESSOR_PARKING_PERF_STATE;
    extern const GUID GUID_PROCESSOR_PARKING_CONCURRENCY_THRESHOLD;
    extern const GUID GUID_PROCESSOR_PARKING_HEADROOM_THRESHOLD;
    extern const GUID GUID_PROCESSOR_PERF_HISTORY;
    extern const GUID GUID_PROCESSOR_PERF_LATENCY_HINT;
    extern const GUID GUID_PROCESSOR_DISTRIBUTE_UTILITY;
    extern const GUID GUID_SYSTEM_COOLING_POLICY;
    extern const GUID GUID_LOCK_CONSOLE_ON_WAKE;
    extern const GUID GUID_DEVICE_IDLE_POLICY;
    extern const GUID GUID_ACDC_POWER_SOURCE;
    extern const GUID GUID_LIDSWITCH_STATE_CHANGE;
    extern const GUID GUID_BATTERY_PERCENTAGE_REMAINING;
    extern const GUID GUID_GLOBAL_USER_PRESENCE;
    extern const GUID GUID_SESSION_DISPLAY_STATUS;
    extern const GUID GUID_SESSION_USER_PRESENCE;
    extern const GUID GUID_IDLE_BACKGROUND_TASK;
    extern const GUID GUID_BACKGROUND_TASK_NOTIFICATION;
    extern const GUID GUID_APPLAUNCH_BUTTON;
    extern const GUID GUID_PCIEXPRESS_SETTINGS_SUBGROUP;
    extern const GUID GUID_PCIEXPRESS_ASPM_POLICY;
    extern const GUID GUID_ENABLE_SWITCH_FORCED_SHUTDOWN;
  typedef enum _SYSTEM_POWER_STATE {
    PowerSystemUnspecified = 0,PowerSystemWorking = 1,PowerSystemSleeping1 = 2,PowerSystemSleeping2 = 3,PowerSystemSleeping3 = 4,PowerSystemHibernate = 5,PowerSystemShutdown = 6,PowerSystemMaximum = 7
  } SYSTEM_POWER_STATE,*PSYSTEM_POWER_STATE;
#define POWER_SYSTEM_MAXIMUM 7
  typedef enum {
    PowerActionNone = 0, PowerActionReserved, PowerActionSleep, PowerActionHibernate,
    PowerActionShutdown, PowerActionShutdownReset, PowerActionShutdownOff,
    PowerActionWarmEject
  } POWER_ACTION,*PPOWER_ACTION;
  typedef enum _DEVICE_POWER_STATE {
    PowerDeviceUnspecified = 0, PowerDeviceD0, PowerDeviceD1, PowerDeviceD2, PowerDeviceD3,
    PowerDeviceMaximum
  } DEVICE_POWER_STATE,*PDEVICE_POWER_STATE;
  typedef enum _MONITOR_DISPLAY_STATE {
    PowerMonitorOff = 0, PowerMonitorOn, PowerMonitorDim
  } MONITOR_DISPLAY_STATE, *PMONITOR_DISPLAY_STATE;
  typedef enum _USER_ACTIVITY_PRESENCE {
    PowerUserPresent = 0,
    PowerUserNotPresent,
    PowerUserInactive,
    PowerUserMaximum,
    PowerUserInvalid = PowerUserMaximum
  } USER_ACTIVITY_PRESENCE,*PUSER_ACTIVITY_PRESENCE;
#define ES_SYSTEM_REQUIRED ((DWORD)0x00000001)
#define ES_DISPLAY_REQUIRED ((DWORD)0x00000002)
#define ES_USER_PRESENT ((DWORD)0x00000004)
#define ES_AWAYMODE_REQUIRED ((DWORD)0x00000040)
#define ES_CONTINUOUS ((DWORD)0x80000000)
  typedef DWORD EXECUTION_STATE, *PEXECUTION_STATE;
  typedef enum {
    LT_DONT_CARE,LT_LOWEST_LATENCY
  } LATENCY_TIME;
#define DIAGNOSTIC_REASON_VERSION 0
#define POWER_REQUEST_CONTEXT_VERSION 0
#define DIAGNOSTIC_REASON_SIMPLE_STRING 0x00000001
#define DIAGNOSTIC_REASON_DETAILED_STRING 0x00000002
#define DIAGNOSTIC_REASON_NOT_SPECIFIED 0x80000000
#define DIAGNOSTIC_REASON_INVALID_FLAGS (~0x80000003)
#define POWER_REQUEST_CONTEXT_SIMPLE_STRING 0x00000001
#define POWER_REQUEST_CONTEXT_DETAILED_STRING 0x00000002
  typedef enum _POWER_REQUEST_TYPE {
    PowerRequestDisplayRequired,
    PowerRequestSystemRequired,
    PowerRequestAwayModeRequired,
    PowerRequestExecutionRequired
  } POWER_REQUEST_TYPE,*PPOWER_REQUEST_TYPE;
#define PDCAP_D0_SUPPORTED 0x00000001
#define PDCAP_D1_SUPPORTED 0x00000002
#define PDCAP_D2_SUPPORTED 0x00000004
#define PDCAP_D3_SUPPORTED 0x00000008
#define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010
#define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020
#define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040
#define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080
#define PDCAP_WARM_EJECT_SUPPORTED 0x00000100
    typedef struct CM_Power_Data_s {
      DWORD PD_Size;
      DEVICE_POWER_STATE PD_MostRecentPowerState;
      DWORD PD_Capabilities;
      DWORD PD_D1Latency;
      DWORD PD_D2Latency;
      DWORD PD_D3Latency;
      DEVICE_POWER_STATE PD_PowerStateMapping[7];
      SYSTEM_POWER_STATE PD_DeepestSystemWake;
    } CM_POWER_DATA,*PCM_POWER_DATA;
    typedef enum {
      SystemPowerPolicyAc,
      SystemPowerPolicyDc,
      VerifySystemPolicyAc,
      VerifySystemPolicyDc,
      SystemPowerCapabilities,
      SystemBatteryState,
      SystemPowerStateHandler,
      ProcessorStateHandler,
      SystemPowerPolicyCurrent,
      AdministratorPowerPolicy,
      SystemReserveHiberFile,
      ProcessorInformation,
      SystemPowerInformation,
      ProcessorStateHandler2,
      LastWakeTime,
      LastSleepTime,
      SystemExecutionState,
      SystemPowerStateNotifyHandler,
      ProcessorPowerPolicyAc,
      ProcessorPowerPolicyDc,
      VerifyProcessorPowerPolicyAc,
      VerifyProcessorPowerPolicyDc,
      ProcessorPowerPolicyCurrent,
      SystemPowerStateLogging,
      SystemPowerLoggingEntry,
      SetPowerSettingValue,
      NotifyUserPowerSetting,
      PowerInformationLevelUnused0,
      SystemMonitorHiberBootPowerOff,
      SystemVideoState,
      TraceApplicationPowerMessage,
      TraceApplicationPowerMessageEnd,
      ProcessorPerfStates,
      ProcessorIdleStates,
      ProcessorCap,
      SystemWakeSource,
      SystemHiberFileInformation,
      TraceServicePowerMessage,
      ProcessorLoad,
      PowerShutdownNotification,
      MonitorCapabilities,
      SessionPowerInit,
      SessionDisplayState,
      PowerRequestCreate,
      PowerRequestAction,
      GetPowerRequestList,
      ProcessorInformationEx,
      NotifyUserModeLegacyPowerEvent,
      GroupPark,
      ProcessorIdleDomains,
      WakeTimerList,
      SystemHiberFileSize,
      ProcessorIdleStatesHv,
      ProcessorPerfStatesHv,
      ProcessorPerfCapHv,
      ProcessorSetIdle,
      LogicalProcessorIdling,
      UserPresence,
      PowerSettingNotificationName,
      GetPowerSettingValue,
      IdleResiliency,
      SessionRITState,
      SessionConnectNotification,
      SessionPowerCleanup,
      SessionLockState,
      SystemHiberbootState,
      PlatformInformation,
      PdcInvocation,
      MonitorInvocation,
      FirmwareTableInformationRegistered,
      SetShutdownSelectedTime,
      SuspendResumeInvocation,
      PlmPowerRequestCreate,
      ScreenOff,
      CsDeviceNotification,
      PlatformRole,
      LastResumePerformance,
      DisplayBurst,
      ExitLatencySamplingPercentage,
      ApplyLowPowerScenarioSettings,
      PowerInformationLevelMaximum
    } POWER_INFORMATION_LEVEL;
    typedef enum {
      UserNotPresent = 0,
      UserPresent = 1,
      UserUnknown = 0xff
    } POWER_USER_PRESENCE_TYPE,*PPOWER_USER_PRESENCE_TYPE;
    typedef struct _POWER_USER_PRESENCE {
      POWER_USER_PRESENCE_TYPE UserPresence;
    } POWER_USER_PRESENCE,*PPOWER_USER_PRESENCE;
    typedef struct _POWER_SESSION_CONNECT {
      BOOLEAN Connected;
      BOOLEAN Console;
    } POWER_SESSION_CONNECT,*PPOWER_SESSION_CONNECT;
    typedef struct _POWER_SESSION_TIMEOUTS {
      DWORD InputTimeout;
      DWORD DisplayTimeout;
    } POWER_SESSION_TIMEOUTS,*PPOWER_SESSION_TIMEOUTS;
    typedef struct _POWER_SESSION_RIT_STATE {
      BOOLEAN Active;
      DWORD LastInputTime;
    } POWER_SESSION_RIT_STATE,*PPOWER_SESSION_RIT_STATE;
    typedef struct _POWER_SESSION_WINLOGON {
      DWORD SessionId;
      BOOLEAN Console;
      BOOLEAN Locked;
    } POWER_SESSION_WINLOGON,*PPOWER_SESSION_WINLOGON;
    typedef struct _POWER_IDLE_RESILIENCY {
      DWORD CoalescingTimeout;
      DWORD IdleResiliencyPeriod;
    } POWER_IDLE_RESILIENCY,*PPOWER_IDLE_RESILIENCY;
    typedef enum {
      MonitorRequestReasonUnknown,
      MonitorRequestReasonPowerButton,
      MonitorRequestReasonRemoteConnection,
      MonitorRequestReasonScMonitorpower,
      MonitorRequestReasonUserInput,
      MonitorRequestReasonAcDcDisplayBurst,
      MonitorRequestReasonUserDisplayBurst,
      MonitorRequestReasonPoSetSystemState,
      MonitorRequestReasonSetThreadExecutionState,
      MonitorRequestReasonFullWake,
      MonitorRequestReasonSessionUnlock,
      MonitorRequestReasonScreenOffRequest,
      MonitorRequestReasonIdleTimeout,
      MonitorRequestReasonPolicyChange,
      MonitorRequestReasonMax
    } POWER_MONITOR_REQUEST_REASON;
    typedef struct _POWER_MONITOR_INVOCATION {
      BOOLEAN On;
      BOOLEAN Console;
      POWER_MONITOR_REQUEST_REASON RequestReason;
    } POWER_MONITOR_INVOCATION,*PPOWER_MONITOR_INVOCATION;
    typedef struct _RESUME_PERFORMANCE {
      DWORD PostTimeMs;
      ULONGLONG TotalResumeTimeMs;
      ULONGLONG ResumeCompleteTimestamp;
    } RESUME_PERFORMANCE,*PRESUME_PERFORMANCE;
    typedef enum {
      PoAc,
      PoDc,
      PoHot,
      PoConditionMaximum
    } SYSTEM_POWER_CONDITION;
    typedef struct {
      DWORD Version;
      GUID Guid;
      SYSTEM_POWER_CONDITION PowerCondition;
      DWORD DataLength;
      BYTE Data[1];
    } SET_POWER_SETTING_VALUE,*PSET_POWER_SETTING_VALUE;
#define POWER_SETTING_VALUE_VERSION (0x1)
    typedef struct {
      GUID Guid;
    } NOTIFY_USER_POWER_SETTING,*PNOTIFY_USER_POWER_SETTING;
    typedef struct _APPLICATIONLAUNCH_SETTING_VALUE {
      LARGE_INTEGER ActivationTime;
      DWORD Flags;
      DWORD ButtonInstanceID;
    } APPLICATIONLAUNCH_SETTING_VALUE,*PAPPLICATIONLAUNCH_SETTING_VALUE;
    typedef enum _POWER_PLATFORM_ROLE {
      PlatformRoleUnspecified = 0,
      PlatformRoleDesktop,
      PlatformRoleMobile,
      PlatformRoleWorkstation,
      PlatformRoleEnterpriseServer,
      PlatformRoleSOHOServer,
      PlatformRoleAppliancePC,
      PlatformRolePerformanceServer,
      PlatformRoleSlate,
      PlatformRoleMaximum
    } POWER_PLATFORM_ROLE,*PPOWER_PLATFORM_ROLE;
    typedef struct _POWER_PLATFORM_INFORMATION {
      BOOLEAN AoAc;
    } POWER_PLATFORM_INFORMATION,*PPOWER_PLATFORM_INFORMATION;
#define POWER_PLATFORM_ROLE_V1 (0x00000001)
#define POWER_PLATFORM_ROLE_V1_MAX (PlatformRolePerformanceServer + 1)
#define POWER_PLATFORM_ROLE_V2 (0x00000002)
#define POWER_PLATFORM_ROLE_V2_MAX (PlatformRoleSlate + 1)
#define POWER_PLATFORM_ROLE_VERSION POWER_PLATFORM_ROLE_V1
#define POWER_PLATFORM_ROLE_VERSION_MAX POWER_PLATFORM_ROLE_V1_MAX
    typedef struct {
      DWORD Granularity;
      DWORD Capacity;
    } BATTERY_REPORTING_SCALE,*PBATTERY_REPORTING_SCALE;
    typedef struct {
      DWORD Frequency;
      DWORD Flags;
      DWORD PercentFrequency;
    } PPM_WMI_LEGACY_PERFSTATE,*PPPM_WMI_LEGACY_PERFSTATE;
    typedef struct {
      DWORD Latency;
      DWORD Power;
      DWORD TimeCheck;
      BYTE PromotePercent;
      BYTE DemotePercent;
      BYTE StateType;
      BYTE Reserved;
      DWORD StateFlags;
      DWORD Context;
      DWORD IdleHandler;
      DWORD Reserved1;
    } PPM_WMI_IDLE_STATE,*PPPM_WMI_IDLE_STATE;
    typedef struct {
      DWORD Type;
      DWORD Count;
      DWORD TargetState;
      DWORD OldState;
      DWORD64 TargetProcessors;
      PPM_WMI_IDLE_STATE State[1];
    } PPM_WMI_IDLE_STATES,*PPPM_WMI_IDLE_STATES;
    typedef struct {
      DWORD Type;
      DWORD Count;
      DWORD TargetState;
      DWORD OldState;
      PVOID TargetProcessors;
      PPM_WMI_IDLE_STATE State[1];
    } PPM_WMI_IDLE_STATES_EX,*PPPM_WMI_IDLE_STATES_EX;
    typedef struct {
      DWORD Frequency;
      DWORD Power;
      BYTE PercentFrequency;
      BYTE IncreaseLevel;
      BYTE DecreaseLevel;
      BYTE Type;
      DWORD IncreaseTime;
      DWORD DecreaseTime;
      DWORD64 Control;
      DWORD64 Status;
      DWORD HitCount;
      DWORD Reserved1;
      DWORD64 Reserved2;
      DWORD64 Reserved3;
    } PPM_WMI_PERF_STATE,*PPPM_WMI_PERF_STATE;
    typedef struct {
      DWORD Count;
      DWORD MaxFrequency;
      DWORD CurrentState;
      DWORD MaxPerfState;
      DWORD MinPerfState;
      DWORD LowestPerfState;
      DWORD ThermalConstraint;
      BYTE BusyAdjThreshold;
      BYTE PolicyType;
      BYTE Type;
      BYTE Reserved;
      DWORD TimerInterval;
      DWORD64 TargetProcessors;
      DWORD PStateHandler;
      DWORD PStateContext;
      DWORD TStateHandler;
      DWORD TStateContext;
      DWORD FeedbackHandler;
      DWORD Reserved1;
      DWORD64 Reserved2;
      PPM_WMI_PERF_STATE State[1];
    } PPM_WMI_PERF_STATES,*PPPM_WMI_PERF_STATES;
    typedef struct {
      DWORD Count;
      DWORD MaxFrequency;
      DWORD CurrentState;
      DWORD MaxPerfState;
      DWORD MinPerfState;
      DWORD LowestPerfState;
      DWORD ThermalConstraint;
      BYTE BusyAdjThreshold;
      BYTE PolicyType;
      BYTE Type;
      BYTE Reserved;
      DWORD TimerInterval;
      PVOID TargetProcessors;
      DWORD PStateHandler;
      DWORD PStateContext;
      DWORD TStateHandler;
      DWORD TStateContext;
      DWORD FeedbackHandler;
      DWORD Reserved1;
      DWORD64 Reserved2;
      PPM_WMI_PERF_STATE State[1];
    } PPM_WMI_PERF_STATES_EX,*PPPM_WMI_PERF_STATES_EX;
#define PROC_IDLE_BUCKET_COUNT 6
#define PROC_IDLE_BUCKET_COUNT_EX 16
    typedef struct {
      DWORD IdleTransitions;
      DWORD FailedTransitions;
      DWORD InvalidBucketIndex;
      DWORD64 TotalTime;
      DWORD IdleTimeBuckets[6];
    } PPM_IDLE_STATE_ACCOUNTING,*PPPM_IDLE_STATE_ACCOUNTING;
    typedef struct {
      DWORD StateCount;
      DWORD TotalTransitions;
      DWORD ResetCount;
      DWORD64 StartTime;
      PPM_IDLE_STATE_ACCOUNTING State[1];
    } PPM_IDLE_ACCOUNTING,*PPPM_IDLE_ACCOUNTING;
    typedef struct {
      DWORD64 TotalTimeUs;
      DWORD MinTimeUs;
      DWORD MaxTimeUs;
      DWORD Count;
    } PPM_IDLE_STATE_BUCKET_EX,*PPPM_IDLE_STATE_BUCKET_EX;
    typedef struct {
      DWORD64 TotalTime;
      DWORD IdleTransitions;
      DWORD FailedTransitions;
      DWORD InvalidBucketIndex;
      DWORD MinTimeUs;
      DWORD MaxTimeUs;
      DWORD CancelledTransitions;
      PPM_IDLE_STATE_BUCKET_EX IdleTimeBuckets[16];
    } PPM_IDLE_STATE_ACCOUNTING_EX,*PPPM_IDLE_STATE_ACCOUNTING_EX;
    typedef struct {
      DWORD StateCount;
      DWORD TotalTransitions;
      DWORD ResetCount;
      DWORD AbortCount;
      DWORD64 StartTime;
      PPM_IDLE_STATE_ACCOUNTING_EX State[1];
    } PPM_IDLE_ACCOUNTING_EX,*PPPM_IDLE_ACCOUNTING_EX;
#define ACPI_PPM_SOFTWARE_ALL 0xfc
#define ACPI_PPM_SOFTWARE_ANY 0xfd
#define ACPI_PPM_HARDWARE_ALL 0xfe
#define MS_PPM_SOFTWARE_ALL 0x1
#define PPM_FIRMWARE_ACPI1C2 0x1
#define PPM_FIRMWARE_ACPI1C3 0x2
#define PPM_FIRMWARE_ACPI1TSTATES 0x4
#define PPM_FIRMWARE_CST 0x8
#define PPM_FIRMWARE_CSD 0x10
#define PPM_FIRMWARE_PCT 0x20
#define PPM_FIRMWARE_PSS 0x40
#define PPM_FIRMWARE_XPSS 0x80
#define PPM_FIRMWARE_PPC 0x100
#define PPM_FIRMWARE_PSD 0x200
#define PPM_FIRMWARE_PTC 0x400
#define PPM_FIRMWARE_TSS 0x800
#define PPM_FIRMWARE_TPC 0x1000
#define PPM_FIRMWARE_TSD 0x2000
#define PPM_FIRMWARE_PCCH 0x4000
#define PPM_FIRMWARE_PCCP 0x8000
#define PPM_FIRMWARE_OSC 0x10000
#define PPM_FIRMWARE_PDC 0x20000
#define PPM_FIRMWARE_CPC 0x40000
#define PPM_PERFORMANCE_IMPLEMENTATION_NONE 0
#define PPM_PERFORMANCE_IMPLEMENTATION_PSTATES 1
#define PPM_PERFORMANCE_IMPLEMENTATION_PCCV1 2
#define PPM_PERFORMANCE_IMPLEMENTATION_CPPC 3
#define PPM_PERFORMANCE_IMPLEMENTATION_PEP 4
#define PPM_IDLE_IMPLEMENTATION_NONE 0x0
#define PPM_IDLE_IMPLEMENTATION_CSTATES 0x1
#define PPM_IDLE_IMPLEMENTATION_PEP 0x2
    typedef struct {
      DWORD State;
      DWORD Status;
      DWORD Latency;
      DWORD Speed;
      DWORD Processor;
    } PPM_PERFSTATE_EVENT,*PPPM_PERFSTATE_EVENT;
    typedef struct {
      DWORD State;
      DWORD Latency;
      DWORD Speed;
      DWORD64 Processors;
    } PPM_PERFSTATE_DOMAIN_EVENT,*PPPM_PERFSTATE_DOMAIN_EVENT;
    typedef struct {
      DWORD NewState;
      DWORD OldState;
      DWORD64 Processors;
    } PPM_IDLESTATE_EVENT,*PPPM_IDLESTATE_EVENT;
    typedef struct {
      DWORD ThermalConstraint;
      DWORD64 Processors;
    } PPM_THERMALCHANGE_EVENT,*PPPM_THERMALCHANGE_EVENT;
    typedef struct {
      BYTE Mode;
      DWORD64 Processors;
    } PPM_THERMAL_POLICY_EVENT,*PPPM_THERMAL_POLICY_EVENT;
    extern const GUID PPM_PERFSTATE_CHANGE_GUID;
    extern const GUID PPM_PERFSTATE_DOMAIN_CHANGE_GUID;
    extern const GUID PPM_IDLESTATE_CHANGE_GUID;
    extern const GUID PPM_PERFSTATES_DATA_GUID;
    extern const GUID PPM_IDLESTATES_DATA_GUID;
    extern const GUID PPM_IDLE_ACCOUNTING_GUID;
    extern const GUID PPM_IDLE_ACCOUNTING_EX_GUID;
    extern const GUID PPM_THERMALCONSTRAINT_GUID;
    extern const GUID PPM_PERFMON_PERFSTATE_GUID;
    extern const GUID PPM_THERMAL_POLICY_CHANGE_GUID;
    typedef struct {
      POWER_ACTION Action;
      DWORD Flags;
      DWORD EventCode;
    } POWER_ACTION_POLICY,*PPOWER_ACTION_POLICY;
#define POWER_ACTION_QUERY_ALLOWED 0x00000001
#define POWER_ACTION_UI_ALLOWED 0x00000002
#define POWER_ACTION_OVERRIDE_APPS 0x00000004
#define POWER_ACTION_HIBERBOOT 0x00000008
#define POWER_ACTION_PSEUDO_TRANSITION 0x08000000
#define POWER_ACTION_LIGHTEST_FIRST 0x10000000
#define POWER_ACTION_LOCK_CONSOLE 0x20000000
#define POWER_ACTION_DISABLE_WAKES 0x40000000
#define POWER_ACTION_CRITICAL 0x80000000
#define POWER_LEVEL_USER_NOTIFY_TEXT 0x00000001
#define POWER_LEVEL_USER_NOTIFY_SOUND 0x00000002
#define POWER_LEVEL_USER_NOTIFY_EXEC 0x00000004
#define POWER_USER_NOTIFY_BUTTON 0x00000008
#define POWER_USER_NOTIFY_SHUTDOWN 0x00000010
#define POWER_USER_NOTIFY_FORCED_SHUTDOWN 0x00000020
#define POWER_FORCE_TRIGGER_RESET 0x80000000
#define BATTERY_DISCHARGE_FLAGS_EVENTCODE_MASK 0x00000007
#define BATTERY_DISCHARGE_FLAGS_ENABLE 0x80000000
#define DISCHARGE_POLICY_CRITICAL 0
#define DISCHARGE_POLICY_LOW 1
#define NUM_DISCHARGE_POLICIES 4
#define PROCESSOR_IDLESTATE_POLICY_COUNT 0x3
    typedef struct {
      DWORD TimeCheck;
      BYTE DemotePercent;
      BYTE PromotePercent;
      BYTE Spare[2];
    } PROCESSOR_IDLESTATE_INFO,*PPROCESSOR_IDLESTATE_INFO;
    typedef struct {
      BOOLEAN Enable;
      BYTE Spare[3];
      DWORD BatteryLevel;
      POWER_ACTION_POLICY PowerPolicy;
      SYSTEM_POWER_STATE MinSystemState;
    } SYSTEM_POWER_LEVEL,*PSYSTEM_POWER_LEVEL;
    typedef struct _SYSTEM_POWER_POLICY {
      DWORD Revision;
      POWER_ACTION_POLICY PowerButton;
      POWER_ACTION_POLICY SleepButton;
      POWER_ACTION_POLICY LidClose;
      SYSTEM_POWER_STATE LidOpenWake;
      DWORD Reserved;
      POWER_ACTION_POLICY Idle;
      DWORD IdleTimeout;
      BYTE IdleSensitivity;
      BYTE DynamicThrottle;
      BYTE Spare2[2];
      SYSTEM_POWER_STATE MinSleep;
      SYSTEM_POWER_STATE MaxSleep;
      SYSTEM_POWER_STATE ReducedLatencySleep;
      DWORD WinLogonFlags;
      DWORD Spare3;
      DWORD DozeS4Timeout;
      DWORD BroadcastCapacityResolution;
      SYSTEM_POWER_LEVEL DischargePolicy[4];
      DWORD VideoTimeout;
      BOOLEAN VideoDimDisplay;
      DWORD VideoReserved[3];
      DWORD SpindownTimeout;
      BOOLEAN OptimizeForPower;
      BYTE FanThrottleTolerance;
      BYTE ForcedThrottle;
      BYTE MinThrottle;
      POWER_ACTION_POLICY OverThrottled;
    } SYSTEM_POWER_POLICY,*PSYSTEM_POWER_POLICY;
#define PO_THROTTLE_NONE 0
#define PO_THROTTLE_CONSTANT 1
#define PO_THROTTLE_DEGRADE 2
#define PO_THROTTLE_ADAPTIVE 3
#define PO_THROTTLE_MAXIMUM 4
    typedef struct {
      WORD Revision;
      union {
 WORD AsWORD;
 __extension__ struct {
   WORD AllowScaling : 1;
   WORD Disabled : 1;
   WORD Reserved : 14;
 } ;
      } Flags;
      DWORD PolicyCount;
      PROCESSOR_IDLESTATE_INFO Policy[0x3];
    } PROCESSOR_IDLESTATE_POLICY,*PPROCESSOR_IDLESTATE_POLICY;
    typedef struct _PROCESSOR_POWER_POLICY_INFO {
      DWORD TimeCheck;
      DWORD DemoteLimit;
      DWORD PromoteLimit;
      BYTE DemotePercent;
      BYTE PromotePercent;
      BYTE Spare[2];
      DWORD AllowDemotion:1;
      DWORD AllowPromotion:1;
      DWORD Reserved:30;
    } PROCESSOR_POWER_POLICY_INFO,*PPROCESSOR_POWER_POLICY_INFO;
    typedef struct _PROCESSOR_POWER_POLICY {
      DWORD Revision;
      BYTE DynamicThrottle;
      BYTE Spare[3];
      DWORD DisableCStates:1;
      DWORD Reserved:31;
      DWORD PolicyCount;
      PROCESSOR_POWER_POLICY_INFO Policy[3];
    } PROCESSOR_POWER_POLICY,*PPROCESSOR_POWER_POLICY;
    typedef struct {
      DWORD Revision;
      BYTE MaxThrottle;
      BYTE MinThrottle;
      BYTE BusyAdjThreshold;
      __extension__ union {
 BYTE Spare;
 union {
   BYTE AsBYTE;
   __extension__ struct {
     BYTE NoDomainAccounting : 1;
     BYTE IncreasePolicy: 2;
     BYTE DecreasePolicy: 2;
     BYTE Reserved : 3;
   } ;
 } Flags;
      } ;
      DWORD TimeCheck;
      DWORD IncreaseTime;
      DWORD DecreaseTime;
      DWORD IncreasePercent;
      DWORD DecreasePercent;
    } PROCESSOR_PERFSTATE_POLICY,*PPROCESSOR_PERFSTATE_POLICY;
    typedef struct _ADMINISTRATOR_POWER_POLICY {
      SYSTEM_POWER_STATE MinSleep;
      SYSTEM_POWER_STATE MaxSleep;
      DWORD MinVideoTimeout;
      DWORD MaxVideoTimeout;
      DWORD MinSpindownTimeout;
      DWORD MaxSpindownTimeout;
    } ADMINISTRATOR_POWER_POLICY,*PADMINISTRATOR_POWER_POLICY;
    typedef struct {
      BOOLEAN 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;
      BYTE ProcessorMinThrottle;
      BYTE ProcessorMaxThrottle;
      BOOLEAN FastSystemS4;
      BYTE spare2[3];
      BOOLEAN DiskSpinDown;
      BYTE spare3[8];
      BOOLEAN SystemBatteriesPresent;
      BOOLEAN BatteriesAreShortTerm;
      BATTERY_REPORTING_SCALE BatteryScale[3];
      SYSTEM_POWER_STATE AcOnLineWake;
      SYSTEM_POWER_STATE SoftLidWake;
      SYSTEM_POWER_STATE RtcWake;
      SYSTEM_POWER_STATE MinDeviceWakeState;
      SYSTEM_POWER_STATE DefaultLowLatencyWake;
    } SYSTEM_POWER_CAPABILITIES,*PSYSTEM_POWER_CAPABILITIES;
    typedef struct {
      BOOLEAN AcOnLine;
      BOOLEAN BatteryPresent;
      BOOLEAN Charging;
      BOOLEAN Discharging;
      BOOLEAN Spare1[4];
      DWORD MaxCapacity;
      DWORD RemainingCapacity;
      DWORD Rate;
      DWORD EstimatedTime;
      DWORD DefaultAlert1;
      DWORD DefaultAlert2;
    } SYSTEM_BATTERY_STATE,*PSYSTEM_BATTERY_STATE;
#pragma pack(push,4)
#define IMAGE_DOS_SIGNATURE 0x5A4D
#define IMAGE_OS2_SIGNATURE 0x454E
#define IMAGE_OS2_SIGNATURE_LE 0x454C
#define IMAGE_VXD_SIGNATURE 0x454C
#define IMAGE_NT_SIGNATURE 0x00004550
#pragma pack(push,2)
    typedef struct _IMAGE_DOS_HEADER {
      WORD 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];
      LONG e_lfanew;
    } IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
    typedef struct _IMAGE_OS2_HEADER {
      WORD ne_magic;
      CHAR ne_ver;
      CHAR ne_rev;
      WORD ne_enttab;
      WORD ne_cbenttab;
      LONG ne_crc;
      WORD ne_flags;
      WORD ne_autodata;
      WORD ne_heap;
      WORD ne_stack;
      LONG ne_csip;
      LONG ne_sssp;
      WORD ne_cseg;
      WORD ne_cmod;
      WORD ne_cbnrestab;
      WORD ne_segtab;
      WORD ne_rsrctab;
      WORD ne_restab;
      WORD ne_modtab;
      WORD ne_imptab;
      LONG ne_nrestab;
      WORD ne_cmovent;
      WORD ne_align;
      WORD ne_cres;
      BYTE ne_exetyp;
      BYTE ne_flagsothers;
      WORD ne_pretthunks;
      WORD ne_psegrefbytes;
      WORD ne_swaparea;
      WORD ne_expver;
    } IMAGE_OS2_HEADER,*PIMAGE_OS2_HEADER;
    typedef struct _IMAGE_VXD_HEADER {
      WORD e32_magic;
      BYTE e32_border;
      BYTE e32_worder;
      DWORD e32_level;
      WORD e32_cpu;
      WORD e32_os;
      DWORD 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;
      BYTE e32_res3[12];
      DWORD e32_winresoff;
      DWORD e32_winreslen;
      WORD e32_devid;
      WORD e32_ddkver;
    } IMAGE_VXD_HEADER,*PIMAGE_VXD_HEADER;
#pragma pack(pop)
    typedef struct _IMAGE_FILE_HEADER {
      WORD Machine;
      WORD NumberOfSections;
      DWORD TimeDateStamp;
      DWORD PointerToSymbolTable;
      DWORD NumberOfSymbols;
      WORD SizeOfOptionalHeader;
      WORD Characteristics;
    } IMAGE_FILE_HEADER,*PIMAGE_FILE_HEADER;
#define IMAGE_SIZEOF_FILE_HEADER 20
#define IMAGE_FILE_RELOCS_STRIPPED 0x0001
#define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002
#define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004
#define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008
#define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010
#define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020
#define IMAGE_FILE_BYTES_REVERSED_LO 0x0080
#define IMAGE_FILE_32BIT_MACHINE 0x0100
#define IMAGE_FILE_DEBUG_STRIPPED 0x0200
#define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400
#define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800
#define IMAGE_FILE_SYSTEM 0x1000
#define IMAGE_FILE_DLL 0x2000
#define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000
#define IMAGE_FILE_BYTES_REVERSED_HI 0x8000
#define IMAGE_FILE_MACHINE_UNKNOWN 0
#define IMAGE_FILE_MACHINE_I386 0x014c
#define IMAGE_FILE_MACHINE_R3000 0x0162
#define IMAGE_FILE_MACHINE_R4000 0x0166
#define IMAGE_FILE_MACHINE_R10000 0x0168
#define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169
#define IMAGE_FILE_MACHINE_ALPHA 0x0184
#define IMAGE_FILE_MACHINE_SH3 0x01a2
#define IMAGE_FILE_MACHINE_SH3DSP 0x01a3
#define IMAGE_FILE_MACHINE_SH3E 0x01a4
#define IMAGE_FILE_MACHINE_SH4 0x01a6
#define IMAGE_FILE_MACHINE_SH5 0x01a8
#define IMAGE_FILE_MACHINE_ARM 0x01c0
#define IMAGE_FILE_MACHINE_ARMV7 0x01c4
#define IMAGE_FILE_MACHINE_ARMNT 0x01c4
#define IMAGE_FILE_MACHINE_ARM64 0xaa64
#define IMAGE_FILE_MACHINE_THUMB 0x01c2
#define IMAGE_FILE_MACHINE_AM33 0x01d3
#define IMAGE_FILE_MACHINE_POWERPC 0x01F0
#define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1
#define IMAGE_FILE_MACHINE_IA64 0x0200
#define IMAGE_FILE_MACHINE_MIPS16 0x0266
#define IMAGE_FILE_MACHINE_ALPHA64 0x0284
#define IMAGE_FILE_MACHINE_MIPSFPU 0x0366
#define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466
#define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64
#define IMAGE_FILE_MACHINE_TRICORE 0x0520
#define IMAGE_FILE_MACHINE_CEF 0x0CEF
#define IMAGE_FILE_MACHINE_EBC 0x0EBC
#define IMAGE_FILE_MACHINE_AMD64 0x8664
#define IMAGE_FILE_MACHINE_M32R 0x9041
#define IMAGE_FILE_MACHINE_CEE 0xc0ee
    typedef struct _IMAGE_DATA_DIRECTORY {
      DWORD VirtualAddress;
      DWORD Size;
    } IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY;
#define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
    typedef struct _IMAGE_OPTIONAL_HEADER {
      WORD Magic;
      BYTE MajorLinkerVersion;
      BYTE MinorLinkerVersion;
      DWORD SizeOfCode;
      DWORD SizeOfInitializedData;
      DWORD SizeOfUninitializedData;
      DWORD AddressOfEntryPoint;
      DWORD BaseOfCode;
      DWORD BaseOfData;
      DWORD ImageBase;
      DWORD SectionAlignment;
      DWORD FileAlignment;
      WORD MajorOperatingSystemVersion;
      WORD MinorOperatingSystemVersion;
      WORD MajorImageVersion;
      WORD MinorImageVersion;
      WORD MajorSubsystemVersion;
      WORD MinorSubsystemVersion;
      DWORD Win32VersionValue;
      DWORD SizeOfImage;
      DWORD SizeOfHeaders;
      DWORD CheckSum;
      WORD Subsystem;
      WORD DllCharacteristics;
      DWORD SizeOfStackReserve;
      DWORD SizeOfStackCommit;
      DWORD SizeOfHeapReserve;
      DWORD SizeOfHeapCommit;
      DWORD LoaderFlags;
      DWORD NumberOfRvaAndSizes;
      IMAGE_DATA_DIRECTORY DataDirectory[16];
    } IMAGE_OPTIONAL_HEADER32,*PIMAGE_OPTIONAL_HEADER32;
    typedef struct _IMAGE_ROM_OPTIONAL_HEADER {
      WORD Magic;
      BYTE MajorLinkerVersion;
      BYTE MinorLinkerVersion;
      DWORD SizeOfCode;
      DWORD SizeOfInitializedData;
      DWORD SizeOfUninitializedData;
      DWORD AddressOfEntryPoint;
      DWORD BaseOfCode;
      DWORD BaseOfData;
      DWORD BaseOfBss;
      DWORD GprMask;
      DWORD CprMask[4];
      DWORD GpValue;
    } IMAGE_ROM_OPTIONAL_HEADER,*PIMAGE_ROM_OPTIONAL_HEADER;
    typedef struct _IMAGE_OPTIONAL_HEADER64 {
      WORD Magic;
      BYTE MajorLinkerVersion;
      BYTE MinorLinkerVersion;
      DWORD SizeOfCode;
      DWORD SizeOfInitializedData;
      DWORD SizeOfUninitializedData;
      DWORD AddressOfEntryPoint;
      DWORD BaseOfCode;
      ULONGLONG ImageBase;
      DWORD SectionAlignment;
      DWORD FileAlignment;
      WORD MajorOperatingSystemVersion;
      WORD MinorOperatingSystemVersion;
      WORD MajorImageVersion;
      WORD MinorImageVersion;
      WORD MajorSubsystemVersion;
      WORD MinorSubsystemVersion;
      DWORD Win32VersionValue;
      DWORD SizeOfImage;
      DWORD SizeOfHeaders;
      DWORD CheckSum;
      WORD Subsystem;
      WORD DllCharacteristics;
      ULONGLONG SizeOfStackReserve;
      ULONGLONG SizeOfStackCommit;
      ULONGLONG SizeOfHeapReserve;
      ULONGLONG SizeOfHeapCommit;
      DWORD LoaderFlags;
      DWORD NumberOfRvaAndSizes;
      IMAGE_DATA_DIRECTORY DataDirectory[16];
    } IMAGE_OPTIONAL_HEADER64,*PIMAGE_OPTIONAL_HEADER64;
#define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
#define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
#define IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 224
#define IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 240
#define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b
#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
    typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER;
    typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER;
#define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL32_HEADER
#define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC
    typedef struct _IMAGE_NT_HEADERS64 {
      DWORD Signature;
      IMAGE_FILE_HEADER FileHeader;
      IMAGE_OPTIONAL_HEADER64 OptionalHeader;
    } IMAGE_NT_HEADERS64,*PIMAGE_NT_HEADERS64;
    typedef struct _IMAGE_NT_HEADERS {
      DWORD Signature;
      IMAGE_FILE_HEADER FileHeader;
      IMAGE_OPTIONAL_HEADER32 OptionalHeader;
    } IMAGE_NT_HEADERS32,*PIMAGE_NT_HEADERS32;
    typedef struct _IMAGE_ROM_HEADERS {
      IMAGE_FILE_HEADER FileHeader;
      IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
    } IMAGE_ROM_HEADERS,*PIMAGE_ROM_HEADERS;
    typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS;
    typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS;
#define IMAGE_FIRST_SECTION(ntheader) ((PIMAGE_SECTION_HEADER) ((ULONG_PTR)ntheader + FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader) + ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader))
#define IMAGE_SUBSYSTEM_UNKNOWN 0
#define IMAGE_SUBSYSTEM_NATIVE 1
#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2
#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3
#define IMAGE_SUBSYSTEM_OS2_CUI 5
#define IMAGE_SUBSYSTEM_POSIX_CUI 7
#define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 8
#define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9
#define IMAGE_SUBSYSTEM_EFI_APPLICATION 10
#define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11
#define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12
#define IMAGE_SUBSYSTEM_EFI_ROM 13
#define IMAGE_SUBSYSTEM_XBOX 14
#define IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION 16
#define IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA 0x0020
#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040
#define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080
#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100
#define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200
#define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400
#define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800
#define IMAGE_DLLCHARACTERISTICS_APPCONTAINER 0x1000
#define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000
#define IMAGE_DLLCHARACTERISTICS_GUARD_CF 0x4000
#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000
#define IMAGE_DIRECTORY_ENTRY_EXPORT 0
#define IMAGE_DIRECTORY_ENTRY_IMPORT 1
#define IMAGE_DIRECTORY_ENTRY_RESOURCE 2
#define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3
#define IMAGE_DIRECTORY_ENTRY_SECURITY 4
#define IMAGE_DIRECTORY_ENTRY_BASERELOC 5
#define IMAGE_DIRECTORY_ENTRY_DEBUG 6
#define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 7
#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8
#define IMAGE_DIRECTORY_ENTRY_TLS 9
#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10
#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11
#define IMAGE_DIRECTORY_ENTRY_IAT 12
#define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13
#define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14
    typedef struct ANON_OBJECT_HEADER {
      WORD Sig1;
      WORD Sig2;
      WORD Version;
      WORD Machine;
      DWORD TimeDateStamp;
      CLSID ClassID;
      DWORD SizeOfData;
    } ANON_OBJECT_HEADER;
    typedef struct ANON_OBJECT_HEADER_V2 {
      WORD Sig1;
      WORD Sig2;
      WORD Version;
      WORD Machine;
      DWORD TimeDateStamp;
      CLSID ClassID;
      DWORD SizeOfData;
      DWORD Flags;
      DWORD MetaDataSize;
      DWORD MetaDataOffset;
    } ANON_OBJECT_HEADER_V2;
    typedef struct ANON_OBJECT_HEADER_BIGOBJ {
      WORD Sig1;
      WORD Sig2;
      WORD Version;
      WORD Machine;
      DWORD TimeDateStamp;
      CLSID ClassID;
      DWORD SizeOfData;
      DWORD Flags;
      DWORD MetaDataSize;
      DWORD MetaDataOffset;
      DWORD NumberOfSections;
      DWORD PointerToSymbolTable;
      DWORD NumberOfSymbols;
    } ANON_OBJECT_HEADER_BIGOBJ;
#define IMAGE_SIZEOF_SHORT_NAME 8
    typedef struct _IMAGE_SECTION_HEADER {
      BYTE Name[8];
      union {
 DWORD PhysicalAddress;
 DWORD VirtualSize;
      } Misc;
      DWORD VirtualAddress;
      DWORD SizeOfRawData;
      DWORD PointerToRawData;
      DWORD PointerToRelocations;
      DWORD PointerToLinenumbers;
      WORD NumberOfRelocations;
      WORD NumberOfLinenumbers;
      DWORD Characteristics;
    } IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
#define IMAGE_SIZEOF_SECTION_HEADER 40
#define IMAGE_SCN_TYPE_NO_PAD 0x00000008
#define IMAGE_SCN_CNT_CODE 0x00000020
#define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040
#define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080
#define IMAGE_SCN_LNK_OTHER 0x00000100
#define IMAGE_SCN_LNK_INFO 0x00000200
#define IMAGE_SCN_LNK_REMOVE 0x00000800
#define IMAGE_SCN_LNK_COMDAT 0x00001000
#define IMAGE_SCN_NO_DEFER_SPEC_EXC 0x00004000
#define IMAGE_SCN_GPREL 0x00008000
#define IMAGE_SCN_MEM_FARDATA 0x00008000
#define IMAGE_SCN_MEM_PURGEABLE 0x00020000
#define IMAGE_SCN_MEM_16BIT 0x00020000
#define IMAGE_SCN_MEM_LOCKED 0x00040000
#define IMAGE_SCN_MEM_PRELOAD 0x00080000
#define IMAGE_SCN_ALIGN_1BYTES 0x00100000
#define IMAGE_SCN_ALIGN_2BYTES 0x00200000
#define IMAGE_SCN_ALIGN_4BYTES 0x00300000
#define IMAGE_SCN_ALIGN_8BYTES 0x00400000
#define IMAGE_SCN_ALIGN_16BYTES 0x00500000
#define IMAGE_SCN_ALIGN_32BYTES 0x00600000
#define IMAGE_SCN_ALIGN_64BYTES 0x00700000
#define IMAGE_SCN_ALIGN_128BYTES 0x00800000
#define IMAGE_SCN_ALIGN_256BYTES 0x00900000
#define IMAGE_SCN_ALIGN_512BYTES 0x00A00000
#define IMAGE_SCN_ALIGN_1024BYTES 0x00B00000
#define IMAGE_SCN_ALIGN_2048BYTES 0x00C00000
#define IMAGE_SCN_ALIGN_4096BYTES 0x00D00000
#define IMAGE_SCN_ALIGN_8192BYTES 0x00E00000
#define IMAGE_SCN_ALIGN_MASK 0x00F00000
#define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000
#define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
#define IMAGE_SCN_MEM_NOT_CACHED 0x04000000
#define IMAGE_SCN_MEM_NOT_PAGED 0x08000000
#define IMAGE_SCN_MEM_SHARED 0x10000000
#define IMAGE_SCN_MEM_EXECUTE 0x20000000
#define IMAGE_SCN_MEM_READ 0x40000000
#define IMAGE_SCN_MEM_WRITE 0x80000000
#define IMAGE_SCN_SCALE_INDEX 0x00000001
#pragma pack(push,2)
    typedef struct _IMAGE_SYMBOL {
      union {
 BYTE ShortName[8];
 struct {
   DWORD Short;
   DWORD Long;
 } Name;
 DWORD LongName[2];
      } N;
      DWORD Value;
      SHORT SectionNumber;
      WORD Type;
      BYTE StorageClass;
      BYTE NumberOfAuxSymbols;
    } IMAGE_SYMBOL;
    typedef IMAGE_SYMBOL *PIMAGE_SYMBOL;
#define IMAGE_SIZEOF_SYMBOL 18
    typedef struct _IMAGE_SYMBOL_EX {
      union {
 BYTE ShortName[8];
 struct {
   DWORD Short;
   DWORD Long;
 } Name;
 DWORD LongName[2];
      } N;
      DWORD Value;
      LONG SectionNumber;
      WORD Type;
      BYTE StorageClass;
      BYTE NumberOfAuxSymbols;
    } IMAGE_SYMBOL_EX, *PIMAGE_SYMBOL_EX;
#define IMAGE_SYM_UNDEFINED (SHORT)0
#define IMAGE_SYM_ABSOLUTE (SHORT)-1
#define IMAGE_SYM_DEBUG (SHORT)-2
#define IMAGE_SYM_SECTION_MAX 0xFEFF
#define IMAGE_SYM_SECTION_MAX_EX MAXLONG
#define IMAGE_SYM_TYPE_NULL 0x0000
#define IMAGE_SYM_TYPE_VOID 0x0001
#define IMAGE_SYM_TYPE_CHAR 0x0002
#define IMAGE_SYM_TYPE_SHORT 0x0003
#define IMAGE_SYM_TYPE_INT 0x0004
#define IMAGE_SYM_TYPE_LONG 0x0005
#define IMAGE_SYM_TYPE_FLOAT 0x0006
#define IMAGE_SYM_TYPE_DOUBLE 0x0007
#define IMAGE_SYM_TYPE_STRUCT 0x0008
#define IMAGE_SYM_TYPE_UNION 0x0009
#define IMAGE_SYM_TYPE_ENUM 0x000A
#define IMAGE_SYM_TYPE_MOE 0x000B
#define IMAGE_SYM_TYPE_BYTE 0x000C
#define IMAGE_SYM_TYPE_WORD 0x000D
#define IMAGE_SYM_TYPE_UINT 0x000E
#define IMAGE_SYM_TYPE_DWORD 0x000F
#define IMAGE_SYM_TYPE_PCODE 0x8000
#define IMAGE_SYM_DTYPE_NULL 0
#define IMAGE_SYM_DTYPE_POINTER 1
#define IMAGE_SYM_DTYPE_FUNCTION 2
#define IMAGE_SYM_DTYPE_ARRAY 3
#define IMAGE_SYM_CLASS_END_OF_FUNCTION (BYTE)-1
#define IMAGE_SYM_CLASS_NULL 0x0000
#define IMAGE_SYM_CLASS_AUTOMATIC 0x0001
#define IMAGE_SYM_CLASS_EXTERNAL 0x0002
#define IMAGE_SYM_CLASS_STATIC 0x0003
#define IMAGE_SYM_CLASS_REGISTER 0x0004
#define IMAGE_SYM_CLASS_EXTERNAL_DEF 0x0005
#define IMAGE_SYM_CLASS_LABEL 0x0006
#define IMAGE_SYM_CLASS_UNDEFINED_LABEL 0x0007
#define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 0x0008
#define IMAGE_SYM_CLASS_ARGUMENT 0x0009
#define IMAGE_SYM_CLASS_STRUCT_TAG 0x000A
#define IMAGE_SYM_CLASS_MEMBER_OF_UNION 0x000B
#define IMAGE_SYM_CLASS_UNION_TAG 0x000C
#define IMAGE_SYM_CLASS_TYPE_DEFINITION 0x000D
#define IMAGE_SYM_CLASS_UNDEFINED_STATIC 0x000E
#define IMAGE_SYM_CLASS_ENUM_TAG 0x000F
#define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 0x0010
#define IMAGE_SYM_CLASS_REGISTER_PARAM 0x0011
#define IMAGE_SYM_CLASS_BIT_FIELD 0x0012
#define IMAGE_SYM_CLASS_FAR_EXTERNAL 0x0044
#define IMAGE_SYM_CLASS_BLOCK 0x0064
#define IMAGE_SYM_CLASS_FUNCTION 0x0065
#define IMAGE_SYM_CLASS_END_OF_STRUCT 0x0066
#define IMAGE_SYM_CLASS_FILE 0x0067
#define IMAGE_SYM_CLASS_SECTION 0x0068
#define IMAGE_SYM_CLASS_WEAK_EXTERNAL 0x0069
#define IMAGE_SYM_CLASS_CLR_TOKEN 0x006B
#define N_BTMASK 0x000F
#define N_TMASK 0x0030
#define N_TMASK1 0x00C0
#define N_TMASK2 0x00F0
#define N_BTSHFT 4
#define N_TSHIFT 2
#define BTYPE(x) ((x) & N_BTMASK)
#define ISPTR(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_POINTER << N_BTSHFT))
#define ISFCN(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT))
#define ISARY(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT))
#define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG || (x)==IMAGE_SYM_CLASS_UNION_TAG || (x)==IMAGE_SYM_CLASS_ENUM_TAG)
#define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK))
#define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
#pragma pack(push,2)
    typedef struct IMAGE_AUX_SYMBOL_TOKEN_DEF {
      BYTE bAuxType;
      BYTE bReserved;
      DWORD SymbolTableIndex;
      BYTE rgbReserved[12];
    } IMAGE_AUX_SYMBOL_TOKEN_DEF, *PIMAGE_AUX_SYMBOL_TOKEN_DEF;
#pragma pack(pop)
    typedef union _IMAGE_AUX_SYMBOL {
      struct {
 DWORD TagIndex;
 union {
   struct {
     WORD Linenumber;
     WORD Size;
   } LnSz;
   DWORD TotalSize;
 } Misc;
 union {
   struct {
     DWORD PointerToLinenumber;
     DWORD PointerToNextFunction;
   } Function;
   struct {
     WORD Dimension[4];
   } Array;
 } FcnAry;
 WORD TvIndex;
      } Sym;
      struct {
 BYTE Name[18];
      } File;
      struct {
 DWORD Length;
 WORD NumberOfRelocations;
 WORD NumberOfLinenumbers;
 DWORD CheckSum;
 SHORT Number;
 BYTE Selection;
      } Section;
      IMAGE_AUX_SYMBOL_TOKEN_DEF TokenDef;
      struct {
 DWORD crc;
 BYTE rgbReserved[14];
      } CRC;
    } IMAGE_AUX_SYMBOL, *PIMAGE_AUX_SYMBOL;
    typedef union _IMAGE_AUX_SYMBOL_EX {
      struct {
 DWORD WeakDefaultSymIndex;
 DWORD WeakSearchType;
 BYTE rgbReserved[12];
      } Sym;
      struct {
 BYTE Name[sizeof (IMAGE_SYMBOL_EX)];
      } File;
      struct {
 DWORD Length;
 WORD NumberOfRelocations;
 WORD NumberOfLinenumbers;
 DWORD CheckSum;
 SHORT Number;
 BYTE Selection;
 BYTE bReserved;
 SHORT HighNumber;
 BYTE rgbReserved[2];
      } Section;
      __extension__ struct {
 IMAGE_AUX_SYMBOL_TOKEN_DEF TokenDef;
 BYTE rgbReserved[2];
      };
      struct {
 DWORD crc;
 BYTE rgbReserved[16];
      } CRC;
    } IMAGE_AUX_SYMBOL_EX, *PIMAGE_AUX_SYMBOL_EX;
#define IMAGE_SIZEOF_AUX_SYMBOL 18
    typedef enum IMAGE_AUX_SYMBOL_TYPE {
      IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1
    } IMAGE_AUX_SYMBOL_TYPE;
#define IMAGE_COMDAT_SELECT_NODUPLICATES 1
#define IMAGE_COMDAT_SELECT_ANY 2
#define IMAGE_COMDAT_SELECT_SAME_SIZE 3
#define IMAGE_COMDAT_SELECT_EXACT_MATCH 4
#define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5
#define IMAGE_COMDAT_SELECT_LARGEST 6
#define IMAGE_COMDAT_SELECT_NEWEST 7
#define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1
#define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
#define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
    typedef struct _IMAGE_RELOCATION {
      __extension__ union {
 DWORD VirtualAddress;
 DWORD RelocCount;
      } ;
      DWORD SymbolTableIndex;
      WORD Type;
    } IMAGE_RELOCATION;
    typedef IMAGE_RELOCATION *PIMAGE_RELOCATION;
#define IMAGE_SIZEOF_RELOCATION 10
#define IMAGE_REL_I386_ABSOLUTE 0x0000
#define IMAGE_REL_I386_DIR16 0x0001
#define IMAGE_REL_I386_REL16 0x0002
#define IMAGE_REL_I386_DIR32 0x0006
#define IMAGE_REL_I386_DIR32NB 0x0007
#define IMAGE_REL_I386_SEG12 0x0009
#define IMAGE_REL_I386_SECTION 0x000A
#define IMAGE_REL_I386_SECREL 0x000B
#define IMAGE_REL_I386_TOKEN 0x000C
#define IMAGE_REL_I386_SECREL7 0x000D
#define IMAGE_REL_I386_REL32 0x0014
#define IMAGE_REL_MIPS_ABSOLUTE 0x0000
#define IMAGE_REL_MIPS_REFHALF 0x0001
#define IMAGE_REL_MIPS_REFWORD 0x0002
#define IMAGE_REL_MIPS_JMPADDR 0x0003
#define IMAGE_REL_MIPS_REFHI 0x0004
#define IMAGE_REL_MIPS_REFLO 0x0005
#define IMAGE_REL_MIPS_GPREL 0x0006
#define IMAGE_REL_MIPS_LITERAL 0x0007
#define IMAGE_REL_MIPS_SECTION 0x000A
#define IMAGE_REL_MIPS_SECREL 0x000B
#define IMAGE_REL_MIPS_SECRELLO 0x000C
#define IMAGE_REL_MIPS_SECRELHI 0x000D
#define IMAGE_REL_MIPS_TOKEN 0x000E
#define IMAGE_REL_MIPS_JMPADDR16 0x0010
#define IMAGE_REL_MIPS_REFWORDNB 0x0022
#define IMAGE_REL_MIPS_PAIR 0x0025
#define IMAGE_REL_ALPHA_ABSOLUTE 0x0000
#define IMAGE_REL_ALPHA_REFLONG 0x0001
#define IMAGE_REL_ALPHA_REFQUAD 0x0002
#define IMAGE_REL_ALPHA_GPREL32 0x0003
#define IMAGE_REL_ALPHA_LITERAL 0x0004
#define IMAGE_REL_ALPHA_LITUSE 0x0005
#define IMAGE_REL_ALPHA_GPDISP 0x0006
#define IMAGE_REL_ALPHA_BRADDR 0x0007
#define IMAGE_REL_ALPHA_HINT 0x0008
#define IMAGE_REL_ALPHA_INLINE_REFLONG 0x0009
#define IMAGE_REL_ALPHA_REFHI 0x000A
#define IMAGE_REL_ALPHA_REFLO 0x000B
#define IMAGE_REL_ALPHA_PAIR 0x000C
#define IMAGE_REL_ALPHA_MATCH 0x000D
#define IMAGE_REL_ALPHA_SECTION 0x000E
#define IMAGE_REL_ALPHA_SECREL 0x000F
#define IMAGE_REL_ALPHA_REFLONGNB 0x0010
#define IMAGE_REL_ALPHA_SECRELLO 0x0011
#define IMAGE_REL_ALPHA_SECRELHI 0x0012
#define IMAGE_REL_ALPHA_REFQ3 0x0013
#define IMAGE_REL_ALPHA_REFQ2 0x0014
#define IMAGE_REL_ALPHA_REFQ1 0x0015
#define IMAGE_REL_ALPHA_GPRELLO 0x0016
#define IMAGE_REL_ALPHA_GPRELHI 0x0017
#define IMAGE_REL_PPC_ABSOLUTE 0x0000
#define IMAGE_REL_PPC_ADDR64 0x0001
#define IMAGE_REL_PPC_ADDR32 0x0002
#define IMAGE_REL_PPC_ADDR24 0x0003
#define IMAGE_REL_PPC_ADDR16 0x0004
#define IMAGE_REL_PPC_ADDR14 0x0005
#define IMAGE_REL_PPC_REL24 0x0006
#define IMAGE_REL_PPC_REL14 0x0007
#define IMAGE_REL_PPC_TOCREL16 0x0008
#define IMAGE_REL_PPC_TOCREL14 0x0009
#define IMAGE_REL_PPC_ADDR32NB 0x000A
#define IMAGE_REL_PPC_SECREL 0x000B
#define IMAGE_REL_PPC_SECTION 0x000C
#define IMAGE_REL_PPC_IFGLUE 0x000D
#define IMAGE_REL_PPC_IMGLUE 0x000E
#define IMAGE_REL_PPC_SECREL16 0x000F
#define IMAGE_REL_PPC_REFHI 0x0010
#define IMAGE_REL_PPC_REFLO 0x0011
#define IMAGE_REL_PPC_PAIR 0x0012
#define IMAGE_REL_PPC_SECRELLO 0x0013
#define IMAGE_REL_PPC_SECRELHI 0x0014
#define IMAGE_REL_PPC_GPREL 0x0015
#define IMAGE_REL_PPC_TOKEN 0x0016
#define IMAGE_REL_PPC_TYPEMASK 0x00FF
#define IMAGE_REL_PPC_NEG 0x0100
#define IMAGE_REL_PPC_BRTAKEN 0x0200
#define IMAGE_REL_PPC_BRNTAKEN 0x0400
#define IMAGE_REL_PPC_TOCDEFN 0x0800
#define IMAGE_REL_SH3_ABSOLUTE 0x0000
#define IMAGE_REL_SH3_DIRECT16 0x0001
#define IMAGE_REL_SH3_DIRECT32 0x0002
#define IMAGE_REL_SH3_DIRECT8 0x0003
#define IMAGE_REL_SH3_DIRECT8_WORD 0x0004
#define IMAGE_REL_SH3_DIRECT8_LONG 0x0005
#define IMAGE_REL_SH3_DIRECT4 0x0006
#define IMAGE_REL_SH3_DIRECT4_WORD 0x0007
#define IMAGE_REL_SH3_DIRECT4_LONG 0x0008
#define IMAGE_REL_SH3_PCREL8_WORD 0x0009
#define IMAGE_REL_SH3_PCREL8_LONG 0x000A
#define IMAGE_REL_SH3_PCREL12_WORD 0x000B
#define IMAGE_REL_SH3_STARTOF_SECTION 0x000C
#define IMAGE_REL_SH3_SIZEOF_SECTION 0x000D
#define IMAGE_REL_SH3_SECTION 0x000E
#define IMAGE_REL_SH3_SECREL 0x000F
#define IMAGE_REL_SH3_DIRECT32_NB 0x0010
#define IMAGE_REL_SH3_GPREL4_LONG 0x0011
#define IMAGE_REL_SH3_TOKEN 0x0012
#define IMAGE_REL_SHM_PCRELPT 0x0013
#define IMAGE_REL_SHM_REFLO 0x0014
#define IMAGE_REL_SHM_REFHALF 0x0015
#define IMAGE_REL_SHM_RELLO 0x0016
#define IMAGE_REL_SHM_RELHALF 0x0017
#define IMAGE_REL_SHM_PAIR 0x0018
#define IMAGE_REL_SH_NOMODE 0x8000
#define IMAGE_REL_ARM_ABSOLUTE 0x0000
#define IMAGE_REL_ARM_ADDR32 0x0001
#define IMAGE_REL_ARM_ADDR32NB 0x0002
#define IMAGE_REL_ARM_BRANCH24 0x0003
#define IMAGE_REL_ARM_BRANCH11 0x0004
#define IMAGE_REL_ARM_TOKEN 0x0005
#define IMAGE_REL_ARM_GPREL12 0x0006
#define IMAGE_REL_ARM_GPREL7 0x0007
#define IMAGE_REL_ARM_BLX24 0x0008
#define IMAGE_REL_ARM_BLX11 0x0009
#define IMAGE_REL_ARM_SECTION 0x000E
#define IMAGE_REL_ARM_SECREL 0x000F
#define IMAGE_REL_ARM_MOV32A 0x0010
#define IMAGE_REL_ARM_MOV32 0x0010
#define IMAGE_REL_ARM_MOV32T 0x0011
#define IMAGE_REL_THUMB_MOV32 0x0011
#define IMAGE_REL_ARM_BRANCH20T 0x0012
#define IMAGE_REL_THUMB_BRANCH20 0x0012
#define IMAGE_REL_ARM_BRANCH24T 0x0014
#define IMAGE_REL_THUMB_BRANCH24 0x0014
#define IMAGE_REL_ARM_BLX23T 0x0015
#define IMAGE_REL_THUMB_BLX23 0x0015
#define IMAGE_REL_AM_ABSOLUTE 0x0000
#define IMAGE_REL_AM_ADDR32 0x0001
#define IMAGE_REL_AM_ADDR32NB 0x0002
#define IMAGE_REL_AM_CALL32 0x0003
#define IMAGE_REL_AM_FUNCINFO 0x0004
#define IMAGE_REL_AM_REL32_1 0x0005
#define IMAGE_REL_AM_REL32_2 0x0006
#define IMAGE_REL_AM_SECREL 0x0007
#define IMAGE_REL_AM_SECTION 0x0008
#define IMAGE_REL_AM_TOKEN 0x0009
#define IMAGE_REL_AMD64_ABSOLUTE 0x0000
#define IMAGE_REL_AMD64_ADDR64 0x0001
#define IMAGE_REL_AMD64_ADDR32 0x0002
#define IMAGE_REL_AMD64_ADDR32NB 0x0003
#define IMAGE_REL_AMD64_REL32 0x0004
#define IMAGE_REL_AMD64_REL32_1 0x0005
#define IMAGE_REL_AMD64_REL32_2 0x0006
#define IMAGE_REL_AMD64_REL32_3 0x0007
#define IMAGE_REL_AMD64_REL32_4 0x0008
#define IMAGE_REL_AMD64_REL32_5 0x0009
#define IMAGE_REL_AMD64_SECTION 0x000A
#define IMAGE_REL_AMD64_SECREL 0x000B
#define IMAGE_REL_AMD64_SECREL7 0x000C
#define IMAGE_REL_AMD64_TOKEN 0x000D
#define IMAGE_REL_AMD64_SREL32 0x000E
#define IMAGE_REL_AMD64_PAIR 0x000F
#define IMAGE_REL_AMD64_SSPAN32 0x0010
#define IMAGE_REL_IA64_ABSOLUTE 0x0000
#define IMAGE_REL_IA64_IMM14 0x0001
#define IMAGE_REL_IA64_IMM22 0x0002
#define IMAGE_REL_IA64_IMM64 0x0003
#define IMAGE_REL_IA64_DIR32 0x0004
#define IMAGE_REL_IA64_DIR64 0x0005
#define IMAGE_REL_IA64_PCREL21B 0x0006
#define IMAGE_REL_IA64_PCREL21M 0x0007
#define IMAGE_REL_IA64_PCREL21F 0x0008
#define IMAGE_REL_IA64_GPREL22 0x0009
#define IMAGE_REL_IA64_LTOFF22 0x000A
#define IMAGE_REL_IA64_SECTION 0x000B
#define IMAGE_REL_IA64_SECREL22 0x000C
#define IMAGE_REL_IA64_SECREL64I 0x000D
#define IMAGE_REL_IA64_SECREL32 0x000E
#define IMAGE_REL_IA64_DIR32NB 0x0010
#define IMAGE_REL_IA64_SREL14 0x0011
#define IMAGE_REL_IA64_SREL22 0x0012
#define IMAGE_REL_IA64_SREL32 0x0013
#define IMAGE_REL_IA64_UREL32 0x0014
#define IMAGE_REL_IA64_PCREL60X 0x0015
#define IMAGE_REL_IA64_PCREL60B 0x0016
#define IMAGE_REL_IA64_PCREL60F 0x0017
#define IMAGE_REL_IA64_PCREL60I 0x0018
#define IMAGE_REL_IA64_PCREL60M 0x0019
#define IMAGE_REL_IA64_IMMGPREL64 0x001A
#define IMAGE_REL_IA64_TOKEN 0x001B
#define IMAGE_REL_IA64_GPREL32 0x001C
#define IMAGE_REL_IA64_ADDEND 0x001F
#define IMAGE_REL_CEF_ABSOLUTE 0x0000
#define IMAGE_REL_CEF_ADDR32 0x0001
#define IMAGE_REL_CEF_ADDR64 0x0002
#define IMAGE_REL_CEF_ADDR32NB 0x0003
#define IMAGE_REL_CEF_SECTION 0x0004
#define IMAGE_REL_CEF_SECREL 0x0005
#define IMAGE_REL_CEF_TOKEN 0x0006
#define IMAGE_REL_CEE_ABSOLUTE 0x0000
#define IMAGE_REL_CEE_ADDR32 0x0001
#define IMAGE_REL_CEE_ADDR64 0x0002
#define IMAGE_REL_CEE_ADDR32NB 0x0003
#define IMAGE_REL_CEE_SECTION 0x0004
#define IMAGE_REL_CEE_SECREL 0x0005
#define IMAGE_REL_CEE_TOKEN 0x0006
#define IMAGE_REL_M32R_ABSOLUTE 0x0000
#define IMAGE_REL_M32R_ADDR32 0x0001
#define IMAGE_REL_M32R_ADDR32NB 0x0002
#define IMAGE_REL_M32R_ADDR24 0x0003
#define IMAGE_REL_M32R_GPREL16 0x0004
#define IMAGE_REL_M32R_PCREL24 0x0005
#define IMAGE_REL_M32R_PCREL16 0x0006
#define IMAGE_REL_M32R_PCREL8 0x0007
#define IMAGE_REL_M32R_REFHALF 0x0008
#define IMAGE_REL_M32R_REFHI 0x0009
#define IMAGE_REL_M32R_REFLO 0x000A
#define IMAGE_REL_M32R_PAIR 0x000B
#define IMAGE_REL_M32R_SECTION 0x000C
#define IMAGE_REL_M32R_SECREL32 0x000D
#define IMAGE_REL_M32R_TOKEN 0x000E
#define IMAGE_REL_EBC_ABSOLUTE 0x0000
#define IMAGE_REL_EBC_ADDR32NB 0x0001
#define IMAGE_REL_EBC_REL32 0x0002
#define IMAGE_REL_EBC_SECTION 0x0003
#define IMAGE_REL_EBC_SECREL 0x0004
#define EXT_IMM64(Value,Address,Size,InstPos,ValPos) Value |= (((ULONGLONG)((*(Address) >> InstPos) & (((ULONGLONG)1 << Size) - 1))) << ValPos)
#define INS_IMM64(Value,Address,Size,InstPos,ValPos) *(PDWORD)Address = (*(PDWORD)Address & ~(((1 << Size) - 1) << InstPos)) | ((DWORD)((((ULONGLONG)Value >> ValPos) & (((ULONGLONG)1 << Size) - 1))) << InstPos)
#define EMARCH_ENC_I17_IMM7B_INST_WORD_X 3
#define EMARCH_ENC_I17_IMM7B_SIZE_X 7
#define EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X 4
#define EMARCH_ENC_I17_IMM7B_VAL_POS_X 0
#define EMARCH_ENC_I17_IMM9D_INST_WORD_X 3
#define EMARCH_ENC_I17_IMM9D_SIZE_X 9
#define EMARCH_ENC_I17_IMM9D_INST_WORD_POS_X 18
#define EMARCH_ENC_I17_IMM9D_VAL_POS_X 7
#define EMARCH_ENC_I17_IMM5C_INST_WORD_X 3
#define EMARCH_ENC_I17_IMM5C_SIZE_X 5
#define EMARCH_ENC_I17_IMM5C_INST_WORD_POS_X 13
#define EMARCH_ENC_I17_IMM5C_VAL_POS_X 16
#define EMARCH_ENC_I17_IC_INST_WORD_X 3
#define EMARCH_ENC_I17_IC_SIZE_X 1
#define EMARCH_ENC_I17_IC_INST_WORD_POS_X 12
#define EMARCH_ENC_I17_IC_VAL_POS_X 21
#define EMARCH_ENC_I17_IMM41a_INST_WORD_X 1
#define EMARCH_ENC_I17_IMM41a_SIZE_X 10
#define EMARCH_ENC_I17_IMM41a_INST_WORD_POS_X 14
#define EMARCH_ENC_I17_IMM41a_VAL_POS_X 22
#define EMARCH_ENC_I17_IMM41b_INST_WORD_X 1
#define EMARCH_ENC_I17_IMM41b_SIZE_X 8
#define EMARCH_ENC_I17_IMM41b_INST_WORD_POS_X 24
#define EMARCH_ENC_I17_IMM41b_VAL_POS_X 32
#define EMARCH_ENC_I17_IMM41c_INST_WORD_X 2
#define EMARCH_ENC_I17_IMM41c_SIZE_X 23
#define EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X 0
#define EMARCH_ENC_I17_IMM41c_VAL_POS_X 40
#define EMARCH_ENC_I17_SIGN_INST_WORD_X 3
#define EMARCH_ENC_I17_SIGN_SIZE_X 1
#define EMARCH_ENC_I17_SIGN_INST_WORD_POS_X 27
#define EMARCH_ENC_I17_SIGN_VAL_POS_X 63
#define X3_OPCODE_INST_WORD_X 3
#define X3_OPCODE_SIZE_X 4
#define X3_OPCODE_INST_WORD_POS_X 28
#define X3_OPCODE_SIGN_VAL_POS_X 0
#define X3_I_INST_WORD_X 3
#define X3_I_SIZE_X 1
#define X3_I_INST_WORD_POS_X 27
#define X3_I_SIGN_VAL_POS_X 59
#define X3_D_WH_INST_WORD_X 3
#define X3_D_WH_SIZE_X 3
#define X3_D_WH_INST_WORD_POS_X 24
#define X3_D_WH_SIGN_VAL_POS_X 0
#define X3_IMM20_INST_WORD_X 3
#define X3_IMM20_SIZE_X 20
#define X3_IMM20_INST_WORD_POS_X 4
#define X3_IMM20_SIGN_VAL_POS_X 0
#define X3_IMM39_1_INST_WORD_X 2
#define X3_IMM39_1_SIZE_X 23
#define X3_IMM39_1_INST_WORD_POS_X 0
#define X3_IMM39_1_SIGN_VAL_POS_X 36
#define X3_IMM39_2_INST_WORD_X 1
#define X3_IMM39_2_SIZE_X 16
#define X3_IMM39_2_INST_WORD_POS_X 16
#define X3_IMM39_2_SIGN_VAL_POS_X 20
#define X3_P_INST_WORD_X 3
#define X3_P_SIZE_X 4
#define X3_P_INST_WORD_POS_X 0
#define X3_P_SIGN_VAL_POS_X 0
#define X3_TMPLT_INST_WORD_X 0
#define X3_TMPLT_SIZE_X 4
#define X3_TMPLT_INST_WORD_POS_X 0
#define X3_TMPLT_SIGN_VAL_POS_X 0
#define X3_BTYPE_QP_INST_WORD_X 2
#define X3_BTYPE_QP_SIZE_X 9
#define X3_BTYPE_QP_INST_WORD_POS_X 23
#define X3_BTYPE_QP_INST_VAL_POS_X 0
#define X3_EMPTY_INST_WORD_X 1
#define X3_EMPTY_SIZE_X 2
#define X3_EMPTY_INST_WORD_POS_X 14
#define X3_EMPTY_INST_VAL_POS_X 0
    typedef struct _IMAGE_LINENUMBER {
      union {
 DWORD SymbolTableIndex;
 DWORD VirtualAddress;
      } Type;
      WORD Linenumber;
    } IMAGE_LINENUMBER;
    typedef IMAGE_LINENUMBER *PIMAGE_LINENUMBER;
#define IMAGE_SIZEOF_LINENUMBER 6
#pragma pack(pop)
    typedef struct _IMAGE_BASE_RELOCATION {
      DWORD VirtualAddress;
      DWORD SizeOfBlock;
    } IMAGE_BASE_RELOCATION;
    typedef IMAGE_BASE_RELOCATION *PIMAGE_BASE_RELOCATION;
#define IMAGE_SIZEOF_BASE_RELOCATION 8
#define IMAGE_REL_BASED_ABSOLUTE 0
#define IMAGE_REL_BASED_HIGH 1
#define IMAGE_REL_BASED_LOW 2
#define IMAGE_REL_BASED_HIGHLOW 3
#define IMAGE_REL_BASED_HIGHADJ 4
#define IMAGE_REL_BASED_MIPS_JMPADDR 5
#define IMAGE_REL_BASED_ARM_MOV32 5
#define IMAGE_REL_BASED_THUMB_MOV32 7
#define IMAGE_REL_BASED_MIPS_JMPADDR16 9
#define IMAGE_REL_BASED_IA64_IMM64 9
#define IMAGE_REL_BASED_DIR64 10
#define IMAGE_ARCHIVE_START_SIZE 8
#define IMAGE_ARCHIVE_START "!<arch>\n"
#define IMAGE_ARCHIVE_END "`\n"
#define IMAGE_ARCHIVE_PAD "\n"
#define IMAGE_ARCHIVE_LINKER_MEMBER "/               "
#define IMAGE_ARCHIVE_LONGNAMES_MEMBER "//              "
    typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER {
      BYTE Name[16];
      BYTE Date[12];
      BYTE UserID[6];
      BYTE GroupID[6];
      BYTE Mode[8];
      BYTE Size[10];
      BYTE EndHeader[2];
    } IMAGE_ARCHIVE_MEMBER_HEADER,*PIMAGE_ARCHIVE_MEMBER_HEADER;
#define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
    typedef struct _IMAGE_EXPORT_DIRECTORY {
      DWORD Characteristics;
      DWORD TimeDateStamp;
      WORD MajorVersion;
      WORD MinorVersion;
      DWORD Name;
      DWORD Base;
      DWORD NumberOfFunctions;
      DWORD NumberOfNames;
      DWORD AddressOfFunctions;
      DWORD AddressOfNames;
      DWORD AddressOfNameOrdinals;
    } IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;
    typedef struct _IMAGE_IMPORT_BY_NAME {
      WORD Hint;
      CHAR Name[1];
    } IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME;
#pragma pack(push,8)
    typedef struct _IMAGE_THUNK_DATA64 {
      union {
 ULONGLONG ForwarderString;
 ULONGLONG Function;
 ULONGLONG Ordinal;
 ULONGLONG AddressOfData;
      } u1;
    } IMAGE_THUNK_DATA64;
    typedef IMAGE_THUNK_DATA64 *PIMAGE_THUNK_DATA64;
#pragma pack(pop)
    typedef struct _IMAGE_THUNK_DATA32 {
      union {
 DWORD ForwarderString;
 DWORD Function;
 DWORD Ordinal;
 DWORD AddressOfData;
      } u1;
    } IMAGE_THUNK_DATA32;
    typedef IMAGE_THUNK_DATA32 *PIMAGE_THUNK_DATA32;
#define IMAGE_ORDINAL_FLAG64 0x8000000000000000ull
#define IMAGE_ORDINAL_FLAG32 0x80000000
#define IMAGE_ORDINAL64(Ordinal) (Ordinal & 0xffffull)
#define IMAGE_ORDINAL32(Ordinal) (Ordinal & 0xffff)
#define IMAGE_SNAP_BY_ORDINAL64(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG64)!=0)
#define IMAGE_SNAP_BY_ORDINAL32(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG32)!=0)
    typedef void (__attribute__((__stdcall__)) *PIMAGE_TLS_CALLBACK)(PVOID DllHandle,DWORD Reason,PVOID Reserved);
    typedef struct _IMAGE_TLS_DIRECTORY64 {
      ULONGLONG StartAddressOfRawData;
      ULONGLONG EndAddressOfRawData;
      ULONGLONG AddressOfIndex;
      ULONGLONG AddressOfCallBacks;
      DWORD SizeOfZeroFill;
      DWORD Characteristics;
    } IMAGE_TLS_DIRECTORY64;
    typedef IMAGE_TLS_DIRECTORY64 *PIMAGE_TLS_DIRECTORY64;
    typedef struct _IMAGE_TLS_DIRECTORY32 {
      DWORD StartAddressOfRawData;
      DWORD EndAddressOfRawData;
      DWORD AddressOfIndex;
      DWORD AddressOfCallBacks;
      DWORD SizeOfZeroFill;
      DWORD Characteristics;
    } IMAGE_TLS_DIRECTORY32;
    typedef IMAGE_TLS_DIRECTORY32 *PIMAGE_TLS_DIRECTORY32;
#define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG32
#define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL32(Ordinal)
    typedef IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA;
    typedef PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA;
#define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL32(Ordinal)
    typedef IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY;
    typedef PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY;
    typedef struct _IMAGE_IMPORT_DESCRIPTOR {
      __extension__ union {
 DWORD Characteristics;
 DWORD OriginalFirstThunk;
      } ;
      DWORD TimeDateStamp;
      DWORD ForwarderChain;
      DWORD Name;
      DWORD FirstThunk;
    } IMAGE_IMPORT_DESCRIPTOR;
    typedef IMAGE_IMPORT_DESCRIPTOR *PIMAGE_IMPORT_DESCRIPTOR;
    typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR {
      DWORD TimeDateStamp;
      WORD OffsetModuleName;
      WORD NumberOfModuleForwarderRefs;
    } IMAGE_BOUND_IMPORT_DESCRIPTOR,*PIMAGE_BOUND_IMPORT_DESCRIPTOR;
    typedef struct _IMAGE_BOUND_FORWARDER_REF {
      DWORD TimeDateStamp;
      WORD OffsetModuleName;
      WORD Reserved;
    } IMAGE_BOUND_FORWARDER_REF,*PIMAGE_BOUND_FORWARDER_REF;
    typedef struct _IMAGE_DELAYLOAD_DESCRIPTOR {
      union {
 DWORD AllAttributes;
 __extension__ struct {
   DWORD RvaBased : 1;
   DWORD ReservedAttributes : 31;
 };
      } Attributes;
      DWORD DllNameRVA;
      DWORD ModuleHandleRVA;
      DWORD ImportAddressTableRVA;
      DWORD ImportNameTableRVA;
      DWORD BoundImportAddressTableRVA;
      DWORD UnloadInformationTableRVA;
      DWORD TimeDateStamp;
    } IMAGE_DELAYLOAD_DESCRIPTOR,*PIMAGE_DELAYLOAD_DESCRIPTOR;
    typedef const IMAGE_DELAYLOAD_DESCRIPTOR *PCIMAGE_DELAYLOAD_DESCRIPTOR;
    typedef struct _IMAGE_RESOURCE_DIRECTORY {
      DWORD Characteristics;
      DWORD TimeDateStamp;
      WORD MajorVersion;
      WORD MinorVersion;
      WORD NumberOfNamedEntries;
      WORD NumberOfIdEntries;
    } IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY;
#define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000
#define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000
    typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
      __extension__ union {
 __extension__ struct {
   DWORD NameOffset:31;
   DWORD NameIsString:1;
 } ;
 DWORD Name;
 WORD Id;
      } ;
      __extension__ union {
 DWORD OffsetToData;
 __extension__ struct {
   DWORD OffsetToDirectory:31;
   DWORD DataIsDirectory:1;
 } ;
      } ;
    } IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY;
    typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING {
      WORD Length;
      CHAR NameString[1];
    } IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING;
    typedef struct _IMAGE_RESOURCE_DIR_STRING_U {
      WORD Length;
      WCHAR NameString[1];
    } IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U;
    typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
      DWORD OffsetToData;
      DWORD Size;
      DWORD CodePage;
      DWORD Reserved;
    } IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY;
    typedef struct {
      DWORD Size;
      DWORD TimeDateStamp;
      WORD MajorVersion;
      WORD MinorVersion;
      DWORD GlobalFlagsClear;
      DWORD GlobalFlagsSet;
      DWORD CriticalSectionDefaultTimeout;
      DWORD DeCommitFreeBlockThreshold;
      DWORD DeCommitTotalFreeThreshold;
      DWORD LockPrefixTable;
      DWORD MaximumAllocationSize;
      DWORD VirtualMemoryThreshold;
      DWORD ProcessHeapFlags;
      DWORD ProcessAffinityMask;
      WORD CSDVersion;
      WORD Reserved1;
      DWORD EditList;
      DWORD SecurityCookie;
      DWORD SEHandlerTable;
      DWORD SEHandlerCount;
    } IMAGE_LOAD_CONFIG_DIRECTORY32,*PIMAGE_LOAD_CONFIG_DIRECTORY32;
    typedef struct {
      DWORD Size;
      DWORD TimeDateStamp;
      WORD MajorVersion;
      WORD MinorVersion;
      DWORD GlobalFlagsClear;
      DWORD GlobalFlagsSet;
      DWORD CriticalSectionDefaultTimeout;
      ULONGLONG DeCommitFreeBlockThreshold;
      ULONGLONG DeCommitTotalFreeThreshold;
      ULONGLONG LockPrefixTable;
      ULONGLONG MaximumAllocationSize;
      ULONGLONG VirtualMemoryThreshold;
      ULONGLONG ProcessAffinityMask;
      DWORD ProcessHeapFlags;
      WORD CSDVersion;
      WORD Reserved1;
      ULONGLONG EditList;
      ULONGLONG SecurityCookie;
      ULONGLONG SEHandlerTable;
      ULONGLONG SEHandlerCount;
    } IMAGE_LOAD_CONFIG_DIRECTORY64,*PIMAGE_LOAD_CONFIG_DIRECTORY64;
    typedef IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY;
    typedef PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY;
    typedef struct _IMAGE_CE_RUNTIME_FUNCTION_ENTRY {
      DWORD FuncStart;
      DWORD PrologLen : 8;
      DWORD FuncLen : 22;
      DWORD ThirtyTwoBit : 1;
      DWORD ExceptionFlag : 1;
    } IMAGE_CE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_CE_RUNTIME_FUNCTION_ENTRY;
    typedef struct _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY {
      ULONGLONG BeginAddress;
      ULONGLONG EndAddress;
      ULONGLONG ExceptionHandler;
      ULONGLONG HandlerData;
      ULONGLONG PrologEndAddress;
    } IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY;
    typedef struct _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY {
      DWORD BeginAddress;
      DWORD EndAddress;
      DWORD ExceptionHandler;
      DWORD HandlerData;
      DWORD PrologEndAddress;
    } IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY;
    typedef struct _IMAGE_ARM_RUNTIME_FUNCTION_ENTRY {
      DWORD BeginAddress;
      __extension__ union {
 DWORD UnwindData;
 __extension__ struct {
   DWORD Flag : 2;
   DWORD FunctionLength : 11;
   DWORD Ret : 2;
   DWORD H : 1;
   DWORD Reg : 3;
   DWORD R : 1;
   DWORD L : 1;
   DWORD C : 1;
   DWORD StackAdjust : 10;
 } ;
      } ;
    } IMAGE_ARM_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY;
    typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY {
      DWORD BeginAddress;
      __extension__ union {
 DWORD UnwindData;
 __extension__ struct {
   DWORD Flag : 2;
   DWORD FunctionLength : 11;
   DWORD RegF : 3;
   DWORD RegI : 4;
   DWORD H : 1;
   DWORD CR : 2;
   DWORD FrameSize : 9;
 } ;
      } ;
    } IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ARM64_RUNTIME_FUNCTION_ENTRY;
    typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY {
      DWORD BeginAddress;
      DWORD EndAddress;
      __extension__ union {
 DWORD UnwindInfoAddress;
 DWORD UnwindData;
      } ;
    } _IMAGE_RUNTIME_FUNCTION_ENTRY,*_PIMAGE_RUNTIME_FUNCTION_ENTRY;
    typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_IA64_RUNTIME_FUNCTION_ENTRY;
    typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY;
    typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY;
    typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY;
    typedef struct _IMAGE_DEBUG_DIRECTORY {
      DWORD Characteristics;
      DWORD TimeDateStamp;
      WORD MajorVersion;
      WORD MinorVersion;
      DWORD Type;
      DWORD SizeOfData;
      DWORD AddressOfRawData;
      DWORD PointerToRawData;
    } IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY;
#define IMAGE_DEBUG_TYPE_UNKNOWN 0
#define IMAGE_DEBUG_TYPE_COFF 1
#define IMAGE_DEBUG_TYPE_CODEVIEW 2
#define IMAGE_DEBUG_TYPE_FPO 3
#define IMAGE_DEBUG_TYPE_MISC 4
#define IMAGE_DEBUG_TYPE_EXCEPTION 5
#define IMAGE_DEBUG_TYPE_FIXUP 6
#define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7
#define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8
#define IMAGE_DEBUG_TYPE_BORLAND 9
#define IMAGE_DEBUG_TYPE_RESERVED10 10
#define IMAGE_DEBUG_TYPE_CLSID 11
    typedef struct _IMAGE_COFF_SYMBOLS_HEADER {
      DWORD NumberOfSymbols;
      DWORD LvaToFirstSymbol;
      DWORD NumberOfLinenumbers;
      DWORD LvaToFirstLinenumber;
      DWORD RvaToFirstByteOfCode;
      DWORD RvaToLastByteOfCode;
      DWORD RvaToFirstByteOfData;
      DWORD RvaToLastByteOfData;
    } IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER;
#define FRAME_FPO 0
#define FRAME_TRAP 1
#define FRAME_TSS 2
#define FRAME_NONFPO 3
    typedef struct _FPO_DATA {
      DWORD ulOffStart;
      DWORD cbProcSize;
      DWORD cdwLocals;
      WORD cdwParams;
      WORD cbProlog : 8;
      WORD cbRegs : 3;
      WORD fHasSEH : 1;
      WORD fUseBP : 1;
      WORD reserved : 1;
      WORD cbFrame : 2;
    } FPO_DATA,*PFPO_DATA;
#define SIZEOF_RFPO_DATA 16
#define IMAGE_DEBUG_MISC_EXENAME 1
    typedef struct _IMAGE_DEBUG_MISC {
      DWORD DataType;
      DWORD Length;
      BOOLEAN Unicode;
      BYTE Reserved[3];
      BYTE Data[1];
    } IMAGE_DEBUG_MISC,*PIMAGE_DEBUG_MISC;
    typedef struct _IMAGE_FUNCTION_ENTRY {
      DWORD StartingAddress;
      DWORD EndingAddress;
      DWORD EndOfPrologue;
    } IMAGE_FUNCTION_ENTRY,*PIMAGE_FUNCTION_ENTRY;
    typedef struct _IMAGE_FUNCTION_ENTRY64 {
      ULONGLONG StartingAddress;
      ULONGLONG EndingAddress;
      __extension__ union {
 ULONGLONG EndOfPrologue;
 ULONGLONG UnwindInfoAddress;
      } ;
    } IMAGE_FUNCTION_ENTRY64,*PIMAGE_FUNCTION_ENTRY64;
    typedef struct _IMAGE_SEPARATE_DEBUG_HEADER {
      WORD Signature;
      WORD Flags;
      WORD Machine;
      WORD Characteristics;
      DWORD TimeDateStamp;
      DWORD CheckSum;
      DWORD ImageBase;
      DWORD SizeOfImage;
      DWORD NumberOfSections;
      DWORD ExportedNamesSize;
      DWORD DebugDirectorySize;
      DWORD SectionAlignment;
      DWORD Reserved[2];
    } IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER;
    typedef struct _NON_PAGED_DEBUG_INFO {
      WORD Signature;
      WORD Flags;
      DWORD Size;
      WORD Machine;
      WORD Characteristics;
      DWORD TimeDateStamp;
      DWORD CheckSum;
      DWORD SizeOfImage;
      ULONGLONG ImageBase;
    } NON_PAGED_DEBUG_INFO,*PNON_PAGED_DEBUG_INFO;
#define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944
#define NON_PAGED_DEBUG_SIGNATURE 0x494E
#define IMAGE_SEPARATE_DEBUG_FLAGS_MASK 0x8000
#define IMAGE_SEPARATE_DEBUG_MISMATCH 0x8000
    typedef struct _ImageArchitectureHeader {
      unsigned int AmaskValue: 1;
      int Adummy1 : 7;
      unsigned int AmaskShift : 8;
      int Adummy2 : 16;
      DWORD FirstEntryRVA;
    } IMAGE_ARCHITECTURE_HEADER,*PIMAGE_ARCHITECTURE_HEADER;
    typedef struct _ImageArchitectureEntry {
      DWORD FixupInstRVA;
      DWORD NewInst;
    } IMAGE_ARCHITECTURE_ENTRY,*PIMAGE_ARCHITECTURE_ENTRY;
#pragma pack(pop)
#define IMPORT_OBJECT_HDR_SIG2 0xffff
    typedef struct IMPORT_OBJECT_HEADER {
      WORD Sig1;
      WORD Sig2;
      WORD Version;
      WORD Machine;
      DWORD TimeDateStamp;
      DWORD SizeOfData;
      __extension__ union {
 WORD Ordinal;
 WORD Hint;
      };
      WORD Type : 2;
      WORD NameType : 3;
      WORD Reserved : 11;
    } IMPORT_OBJECT_HEADER;
    typedef enum IMPORT_OBJECT_TYPE {
      IMPORT_OBJECT_CODE = 0,IMPORT_OBJECT_DATA = 1,IMPORT_OBJECT_CONST = 2
    } IMPORT_OBJECT_TYPE;
    typedef enum IMPORT_OBJECT_NAME_TYPE {
      IMPORT_OBJECT_ORDINAL = 0,IMPORT_OBJECT_NAME = 1,IMPORT_OBJECT_NAME_NO_PREFIX = 2,IMPORT_OBJECT_NAME_UNDECORATE = 3
    } IMPORT_OBJECT_NAME_TYPE;
#define __IMAGE_COR20_HEADER_DEFINED__ 
    typedef enum ReplacesCorHdrNumericDefines {
      COMIMAGE_FLAGS_ILONLY = 0x00000001,COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002,COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004,
      COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,COR_VERSION_MAJOR_V2 = 2,
      COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2,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= 0xFF,IMAGE_COR_MIH_METHODRVA = 0x01,IMAGE_COR_MIH_EHRVA = 0x02,
      IMAGE_COR_MIH_BASICBLOCK = 0x08,COR_VTABLE_32BIT =0x01,COR_VTABLE_64BIT =0x02,COR_VTABLE_FROM_UNMANAGED = 0x04,
      COR_VTABLE_CALL_MOST_DERIVED = 0x10,IMAGE_COR_EATJ_THUNK_SIZE = 32,MAX_CLASS_NAME =1024,MAX_PACKAGE_NAME = 1024
    } ReplacesCorHdrNumericDefines;
    typedef struct IMAGE_COR20_HEADER {
      DWORD cb;
      WORD MajorRuntimeVersion;
      WORD MinorRuntimeVersion;
      IMAGE_DATA_DIRECTORY MetaData;
      DWORD Flags;
      __extension__ union {
 DWORD EntryPointToken;
 DWORD EntryPointRVA;
      } ;
      IMAGE_DATA_DIRECTORY Resources;
      IMAGE_DATA_DIRECTORY StrongNameSignature;
      IMAGE_DATA_DIRECTORY CodeManagerTable;
      IMAGE_DATA_DIRECTORY VTableFixups;
      IMAGE_DATA_DIRECTORY ExportAddressTableJumps;
      IMAGE_DATA_DIRECTORY ManagedNativeHeader;
    } IMAGE_COR20_HEADER,*PIMAGE_COR20_HEADER;
    __attribute__((dllimport)) WORD __attribute__((__stdcall__)) RtlCaptureStackBackTrace (DWORD FramesToSkip, DWORD FramesToCapture, PVOID *BackTrace, PDWORD BackTraceHash);
    __attribute__((dllimport)) void __attribute__((__stdcall__)) RtlCaptureContext (PCONTEXT ContextRecord);
    __attribute__((dllimport)) SIZE_T __attribute__((__stdcall__)) RtlCompareMemory (const void *Source1, const void *Source2, SIZE_T Length);
    __attribute__((dllimport)) void __attribute__((__stdcall__)) RtlUnwind (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue);
    __attribute__((dllimport)) PVOID __attribute__((__stdcall__)) RtlPcToFileHeader (PVOID PcValue, PVOID *BaseOfImage);
#define _SLIST_HEADER_ 
    typedef struct _SINGLE_LIST_ENTRY SLIST_ENTRY,*PSLIST_ENTRY;
    typedef union _SLIST_HEADER {
      ULONGLONG Alignment;
      __extension__ struct {
 SLIST_ENTRY Next;
 WORD Depth;
 WORD Sequence;
      } ;
    } SLIST_HEADER,*PSLIST_HEADER;
    __attribute__((dllimport)) void __attribute__((__stdcall__)) RtlInitializeSListHead (PSLIST_HEADER ListHead);
    __attribute__((dllimport)) PSLIST_ENTRY __attribute__((__stdcall__)) RtlFirstEntrySList (const SLIST_HEADER *ListHead);
    __attribute__((dllimport)) PSLIST_ENTRY __attribute__((__stdcall__)) RtlInterlockedPopEntrySList (PSLIST_HEADER ListHead);
    __attribute__((dllimport)) PSLIST_ENTRY __attribute__((__stdcall__)) RtlInterlockedPushEntrySList (PSLIST_HEADER ListHead, PSLIST_ENTRY ListEntry);
    __attribute__((dllimport)) PSLIST_ENTRY __attribute__((__stdcall__)) RtlInterlockedPushListSListEx (PSLIST_HEADER ListHead, PSLIST_ENTRY List, PSLIST_ENTRY ListEnd, DWORD Count);
    __attribute__((dllimport)) PSLIST_ENTRY __attribute__((__stdcall__)) RtlInterlockedFlushSList (PSLIST_HEADER ListHead);
    __attribute__((dllimport)) WORD __attribute__((__stdcall__)) RtlQueryDepthSList (PSLIST_HEADER ListHead);
#define _RTL_RUN_ONCE_DEF 1
typedef struct _RTL_RUN_ONCE { PVOID Ptr; } RTL_RUN_ONCE, *PRTL_RUN_ONCE;
typedef DWORD (__attribute__((__stdcall__)) *PRTL_RUN_ONCE_INIT_FN)(PRTL_RUN_ONCE, PVOID, PVOID *);
#define RTL_RUN_ONCE_INIT {0}
#define RTL_RUN_ONCE_CHECK_ONLY __MSABI_LONG(1U)
#define RTL_RUN_ONCE_ASYNC __MSABI_LONG(2U)
#define RTL_RUN_ONCE_INIT_FAILED __MSABI_LONG(4U)
#define RTL_RUN_ONCE_CTX_RESERVED_BITS 2
  typedef struct _RTL_BARRIER {
    DWORD Reserved1;
    DWORD Reserved2;
    ULONG_PTR Reserved3[2];
    DWORD Reserved4;
    DWORD Reserved5;
  } RTL_BARRIER,*PRTL_BARRIER;
#define FAST_FAIL_LEGACY_GS_VIOLATION 0
#define FAST_FAIL_VTGUARD_CHECK_FAILURE 1
#define FAST_FAIL_STACK_COOKIE_CHECK_FAILURE 2
#define FAST_FAIL_CORRUPT_LIST_ENTRY 3
#define FAST_FAIL_INCORRECT_STACK 4
#define FAST_FAIL_INVALID_ARG 5
#define FAST_FAIL_GS_COOKIE_INIT 6
#define FAST_FAIL_FATAL_APP_EXIT 7
#define FAST_FAIL_RANGE_CHECK_FAILURE 8
#define FAST_FAIL_UNSAFE_REGISTRY_ACCESS 9
#define FAST_FAIL_INVALID_FAST_FAIL_CODE 0xffffffff
#define HEAP_NO_SERIALIZE 0x00000001
#define HEAP_GROWABLE 0x00000002
#define HEAP_GENERATE_EXCEPTIONS 0x00000004
#define HEAP_ZERO_MEMORY 0x00000008
#define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010
#define HEAP_TAIL_CHECKING_ENABLED 0x00000020
#define HEAP_FREE_CHECKING_ENABLED 0x00000040
#define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080
#define HEAP_CREATE_ALIGN_16 0x00010000
#define HEAP_CREATE_ENABLE_TRACING 0x00020000
#define HEAP_CREATE_ENABLE_EXECUTE 0x00040000
#define HEAP_MAXIMUM_TAG 0x0FFF
#define HEAP_PSEUDO_TAG_FLAG 0x8000
#define HEAP_TAG_SHIFT 18
#define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b) + ((o) << 18)))
#define IS_TEXT_UNICODE_ASCII16 0x0001
#define IS_TEXT_UNICODE_REVERSE_ASCII16 0x0010
#define IS_TEXT_UNICODE_STATISTICS 0x0002
#define IS_TEXT_UNICODE_REVERSE_STATISTICS 0x0020
#define IS_TEXT_UNICODE_CONTROLS 0x0004
#define IS_TEXT_UNICODE_REVERSE_CONTROLS 0x0040
#define IS_TEXT_UNICODE_SIGNATURE 0x0008
#define IS_TEXT_UNICODE_REVERSE_SIGNATURE 0x0080
#define IS_TEXT_UNICODE_ILLEGAL_CHARS 0x0100
#define IS_TEXT_UNICODE_ODD_LENGTH 0x0200
#define IS_TEXT_UNICODE_DBCS_LEADBYTE 0x0400
#define IS_TEXT_UNICODE_NULL_BYTES 0x1000
#define IS_TEXT_UNICODE_UNICODE_MASK 0x000F
#define IS_TEXT_UNICODE_REVERSE_MASK 0x00F0
#define IS_TEXT_UNICODE_NOT_UNICODE_MASK 0x0F00
#define IS_TEXT_UNICODE_NOT_ASCII_MASK 0xF000
#define COMPRESSION_FORMAT_NONE (0x0000)
#define COMPRESSION_FORMAT_DEFAULT (0x0001)
#define COMPRESSION_FORMAT_LZNT1 (0x0002)
#define COMPRESSION_FORMAT_XPRESS (0x0003)
#define COMPRESSION_FORMAT_XPRESS_HUFF (0x0004)
#define COMPRESSION_ENGINE_STANDARD (0x0000)
#define COMPRESSION_ENGINE_MAXIMUM (0x0100)
#define COMPRESSION_ENGINE_HIBER (0x0200)
#define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination),(Source),(Length)))
#define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
#define RtlCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length))
#define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
#define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
    PVOID __attribute__((__stdcall__)) RtlSecureZeroMemory(PVOID ptr,SIZE_T cnt);
    extern inline __attribute__((__gnu_inline__)) PVOID __attribute__((__stdcall__)) RtlSecureZeroMemory(PVOID ptr,SIZE_T cnt) {
      volatile char *vptr =(volatile char *)ptr;
      while(cnt) {
 *vptr++ = 0;
 cnt--;
      }
      return ptr;
    }
    typedef struct _MESSAGE_RESOURCE_ENTRY {
      WORD Length;
      WORD Flags;
      BYTE Text[1];
    } MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY;
#define SEF_DACL_AUTO_INHERIT 0x01
#define SEF_SACL_AUTO_INHERIT 0x02
#define SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT 0x04
#define SEF_AVOID_PRIVILEGE_CHECK 0x08
#define SEF_AVOID_OWNER_CHECK 0x10
#define SEF_DEFAULT_OWNER_FROM_PARENT 0x20
#define SEF_DEFAULT_GROUP_FROM_PARENT 0x40
#define SEF_MACL_NO_WRITE_UP 0x100
#define SEF_MACL_NO_READ_UP 0x200
#define SEF_MACL_NO_EXECUTE_UP 0x400
#define SEF_AVOID_OWNER_RESTRICTION 0x1000
#define SEF_MACL_VALID_FLAGS (SEF_MACL_NO_WRITE_UP | SEF_MACL_NO_READ_UP | SEF_MACL_NO_EXECUTE_UP)
#define MESSAGE_RESOURCE_UNICODE 0x0001
    typedef struct _MESSAGE_RESOURCE_BLOCK {
      DWORD LowId;
      DWORD HighId;
      DWORD OffsetToEntries;
    } MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK;
    typedef struct _MESSAGE_RESOURCE_DATA {
      DWORD NumberOfBlocks;
      MESSAGE_RESOURCE_BLOCK Blocks[1];
    } MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA;
    typedef struct _OSVERSIONINFOA {
      DWORD dwOSVersionInfoSize;
      DWORD dwMajorVersion;
      DWORD dwMinorVersion;
      DWORD dwBuildNumber;
      DWORD dwPlatformId;
      CHAR szCSDVersion[128];
    } OSVERSIONINFOA,*POSVERSIONINFOA,*LPOSVERSIONINFOA;
    typedef struct _OSVERSIONINFOW {
      DWORD dwOSVersionInfoSize;
      DWORD dwMajorVersion;
      DWORD dwMinorVersion;
      DWORD dwBuildNumber;
      DWORD dwPlatformId;
      WCHAR szCSDVersion[128];
    } OSVERSIONINFOW,*POSVERSIONINFOW,*LPOSVERSIONINFOW,RTL_OSVERSIONINFOW,*PRTL_OSVERSIONINFOW;
    typedef OSVERSIONINFOA OSVERSIONINFO;
    typedef POSVERSIONINFOA POSVERSIONINFO;
    typedef LPOSVERSIONINFOA LPOSVERSIONINFO;
    typedef struct _OSVERSIONINFOEXA {
      DWORD dwOSVersionInfoSize;
      DWORD dwMajorVersion;
      DWORD dwMinorVersion;
      DWORD dwBuildNumber;
      DWORD dwPlatformId;
      CHAR szCSDVersion[128];
      WORD wServicePackMajor;
      WORD wServicePackMinor;
      WORD wSuiteMask;
      BYTE wProductType;
      BYTE wReserved;
    } OSVERSIONINFOEXA,*POSVERSIONINFOEXA,*LPOSVERSIONINFOEXA;
    typedef struct _OSVERSIONINFOEXW {
      DWORD dwOSVersionInfoSize;
      DWORD dwMajorVersion;
      DWORD dwMinorVersion;
      DWORD dwBuildNumber;
      DWORD dwPlatformId;
      WCHAR szCSDVersion[128];
      WORD wServicePackMajor;
      WORD wServicePackMinor;
      WORD wSuiteMask;
      BYTE wProductType;
      BYTE wReserved;
    } OSVERSIONINFOEXW,*POSVERSIONINFOEXW,*LPOSVERSIONINFOEXW,RTL_OSVERSIONINFOEXW,*PRTL_OSVERSIONINFOEXW;
    typedef OSVERSIONINFOEXA OSVERSIONINFOEX;
    typedef POSVERSIONINFOEXA POSVERSIONINFOEX;
    typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX;
#define VER_EQUAL 1
#define VER_GREATER 2
#define VER_GREATER_EQUAL 3
#define VER_LESS 4
#define VER_LESS_EQUAL 5
#define VER_AND 6
#define VER_OR 7
#define VER_CONDITION_MASK 7
#define VER_NUM_BITS_PER_CONDITION_MASK 3
#define VER_MINORVERSION 0x0000001
#define VER_MAJORVERSION 0x0000002
#define VER_BUILDNUMBER 0x0000004
#define VER_PLATFORMID 0x0000008
#define VER_SERVICEPACKMINOR 0x0000010
#define VER_SERVICEPACKMAJOR 0x0000020
#define VER_SUITENAME 0x0000040
#define VER_PRODUCT_TYPE 0x0000080
#define VER_NT_WORKSTATION 0x0000001
#define VER_NT_DOMAIN_CONTROLLER 0x0000002
#define VER_NT_SERVER 0x0000003
#define VER_PLATFORM_WIN32s 0
#define VER_PLATFORM_WIN32_WINDOWS 1
#define VER_PLATFORM_WIN32_NT 2
    __attribute__((dllimport)) ULONGLONG __attribute__((__stdcall__)) VerSetConditionMask (ULONGLONG ConditionMask, DWORD TypeMask, BYTE Condition);
#define VER_SET_CONDITION(_m_,_t_,_c_) ((_m_) = VerSetConditionMask((_m_),(_t_),(_c_)))
    __attribute__((dllimport)) BOOLEAN __attribute__((__stdcall__)) RtlGetProductInfo (DWORD OSMajorVersion, DWORD OSMinorVersion, DWORD SpMajorVersion, DWORD SpMinorVersion, PDWORD ReturnedProductType);
#define RTL_UMS_VERSION (0x0100)
    typedef enum _RTL_UMS_THREAD_INFO_CLASS {
      UmsThreadInvalidInfoClass = 0,
      UmsThreadUserContext,
      UmsThreadPriority,
      UmsThreadAffinity,
      UmsThreadTeb,
      UmsThreadIsSuspended,
      UmsThreadIsTerminated,
      UmsThreadMaxInfoClass
    } RTL_UMS_THREAD_INFO_CLASS,*PRTL_UMS_THREAD_INFO_CLASS;
    typedef enum _RTL_UMS_SCHEDULER_REASON {
      UmsSchedulerStartup = 0,
      UmsSchedulerThreadBlocked,
      UmsSchedulerThreadYield,
    } RTL_UMS_SCHEDULER_REASON,*PRTL_UMS_SCHEDULER_REASON;
    typedef void __attribute__((__stdcall__)) RTL_UMS_SCHEDULER_ENTRY_POINT (RTL_UMS_SCHEDULER_REASON Reason, ULONG_PTR ActivationPayload, PVOID SchedulerParam);
    typedef RTL_UMS_SCHEDULER_ENTRY_POINT *PRTL_UMS_SCHEDULER_ENTRY_POINT;
    typedef struct _RTL_CRITICAL_SECTION_DEBUG {
      WORD Type;
      WORD CreatorBackTraceIndex;
      struct _RTL_CRITICAL_SECTION *CriticalSection;
      LIST_ENTRY ProcessLocksList;
      DWORD EntryCount;
      DWORD ContentionCount;
      DWORD Flags;
      WORD CreatorBackTraceIndexHigh;
      WORD SpareWORD;
    } RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG,RTL_RESOURCE_DEBUG,*PRTL_RESOURCE_DEBUG;
#define RTL_CRITSECT_TYPE 0
#define RTL_RESOURCE_TYPE 1
#define RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO 0x01000000
#define RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN 0x02000000
#define RTL_CRITICAL_SECTION_FLAG_STATIC_INIT 0x04000000
#define RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE 0x08000000
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO 0x10000000
#define RTL_CRITICAL_SECTION_ALL_FLAG_BITS 0xff000000
#define RTL_CRITICAL_SECTION_FLAG_RESERVED (RTL_CRITICAL_SECTION_ALL_FLAG_BITS & (~(RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO | RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN | RTL_CRITICAL_SECTION_FLAG_STATIC_INIT | RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE | RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO)))
#define RTL_CRITICAL_SECTION_DEBUG_FLAG_STATIC_INIT 0x00000001
#pragma pack(push,8)
    typedef struct _RTL_CRITICAL_SECTION {
      PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
      LONG LockCount;
      LONG RecursionCount;
      HANDLE OwningThread;
      HANDLE LockSemaphore;
      ULONG_PTR SpinCount;
    } RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION;
#pragma pack(pop)
    typedef struct _RTL_SRWLOCK { PVOID Ptr; } RTL_SRWLOCK,*PRTL_SRWLOCK;
    typedef struct _RTL_CONDITION_VARIABLE { PVOID Ptr; } RTL_CONDITION_VARIABLE,*PRTL_CONDITION_VARIABLE;
#define RTL_SRWLOCK_INIT {0}
#define RTL_CONDITION_VARIABLE_INIT {0}
#define RTL_CONDITION_VARIABLE_LOCKMODE_SHARED 0x1
    typedef void (__attribute__((__stdcall__)) *PAPCFUNC) (ULONG_PTR Parameter);
    typedef LONG (__attribute__((__stdcall__)) *PVECTORED_EXCEPTION_HANDLER) (struct _EXCEPTION_POINTERS *ExceptionInfo);
    typedef enum _HEAP_INFORMATION_CLASS {
      HeapCompatibilityInformation,
      HeapEnableTerminationOnCorruption
    } HEAP_INFORMATION_CLASS;
    typedef void (__attribute__((__stdcall__)) *WORKERCALLBACKFUNC) (PVOID);
    typedef void (__attribute__((__stdcall__)) *APC_CALLBACK_FUNCTION) (DWORD, PVOID, PVOID);
    typedef void (__attribute__((__stdcall__)) *WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN);
    typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK;
    typedef void (__attribute__((__stdcall__)) *PFLS_CALLBACK_FUNCTION) (PVOID lpFlsData);
    typedef BOOLEAN (__attribute__((__stdcall__)) *PSECURE_MEMORY_CACHE_CALLBACK) (PVOID Addr, SIZE_T Range);
#define WT_EXECUTEDEFAULT 0x00000000
#define WT_EXECUTEINIOTHREAD 0x00000001
#define WT_EXECUTEINUITHREAD 0x00000002
#define WT_EXECUTEINWAITTHREAD 0x00000004
#define WT_EXECUTEONLYONCE 0x00000008
#define WT_EXECUTEINTIMERTHREAD 0x00000020
#define WT_EXECUTELONGFUNCTION 0x00000010
#define WT_EXECUTEINPERSISTENTIOTHREAD 0x00000040
#define WT_EXECUTEINPERSISTENTTHREAD 0x00000080
#define WT_TRANSFER_IMPERSONATION 0x00000100
#define WT_SET_MAX_THREADPOOL_THREADS(Flags,Limit) ((Flags) |= (Limit) << 16)
#define WT_EXECUTEDELETEWAIT 0x00000008
#define WT_EXECUTEINLONGTHREAD 0x00000010
    typedef enum _ACTIVATION_CONTEXT_INFO_CLASS {
      ActivationContextBasicInformation = 1,
      ActivationContextDetailedInformation = 2,
      AssemblyDetailedInformationInActivationContext = 3,
      FileInformationInAssemblyOfAssemblyInActivationContext = 4,
      RunlevelInformationInActivationContext = 5,
      CompatibilityInformationInActivationContext = 6,
      ActivationContextManifestResourceName = 7,
      MaxActivationContextInfoClass,
      AssemblyDetailedInformationInActivationContxt = 3,
      FileInformationInAssemblyOfAssemblyInActivationContxt = 4
    } ACTIVATION_CONTEXT_INFO_CLASS;
    typedef enum {
      ACTCTX_RUN_LEVEL_UNSPECIFIED = 0,
      ACTCTX_RUN_LEVEL_AS_INVOKER,
      ACTCTX_RUN_LEVEL_HIGHEST_AVAILABLE,
      ACTCTX_RUN_LEVEL_REQUIRE_ADMIN,
      ACTCTX_RUN_LEVEL_NUMBERS
    } ACTCTX_REQUESTED_RUN_LEVEL;
    typedef enum {
      ACTCTX_COMPATIBILITY_ELEMENT_TYPE_UNKNOWN = 0,
      ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS,
      ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MITIGATION
    } ACTCTX_COMPATIBILITY_ELEMENT_TYPE;
    typedef struct _ACTIVATION_CONTEXT_QUERY_INDEX {
      DWORD ulAssemblyIndex;
      DWORD ulFileIndexInAssembly;
    } ACTIVATION_CONTEXT_QUERY_INDEX,*PACTIVATION_CONTEXT_QUERY_INDEX;
    typedef struct _ASSEMBLY_FILE_DETAILED_INFORMATION {
      DWORD ulFlags;
      DWORD ulFilenameLength;
      DWORD ulPathLength;
      PCWSTR lpFileName;
      PCWSTR lpFilePath;
    } ASSEMBLY_FILE_DETAILED_INFORMATION,*PASSEMBLY_FILE_DETAILED_INFORMATION;
    typedef struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION {
      DWORD ulFlags;
      DWORD ulEncodedAssemblyIdentityLength;
      DWORD ulManifestPathType;
      DWORD ulManifestPathLength;
      LARGE_INTEGER liManifestLastWriteTime;
      DWORD ulPolicyPathType;
      DWORD ulPolicyPathLength;
      LARGE_INTEGER liPolicyLastWriteTime;
      DWORD ulMetadataSatelliteRosterIndex;
      DWORD ulManifestVersionMajor;
      DWORD ulManifestVersionMinor;
      DWORD ulPolicyVersionMajor;
      DWORD ulPolicyVersionMinor;
      DWORD ulAssemblyDirectoryNameLength;
      PCWSTR lpAssemblyEncodedAssemblyIdentity;
      PCWSTR lpAssemblyManifestPath;
      PCWSTR lpAssemblyPolicyPath;
      PCWSTR lpAssemblyDirectoryName;
      DWORD ulFileCount;
    } ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
    typedef struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION {
      DWORD ulFlags;
      ACTCTX_REQUESTED_RUN_LEVEL RunLevel;
      DWORD UiAccess;
    } ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION,*PACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION;
    typedef struct _COMPATIBILITY_CONTEXT_ELEMENT {
      GUID Id;
      ACTCTX_COMPATIBILITY_ELEMENT_TYPE Type;
    } COMPATIBILITY_CONTEXT_ELEMENT,*PCOMPATIBILITY_CONTEXT_ELEMENT;
    typedef struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION {
      DWORD ElementCount;
      COMPATIBILITY_CONTEXT_ELEMENT Elements[];
    } ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION,*PACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION;
#define MAX_SUPPORTED_OS_NUM (4)
    typedef struct _SUPPORTED_OS_INFO {
      WORD OsCount;
      WORD MitigationExist;
      WORD OsList[(4)];
    } SUPPORTED_OS_INFO,*PSUPPORTED_OS_INFO;
    typedef struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION {
      DWORD dwFlags;
      DWORD ulFormatVersion;
      DWORD ulAssemblyCount;
      DWORD ulRootManifestPathType;
      DWORD ulRootManifestPathChars;
      DWORD ulRootConfigurationPathType;
      DWORD ulRootConfigurationPathChars;
      DWORD ulAppDirPathType;
      DWORD ulAppDirPathChars;
      PCWSTR lpRootManifestPath;
      PCWSTR lpRootConfigurationPath;
      PCWSTR lpAppDirPath;
    } ACTIVATION_CONTEXT_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_DETAILED_INFORMATION;
    typedef const struct _ACTIVATION_CONTEXT_QUERY_INDEX *PCACTIVATION_CONTEXT_QUERY_INDEX;
    typedef const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFORMATION;
    typedef const struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
    typedef const struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION *PCACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION;
    typedef const struct _COMPATIBILITY_CONTEXT_ELEMENT *PCCOMPATIBILITY_CONTEXT_ELEMENT;
    typedef const struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION *PCACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION;
    typedef const struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_DETAILED_INFORMATION;
#define ACTIVATIONCONTEXTINFOCLASS ACTIVATION_CONTEXT_INFO_CLASS
#define ACTIVATION_CONTEXT_PATH_TYPE_NONE (1)
#define ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE (2)
#define ACTIVATION_CONTEXT_PATH_TYPE_URL (3)
#define ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF (4)
#define _ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION _ASSEMBLY_FILE_DETAILED_INFORMATION
#define ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION ASSEMBLY_FILE_DETAILED_INFORMATION
#define PASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION PASSEMBLY_FILE_DETAILED_INFORMATION
#define PCASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION PCASSEMBLY_FILE_DETAILED_INFORMATION
#define INVALID_OS_COUNT (0xffff)
#define CREATE_BOUNDARY_DESCRIPTOR_ADD_APPCONTAINER_SID 0x1
    typedef void (__attribute__((__stdcall__)) *RTL_VERIFIER_DLL_LOAD_CALLBACK) (PWSTR DllName,PVOID DllBase,SIZE_T DllSize,PVOID Reserved);
    typedef void (__attribute__((__stdcall__)) *RTL_VERIFIER_DLL_UNLOAD_CALLBACK) (PWSTR DllName,PVOID DllBase,SIZE_T DllSize,PVOID Reserved);
    typedef void (__attribute__((__stdcall__)) *RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK)(PVOID AllocationBase,SIZE_T AllocationSize);
    typedef struct _RTL_VERIFIER_THUNK_DESCRIPTOR {
      PCHAR ThunkName;
      PVOID ThunkOldAddress;
      PVOID ThunkNewAddress;
    } RTL_VERIFIER_THUNK_DESCRIPTOR,*PRTL_VERIFIER_THUNK_DESCRIPTOR;
    typedef struct _RTL_VERIFIER_DLL_DESCRIPTOR {
      PWCHAR DllName;
      DWORD DllFlags;
      PVOID DllAddress;
      PRTL_VERIFIER_THUNK_DESCRIPTOR DllThunks;
    } RTL_VERIFIER_DLL_DESCRIPTOR,*PRTL_VERIFIER_DLL_DESCRIPTOR;
    typedef struct _RTL_VERIFIER_PROVIDER_DESCRIPTOR {
      DWORD Length;
      PRTL_VERIFIER_DLL_DESCRIPTOR ProviderDlls;
      RTL_VERIFIER_DLL_LOAD_CALLBACK ProviderDllLoadCallback;
      RTL_VERIFIER_DLL_UNLOAD_CALLBACK ProviderDllUnloadCallback;
      PWSTR VerifierImage;
      DWORD VerifierFlags;
      DWORD VerifierDebug;
      PVOID RtlpGetStackTraceAddress;
      PVOID RtlpDebugPageHeapCreate;
      PVOID RtlpDebugPageHeapDestroy;
      RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK ProviderNtdllHeapFreeCallback;
    } RTL_VERIFIER_PROVIDER_DESCRIPTOR,*PRTL_VERIFIER_PROVIDER_DESCRIPTOR;
#define RTL_VRF_FLG_FULL_PAGE_HEAP 0x00000001
#define RTL_VRF_FLG_RESERVED_DONOTUSE 0x00000002
#define RTL_VRF_FLG_HANDLE_CHECKS 0x00000004
#define RTL_VRF_FLG_STACK_CHECKS 0x00000008
#define RTL_VRF_FLG_APPCOMPAT_CHECKS 0x00000010
#define RTL_VRF_FLG_TLS_CHECKS 0x00000020
#define RTL_VRF_FLG_DIRTY_STACKS 0x00000040
#define RTL_VRF_FLG_RPC_CHECKS 0x00000080
#define RTL_VRF_FLG_COM_CHECKS 0x00000100
#define RTL_VRF_FLG_DANGEROUS_APIS 0x00000200
#define RTL_VRF_FLG_RACE_CHECKS 0x00000400
#define RTL_VRF_FLG_DEADLOCK_CHECKS 0x00000800
#define RTL_VRF_FLG_FIRST_CHANCE_EXCEPTION_CHECKS 0x00001000
#define RTL_VRF_FLG_VIRTUAL_MEM_CHECKS 0x00002000
#define RTL_VRF_FLG_ENABLE_LOGGING 0x00004000
#define RTL_VRF_FLG_FAST_FILL_HEAP 0x00008000
#define RTL_VRF_FLG_VIRTUAL_SPACE_TRACKING 0x00010000
#define RTL_VRF_FLG_ENABLED_SYSTEM_WIDE 0x00020000
#define RTL_VRF_FLG_MISCELLANEOUS_CHECKS 0x00020000
#define RTL_VRF_FLG_LOCK_CHECKS 0x00040000
#define APPLICATION_VERIFIER_INTERNAL_ERROR 0x80000000
#define APPLICATION_VERIFIER_INTERNAL_WARNING 0x40000000
#define APPLICATION_VERIFIER_NO_BREAK 0x20000000
#define APPLICATION_VERIFIER_CONTINUABLE_BREAK 0x10000000
#define APPLICATION_VERIFIER_UNKNOWN_ERROR 0x0001
#define APPLICATION_VERIFIER_ACCESS_VIOLATION 0x0002
#define APPLICATION_VERIFIER_UNSYNCHRONIZED_ACCESS 0x0003
#define APPLICATION_VERIFIER_EXTREME_SIZE_REQUEST 0x0004
#define APPLICATION_VERIFIER_BAD_HEAP_HANDLE 0x0005
#define APPLICATION_VERIFIER_SWITCHED_HEAP_HANDLE 0x0006
#define APPLICATION_VERIFIER_DOUBLE_FREE 0x0007
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK 0x0008
#define APPLICATION_VERIFIER_DESTROY_PROCESS_HEAP 0x0009
#define APPLICATION_VERIFIER_UNEXPECTED_EXCEPTION 0x000A
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_HEADER 0x000B
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_PROBING 0x000C
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_HEADER 0x000D
#define APPLICATION_VERIFIER_CORRUPTED_FREED_HEAP_BLOCK 0x000E
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_SUFFIX 0x000F
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_START_STAMP 0x0010
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_END_STAMP 0x0011
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_PREFIX 0x0012
#define APPLICATION_VERIFIER_FIRST_CHANCE_ACCESS_VIOLATION 0x0013
#define APPLICATION_VERIFIER_CORRUPTED_HEAP_LIST 0x0014
#define APPLICATION_VERIFIER_TERMINATE_THREAD_CALL 0x0100
#define APPLICATION_VERIFIER_STACK_OVERFLOW 0x0101
#define APPLICATION_VERIFIER_INVALID_EXIT_PROCESS_CALL 0x0102
#define APPLICATION_VERIFIER_EXIT_THREAD_OWNS_LOCK 0x0200
#define APPLICATION_VERIFIER_LOCK_IN_UNLOADED_DLL 0x0201
#define APPLICATION_VERIFIER_LOCK_IN_FREED_HEAP 0x0202
#define APPLICATION_VERIFIER_LOCK_DOUBLE_INITIALIZE 0x0203
#define APPLICATION_VERIFIER_LOCK_IN_FREED_MEMORY 0x0204
#define APPLICATION_VERIFIER_LOCK_CORRUPTED 0x0205
#define APPLICATION_VERIFIER_LOCK_INVALID_OWNER 0x0206
#define APPLICATION_VERIFIER_LOCK_INVALID_RECURSION_COUNT 0x0207
#define APPLICATION_VERIFIER_LOCK_INVALID_LOCK_COUNT 0x0208
#define APPLICATION_VERIFIER_LOCK_OVER_RELEASED 0x0209
#define APPLICATION_VERIFIER_LOCK_NOT_INITIALIZED 0x0210
#define APPLICATION_VERIFIER_LOCK_ALREADY_INITIALIZED 0x0211
#define APPLICATION_VERIFIER_LOCK_IN_FREED_VMEM 0x0212
#define APPLICATION_VERIFIER_LOCK_IN_UNMAPPED_MEM 0x0213
#define APPLICATION_VERIFIER_THREAD_NOT_LOCK_OWNER 0x0214
#define APPLICATION_VERIFIER_INVALID_HANDLE 0x0300
#define APPLICATION_VERIFIER_INVALID_TLS_VALUE 0x0301
#define APPLICATION_VERIFIER_INCORRECT_WAIT_CALL 0x0302
#define APPLICATION_VERIFIER_NULL_HANDLE 0x0303
#define APPLICATION_VERIFIER_WAIT_IN_DLLMAIN 0x0304
#define APPLICATION_VERIFIER_COM_ERROR 0x0400
#define APPLICATION_VERIFIER_COM_API_IN_DLLMAIN 0x0401
#define APPLICATION_VERIFIER_COM_UNHANDLED_EXCEPTION 0x0402
#define APPLICATION_VERIFIER_COM_UNBALANCED_COINIT 0x0403
#define APPLICATION_VERIFIER_COM_UNBALANCED_OLEINIT 0x0404
#define APPLICATION_VERIFIER_COM_UNBALANCED_SWC 0x0405
#define APPLICATION_VERIFIER_COM_NULL_DACL 0x0406
#define APPLICATION_VERIFIER_COM_UNSAFE_IMPERSONATION 0x0407
#define APPLICATION_VERIFIER_COM_SMUGGLED_WRAPPER 0x0408
#define APPLICATION_VERIFIER_COM_SMUGGLED_PROXY 0x0409
#define APPLICATION_VERIFIER_COM_CF_SUCCESS_WITH_NULL 0x040A
#define APPLICATION_VERIFIER_COM_GCO_SUCCESS_WITH_NULL 0x040B
#define APPLICATION_VERIFIER_COM_OBJECT_IN_FREED_MEMORY 0x040C
#define APPLICATION_VERIFIER_COM_OBJECT_IN_UNLOADED_DLL 0x040D
#define APPLICATION_VERIFIER_COM_VTBL_IN_FREED_MEMORY 0x040E
#define APPLICATION_VERIFIER_COM_VTBL_IN_UNLOADED_DLL 0x040F
#define APPLICATION_VERIFIER_COM_HOLDING_LOCKS_ON_CALL 0x0410
#define APPLICATION_VERIFIER_RPC_ERROR 0x0500
#define APPLICATION_VERIFIER_INVALID_FREEMEM 0x0600
#define APPLICATION_VERIFIER_INVALID_ALLOCMEM 0x0601
#define APPLICATION_VERIFIER_INVALID_MAPVIEW 0x0602
#define APPLICATION_VERIFIER_PROBE_INVALID_ADDRESS 0x0603
#define APPLICATION_VERIFIER_PROBE_FREE_MEM 0x0604
#define APPLICATION_VERIFIER_PROBE_GUARD_PAGE 0x0605
#define APPLICATION_VERIFIER_PROBE_NULL 0x0606
#define APPLICATION_VERIFIER_PROBE_INVALID_START_OR_SIZE 0x0607
#define APPLICATION_VERIFIER_SIZE_HEAP_UNEXPECTED_EXCEPTION 0x0618
#define VERIFIER_STOP(Code,Msg,P1,S1,P2,S2,P3,S3,P4,S4) { RtlApplicationVerifierStop ((Code),(Msg),(ULONG_PTR)(P1),(S1),(ULONG_PTR)(P2),(S2),(ULONG_PTR)(P3),(S3),(ULONG_PTR)(P4),(S4)); }
    void __attribute__((__stdcall__)) RtlApplicationVerifierStop(ULONG_PTR Code,PSTR Message,ULONG_PTR Param1,PSTR Description1,ULONG_PTR Param2,PSTR Description2,ULONG_PTR Param3,PSTR Description3,ULONG_PTR Param4,PSTR Description4);
    __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) RtlSetHeapInformation(PVOID HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength);
    __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) RtlQueryHeapInformation(PVOID HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength,PSIZE_T ReturnLength);
    DWORD __attribute__((__stdcall__)) RtlMultipleAllocateHeap(PVOID HeapHandle,DWORD Flags,SIZE_T Size,DWORD Count,PVOID *Array);
    DWORD __attribute__((__stdcall__)) RtlMultipleFreeHeap(PVOID HeapHandle,DWORD Flags,DWORD Count,PVOID *Array);
    typedef struct _HARDWARE_COUNTER_DATA {
      HARDWARE_COUNTER_TYPE Type;
      DWORD Reserved;
      DWORD64 Value;
    } HARDWARE_COUNTER_DATA,*PHARDWARE_COUNTER_DATA;
    typedef struct _PERFORMANCE_DATA {
      WORD Size;
      BYTE Version;
      BYTE HwCountersCount;
      DWORD ContextSwitchCount;
      DWORD64 WaitReasonBitMap;
      DWORD64 CycleTime;
      DWORD RetryCount;
      DWORD Reserved;
      HARDWARE_COUNTER_DATA HwCounters[16];
    } PERFORMANCE_DATA,*PPERFORMANCE_DATA;
#define PERFORMANCE_DATA_VERSION 1
#define READ_THREAD_PROFILING_FLAG_DISPATCHING 0x00000001
#define READ_THREAD_PROFILING_FLAG_HARDWARE_COUNTERS 0x00000002
#define DLL_PROCESS_ATTACH 1
#define DLL_THREAD_ATTACH 2
#define DLL_THREAD_DETACH 3
#define DLL_PROCESS_DETACH 0
#define DLL_PROCESS_VERIFIER 4
#define EVENTLOG_SEQUENTIAL_READ 0x0001
#define EVENTLOG_SEEK_READ 0x0002
#define EVENTLOG_FORWARDS_READ 0x0004
#define EVENTLOG_BACKWARDS_READ 0x0008
#define EVENTLOG_SUCCESS 0x0000
#define EVENTLOG_ERROR_TYPE 0x0001
#define EVENTLOG_WARNING_TYPE 0x0002
#define EVENTLOG_INFORMATION_TYPE 0x0004
#define EVENTLOG_AUDIT_SUCCESS 0x0008
#define EVENTLOG_AUDIT_FAILURE 0x0010
#define EVENTLOG_START_PAIRED_EVENT 0x0001
#define EVENTLOG_END_PAIRED_EVENT 0x0002
#define EVENTLOG_END_ALL_PAIRED_EVENTS 0x0004
#define EVENTLOG_PAIRED_EVENT_ACTIVE 0x0008
#define EVENTLOG_PAIRED_EVENT_INACTIVE 0x0010
    typedef struct _EVENTLOGRECORD {
      DWORD Length;
      DWORD Reserved;
      DWORD RecordNumber;
      DWORD TimeGenerated;
      DWORD TimeWritten;
      DWORD EventID;
      WORD EventType;
      WORD NumStrings;
      WORD EventCategory;
      WORD ReservedFlags;
      DWORD ClosingRecordNumber;
      DWORD StringOffset;
      DWORD UserSidLength;
      DWORD UserSidOffset;
      DWORD DataLength;
      DWORD DataOffset;
    } EVENTLOGRECORD,*PEVENTLOGRECORD;
#define MAXLOGICALLOGNAMESIZE 256
    typedef struct _EVENTSFORLOGFILE {
      DWORD ulSize;
      WCHAR szLogicalLogFile[256];
      DWORD ulNumRecords;
      EVENTLOGRECORD pEventLogRecords[];
    } EVENTSFORLOGFILE,*PEVENTSFORLOGFILE;
    typedef struct _PACKEDEVENTINFO {
      DWORD ulSize;
      DWORD ulNumEventsForLogFile;
      DWORD ulOffsets[];
    } PACKEDEVENTINFO,*PPACKEDEVENTINFO;
#define KEY_QUERY_VALUE (0x0001)
#define KEY_SET_VALUE (0x0002)
#define KEY_CREATE_SUB_KEY (0x0004)
#define KEY_ENUMERATE_SUB_KEYS (0x0008)
#define KEY_NOTIFY (0x0010)
#define KEY_CREATE_LINK (0x0020)
#define KEY_WOW64_64KEY (0x0100)
#define KEY_WOW64_32KEY (0x0200)
#define KEY_WOW64_RES (0x0300)
#define KEY_READ ((STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & (~SYNCHRONIZE))
#define KEY_WRITE ((STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE))
#define KEY_EXECUTE ((KEY_READ) & (~SYNCHRONIZE))
#define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK) & (~SYNCHRONIZE))
#define REG_OPTION_RESERVED (__MSABI_LONG(0x00000000))
#define REG_OPTION_NON_VOLATILE (__MSABI_LONG(0x00000000))
#define REG_OPTION_VOLATILE (__MSABI_LONG(0x00000001))
#define REG_OPTION_CREATE_LINK (__MSABI_LONG(0x00000002))
#define REG_OPTION_BACKUP_RESTORE (__MSABI_LONG(0x00000004))
#define REG_OPTION_OPEN_LINK (__MSABI_LONG(0x00000008))
#define REG_LEGAL_OPTION (REG_OPTION_RESERVED | REG_OPTION_NON_VOLATILE | REG_OPTION_VOLATILE | REG_OPTION_CREATE_LINK | REG_OPTION_BACKUP_RESTORE | REG_OPTION_OPEN_LINK)
#define REG_CREATED_NEW_KEY (__MSABI_LONG(0x00000001))
#define REG_OPENED_EXISTING_KEY (__MSABI_LONG(0x00000002))
#define REG_STANDARD_FORMAT 1
#define REG_LATEST_FORMAT 2
#define REG_NO_COMPRESSION 4
#define REG_WHOLE_HIVE_VOLATILE (__MSABI_LONG(0x00000001))
#define REG_REFRESH_HIVE (__MSABI_LONG(0x00000002))
#define REG_NO_LAZY_FLUSH (__MSABI_LONG(0x00000004))
#define REG_FORCE_RESTORE (__MSABI_LONG(0x00000008))
#define REG_APP_HIVE (__MSABI_LONG(0x00000010))
#define REG_PROCESS_PRIVATE (__MSABI_LONG(0x00000020))
#define REG_START_JOURNAL (__MSABI_LONG(0x00000040))
#define REG_HIVE_EXACT_FILE_GROWTH (__MSABI_LONG(0x00000080))
#define REG_HIVE_NO_RM (__MSABI_LONG(0x00000100))
#define REG_HIVE_SINGLE_LOG (__MSABI_LONG(0x00000200))
#define REG_BOOT_HIVE (__MSABI_LONG(0x00000400))
#define REG_FORCE_UNLOAD 1
#define REG_NOTIFY_CHANGE_NAME (__MSABI_LONG(0x00000001))
#define REG_NOTIFY_CHANGE_ATTRIBUTES (__MSABI_LONG(0x00000002))
#define REG_NOTIFY_CHANGE_LAST_SET (__MSABI_LONG(0x00000004))
#define REG_NOTIFY_CHANGE_SECURITY (__MSABI_LONG(0x00000008))
#define REG_NOTIFY_THREAD_AGNOSTIC (__MSABI_LONG(0x10000000))
#define REG_LEGAL_CHANGE_FILTER (REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_ATTRIBUTES | REG_NOTIFY_CHANGE_LAST_SET | REG_NOTIFY_CHANGE_SECURITY | REG_NOTIFY_THREAD_AGNOSTIC)
#define REG_NONE (0)
#define REG_SZ (1)
#define REG_EXPAND_SZ (2)
#define REG_BINARY (3)
#define REG_DWORD (4)
#define REG_DWORD_LITTLE_ENDIAN (4)
#define REG_DWORD_BIG_ENDIAN (5)
#define REG_LINK (6)
#define REG_MULTI_SZ (7)
#define REG_RESOURCE_LIST (8)
#define REG_FULL_RESOURCE_DESCRIPTOR (9)
#define REG_RESOURCE_REQUIREMENTS_LIST (10)
#define REG_QWORD (11)
#define REG_QWORD_LITTLE_ENDIAN (11)
#define SERVICE_KERNEL_DRIVER 0x00000001
#define SERVICE_FILE_SYSTEM_DRIVER 0x00000002
#define SERVICE_ADAPTER 0x00000004
#define SERVICE_RECOGNIZER_DRIVER 0x00000008
#define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER)
#define SERVICE_WIN32_OWN_PROCESS 0x00000010
#define SERVICE_WIN32_SHARE_PROCESS 0x00000020
#define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS)
#define SERVICE_INTERACTIVE_PROCESS 0x00000100
#define SERVICE_TYPE_ALL (SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS)
#define SERVICE_BOOT_START 0x00000000
#define SERVICE_SYSTEM_START 0x00000001
#define SERVICE_AUTO_START 0x00000002
#define SERVICE_DEMAND_START 0x00000003
#define SERVICE_DISABLED 0x00000004
#define SERVICE_ERROR_IGNORE 0x00000000
#define SERVICE_ERROR_NORMAL 0x00000001
#define SERVICE_ERROR_SEVERE 0x00000002
#define SERVICE_ERROR_CRITICAL 0x00000003
    typedef enum _CM_SERVICE_NODE_TYPE {
      DriverType = 0x00000001,FileSystemType = 0x00000002,Win32ServiceOwnProcess = 0x00000010,
      Win32ServiceShareProcess = 0x00000020,AdapterType = 0x00000004,RecognizerType = 0x00000008
    } SERVICE_NODE_TYPE;
    typedef enum _CM_SERVICE_LOAD_TYPE {
      BootLoad = 0x00000000,SystemLoad = 0x00000001,AutoLoad = 0x00000002,DemandLoad = 0x00000003,
      DisableLoad = 0x00000004
    } SERVICE_LOAD_TYPE;
    typedef enum _CM_ERROR_CONTROL_TYPE {
      IgnoreError = 0x00000000,NormalError = 0x00000001,SevereError = 0x00000002,CriticalError = 0x00000003
    } SERVICE_ERROR_TYPE;
#define CM_SERVICE_NETWORK_BOOT_LOAD 0x00000001
#define CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD 0x00000002
#define CM_SERVICE_USB_DISK_BOOT_LOAD 0x00000004
#define CM_SERVICE_SD_DISK_BOOT_LOAD 0x00000008
#define CM_SERVICE_USB3_DISK_BOOT_LOAD 0x00000010
#define CM_SERVICE_MEASURED_BOOT_LOAD 0x00000020
#define CM_SERVICE_VERIFIER_BOOT_LOAD 0x00000040
#define CM_SERVICE_WINPE_BOOT_LOAD 0x00000080
#define CM_SERVICE_VALID_PROMOTION_MASK (CM_SERVICE_NETWORK_BOOT_LOAD | CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD | CM_SERVICE_USB_DISK_BOOT_LOAD | CM_SERVICE_SD_DISK_BOOT_LOAD | CM_SERVICE_USB3_DISK_BOOT_LOAD | CM_SERVICE_MEASURED_BOOT_LOAD | CM_SERVICE_VERIFIER_BOOT_LOAD | CM_SERVICE_WINPE_BOOT_LOAD)
#define _NTDDTAPE_WINNT_ 
#define TAPE_ERASE_SHORT __MSABI_LONG(0)
#define TAPE_ERASE_LONG __MSABI_LONG(1)
    typedef struct _TAPE_ERASE {
      DWORD Type;
      BOOLEAN Immediate;
    } TAPE_ERASE,*PTAPE_ERASE;
#define TAPE_LOAD __MSABI_LONG(0)
#define TAPE_UNLOAD __MSABI_LONG(1)
#define TAPE_TENSION __MSABI_LONG(2)
#define TAPE_LOCK __MSABI_LONG(3)
#define TAPE_UNLOCK __MSABI_LONG(4)
#define TAPE_FORMAT __MSABI_LONG(5)
    typedef struct _TAPE_PREPARE {
      DWORD Operation;
      BOOLEAN Immediate;
    } TAPE_PREPARE,*PTAPE_PREPARE;
#define TAPE_SETMARKS __MSABI_LONG(0)
#define TAPE_FILEMARKS __MSABI_LONG(1)
#define TAPE_SHORT_FILEMARKS __MSABI_LONG(2)
#define TAPE_LONG_FILEMARKS __MSABI_LONG(3)
    typedef struct _TAPE_WRITE_MARKS {
      DWORD Type;
      DWORD Count;
      BOOLEAN Immediate;
    } TAPE_WRITE_MARKS,*PTAPE_WRITE_MARKS;
#define TAPE_ABSOLUTE_POSITION __MSABI_LONG(0)
#define TAPE_LOGICAL_POSITION __MSABI_LONG(1)
#define TAPE_PSEUDO_LOGICAL_POSITION __MSABI_LONG(2)
    typedef struct _TAPE_GET_POSITION {
      DWORD Type;
      DWORD Partition;
      LARGE_INTEGER Offset;
    } TAPE_GET_POSITION,*PTAPE_GET_POSITION;
#define TAPE_REWIND __MSABI_LONG(0)
#define TAPE_ABSOLUTE_BLOCK __MSABI_LONG(1)
#define TAPE_LOGICAL_BLOCK __MSABI_LONG(2)
#define TAPE_PSEUDO_LOGICAL_BLOCK __MSABI_LONG(3)
#define TAPE_SPACE_END_OF_DATA __MSABI_LONG(4)
#define TAPE_SPACE_RELATIVE_BLOCKS __MSABI_LONG(5)
#define TAPE_SPACE_FILEMARKS __MSABI_LONG(6)
#define TAPE_SPACE_SEQUENTIAL_FMKS __MSABI_LONG(7)
#define TAPE_SPACE_SETMARKS __MSABI_LONG(8)
#define TAPE_SPACE_SEQUENTIAL_SMKS __MSABI_LONG(9)
    typedef struct _TAPE_SET_POSITION {
      DWORD Method;
      DWORD Partition;
      LARGE_INTEGER Offset;
      BOOLEAN Immediate;
    } TAPE_SET_POSITION,*PTAPE_SET_POSITION;
#define TAPE_DRIVE_FIXED 0x00000001
#define TAPE_DRIVE_SELECT 0x00000002
#define TAPE_DRIVE_INITIATOR 0x00000004
#define TAPE_DRIVE_ERASE_SHORT 0x00000010
#define TAPE_DRIVE_ERASE_LONG 0x00000020
#define TAPE_DRIVE_ERASE_BOP_ONLY 0x00000040
#define TAPE_DRIVE_ERASE_IMMEDIATE 0x00000080
#define TAPE_DRIVE_TAPE_CAPACITY 0x00000100
#define TAPE_DRIVE_TAPE_REMAINING 0x00000200
#define TAPE_DRIVE_FIXED_BLOCK 0x00000400
#define TAPE_DRIVE_VARIABLE_BLOCK 0x00000800
#define TAPE_DRIVE_WRITE_PROTECT 0x00001000
#define TAPE_DRIVE_EOT_WZ_SIZE 0x00002000
#define TAPE_DRIVE_ECC 0x00010000
#define TAPE_DRIVE_COMPRESSION 0x00020000
#define TAPE_DRIVE_PADDING 0x00040000
#define TAPE_DRIVE_REPORT_SMKS 0x00080000
#define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x00100000
#define TAPE_DRIVE_GET_LOGICAL_BLK 0x00200000
#define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x00400000
#define TAPE_DRIVE_EJECT_MEDIA 0x01000000
#define TAPE_DRIVE_CLEAN_REQUESTS 0x02000000
#define TAPE_DRIVE_SET_CMP_BOP_ONLY 0x04000000
#define TAPE_DRIVE_RESERVED_BIT 0x80000000
#define TAPE_DRIVE_LOAD_UNLOAD 0x80000001
#define TAPE_DRIVE_TENSION 0x80000002
#define TAPE_DRIVE_LOCK_UNLOCK 0x80000004
#define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008
#define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010
#define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020
#define TAPE_DRIVE_TENSION_IMMED 0x80000040
#define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080
#define TAPE_DRIVE_SET_ECC 0x80000100
#define TAPE_DRIVE_SET_COMPRESSION 0x80000200
#define TAPE_DRIVE_SET_PADDING 0x80000400
#define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800
#define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000
#define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000
#define TAPE_DRIVE_LOGICAL_BLK 0x80004000
#define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000
#define TAPE_DRIVE_END_OF_DATA 0x80010000
#define TAPE_DRIVE_RELATIVE_BLKS 0x80020000
#define TAPE_DRIVE_FILEMARKS 0x80040000
#define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000
#define TAPE_DRIVE_SETMARKS 0x80100000
#define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000
#define TAPE_DRIVE_REVERSE_POSITION 0x80400000
#define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000
#define TAPE_DRIVE_WRITE_SETMARKS 0x81000000
#define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000
#define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000
#define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000
#define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000
#define TAPE_DRIVE_FORMAT 0xA0000000
#define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000
#define TAPE_DRIVE_HIGH_FEATURES 0x80000000
    typedef struct _TAPE_GET_DRIVE_PARAMETERS {
      BOOLEAN ECC;
      BOOLEAN Compression;
      BOOLEAN DataPadding;
      BOOLEAN ReportSetmarks;
      DWORD DefaultBlockSize;
      DWORD MaximumBlockSize;
      DWORD MinimumBlockSize;
      DWORD MaximumPartitionCount;
      DWORD FeaturesLow;
      DWORD FeaturesHigh;
      DWORD EOTWarningZoneSize;
    } TAPE_GET_DRIVE_PARAMETERS,*PTAPE_GET_DRIVE_PARAMETERS;
    typedef struct _TAPE_SET_DRIVE_PARAMETERS {
      BOOLEAN ECC;
      BOOLEAN Compression;
      BOOLEAN DataPadding;
      BOOLEAN ReportSetmarks;
      DWORD EOTWarningZoneSize;
    } TAPE_SET_DRIVE_PARAMETERS,*PTAPE_SET_DRIVE_PARAMETERS;
    typedef struct _TAPE_GET_MEDIA_PARAMETERS {
      LARGE_INTEGER Capacity;
      LARGE_INTEGER Remaining;
      DWORD BlockSize;
      DWORD PartitionCount;
      BOOLEAN WriteProtected;
    } TAPE_GET_MEDIA_PARAMETERS,*PTAPE_GET_MEDIA_PARAMETERS;
    typedef struct _TAPE_SET_MEDIA_PARAMETERS {
      DWORD BlockSize;
    } TAPE_SET_MEDIA_PARAMETERS,*PTAPE_SET_MEDIA_PARAMETERS;
#define TAPE_FIXED_PARTITIONS __MSABI_LONG(0)
#define TAPE_SELECT_PARTITIONS __MSABI_LONG(1)
#define TAPE_INITIATOR_PARTITIONS __MSABI_LONG(2)
    typedef struct _TAPE_CREATE_PARTITION {
      DWORD Method;
      DWORD Count;
      DWORD Size;
    } TAPE_CREATE_PARTITION,*PTAPE_CREATE_PARTITION;
#define TAPE_QUERY_DRIVE_PARAMETERS __MSABI_LONG(0)
#define TAPE_QUERY_MEDIA_CAPACITY __MSABI_LONG(1)
#define TAPE_CHECK_FOR_DRIVE_PROBLEM __MSABI_LONG(2)
#define TAPE_QUERY_IO_ERROR_DATA __MSABI_LONG(3)
#define TAPE_QUERY_DEVICE_ERROR_DATA __MSABI_LONG(4)
    typedef struct _TAPE_WMI_OPERATIONS {
      DWORD Method;
      DWORD DataBufferSize;
      PVOID DataBuffer;
    } TAPE_WMI_OPERATIONS,*PTAPE_WMI_OPERATIONS;
    typedef enum _TAPE_DRIVE_PROBLEM_TYPE {
      TapeDriveProblemNone,TapeDriveReadWriteWarning,TapeDriveReadWriteError,TapeDriveReadWarning,TapeDriveWriteWarning,TapeDriveReadError,TapeDriveWriteError,TapeDriveHardwareError,TapeDriveUnsupportedMedia,TapeDriveScsiConnectionError,TapeDriveTimetoClean,TapeDriveCleanDriveNow,TapeDriveMediaLifeExpired,TapeDriveSnappedTape
    } TAPE_DRIVE_PROBLEM_TYPE;
  typedef DWORD TP_VERSION,*PTP_VERSION;
  typedef struct _TP_CALLBACK_INSTANCE TP_CALLBACK_INSTANCE,*PTP_CALLBACK_INSTANCE;
  typedef void (__attribute__((__stdcall__)) *PTP_SIMPLE_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context);
  typedef struct _TP_POOL TP_POOL,*PTP_POOL;
  typedef enum _TP_CALLBACK_PRIORITY {
    TP_CALLBACK_PRIORITY_HIGH,
    TP_CALLBACK_PRIORITY_NORMAL,
    TP_CALLBACK_PRIORITY_LOW,
    TP_CALLBACK_PRIORITY_INVALID,
    TP_CALLBACK_PRIORITY_COUNT = TP_CALLBACK_PRIORITY_INVALID
  } TP_CALLBACK_PRIORITY;
  typedef struct _TP_POOL_STACK_INFORMATION {
    SIZE_T StackReserve;
    SIZE_T StackCommit;
  } TP_POOL_STACK_INFORMATION, *PTP_POOL_STACK_INFORMATION;
  typedef struct _TP_CLEANUP_GROUP TP_CLEANUP_GROUP,*PTP_CLEANUP_GROUP;
  typedef void (__attribute__((__stdcall__)) *PTP_CLEANUP_GROUP_CANCEL_CALLBACK) (PVOID ObjectContext, PVOID CleanupContext);
  typedef struct _TP_CALLBACK_ENVIRON_V1 {
    TP_VERSION Version;
    PTP_POOL Pool;
    PTP_CLEANUP_GROUP CleanupGroup;
    PTP_CLEANUP_GROUP_CANCEL_CALLBACK CleanupGroupCancelCallback;
    PVOID RaceDll;
    struct _ACTIVATION_CONTEXT *ActivationContext;
    PTP_SIMPLE_CALLBACK FinalizationCallback;
    union {
      DWORD Flags;
      struct {
 DWORD LongFunction : 1;
 DWORD Persistent : 1;
 DWORD Private : 30;
      } s;
    } u;
  } TP_CALLBACK_ENVIRON_V1;
  typedef TP_CALLBACK_ENVIRON_V1 TP_CALLBACK_ENVIRON,*PTP_CALLBACK_ENVIRON;
  typedef struct _TP_WORK TP_WORK,*PTP_WORK;
  typedef void (__attribute__((__stdcall__)) *PTP_WORK_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WORK Work);
  typedef struct _TP_TIMER TP_TIMER,*PTP_TIMER;
  typedef void (__attribute__((__stdcall__)) *PTP_TIMER_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_TIMER Timer);
  typedef DWORD TP_WAIT_RESULT;
  typedef struct _TP_WAIT TP_WAIT,*PTP_WAIT;
  typedef void (__attribute__((__stdcall__)) *PTP_WAIT_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WAIT Wait, TP_WAIT_RESULT WaitResult);
  typedef struct _TP_IO TP_IO,*PTP_IO;
    extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpInitializeCallbackEnviron (PTP_CALLBACK_ENVIRON cbe) {
      cbe->Pool = ((void *)0);
      cbe->CleanupGroup = ((void *)0);
      cbe->CleanupGroupCancelCallback = ((void *)0);
      cbe->RaceDll = ((void *)0);
      cbe->ActivationContext = ((void *)0);
      cbe->FinalizationCallback = ((void *)0);
      cbe->u.Flags = 0;
      cbe->Version = 1;
    }
    extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackThreadpool (PTP_CALLBACK_ENVIRON cbe, PTP_POOL pool) { cbe->Pool = pool; }
    extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackCleanupGroup (PTP_CALLBACK_ENVIRON cbe, PTP_CLEANUP_GROUP cleanup_group, PTP_CLEANUP_GROUP_CANCEL_CALLBACK cleanup_group_cb) {
      cbe->CleanupGroup = cleanup_group;
      cbe->CleanupGroupCancelCallback = cleanup_group_cb;
    }
    extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackActivationContext (PTP_CALLBACK_ENVIRON cbe, struct _ACTIVATION_CONTEXT *actx) { cbe->ActivationContext = actx; }
    extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackNoActivationContext (PTP_CALLBACK_ENVIRON cbe) { cbe->ActivationContext = (struct _ACTIVATION_CONTEXT *) (LONG_PTR) -1; }
    extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackLongFunction (PTP_CALLBACK_ENVIRON cbe) { cbe->u.s.LongFunction = 1; }
    extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackRaceWithDll (PTP_CALLBACK_ENVIRON cbe, PVOID h) { cbe->RaceDll = h; }
    extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackFinalizationCallback (PTP_CALLBACK_ENVIRON cbe, PTP_SIMPLE_CALLBACK fini_cb) { cbe->FinalizationCallback = fini_cb; }
    extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpSetCallbackPersistent (PTP_CALLBACK_ENVIRON cbe) { cbe->u.s.Persistent = 1; }
    extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void TpDestroyCallbackEnviron (PTP_CALLBACK_ENVIRON cbe) { {(cbe) = (cbe);}; }
#define _NTTMAPI_ 
#define _KTMTYPES_ 
  typedef GUID CRM_PROTOCOL_ID,*PCRM_PROTOCOL_ID;
#define TRANSACTION_MANAGER_VOLATILE 0x00000001
#define TRANSACTION_MANAGER_COMMIT_DEFAULT 0x00000000
#define TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME 0x00000002
#define TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES 0x00000004
#define TRANSACTION_MANAGER_COMMIT_LOWEST 0x00000008
#define TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY 0x00000010
#define TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS 0x00000020
#define TRANSACTION_MANAGER_MAXIMUM_OPTION 0x0000003f
#define TRANSACTION_DO_NOT_PROMOTE 0x00000001
#define TRANSACTION_MAXIMUM_OPTION 0x00000001
#define RESOURCE_MANAGER_VOLATILE 0x00000001
#define RESOURCE_MANAGER_COMMUNICATION 0x00000002
#define RESOURCE_MANAGER_MAXIMUM_OPTION 0x00000003
#define CRM_PROTOCOL_EXPLICIT_MARSHAL_ONLY 0x00000001
#define CRM_PROTOCOL_DYNAMIC_MARSHAL_INFO 0x00000002
#define CRM_PROTOCOL_MAXIMUM_OPTION 0x00000003
#define ENLISTMENT_SUPERIOR 0x00000001
#define ENLISTMENT_MAXIMUM_OPTION 0x00000001
  typedef ULONG NOTIFICATION_MASK;
#define TRANSACTION_NOTIFY_MASK 0x3fffffff
#define TRANSACTION_NOTIFY_PREPREPARE 0x00000001
#define TRANSACTION_NOTIFY_PREPARE 0x00000002
#define TRANSACTION_NOTIFY_COMMIT 0x00000004
#define TRANSACTION_NOTIFY_ROLLBACK 0x00000008
#define TRANSACTION_NOTIFY_PREPREPARE_COMPLETE 0x00000010
#define TRANSACTION_NOTIFY_PREPARE_COMPLETE 0x00000020
#define TRANSACTION_NOTIFY_COMMIT_COMPLETE 0x00000040
#define TRANSACTION_NOTIFY_ROLLBACK_COMPLETE 0x00000080
#define TRANSACTION_NOTIFY_RECOVER 0x00000100
#define TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT 0x00000200
#define TRANSACTION_NOTIFY_DELEGATE_COMMIT 0x00000400
#define TRANSACTION_NOTIFY_RECOVER_QUERY 0x00000800
#define TRANSACTION_NOTIFY_ENLIST_PREPREPARE 0x00001000
#define TRANSACTION_NOTIFY_LAST_RECOVER 0x00002000
#define TRANSACTION_NOTIFY_INDOUBT 0x00004000
#define TRANSACTION_NOTIFY_PROPAGATE_PULL 0x00008000
#define TRANSACTION_NOTIFY_PROPAGATE_PUSH 0x00010000
#define TRANSACTION_NOTIFY_MARSHAL 0x00020000
#define TRANSACTION_NOTIFY_ENLIST_MASK 0x00040000
#define TRANSACTION_NOTIFY_RM_DISCONNECTED 0x01000000
#define TRANSACTION_NOTIFY_TM_ONLINE 0x02000000
#define TRANSACTION_NOTIFY_COMMIT_REQUEST 0x04000000
#define TRANSACTION_NOTIFY_PROMOTE 0x08000000
#define TRANSACTION_NOTIFY_PROMOTE_NEW 0x10000000
#define TRANSACTION_NOTIFY_REQUEST_OUTCOME 0x20000000
#define TRANSACTION_NOTIFY_COMMIT_FINALIZE 0x40000000
#define TRANSACTIONMANAGER_OBJECT_PATH L"\\TransactionManager\\"
#define TRANSACTION_OBJECT_PATH L"\\Transaction\\"
#define ENLISTMENT_OBJECT_PATH L"\\Enlistment\\"
#define RESOURCE_MANAGER_OBJECT_PATH L"\\ResourceManager\\"
#define TRANSACTIONMANAGER_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (TRANSACTIONMANAGER_OBJECT_PATH) + (38 * sizeof (WCHAR)))
#define TRANSACTION_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (TRANSACTION_OBJECT_PATH) + (38 * sizeof (WCHAR)))
#define ENLISTMENT_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (ENLISTMENT_OBJECT_PATH) + (38 * sizeof (WCHAR)))
#define RESOURCE_MANAGER_OBJECT_NAME_LENGTH_IN_BYTES (sizeof (RESOURCE_MANAGER_OBJECT_PATH) + (38 * sizeof (WCHAR)))
  typedef struct _TRANSACTION_NOTIFICATION {
    PVOID TransactionKey;
    ULONG TransactionNotification;
    LARGE_INTEGER TmVirtualClock;
    ULONG ArgumentLength;
  } TRANSACTION_NOTIFICATION,*PTRANSACTION_NOTIFICATION;
  typedef struct _TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT {
    GUID EnlistmentId;
    GUID UOW;
  } TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT,*PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT;
#define TRANSACTION_NOTIFICATION_TM_ONLINE_FLAG_IS_CLUSTERED 0x1
  typedef struct _TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT {
    GUID TmIdentity;
    ULONG Flags;
  } TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT,*PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT;
  typedef ULONG SAVEPOINT_ID,*PSAVEPOINT_ID;
  typedef struct _TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT {
    SAVEPOINT_ID SavepointId;
  } TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT,*PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT;
  typedef struct _TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT {
    ULONG PropagationCookie;
    GUID UOW;
    GUID TmIdentity;
    ULONG BufferLength;
  } TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT,*PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT;
  typedef struct _TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT {
    ULONG MarshalCookie;
    GUID UOW;
  } TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT,*PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT;
  typedef TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT,*PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT;
#define KTM_MARSHAL_BLOB_VERSION_MAJOR 1
#define KTM_MARSHAL_BLOB_VERSION_MINOR 1
#define MAX_TRANSACTION_DESCRIPTION_LENGTH 64
#define MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH 64
  typedef struct _KCRM_MARSHAL_HEADER {
    ULONG VersionMajor;
    ULONG VersionMinor;
    ULONG NumProtocols;
    ULONG Unused;
  } KCRM_MARSHAL_HEADER,*PKCRM_MARSHAL_HEADER,* PRKCRM_MARSHAL_HEADER;
  typedef struct _KCRM_TRANSACTION_BLOB {
    GUID UOW;
    GUID TmIdentity;
    ULONG IsolationLevel;
    ULONG IsolationFlags;
    ULONG Timeout;
    WCHAR Description[64];
  } KCRM_TRANSACTION_BLOB,*PKCRM_TRANSACTION_BLOB,* PRKCRM_TRANSACTION_BLOB;
  typedef struct _KCRM_PROTOCOL_BLOB {
    CRM_PROTOCOL_ID ProtocolId;
    ULONG StaticInfoLength;
    ULONG TransactionIdInfoLength;
    ULONG Unused1;
    ULONG Unused2;
  } KCRM_PROTOCOL_BLOB,*PKCRM_PROTOCOL_BLOB,* PRKCRM_PROTOCOL_BLOB;
#define TRANSACTIONMANAGER_QUERY_INFORMATION 0x00001
#define TRANSACTIONMANAGER_SET_INFORMATION 0x00002
#define TRANSACTIONMANAGER_RECOVER 0x00004
#define TRANSACTIONMANAGER_RENAME 0x00008
#define TRANSACTIONMANAGER_CREATE_RM 0x00010
#define TRANSACTIONMANAGER_BIND_TRANSACTION 0x00020
#define TRANSACTIONMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ | TRANSACTIONMANAGER_QUERY_INFORMATION)
#define TRANSACTIONMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | TRANSACTIONMANAGER_SET_INFORMATION | TRANSACTIONMANAGER_RECOVER | TRANSACTIONMANAGER_RENAME | TRANSACTIONMANAGER_CREATE_RM)
#define TRANSACTIONMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE)
#define TRANSACTIONMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | TRANSACTIONMANAGER_GENERIC_READ | TRANSACTIONMANAGER_GENERIC_WRITE | TRANSACTIONMANAGER_GENERIC_EXECUTE | TRANSACTIONMANAGER_BIND_TRANSACTION)
#define TRANSACTION_QUERY_INFORMATION (0x0001)
#define TRANSACTION_SET_INFORMATION (0x0002)
#define TRANSACTION_ENLIST (0x0004)
#define TRANSACTION_COMMIT (0x0008)
#define TRANSACTION_ROLLBACK (0x0010)
#define TRANSACTION_PROPAGATE (0x0020)
#define TRANSACTION_RIGHT_RESERVED1 (0x0040)
#define TRANSACTION_GENERIC_READ (STANDARD_RIGHTS_READ | TRANSACTION_QUERY_INFORMATION | SYNCHRONIZE)
#define TRANSACTION_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | TRANSACTION_SET_INFORMATION | TRANSACTION_COMMIT | TRANSACTION_ENLIST | TRANSACTION_ROLLBACK | TRANSACTION_PROPAGATE | SYNCHRONIZE)
#define TRANSACTION_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | TRANSACTION_COMMIT | TRANSACTION_ROLLBACK | SYNCHRONIZE)
#define TRANSACTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | TRANSACTION_GENERIC_READ | TRANSACTION_GENERIC_WRITE | TRANSACTION_GENERIC_EXECUTE)
#define TRANSACTION_RESOURCE_MANAGER_RIGHTS (TRANSACTION_GENERIC_READ | STANDARD_RIGHTS_WRITE | TRANSACTION_SET_INFORMATION | TRANSACTION_ENLIST | TRANSACTION_ROLLBACK | TRANSACTION_PROPAGATE | SYNCHRONIZE)
#define RESOURCEMANAGER_QUERY_INFORMATION (0x0001)
#define RESOURCEMANAGER_SET_INFORMATION (0x0002)
#define RESOURCEMANAGER_RECOVER (0x0004)
#define RESOURCEMANAGER_ENLIST (0x0008)
#define RESOURCEMANAGER_GET_NOTIFICATION (0x0010)
#define RESOURCEMANAGER_REGISTER_PROTOCOL (0x0020)
#define RESOURCEMANAGER_COMPLETE_PROPAGATION (0x0040)
#define RESOURCEMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ | RESOURCEMANAGER_QUERY_INFORMATION | SYNCHRONIZE)
#define RESOURCEMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | RESOURCEMANAGER_SET_INFORMATION | RESOURCEMANAGER_RECOVER | RESOURCEMANAGER_ENLIST | RESOURCEMANAGER_GET_NOTIFICATION | RESOURCEMANAGER_REGISTER_PROTOCOL | RESOURCEMANAGER_COMPLETE_PROPAGATION | SYNCHRONIZE)
#define RESOURCEMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | RESOURCEMANAGER_RECOVER | RESOURCEMANAGER_ENLIST | RESOURCEMANAGER_GET_NOTIFICATION | RESOURCEMANAGER_COMPLETE_PROPAGATION | SYNCHRONIZE)
#define RESOURCEMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | RESOURCEMANAGER_GENERIC_READ | RESOURCEMANAGER_GENERIC_WRITE | RESOURCEMANAGER_GENERIC_EXECUTE)
#define ENLISTMENT_QUERY_INFORMATION 1
#define ENLISTMENT_SET_INFORMATION 2
#define ENLISTMENT_RECOVER 4
#define ENLISTMENT_SUBORDINATE_RIGHTS 8
#define ENLISTMENT_SUPERIOR_RIGHTS 0x10
#define ENLISTMENT_GENERIC_READ (STANDARD_RIGHTS_READ | ENLISTMENT_QUERY_INFORMATION)
#define ENLISTMENT_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | ENLISTMENT_SET_INFORMATION | ENLISTMENT_RECOVER | ENLISTMENT_SUBORDINATE_RIGHTS | ENLISTMENT_SUPERIOR_RIGHTS)
#define ENLISTMENT_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | ENLISTMENT_RECOVER | ENLISTMENT_SUBORDINATE_RIGHTS | ENLISTMENT_SUPERIOR_RIGHTS)
#define ENLISTMENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | ENLISTMENT_GENERIC_READ | ENLISTMENT_GENERIC_WRITE | ENLISTMENT_GENERIC_EXECUTE)
      typedef enum _TRANSACTION_OUTCOME {
 TransactionOutcomeUndetermined = 1,
 TransactionOutcomeCommitted,
 TransactionOutcomeAborted,
      } TRANSACTION_OUTCOME;
      typedef enum _TRANSACTION_STATE {
 TransactionStateNormal = 1,
 TransactionStateIndoubt,
 TransactionStateCommittedNotify,
      } TRANSACTION_STATE;
      typedef struct _TRANSACTION_BASIC_INFORMATION {
 GUID TransactionId;
 DWORD State;
 DWORD Outcome;
      } TRANSACTION_BASIC_INFORMATION,*PTRANSACTION_BASIC_INFORMATION;
      typedef struct _TRANSACTIONMANAGER_BASIC_INFORMATION {
 GUID TmIdentity;
 LARGE_INTEGER VirtualClock;
      } TRANSACTIONMANAGER_BASIC_INFORMATION,*PTRANSACTIONMANAGER_BASIC_INFORMATION;
      typedef struct _TRANSACTIONMANAGER_LOG_INFORMATION {
 GUID LogIdentity;
      } TRANSACTIONMANAGER_LOG_INFORMATION,*PTRANSACTIONMANAGER_LOG_INFORMATION;
      typedef struct _TRANSACTIONMANAGER_LOGPATH_INFORMATION {
 DWORD LogPathLength;
 WCHAR LogPath[1];
      } TRANSACTIONMANAGER_LOGPATH_INFORMATION,*PTRANSACTIONMANAGER_LOGPATH_INFORMATION;
      typedef struct _TRANSACTIONMANAGER_RECOVERY_INFORMATION {
 ULONGLONG LastRecoveredLsn;
      } TRANSACTIONMANAGER_RECOVERY_INFORMATION,*PTRANSACTIONMANAGER_RECOVERY_INFORMATION;
      typedef struct _TRANSACTIONMANAGER_OLDEST_INFORMATION {
 GUID OldestTransactionGuid;
      } TRANSACTIONMANAGER_OLDEST_INFORMATION,*PTRANSACTIONMANAGER_OLDEST_INFORMATION;
      typedef struct _TRANSACTION_PROPERTIES_INFORMATION {
 DWORD IsolationLevel;
 DWORD IsolationFlags;
 LARGE_INTEGER Timeout;
 DWORD Outcome;
 DWORD DescriptionLength;
 WCHAR Description[1];
      } TRANSACTION_PROPERTIES_INFORMATION,*PTRANSACTION_PROPERTIES_INFORMATION;
      typedef struct _TRANSACTION_BIND_INFORMATION {
 HANDLE TmHandle;
      } TRANSACTION_BIND_INFORMATION,*PTRANSACTION_BIND_INFORMATION;
      typedef struct _TRANSACTION_ENLISTMENT_PAIR {
 GUID EnlistmentId;
 GUID ResourceManagerId;
      } TRANSACTION_ENLISTMENT_PAIR,*PTRANSACTION_ENLISTMENT_PAIR;
      typedef struct _TRANSACTION_ENLISTMENTS_INFORMATION {
 DWORD NumberOfEnlistments;
 TRANSACTION_ENLISTMENT_PAIR EnlistmentPair[1];
      } TRANSACTION_ENLISTMENTS_INFORMATION,*PTRANSACTION_ENLISTMENTS_INFORMATION;
      typedef struct _TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION {
 TRANSACTION_ENLISTMENT_PAIR SuperiorEnlistmentPair;
      } TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION,*PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION;
      typedef struct _RESOURCEMANAGER_BASIC_INFORMATION {
 GUID ResourceManagerId;
 DWORD DescriptionLength;
 WCHAR Description[1];
      } RESOURCEMANAGER_BASIC_INFORMATION,*PRESOURCEMANAGER_BASIC_INFORMATION;
      typedef struct _RESOURCEMANAGER_COMPLETION_INFORMATION {
 HANDLE IoCompletionPortHandle;
 ULONG_PTR CompletionKey;
      } RESOURCEMANAGER_COMPLETION_INFORMATION,*PRESOURCEMANAGER_COMPLETION_INFORMATION;
      typedef enum _TRANSACTION_INFORMATION_CLASS {
 TransactionBasicInformation,
 TransactionPropertiesInformation,
 TransactionEnlistmentInformation,
 TransactionSuperiorEnlistmentInformation,
 TransactionBindInformation,
 TransactionDTCPrivateInformation
      } TRANSACTION_INFORMATION_CLASS;
      typedef enum _TRANSACTIONMANAGER_INFORMATION_CLASS {
 TransactionManagerBasicInformation,
 TransactionManagerLogInformation,
 TransactionManagerLogPathInformation,
 TransactionManagerOnlineProbeInformation = 3,
 TransactionManagerRecoveryInformation = 4,
 TransactionManagerOldestTransactionInformation = 5
      } TRANSACTIONMANAGER_INFORMATION_CLASS;
      typedef enum _RESOURCEMANAGER_INFORMATION_CLASS {
 ResourceManagerBasicInformation,
 ResourceManagerCompletionInformation
      } RESOURCEMANAGER_INFORMATION_CLASS;
      typedef struct _ENLISTMENT_BASIC_INFORMATION {
 GUID EnlistmentId;
 GUID TransactionId;
 GUID ResourceManagerId;
      } ENLISTMENT_BASIC_INFORMATION,*PENLISTMENT_BASIC_INFORMATION;
      typedef struct _ENLISTMENT_CRM_INFORMATION {
 GUID CrmTransactionManagerId;
 GUID CrmResourceManagerId;
 GUID CrmEnlistmentId;
      } ENLISTMENT_CRM_INFORMATION,*PENLISTMENT_CRM_INFORMATION;
      typedef enum _ENLISTMENT_INFORMATION_CLASS {
 EnlistmentBasicInformation,
 EnlistmentRecoveryInformation,
 EnlistmentCrmInformation
      } ENLISTMENT_INFORMATION_CLASS;
      typedef struct _TRANSACTION_LIST_ENTRY {
         GUID UOW;
      } TRANSACTION_LIST_ENTRY,*PTRANSACTION_LIST_ENTRY;
      typedef struct _TRANSACTION_LIST_INFORMATION {
 DWORD NumberOfTransactions;
 TRANSACTION_LIST_ENTRY TransactionInformation[1];
      } TRANSACTION_LIST_INFORMATION,*PTRANSACTION_LIST_INFORMATION;
      typedef enum _KTMOBJECT_TYPE {
 KTMOBJECT_TRANSACTION,
 KTMOBJECT_TRANSACTION_MANAGER,
 KTMOBJECT_RESOURCE_MANAGER,
 KTMOBJECT_ENLISTMENT,
 KTMOBJECT_INVALID
      } KTMOBJECT_TYPE,*PKTMOBJECT_TYPE;
      typedef struct _KTMOBJECT_CURSOR {
 GUID LastQuery;
 DWORD ObjectIdCount;
 GUID ObjectIds[1];
      } KTMOBJECT_CURSOR,*PKTMOBJECT_CURSOR;
#define WOW64_CONTEXT_i386 0x00010000
#define WOW64_CONTEXT_i486 0x00010000
#define WOW64_CONTEXT_CONTROL (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000001))
#define WOW64_CONTEXT_INTEGER (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000002))
#define WOW64_CONTEXT_SEGMENTS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000004))
#define WOW64_CONTEXT_FLOATING_POINT (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000008))
#define WOW64_CONTEXT_DEBUG_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000010))
#define WOW64_CONTEXT_EXTENDED_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000020))
#define WOW64_CONTEXT_FULL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS)
#define WOW64_CONTEXT_ALL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS | WOW64_CONTEXT_FLOATING_POINT | WOW64_CONTEXT_DEBUG_REGISTERS | WOW64_CONTEXT_EXTENDED_REGISTERS)
#define WOW64_CONTEXT_XSTATE (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000040))
#define WOW64_CONTEXT_EXCEPTION_ACTIVE 0x08000000
#define WOW64_CONTEXT_SERVICE_ACTIVE 0x10000000
#define WOW64_CONTEXT_EXCEPTION_REQUEST 0x40000000
#define WOW64_CONTEXT_EXCEPTION_REPORTING 0x80000000
#define WOW64_SIZE_OF_80387_REGISTERS 80
#define WOW64_MAXIMUM_SUPPORTED_EXTENSION 512
typedef struct _WOW64_FLOATING_SAVE_AREA {
  DWORD ControlWord;
  DWORD StatusWord;
  DWORD TagWord;
  DWORD ErrorOffset;
  DWORD ErrorSelector;
  DWORD DataOffset;
  DWORD DataSelector;
  BYTE RegisterArea[80];
  DWORD Cr0NpxState;
} WOW64_FLOATING_SAVE_AREA, *PWOW64_FLOATING_SAVE_AREA;
#pragma pack(push,4)
typedef struct _WOW64_CONTEXT {
  DWORD ContextFlags;
  DWORD Dr0;
  DWORD Dr1;
  DWORD Dr2;
  DWORD Dr3;
  DWORD Dr6;
  DWORD Dr7;
  WOW64_FLOATING_SAVE_AREA FloatSave;
  DWORD 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;
  BYTE ExtendedRegisters[512];
} WOW64_CONTEXT, *PWOW64_CONTEXT;
#pragma pack(pop)
typedef struct _WOW64_LDT_ENTRY {
  WORD LimitLow;
  WORD BaseLow;
  __extension__ union {
    struct {
      BYTE BaseMid;
      BYTE Flags1;
      BYTE Flags2;
      BYTE BaseHi;
    } Bytes;
    struct {
      DWORD BaseMid :8;
      DWORD Type :5;
      DWORD Dpl :2;
      DWORD Pres :1;
      DWORD LimitHi :4;
      DWORD Sys :1;
      DWORD Reserved_0 :1;
      DWORD Default_Big :1;
      DWORD Granularity :1;
      DWORD BaseHi :8;
    } Bits;
  } HighWord;
} WOW64_LDT_ENTRY, *PWOW64_LDT_ENTRY;
    typedef struct _WOW64_DESCRIPTOR_TABLE_ENTRY {
      DWORD Selector;
      WOW64_LDT_ENTRY Descriptor;
    } WOW64_DESCRIPTOR_TABLE_ENTRY,*PWOW64_DESCRIPTOR_TABLE_ENTRY;
#define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION (1)
#define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION (2)
#define ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION (3)
#define ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION (4)
#define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION (5)
#define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION (6)
#define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION (7)
#define ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE (8)
#define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES (9)
#define ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS (10)
#define ACTIVATION_CONTEXT_SECTION_COMPATIBILITY_INFO (11)
  typedef UINT_PTR WPARAM;
  typedef LONG_PTR LPARAM;
  typedef LONG_PTR LRESULT;
#define max(a,b) (((a) > (b)) ? (a) : (b))
#define min(a,b) (((a) < (b)) ? (a) : (b))
#define MAKEWORD(a,b) ((WORD) (((BYTE) (((DWORD_PTR) (a)) & 0xff)) | ((WORD) ((BYTE) (((DWORD_PTR) (b)) & 0xff))) << 8))
#define MAKELONG(a,b) ((LONG) (((WORD) (((DWORD_PTR) (a)) & 0xffff)) | ((DWORD) ((WORD) (((DWORD_PTR) (b)) & 0xffff))) << 16))
#define LOWORD(l) ((WORD) (((DWORD_PTR) (l)) & 0xffff))
#define HIWORD(l) ((WORD) ((((DWORD_PTR) (l)) >> 16) & 0xffff))
#define LOBYTE(w) ((BYTE) (((DWORD_PTR) (w)) & 0xff))
#define HIBYTE(w) ((BYTE) ((((DWORD_PTR) (w)) >> 8) & 0xff))
  typedef HANDLE *SPHANDLE;
  typedef HANDLE *LPHANDLE;
  typedef HANDLE HGLOBAL;
  typedef HANDLE HLOCAL;
  typedef HANDLE GLOBALHANDLE;
  typedef HANDLE LOCALHANDLE;
  typedef int (__attribute__((__stdcall__)) *FARPROC) ();
  typedef int (__attribute__((__stdcall__)) *NEARPROC) ();
  typedef int (__attribute__((__stdcall__)) *PROC) ();
  typedef WORD ATOM;
  typedef int HFILE;
  struct HINSTANCE__ { int unused; }; typedef struct HINSTANCE__ *HINSTANCE;
  struct HKEY__ { int unused; }; typedef struct HKEY__ *HKEY;
  typedef HKEY *PHKEY;
  struct HKL__ { int unused; }; typedef struct HKL__ *HKL;
  struct HLSURF__ { int unused; }; typedef struct HLSURF__ *HLSURF;
  struct HMETAFILE__ { int unused; }; typedef struct HMETAFILE__ *HMETAFILE;
  typedef HINSTANCE HMODULE;
  struct HRGN__ { int unused; }; typedef struct HRGN__ *HRGN;
  struct HRSRC__ { int unused; }; typedef struct HRSRC__ *HRSRC;
  struct HSPRITE__ { int unused; }; typedef struct HSPRITE__ *HSPRITE;
  struct HSTR__ { int unused; }; typedef struct HSTR__ *HSTR;
  struct HTASK__ { int unused; }; typedef struct HTASK__ *HTASK;
  struct HWINSTA__ { int unused; }; typedef struct HWINSTA__ *HWINSTA;
  typedef struct _FILETIME {
    DWORD dwLowDateTime;
    DWORD dwHighDateTime;
  } FILETIME,*PFILETIME,*LPFILETIME;
#define _FILETIME_ 
struct HWND__ { int unused; }; typedef struct HWND__ *HWND;
struct HHOOK__ { int unused; }; typedef struct HHOOK__ *HHOOK;
  typedef void *HGDIOBJ;
struct HACCEL__ { int unused; }; typedef struct HACCEL__ *HACCEL;
struct HBITMAP__ { int unused; }; typedef struct HBITMAP__ *HBITMAP;
struct HBRUSH__ { int unused; }; typedef struct HBRUSH__ *HBRUSH;
struct HCOLORSPACE__ { int unused; }; typedef struct HCOLORSPACE__ *HCOLORSPACE;
struct HDC__ { int unused; }; typedef struct HDC__ *HDC;
struct HGLRC__ { int unused; }; typedef struct HGLRC__ *HGLRC;
struct HDESK__ { int unused; }; typedef struct HDESK__ *HDESK;
struct HENHMETAFILE__ { int unused; }; typedef struct HENHMETAFILE__ *HENHMETAFILE;
struct HFONT__ { int unused; }; typedef struct HFONT__ *HFONT;
struct HICON__ { int unused; }; typedef struct HICON__ *HICON;
struct HMENU__ { int unused; }; typedef struct HMENU__ *HMENU;
struct HPALETTE__ { int unused; }; typedef struct HPALETTE__ *HPALETTE;
struct HPEN__ { int unused; }; typedef struct HPEN__ *HPEN;
struct HMONITOR__ { int unused; }; typedef struct HMONITOR__ *HMONITOR;
#define HMONITOR_DECLARED 1
struct HWINEVENTHOOK__ { int unused; }; typedef struct HWINEVENTHOOK__ *HWINEVENTHOOK;
typedef HICON HCURSOR;
typedef DWORD COLORREF;
struct HUMPD__ { int unused; }; typedef struct HUMPD__ *HUMPD;
typedef DWORD *LPCOLORREF;
#define HFILE_ERROR ((HFILE)-1)
typedef struct tagRECT {
  LONG left;
  LONG top;
  LONG right;
  LONG bottom;
} RECT,*PRECT,*NPRECT,*LPRECT;
typedef const RECT *LPCRECT;
typedef struct _RECTL {
  LONG left;
  LONG top;
  LONG right;
  LONG bottom;
} RECTL,*PRECTL,*LPRECTL;
typedef const RECTL *LPCRECTL;
typedef struct tagPOINT {
  LONG x;
  LONG y;
} POINT,*PPOINT,*NPPOINT,*LPPOINT;
typedef struct _POINTL {
  LONG x;
  LONG y;
} POINTL,*PPOINTL;
typedef struct tagSIZE {
  LONG cx;
  LONG cy;
} SIZE,*PSIZE,*LPSIZE;
typedef SIZE SIZEL;
typedef SIZE *PSIZEL,*LPSIZEL;
typedef struct tagPOINTS {
  SHORT x;
  SHORT y;
} POINTS,*PPOINTS,*LPPOINTS;
#define APP_LOCAL_DEVICE_ID_SIZE 32
typedef struct APP_LOCAL_DEVICE_ID {
  BYTE value[32];
} APP_LOCAL_DEVICE_ID;
#define DM_UPDATE 1
#define DM_COPY 2
#define DM_PROMPT 4
#define DM_MODIFY 8
#define DM_IN_BUFFER DM_MODIFY
#define DM_IN_PROMPT DM_PROMPT
#define DM_OUT_BUFFER DM_COPY
#define DM_OUT_DEFAULT DM_UPDATE
#define DC_FIELDS 1
#define DC_PAPERS 2
#define DC_PAPERSIZE 3
#define DC_MINEXTENT 4
#define DC_MAXEXTENT 5
#define DC_BINS 6
#define DC_DUPLEX 7
#define DC_SIZE 8
#define DC_EXTRA 9
#define DC_VERSION 10
#define DC_DRIVER 11
#define DC_BINNAMES 12
#define DC_ENUMRESOLUTIONS 13
#define DC_FILEDEPENDENCIES 14
#define DC_TRUETYPE 15
#define DC_PAPERNAMES 16
#define DC_ORIENTATION 17
#define DC_COPIES 18
#define _DPI_AWARENESS_CONTEXTS_ 
struct DPI_AWARENESS_CONTEXT__ { int unused; }; typedef struct DPI_AWARENESS_CONTEXT__ *DPI_AWARENESS_CONTEXT;
typedef enum DPI_AWARENESS {
  DPI_AWARENESS_INVALID = -1,
  DPI_AWARENESS_UNAWARE = 0,
  DPI_AWARENESS_SYSTEM_AWARE = 1,
  DPI_AWARENESS_PER_MONITOR_AWARE = 2
} DPI_AWARENESS;
#define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1)
#define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT)-2)
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3)
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((DPI_AWARENESS_CONTEXT)-4)
#define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((DPI_AWARENESS_CONTEXT)-5)
typedef enum DPI_HOSTING_BEHAVIOR {
  DPI_HOSTING_BEHAVIOR_INVALID = -1,
  DPI_HOSTING_BEHAVIOR_DEFAULT = 0,
  DPI_HOSTING_BEHAVIOR_MIXED = 1
} DPI_HOSTING_BEHAVIOR;
#define _WINBASE_ 
#define _APISETCCONV_ 
#define CMAPI DECLSPEC_IMPORT
#define CREDUIAPI DECLSPEC_IMPORT
#define WINABLEAPI DECLSPEC_IMPORT
#define WINADVAPI DECLSPEC_IMPORT
#define WINBASEAPI DECLSPEC_IMPORT
#define WINUSERAPI DECLSPEC_IMPORT
#define ZAWPROXYAPI DECLSPEC_IMPORT
#define WINCFGMGR32API DECLSPEC_IMPORT
#define WINDEVQUERYAPI DECLSPEC_IMPORT
#define WINSWDEVICEAPI DECLSPEC_IMPORT
#define WINPATHCCHAPI WINBASEAPI
#define WINSTORAGEAPI DECLSPEC_IMPORT
#define _MINWINBASE_ 
#define MoveMemory RtlMoveMemory
#define CopyMemory RtlCopyMemory
#define FillMemory RtlFillMemory
#define ZeroMemory RtlZeroMemory
  typedef struct _SECURITY_ATTRIBUTES {
    DWORD nLength;
    LPVOID lpSecurityDescriptor;
    WINBOOL bInheritHandle;
  } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
  typedef struct _OVERLAPPED {
    ULONG_PTR Internal;
    ULONG_PTR InternalHigh;
    __extension__ union {
        struct {
            DWORD Offset;
            DWORD OffsetHigh;
        } ;
        PVOID Pointer;
    } ;
    HANDLE hEvent;
  } OVERLAPPED, *LPOVERLAPPED;
  typedef struct _OVERLAPPED_ENTRY {
    ULONG_PTR lpCompletionKey;
    LPOVERLAPPED lpOverlapped;
    ULONG_PTR Internal;
    DWORD dwNumberOfBytesTransferred;
  } OVERLAPPED_ENTRY, *LPOVERLAPPED_ENTRY;
#define _SYSTEMTIME_ 
  typedef struct _SYSTEMTIME {
    WORD wYear;
    WORD wMonth;
    WORD wDayOfWeek;
    WORD wDay;
    WORD wHour;
    WORD wMinute;
    WORD wSecond;
    WORD wMilliseconds;
  } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
  typedef struct _WIN32_FIND_DATAA {
    DWORD dwFileAttributes;
    FILETIME ftCreationTime;
    FILETIME ftLastAccessTime;
    FILETIME ftLastWriteTime;
    DWORD nFileSizeHigh;
    DWORD nFileSizeLow;
    DWORD dwReserved0;
    DWORD dwReserved1;
    CHAR cFileName[260];
    CHAR cAlternateFileName[14];
  } WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;
  typedef struct _WIN32_FIND_DATAW {
    DWORD dwFileAttributes;
    FILETIME ftCreationTime;
    FILETIME ftLastAccessTime;
    FILETIME ftLastWriteTime;
    DWORD nFileSizeHigh;
    DWORD nFileSizeLow;
    DWORD dwReserved0;
    DWORD dwReserved1;
    WCHAR cFileName[260];
    WCHAR cAlternateFileName[14];
  } WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW;
  typedef WIN32_FIND_DATAA WIN32_FIND_DATA;
  typedef PWIN32_FIND_DATAA PWIN32_FIND_DATA;
  typedef LPWIN32_FIND_DATAA LPWIN32_FIND_DATA;
  typedef enum _FINDEX_INFO_LEVELS {
    FindExInfoStandard,
    FindExInfoBasic,
    FindExInfoMaxInfoLevel
  } FINDEX_INFO_LEVELS;
#define FIND_FIRST_EX_CASE_SENSITIVE 0x00000001
#define FIND_FIRST_EX_LARGE_FETCH 0x00000002
  typedef enum _FINDEX_SEARCH_OPS {
    FindExSearchNameMatch,
    FindExSearchLimitToDirectories,
    FindExSearchLimitToDevices,
    FindExSearchMaxSearchOp
  } FINDEX_SEARCH_OPS;
  typedef enum _GET_FILEEX_INFO_LEVELS {
    GetFileExInfoStandard,
    GetFileExMaxInfoLevel
  } GET_FILEEX_INFO_LEVELS;
  typedef enum _FILE_INFO_BY_HANDLE_CLASS {
    FileBasicInfo ,
    FileStandardInfo,
    FileNameInfo,
    FileRenameInfo,
    FileDispositionInfo,
    FileAllocationInfo,
    FileEndOfFileInfo,
    FileStreamInfo,
    FileCompressionInfo,
    FileAttributeTagInfo,
    FileIdBothDirectoryInfo,
    FileIdBothDirectoryRestartInfo,
    FileIoPriorityHintInfo,
    FileRemoteProtocolInfo,
    FileFullDirectoryInfo,
    FileFullDirectoryRestartInfo,
    FileCaseSensitiveInfo,
    FileNormalizedNameInfo,
    MaximumFileInfoByHandleClass
  } FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS;
  typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;
  typedef PRTL_CRITICAL_SECTION PCRITICAL_SECTION;
  typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION;
  typedef RTL_CRITICAL_SECTION_DEBUG CRITICAL_SECTION_DEBUG;
  typedef PRTL_CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG;
  typedef PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG;
  typedef void (__attribute__((__stdcall__)) *LPOVERLAPPED_COMPLETION_ROUTINE) (DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped);
#define LOCKFILE_FAIL_IMMEDIATELY 0x1
#define LOCKFILE_EXCLUSIVE_LOCK 0x2
  typedef struct _PROCESS_HEAP_ENTRY {
    PVOID lpData;
    DWORD cbData;
    BYTE cbOverhead;
    BYTE iRegionIndex;
    WORD wFlags;
    __extension__ union {
        struct {
            HANDLE hMem;
            DWORD dwReserved[3];
        } Block;
        struct {
            DWORD dwCommittedSize;
            DWORD dwUnCommittedSize;
            LPVOID lpFirstBlock;
            LPVOID lpLastBlock;
        } Region;
    } ;
  } PROCESS_HEAP_ENTRY,*LPPROCESS_HEAP_ENTRY,*PPROCESS_HEAP_ENTRY;
#define PROCESS_HEAP_REGION 0x1
#define PROCESS_HEAP_UNCOMMITTED_RANGE 0x2
#define PROCESS_HEAP_ENTRY_BUSY 0x4
#define PROCESS_HEAP_SEG_ALLOC 0x8
#define PROCESS_HEAP_ENTRY_MOVEABLE 0x10
#define PROCESS_HEAP_ENTRY_DDESHARE 0x20
  typedef struct _REASON_CONTEXT {
    ULONG Version;
    DWORD Flags;
    union {
        struct {
            HMODULE LocalizedReasonModule;
            ULONG LocalizedReasonId;
            ULONG ReasonStringCount;
            LPWSTR *ReasonStrings;
        } Detailed;
        LPWSTR SimpleReasonString;
    } Reason;
  } REASON_CONTEXT, *PREASON_CONTEXT;
#define EXCEPTION_DEBUG_EVENT 1
#define CREATE_THREAD_DEBUG_EVENT 2
#define CREATE_PROCESS_DEBUG_EVENT 3
#define EXIT_THREAD_DEBUG_EVENT 4
#define EXIT_PROCESS_DEBUG_EVENT 5
#define LOAD_DLL_DEBUG_EVENT 6
#define UNLOAD_DLL_DEBUG_EVENT 7
#define OUTPUT_DEBUG_STRING_EVENT 8
#define RIP_EVENT 9
  typedef DWORD (__attribute__((__stdcall__)) *PTHREAD_START_ROUTINE) (LPVOID lpThreadParameter);
  typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
  typedef LPVOID (__attribute__((__stdcall__)) *PENCLAVE_ROUTINE) (LPVOID lpThreadParameter);
  typedef PENCLAVE_ROUTINE LPENCLAVE_ROUTINE;
  typedef struct _EXCEPTION_DEBUG_INFO {
    EXCEPTION_RECORD ExceptionRecord;
    DWORD dwFirstChance;
  } EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO;
  typedef struct _CREATE_THREAD_DEBUG_INFO {
    HANDLE hThread;
    LPVOID lpThreadLocalBase;
    LPTHREAD_START_ROUTINE lpStartAddress;
  } CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO;
  typedef struct _CREATE_PROCESS_DEBUG_INFO {
    HANDLE hFile;
    HANDLE hProcess;
    HANDLE hThread;
    LPVOID lpBaseOfImage;
    DWORD dwDebugInfoFileOffset;
    DWORD nDebugInfoSize;
    LPVOID lpThreadLocalBase;
    LPTHREAD_START_ROUTINE lpStartAddress;
    LPVOID lpImageName;
    WORD fUnicode;
  } CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO;
  typedef struct _EXIT_THREAD_DEBUG_INFO {
    DWORD dwExitCode;
  } EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO;
  typedef struct _EXIT_PROCESS_DEBUG_INFO {
    DWORD dwExitCode;
  } EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO;
  typedef struct _LOAD_DLL_DEBUG_INFO {
    HANDLE hFile;
    LPVOID lpBaseOfDll;
    DWORD dwDebugInfoFileOffset;
    DWORD nDebugInfoSize;
    LPVOID lpImageName;
    WORD fUnicode;
  } LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO;
  typedef struct _UNLOAD_DLL_DEBUG_INFO {
    LPVOID lpBaseOfDll;
  } UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO;
  typedef struct _OUTPUT_DEBUG_STRING_INFO {
    LPSTR lpDebugStringData;
    WORD fUnicode;
    WORD nDebugStringLength;
  } OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO;
  typedef struct _RIP_INFO {
    DWORD dwError;
    DWORD dwType;
  } RIP_INFO, *LPRIP_INFO;
  typedef struct _DEBUG_EVENT {
    DWORD dwDebugEventCode;
    DWORD dwProcessId;
    DWORD dwThreadId;
    union {
      EXCEPTION_DEBUG_INFO Exception;
      CREATE_THREAD_DEBUG_INFO CreateThread;
      CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
      EXIT_THREAD_DEBUG_INFO ExitThread;
      EXIT_PROCESS_DEBUG_INFO ExitProcess;
      LOAD_DLL_DEBUG_INFO LoadDll;
      UNLOAD_DLL_DEBUG_INFO UnloadDll;
      OUTPUT_DEBUG_STRING_INFO DebugString;
      RIP_INFO RipInfo;
    } u;
  } DEBUG_EVENT, *LPDEBUG_EVENT;
  typedef PCONTEXT LPCONTEXT;
#define STILL_ACTIVE STATUS_PENDING
#define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION
#define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT
#define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT
#define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP
#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED
#define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND
#define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO
#define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT
#define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION
#define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW
#define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK
#define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW
#define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO
#define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW
#define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION
#define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR
#define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION
#define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION
#define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW
#define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION
#define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION
#define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE
#define EXCEPTION_POSSIBLE_DEADLOCK STATUS_POSSIBLE_DEADLOCK
#define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT
#define LMEM_FIXED 0x0
#define LMEM_MOVEABLE 0x2
#define LMEM_NOCOMPACT 0x10
#define LMEM_NODISCARD 0x20
#define LMEM_ZEROINIT 0x40
#define LMEM_MODIFY 0x80
#define LMEM_DISCARDABLE 0xf00
#define LMEM_VALID_FLAGS 0xf72
#define LMEM_INVALID_HANDLE 0x8000
#define LHND (LMEM_MOVEABLE | LMEM_ZEROINIT)
#define LPTR (LMEM_FIXED | LMEM_ZEROINIT)
#define NONZEROLHND (LMEM_MOVEABLE)
#define NONZEROLPTR (LMEM_FIXED)
#define LocalDiscard(h) LocalReAlloc ((h), 0, LMEM_MOVEABLE)
#define LMEM_DISCARDED 0x4000
#define LMEM_LOCKCOUNT 0xff
#define NUMA_NO_PREFERRED_NODE ((DWORD) -1)
#define _BEM_H_ 
  typedef struct _CONTRACT_DESCRIPTION CONTRACT_DESCRIPTION;
  typedef struct _BEM_REFERENCE BEM_REFERENCE;
  typedef void (__attribute__((__stdcall__)) *BEM_FREE_INTERFACE_CALLBACK) (void *interfaceInstance);
  HRESULT __attribute__((__stdcall__)) BemCreateReference (const GUID *const iid, void *interfaceInstance, BEM_FREE_INTERFACE_CALLBACK freeCallback, BEM_REFERENCE **reference);
  HRESULT __attribute__((__stdcall__)) BemCreateContractFrom (LPCWSTR dllPath, const GUID *const extensionId, const CONTRACT_DESCRIPTION *contractDescription, void *hostContract, void **contract);
  HRESULT __attribute__((__stdcall__)) BemCopyReference (BEM_REFERENCE *reference, BEM_REFERENCE **copiedReference);
  void __attribute__((__stdcall__)) BemFreeReference (BEM_REFERENCE *reference);
  void __attribute__((__stdcall__)) BemFreeContract (void *contract);
#define _APISETDEBUG_ 
  __attribute__((dllimport)) void __attribute__((__stdcall__)) DebugBreak (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsDebuggerPresent (void);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) OutputDebugStringA (LPCSTR lpOutputString);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) OutputDebugStringW (LPCWSTR lpOutputString);
#define OutputDebugString __MINGW_NAME_AW(OutputDebugString)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ContinueDebugEvent (DWORD dwProcessId, DWORD dwThreadId, DWORD dwContinueStatus);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WaitForDebugEvent (LPDEBUG_EVENT lpDebugEvent, DWORD dwMilliseconds);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DebugActiveProcess (DWORD dwProcessId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DebugActiveProcessStop (DWORD dwProcessId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CheckRemoteDebuggerPresent (HANDLE hProcess, PBOOL pbDebuggerPresent);
#define _ERRHANDLING_H_ 
typedef LONG (__attribute__((__stdcall__)) *PTOP_LEVEL_EXCEPTION_FILTER) (struct _EXCEPTION_POINTERS *ExceptionInfo);
typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
    __attribute__((dllimport)) LPTOP_LEVEL_EXCEPTION_FILTER __attribute__((__stdcall__)) SetUnhandledExceptionFilter (LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter);
    __attribute__((dllimport)) LONG __attribute__((__stdcall__)) UnhandledExceptionFilter (struct _EXCEPTION_POINTERS *ExceptionInfo);
    __attribute__((dllimport)) PVOID __attribute__((__stdcall__)) AddVectoredExceptionHandler (ULONG First, PVECTORED_EXCEPTION_HANDLER Handler);
  __attribute__((dllimport)) ULONG __attribute__((__stdcall__)) RemoveVectoredExceptionHandler (PVOID Handle);
  __attribute__((dllimport)) PVOID __attribute__((__stdcall__)) AddVectoredContinueHandler (ULONG First, PVECTORED_EXCEPTION_HANDLER Handler);
  __attribute__((dllimport)) ULONG __attribute__((__stdcall__)) RemoveVectoredContinueHandler (PVOID Handle);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetErrorMode (void);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) RaiseException (DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments, const ULONG_PTR *lpArguments);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) SetErrorMode (UINT uMode);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetLastError (void);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) SetLastError (DWORD dwErrCode);
#define _FIBERS_H_ 
#define FLS_OUT_OF_INDEXES ((DWORD)0xffffffff)
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) FlsAlloc (PFLS_CALLBACK_FUNCTION lpCallback);
  __attribute__((dllimport)) PVOID __attribute__((__stdcall__)) FlsGetValue (DWORD dwFlsIndex);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FlsSetValue (DWORD dwFlsIndex, PVOID lpFlsData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FlsFree (DWORD dwFlsIndex);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsThreadAFiber (void);
#define _APISETFILE_ 
#define CREATE_NEW 1
#define CREATE_ALWAYS 2
#define OPEN_EXISTING 3
#define OPEN_ALWAYS 4
#define TRUNCATE_EXISTING 5
#define INVALID_FILE_SIZE ((DWORD)0xffffffff)
#define INVALID_SET_FILE_POINTER ((DWORD)-1)
#define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
#define CreateFile __MINGW_NAME_AW(CreateFile)
__attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFileAttributesW (LPCWSTR lpFileName);
#define GetFileAttributes __MINGW_NAME_AW(GetFileAttributes)
__attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SetFilePointer (HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod);
  typedef struct _BY_HANDLE_FILE_INFORMATION {
    DWORD dwFileAttributes;
    FILETIME ftCreationTime;
    FILETIME ftLastAccessTime;
    FILETIME ftLastWriteTime;
    DWORD dwVolumeSerialNumber;
    DWORD nFileSizeHigh;
    DWORD nFileSizeLow;
    DWORD nNumberOfLinks;
    DWORD nFileIndexHigh;
    DWORD nFileIndexLow;
  } BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION,
    *LPBY_HANDLE_FILE_INFORMATION;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetFileInformationByHandle (HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateFileA (LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DefineDosDeviceW (DWORD dwFlags, LPCWSTR lpDeviceName, LPCWSTR lpTargetPath);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindCloseChangeNotification (HANDLE hChangeHandle);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstChangeNotificationA (LPCSTR lpPathName, WINBOOL bWatchSubtree, DWORD dwNotifyFilter);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstChangeNotificationW (LPCWSTR lpPathName, WINBOOL bWatchSubtree, DWORD dwNotifyFilter);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstVolumeW (LPWSTR lpszVolumeName, DWORD cchBufferLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindNextChangeNotification (HANDLE hChangeHandle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindNextVolumeW (HANDLE hFindVolume, LPWSTR lpszVolumeName, DWORD cchBufferLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindVolumeClose (HANDLE hFindVolume);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateFileW (LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFileSize (HANDLE hFile, LPDWORD lpFileSizeHigh);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) CompareFileTime (const FILETIME *lpFileTime1, const FILETIME *lpFileTime2);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteVolumeMountPointW (LPCWSTR lpszVolumeMountPoint);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FileTimeToLocalFileTime (const FILETIME *lpFileTime, LPFILETIME lpLocalFileTime);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstFileA (LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstFileW (LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFindFileData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetDiskFreeSpaceA (LPCSTR lpRootPathName, LPDWORD lpSectorsPerCluster, LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters, LPDWORD lpTotalNumberOfClusters);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetDiskFreeSpaceW (LPCWSTR lpRootPathName, LPDWORD lpSectorsPerCluster, LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters, LPDWORD lpTotalNumberOfClusters);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetDriveTypeA (LPCSTR lpRootPathName);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetDriveTypeW (LPCWSTR lpRootPathName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFileAttributesA (LPCSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetFileSizeEx (HANDLE hFile, PLARGE_INTEGER lpFileSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetFileTime (HANDLE hFile, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFileType (HANDLE hFile);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFullPathNameA (LPCSTR lpFileName, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFullPathNameW (LPCWSTR lpFileName, DWORD nBufferLength, LPWSTR lpBuffer, LPWSTR *lpFilePart);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetLogicalDrives (void);
#define FindFirstFile __MINGW_NAME_AW(FindFirstFile)
#define GetDiskFreeSpace __MINGW_NAME_AW(GetDiskFreeSpace)
#define GetDriveType __MINGW_NAME_AW(GetDriveType)
#define GetFullPathName __MINGW_NAME_AW(GetFullPathName)
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetLogicalDriveStringsW (DWORD nBufferLength, LPWSTR lpBuffer);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetShortPathNameW (LPCWSTR lpszLongPath, LPWSTR lpszShortPath, DWORD cchBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetVolumePathNameW (LPCWSTR lpszFileName, LPWSTR lpszVolumePathName, DWORD cchBufferLength);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) QueryDosDeviceW (LPCWSTR lpDeviceName, LPWSTR lpTargetPath, DWORD ucchMax);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadFileScatter (HANDLE hFile, FILE_SEGMENT_ELEMENT aSegmentArray[], DWORD nNumberOfBytesToRead, LPDWORD lpReserved, LPOVERLAPPED lpOverlapped);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFileValidData (HANDLE hFile, LONGLONG ValidDataLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteFileGather (HANDLE hFile, FILE_SEGMENT_ELEMENT aSegmentArray[], DWORD nNumberOfBytesToWrite, LPDWORD lpReserved, LPOVERLAPPED lpOverlapped);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetVolumeNameForVolumeMountPointW (LPCWSTR lpszVolumeMountPoint, LPWSTR lpszVolumeName, DWORD cchBufferLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetVolumePathNamesForVolumeNameW (LPCWSTR lpszVolumeName, LPWCH lpszVolumePathNames, DWORD cchBufferLength, PDWORD lpcchReturnLength);
#define FindFirstChangeNotification __MINGW_NAME_AW(FindFirstChangeNotification)
#define GetLongPathName __MINGW_NAME_AW(GetLongPathName)
#define GetTempFileName __MINGW_NAME_AW(GetTempFileName)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetVolumeInformationByHandleW (HANDLE hFile, LPWSTR lpVolumeNameBuffer, DWORD nVolumeNameSize, LPDWORD lpVolumeSerialNumber, LPDWORD lpMaximumComponentLength, LPDWORD lpFileSystemFlags, LPWSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetLongPathNameA (LPCSTR lpszShortPath, LPSTR lpszLongPath, DWORD cchBuffer);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetLongPathNameW (LPCWSTR lpszShortPath, LPWSTR lpszLongPath, DWORD cchBuffer);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetTempFileNameA (LPCSTR lpPathName, LPCSTR lpPrefixString, UINT uUnique, LPSTR lpTempFileName);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetTempFileNameW (LPCWSTR lpPathName, LPCWSTR lpPrefixString, UINT uUnique, LPWSTR lpTempFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetVolumeInformationW (LPCWSTR lpRootPathName, LPWSTR lpVolumeNameBuffer, DWORD nVolumeNameSize, LPDWORD lpVolumeSerialNumber, LPDWORD lpMaximumComponentLength, LPDWORD lpFileSystemFlags, LPWSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LocalFileTimeToFileTime (const FILETIME *lpLocalFileTime, LPFILETIME lpFileTime);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LockFile (HANDLE hFile, DWORD dwFileOffsetLow, DWORD dwFileOffsetHigh, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadFileEx (HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFileTime (HANDLE hFile, const FILETIME *lpCreationTime, const FILETIME *lpLastAccessTime, const FILETIME *lpLastWriteTime);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnlockFile (HANDLE hFile, DWORD dwFileOffsetLow, DWORD dwFileOffsetHigh, DWORD nNumberOfBytesToUnlockLow, DWORD nNumberOfBytesToUnlockHigh);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteFileEx (HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFinalPathNameByHandleA (HANDLE hFile, LPSTR lpszFilePath, DWORD cchFilePath, DWORD dwFlags);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFinalPathNameByHandleW (HANDLE hFile, LPWSTR lpszFilePath, DWORD cchFilePath, DWORD dwFlags);
#define GetFinalPathNameByHandle __MINGW_NAME_AW(GetFinalPathNameByHandle)
  typedef struct _WIN32_FILE_ATTRIBUTE_DATA {
    DWORD dwFileAttributes;
    FILETIME ftCreationTime;
    FILETIME ftLastAccessTime;
    FILETIME ftLastWriteTime;
    DWORD nFileSizeHigh;
    DWORD nFileSizeLow;
  } WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateDirectoryA (LPCSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateDirectoryW (LPCWSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteFileA (LPCSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteFileW (LPCWSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindClose (HANDLE hFindFile);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstFileExA (LPCSTR lpFileName, FINDEX_INFO_LEVELS fInfoLevelId, LPVOID lpFindFileData, FINDEX_SEARCH_OPS fSearchOp, LPVOID lpSearchFilter, DWORD dwAdditionalFlags);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstFileExW (LPCWSTR lpFileName, FINDEX_INFO_LEVELS fInfoLevelId, LPVOID lpFindFileData, FINDEX_SEARCH_OPS fSearchOp, LPVOID lpSearchFilter, DWORD dwAdditionalFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindNextFileA (HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindNextFileW (HANDLE hFindFile, LPWIN32_FIND_DATAW lpFindFileData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FlushFileBuffers (HANDLE hFile);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetDiskFreeSpaceExA (LPCSTR lpDirectoryName, PULARGE_INTEGER lpFreeBytesAvailableToCaller, PULARGE_INTEGER lpTotalNumberOfBytes, PULARGE_INTEGER lpTotalNumberOfFreeBytes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetDiskFreeSpaceExW (LPCWSTR lpDirectoryName, PULARGE_INTEGER lpFreeBytesAvailableToCaller, PULARGE_INTEGER lpTotalNumberOfBytes, PULARGE_INTEGER lpTotalNumberOfFreeBytes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetFileAttributesExA (LPCSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetFileAttributesExW (LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LockFileEx (HANDLE hFile, DWORD dwFlags, DWORD dwReserved, DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh, LPOVERLAPPED lpOverlapped);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadFile (HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RemoveDirectoryA (LPCSTR lpPathName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RemoveDirectoryW (LPCWSTR lpPathName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetEndOfFile (HANDLE hFile);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFileAttributesA (LPCSTR lpFileName, DWORD dwFileAttributes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFileAttributesW (LPCWSTR lpFileName, DWORD dwFileAttributes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFilePointerEx (HANDLE hFile, LARGE_INTEGER liDistanceToMove, PLARGE_INTEGER lpNewFilePointer, DWORD dwMoveMethod);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnlockFileEx (HANDLE hFile, DWORD dwReserved, DWORD nNumberOfBytesToUnlockLow, DWORD nNumberOfBytesToUnlockHigh, LPOVERLAPPED lpOverlapped);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteFile (HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetTempPathA (DWORD nBufferLength, LPSTR lpBuffer);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetTempPathW (DWORD nBufferLength, LPWSTR lpBuffer);
#define CreateDirectory __MINGW_NAME_AW(CreateDirectory)
#define DeleteFile __MINGW_NAME_AW(DeleteFile)
#define FindFirstFileEx __MINGW_NAME_AW(FindFirstFileEx)
#define FindNextFile __MINGW_NAME_AW(FindNextFile)
#define GetDiskFreeSpaceEx __MINGW_NAME_AW(GetDiskFreeSpaceEx)
#define GetFileAttributesEx __MINGW_NAME_AW(GetFileAttributesEx)
#define RemoveDirectory __MINGW_NAME_AW(RemoveDirectory)
#define SetFileAttributes __MINGW_NAME_AW(SetFileAttributes)
#define GetTempPath __MINGW_NAME_AW(GetTempPath)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFileInformationByHandle (HANDLE hFile, FILE_INFO_BY_HANDLE_CLASS FileInformationClass, LPVOID lpFileInformation, DWORD dwBufferSize);
#define _APISETHANDLE_ 
#define INVALID_HANDLE_VALUE ((HANDLE) (LONG_PTR)-1)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CloseHandle (HANDLE hObject);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DuplicateHandle (HANDLE hSourceProcessHandle, HANDLE hSourceHandle, HANDLE hTargetProcessHandle, LPHANDLE lpTargetHandle, DWORD dwDesiredAccess, WINBOOL bInheritHandle, DWORD dwOptions);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetHandleInformation (HANDLE hObject, LPDWORD lpdwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetHandleInformation (HANDLE hObject, DWORD dwMask, DWORD dwFlags);
#define _HEAPAPI_H_ 
  typedef struct _HEAP_SUMMARY {
    DWORD cb;
    SIZE_T cbAllocated;
    SIZE_T cbCommitted;
    SIZE_T cbReserved;
    SIZE_T cbMaxReserve;
  } HEAP_SUMMARY,*PHEAP_SUMMARY;
  typedef PHEAP_SUMMARY LPHEAP_SUMMARY;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) HeapValidate (HANDLE hHeap, DWORD dwFlags, LPCVOID lpMem);
  WINBOOL __attribute__((__stdcall__)) HeapSummary (HANDLE hHeap, DWORD dwFlags, LPHEAP_SUMMARY lpSummary);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetProcessHeaps (DWORD NumberOfHeaps, PHANDLE ProcessHeaps);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) HeapLock (HANDLE hHeap);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) HeapUnlock (HANDLE hHeap);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) HeapWalk (HANDLE hHeap, LPPROCESS_HEAP_ENTRY lpEntry);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) HeapQueryInformation (HANDLE HeapHandle, HEAP_INFORMATION_CLASS HeapInformationClass, PVOID HeapInformation, SIZE_T HeapInformationLength, PSIZE_T ReturnLength);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) HeapCreate (DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize);
  __attribute__((dllimport)) SIZE_T __attribute__((__stdcall__)) HeapCompact (HANDLE hHeap, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) HeapDestroy (HANDLE hHeap);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) HeapAlloc (HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) HeapReAlloc (HANDLE hHeap, DWORD dwFlags, LPVOID lpMem, SIZE_T dwBytes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) HeapFree (HANDLE hHeap, DWORD dwFlags, LPVOID lpMem);
  __attribute__((dllimport)) SIZE_T __attribute__((__stdcall__)) HeapSize (HANDLE hHeap, DWORD dwFlags, LPCVOID lpMem);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) GetProcessHeap (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) HeapSetInformation (HANDLE HeapHandle, HEAP_INFORMATION_CLASS HeapInformationClass, PVOID HeapInformation, SIZE_T HeapInformationLength);
#define _IO_APISET_H_ 
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetOverlappedResult (HANDLE hFile, LPOVERLAPPED lpOverlapped, LPDWORD lpNumberOfBytesTransferred, WINBOOL bWait);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateIoCompletionPort (HANDLE FileHandle, HANDLE ExistingCompletionPort, ULONG_PTR CompletionKey, DWORD NumberOfConcurrentThreads);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetQueuedCompletionStatus (HANDLE CompletionPort, LPDWORD lpNumberOfBytesTransferred, PULONG_PTR lpCompletionKey, LPOVERLAPPED *lpOverlapped, DWORD dwMilliseconds);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PostQueuedCompletionStatus (HANDLE CompletionPort, DWORD dwNumberOfBytesTransferred, ULONG_PTR dwCompletionKey, LPOVERLAPPED lpOverlapped);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeviceIoControl (HANDLE hDevice, DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CancelIo (HANDLE hFile);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetOverlappedResultEx (HANDLE hFile, LPOVERLAPPED lpOverlapped, LPDWORD lpNumberOfBytesTransferred, DWORD dwMilliseconds, WINBOOL bAlertable);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetQueuedCompletionStatusEx (HANDLE CompletionPort, LPOVERLAPPED_ENTRY lpCompletionPortEntries, ULONG ulCount, PULONG ulNumEntriesRemoved, DWORD dwMilliseconds, WINBOOL fAlertable);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CancelIoEx (HANDLE hFile, LPOVERLAPPED lpOverlapped);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CancelSynchronousIo (HANDLE hThread);
#define _INTERLOCKAPI_H_ 
  __attribute__((dllimport)) void __attribute__((__stdcall__)) InitializeSListHead (PSLIST_HEADER ListHead);
  __attribute__((dllimport)) PSLIST_ENTRY __attribute__((__stdcall__)) InterlockedPopEntrySList (PSLIST_HEADER ListHead);
  __attribute__((dllimport)) PSLIST_ENTRY __attribute__((__stdcall__)) InterlockedPushEntrySList (PSLIST_HEADER ListHead, PSLIST_ENTRY ListEntry);
  __attribute__((dllimport)) PSLIST_ENTRY __attribute__((__stdcall__)) InterlockedFlushSList (PSLIST_HEADER ListHead);
  __attribute__((dllimport)) USHORT __attribute__((__stdcall__)) QueryDepthSList (PSLIST_HEADER ListHead);
#define _JOBAPISET_H_ 
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsProcessInJob (HANDLE ProcessHandle, HANDLE JobHandle, PBOOL Result);
#define _APISETLIBLOADER_ 
  typedef struct tagENUMUILANG {
    ULONG NumOfEnumUILang;
    ULONG SizeOfEnumUIBuffer;
    LANGID *pEnumUIBuffer;
  } ENUMUILANG, *PENUMUILANG;
  typedef WINBOOL (__attribute__((__stdcall__)) *ENUMRESLANGPROCA) (HMODULE hModule, LPCSTR lpType, LPCSTR lpName, WORD wLanguage, LONG_PTR lParam);
  typedef WINBOOL (__attribute__((__stdcall__)) *ENUMRESLANGPROCW) (HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage, LONG_PTR lParam);
  typedef WINBOOL (__attribute__((__stdcall__)) *ENUMRESNAMEPROCA) (HMODULE hModule, LPCSTR lpType, LPSTR lpName, LONG_PTR lParam);
  typedef WINBOOL (__attribute__((__stdcall__)) *ENUMRESNAMEPROCW) (HMODULE hModule, LPCWSTR lpType, LPWSTR lpName, LONG_PTR lParam);
  typedef WINBOOL (__attribute__((__stdcall__)) *ENUMRESTYPEPROCA) (HMODULE hModule, LPSTR lpType, LONG_PTR lParam);
  typedef WINBOOL (__attribute__((__stdcall__)) *ENUMRESTYPEPROCW) (HMODULE hModule, LPWSTR lpType, LONG_PTR lParam);
  typedef WINBOOL (__attribute__((__stdcall__)) *PGET_MODULE_HANDLE_EXA) (DWORD dwFlags, LPCSTR lpModuleName, HMODULE *phModule);
  typedef WINBOOL (__attribute__((__stdcall__)) *PGET_MODULE_HANDLE_EXW) (DWORD dwFlags, LPCWSTR lpModuleName, HMODULE *phModule);
  typedef PVOID DLL_DIRECTORY_COOKIE, *PDLL_DIRECTORY_COOKIE;
#define FIND_RESOURCE_DIRECTORY_TYPES (0x0100)
#define FIND_RESOURCE_DIRECTORY_NAMES (0x0200)
#define FIND_RESOURCE_DIRECTORY_LANGUAGES (0x0400)
#define RESOURCE_ENUM_LN (0x0001)
#define RESOURCE_ENUM_MUI (0x0002)
#define RESOURCE_ENUM_MUI_SYSTEM (0x0004)
#define RESOURCE_ENUM_VALIDATE (0x0008)
#define RESOURCE_ENUM_MODULE_EXACT (0x0010)
#define SUPPORT_LANG_NUMBER 32
#define DONT_RESOLVE_DLL_REFERENCES 0x1
#define LOAD_LIBRARY_AS_DATAFILE 0x2
#define LOAD_WITH_ALTERED_SEARCH_PATH 0x8
#define LOAD_IGNORE_CODE_AUTHZ_LEVEL 0x10
#define LOAD_LIBRARY_AS_IMAGE_RESOURCE 0x20
#define LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE 0x40
#define LOAD_LIBRARY_REQUIRE_SIGNED_TARGET 0x80
#define LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR 0x100
#define LOAD_LIBRARY_SEARCH_APPLICATION_DIR 0x200
#define LOAD_LIBRARY_SEARCH_USER_DIRS 0x400
#define LOAD_LIBRARY_SEARCH_SYSTEM32 0x800
#define LOAD_LIBRARY_SEARCH_DEFAULT_DIRS 0x1000
#define LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER LOAD_LIBRARY_SEARCH_SYSTEM32
#define GET_MODULE_HANDLE_EX_FLAG_PIN (0x1)
#define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT (0x2)
#define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS (0x4)
#define ENUMRESLANGPROC __MINGW_NAME_AW(ENUMRESLANGPROC)
#define ENUMRESNAMEPROC __MINGW_NAME_AW(ENUMRESNAMEPROC)
#define ENUMRESTYPEPROC __MINGW_NAME_AW(ENUMRESTYPEPROC)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceNamesW(HMODULE hModule, LPCWSTR lpType, ENUMRESNAMEPROCW lpEnumFunc, LONG_PTR lParam);
  __attribute__((dllimport)) HRSRC __attribute__((__stdcall__)) FindResourceW(HMODULE hModule, LPCWSTR lpName, LPCWSTR lpType);
  __attribute__((dllimport)) HRSRC __attribute__((__stdcall__)) FindResourceExW (HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FreeResource (HGLOBAL hResData);
  __attribute__((dllimport)) HMODULE __attribute__((__stdcall__)) LoadLibraryExA (LPCSTR lpLibFileName, HANDLE hFile, DWORD dwFlags);
  __attribute__((dllimport)) HMODULE __attribute__((__stdcall__)) LoadLibraryExW (LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags);
  __attribute__((dllimport)) HGLOBAL __attribute__((__stdcall__)) LoadResource (HMODULE hModule, HRSRC hResInfo);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) LoadStringA (HINSTANCE hInstance, UINT uID, LPSTR lpBuffer, int cchBufferMax);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) LoadStringW (HINSTANCE hInstance, UINT uID, LPWSTR lpBuffer, int cchBufferMax);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) LockResource (HGLOBAL hResData);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SizeofResource (HMODULE hModule, HRSRC hResInfo);
  __attribute__((dllimport)) DLL_DIRECTORY_COOKIE __attribute__((__stdcall__)) AddDllDirectory (PCWSTR NewDirectory);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RemoveDllDirectory (DLL_DIRECTORY_COOKIE Cookie);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetDefaultDllDirectories (DWORD DirectoryFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetModuleHandleExA (DWORD dwFlags, LPCSTR lpModuleName, HMODULE *phModule);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetModuleHandleExW (DWORD dwFlags, LPCWSTR lpModuleName, HMODULE *phModule);
#define PGET_MODULE_HANDLE_EX __MINGW_NAME_AW(PGET_MODULE_HANDLE_EX)
#define LoadString __MINGW_NAME_AW(LoadString)
#define GetModuleHandleEx __MINGW_NAME_AW(GetModuleHandleEx)
#define LoadLibraryEx __MINGW_NAME_AW(LoadLibraryEx)
#define EnumResourceLanguages __MINGW_NAME_AW(EnumResourceLanguages)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceLanguagesA(HMODULE hModule,LPCSTR lpType,LPCSTR lpName,ENUMRESLANGPROCA lpEnumFunc,LONG_PTR lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceLanguagesW(HMODULE hModule,LPCWSTR lpType,LPCWSTR lpName,ENUMRESLANGPROCW lpEnumFunc,LONG_PTR lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceLanguagesExA (HMODULE hModule, LPCSTR lpType, LPCSTR lpName, ENUMRESLANGPROCA lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceLanguagesExW (HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, ENUMRESLANGPROCW lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceNamesExA (HMODULE hModule, LPCSTR lpType, ENUMRESNAMEPROCA lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceNamesExW (HMODULE hModule, LPCWSTR lpType, ENUMRESNAMEPROCW lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceTypesExA (HMODULE hModule, ENUMRESTYPEPROCA lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceTypesExW (HMODULE hModule, ENUMRESTYPEPROCW lpEnumFunc, LONG_PTR lParam, DWORD dwFlags, LANGID LangId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryOptionalDelayLoadedAPI (HMODULE CallerModule, LPCSTR lpDllName, LPCSTR lpProcName, DWORD Reserved);
#define EnumResourceLanguagesEx __MINGW_NAME_AW(EnumResourceLanguagesEx)
#define EnumResourceNamesEx __MINGW_NAME_AW(EnumResourceNamesEx)
#define EnumResourceTypesEx __MINGW_NAME_AW(EnumResourceTypesEx)
__attribute__((dllimport)) HMODULE __attribute__((__stdcall__)) GetModuleHandleA (LPCSTR lpModuleName);
__attribute__((dllimport)) HMODULE __attribute__((__stdcall__)) GetModuleHandleW (LPCWSTR lpModuleName);
__attribute__((dllimport)) HMODULE __attribute__((__stdcall__)) LoadLibraryA(LPCSTR lpLibFileName);
__attribute__((dllimport)) HMODULE __attribute__((__stdcall__)) LoadLibraryW(LPCWSTR lpLibFileName);
#define GetModuleHandle __MINGW_NAME_AW(GetModuleHandle)
#define LoadLibrary __MINGW_NAME_AW(LoadLibrary)
  __attribute__((dllimport)) __attribute__((noreturn)) void __attribute__((__stdcall__)) FreeLibraryAndExitThread (HMODULE hLibModule, DWORD dwExitCode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DisableThreadLibraryCalls (HMODULE hLibModule);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FreeLibrary (HMODULE hLibModule);
  __attribute__((dllimport)) FARPROC __attribute__((__stdcall__)) GetProcAddress (HMODULE hModule, LPCSTR lpProcName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetModuleFileNameA (HMODULE hModule, LPSTR lpFilename, DWORD nSize);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetModuleFileNameW (HMODULE hModule, LPWSTR lpFilename, DWORD nSize);
#define GetModuleFileName __MINGW_NAME_AW(GetModuleFileName)
#define CURRENT_IMPORT_REDIRECTION_VERSION 1
typedef struct _REDIRECTION_FUNCTION_DESCRIPTOR {
    PCSTR DllName;
    PCSTR FunctionName;
    PVOID RedirectionTarget;
} REDIRECTION_FUNCTION_DESCRIPTOR, *PREDIRECTION_FUNCTION_DESCRIPTOR;
typedef const REDIRECTION_FUNCTION_DESCRIPTOR *PCREDIRECTION_FUNCTION_DESCRIPTOR;
typedef struct _REDIRECTION_DESCRIPTOR {
    ULONG Version;
    ULONG FunctionCount;
    PCREDIRECTION_FUNCTION_DESCRIPTOR Redirections;
} REDIRECTION_DESCRIPTOR, *PREDIRECTION_DESCRIPTOR;
typedef const REDIRECTION_DESCRIPTOR *PCREDIRECTION_DESCRIPTOR;
#define _MEMORYAPI_H_ 
  typedef enum _MEMORY_RESOURCE_NOTIFICATION_TYPE {
    LowMemoryResourceNotification,
    HighMemoryResourceNotification
  } MEMORY_RESOURCE_NOTIFICATION_TYPE;
    __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) VirtualFree (LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType);
#define FILE_MAP_WRITE SECTION_MAP_WRITE
#define FILE_MAP_READ SECTION_MAP_READ
#define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS
#define FILE_MAP_COPY 0x1
#define FILE_MAP_RESERVE 0x80000000
#define FILE_MAP_TARGETS_INVALID 0x40000000
#define FILE_MAP_LARGE_PAGES 0x20000000
  __attribute__((dllimport)) SIZE_T __attribute__((__stdcall__)) VirtualQuery (LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FlushViewOfFile (LPCVOID lpBaseAddress, SIZE_T dwNumberOfBytesToFlush);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnmapViewOfFile (LPCVOID lpBaseAddress);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnmapViewOfFile2(HANDLE Process, PVOID BaseAddress, ULONG UnmapFlags);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateFileMappingFromApp (HANDLE hFile, PSECURITY_ATTRIBUTES SecurityAttributes, ULONG PageProtection, ULONG64 MaximumSize, PCWSTR Name);
  __attribute__((dllimport)) PVOID __attribute__((__stdcall__)) MapViewOfFileFromApp (HANDLE hFileMappingObject, ULONG DesiredAccess, ULONG64 FileOffset, SIZE_T NumberOfBytesToMap);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) VirtualUnlockEx(HANDLE Process, LPVOID Address, SIZE_T Size);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) VirtualProtect (LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect);
#define FILE_MAP_EXECUTE SECTION_MAP_EXECUTE_EXPLICIT
#define FILE_CACHE_FLAGS_DEFINED 
#define FILE_CACHE_MAX_HARD_ENABLE 0x00000001
#define FILE_CACHE_MAX_HARD_DISABLE 0x00000002
#define FILE_CACHE_MIN_HARD_ENABLE 0x00000004
#define FILE_CACHE_MIN_HARD_DISABLE 0x00000008
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) VirtualAlloc (LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) VirtualAllocEx (HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) VirtualProtectEx (HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect);
  __attribute__((dllimport)) SIZE_T __attribute__((__stdcall__)) VirtualQueryEx (HANDLE hProcess, LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadProcessMemory (HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteProcessMemory (HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateFileMappingW (HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCWSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenFileMappingW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpName);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) MapViewOfFile (HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) MapViewOfFileEx (HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap, LPVOID lpBaseAddress);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) VirtualLock (LPVOID lpAddress, SIZE_T dwSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) VirtualUnlock (LPVOID lpAddress, SIZE_T dwSize);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateMemoryResourceNotification (MEMORY_RESOURCE_NOTIFICATION_TYPE NotificationType);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryMemoryResourceNotification (HANDLE ResourceNotificationHandle, PBOOL ResourceState);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetSystemFileCacheSize (PSIZE_T lpMinimumFileCacheSize, PSIZE_T lpMaximumFileCacheSize, PDWORD lpFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetSystemFileCacheSize (SIZE_T MinimumFileCacheSize, SIZE_T MaximumFileCacheSize, DWORD Flags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AllocateUserPhysicalPages(HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FreeUserPhysicalPages(HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MapUserPhysicalPages(PVOID VirtualAddress, ULONG_PTR NumberOfPages, PULONG_PTR PageArray);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AllocateUserPhysicalPagesNuma(HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray, DWORD nndPreferred);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateFileMappingNumaW (HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCWSTR lpName, DWORD nndPreferred);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) VirtualAllocExNuma(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect, DWORD nndPreferred);
  __attribute__((dllimport)) SIZE_T __attribute__((__stdcall__)) GetLargePageMinimum (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetProcessWorkingSetSizeEx (HANDLE hProcess, PSIZE_T lpMinimumWorkingSetSize, PSIZE_T lpMaximumWorkingSetSize, PDWORD Flags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetProcessWorkingSetSizeEx (HANDLE hProcess, SIZE_T dwMinimumWorkingSetSize, SIZE_T dwMaximumWorkingSetSize, DWORD Flags);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetWriteWatch (DWORD dwFlags, PVOID lpBaseAddress, SIZE_T dwRegionSize, PVOID *lpAddresses, ULONG_PTR *lpdwCount, LPDWORD lpdwGranularity);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) ResetWriteWatch (LPVOID lpBaseAddress, SIZE_T dwRegionSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) VirtualFreeEx (HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType);
#define _NAMEDPIPE_H_ 
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ImpersonateNamedPipeClient (HANDLE hNamedPipe);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreatePipe (PHANDLE hReadPipe, PHANDLE hWritePipe, LPSECURITY_ATTRIBUTES lpPipeAttributes, DWORD nSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ConnectNamedPipe (HANDLE hNamedPipe, LPOVERLAPPED lpOverlapped);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DisconnectNamedPipe (HANDLE hNamedPipe);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetNamedPipeHandleState (HANDLE hNamedPipe, LPDWORD lpMode, LPDWORD lpMaxCollectionCount, LPDWORD lpCollectDataTimeout);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PeekNamedPipe (HANDLE hNamedPipe, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesRead, LPDWORD lpTotalBytesAvail, LPDWORD lpBytesLeftThisMessage);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TransactNamedPipe (HANDLE hNamedPipe, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesRead, LPOVERLAPPED lpOverlapped);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateNamedPipeW (LPCWSTR lpName, DWORD dwOpenMode, DWORD dwPipeMode, DWORD nMaxInstances, DWORD nOutBufferSize, DWORD nInBufferSize, DWORD nDefaultTimeOut, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WaitNamedPipeW (LPCWSTR lpNamedPipeName, DWORD nTimeOut);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNamedPipeClientComputerNameW (HANDLE Pipe, LPWSTR ClientComputerName, ULONG ClientComputerNameLength);
#define _APISETNAMESPACE_ 
#define PRIVATE_NAMESPACE_FLAG_DESTROY 0x1
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreatePrivateNamespaceW (LPSECURITY_ATTRIBUTES lpPrivateNamespaceAttributes, LPVOID lpBoundaryDescriptor, LPCWSTR lpAliasPrefix);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenPrivateNamespaceW (LPVOID lpBoundaryDescriptor, LPCWSTR lpAliasPrefix);
  __attribute__((dllimport)) BOOLEAN __attribute__((__stdcall__)) ClosePrivateNamespace (HANDLE Handle, ULONG Flags);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateBoundaryDescriptorW (LPCWSTR Name, ULONG Flags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddSIDToBoundaryDescriptor (HANDLE *BoundaryDescriptor, PSID RequiredSid);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) DeleteBoundaryDescriptor (HANDLE BoundaryDescriptor);
#define _PROCESSENV_ 
  __attribute__((dllimport)) LPSTR __attribute__((__stdcall__)) GetCommandLineA (void);
  __attribute__((dllimport)) LPWSTR __attribute__((__stdcall__)) GetCommandLineW (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetCurrentDirectoryA (LPCSTR lpPathName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetCurrentDirectoryW (LPCWSTR lpPathName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetCurrentDirectoryA (DWORD nBufferLength, LPSTR lpBuffer);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetCurrentDirectoryW (DWORD nBufferLength, LPWSTR lpBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetEnvironmentStringsW (LPWCH NewEnvironment);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SearchPathW (LPCWSTR lpPath, LPCWSTR lpFileName, LPCWSTR lpExtension, DWORD nBufferLength, LPWSTR lpBuffer, LPWSTR *lpFilePart);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SearchPathA (LPCSTR lpPath, LPCSTR lpFileName, LPCSTR lpExtension, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) NeedCurrentDirectoryForExePathA (LPCSTR ExeName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) NeedCurrentDirectoryForExePathW (LPCWSTR ExeName);
#define GetCommandLine __MINGW_NAME_AW(GetCommandLine)
#define GetCurrentDirectory __MINGW_NAME_AW(GetCurrentDirectory)
#define NeedCurrentDirectoryForExePath __MINGW_NAME_AW(NeedCurrentDirectoryForExePath)
#define SearchPath __MINGW_NAME_AW(SearchPath)
#define SetCurrentDirectory __MINGW_NAME_AW(SetCurrentDirectory)
  __attribute__((dllimport)) LPCH __attribute__((__stdcall__)) GetEnvironmentStrings (void);
  __attribute__((dllimport)) LPWCH __attribute__((__stdcall__)) GetEnvironmentStringsW (void);
#define GetEnvironmentStringsA GetEnvironmentStrings
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) GetStdHandle (DWORD nStdHandle);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) ExpandEnvironmentStringsA (LPCSTR lpSrc, LPSTR lpDst, DWORD nSize);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) ExpandEnvironmentStringsW (LPCWSTR lpSrc, LPWSTR lpDst, DWORD nSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FreeEnvironmentStringsA (LPCH penv);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FreeEnvironmentStringsW (LPWCH penv);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetEnvironmentVariableA (LPCSTR lpName, LPSTR lpBuffer, DWORD nSize);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetEnvironmentVariableW (LPCWSTR lpName, LPWSTR lpBuffer, DWORD nSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetEnvironmentVariableA (LPCSTR lpName, LPCSTR lpValue);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetEnvironmentVariableW (LPCWSTR lpName, LPCWSTR lpValue);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetStdHandle (DWORD nStdHandle, HANDLE hHandle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetStdHandleEx (DWORD nStdHandle, HANDLE hHandle, PHANDLE phPrevValue);
#define ExpandEnvironmentStrings __MINGW_NAME_AW(ExpandEnvironmentStrings)
#define FreeEnvironmentStrings __MINGW_NAME_AW(FreeEnvironmentStrings)
#define GetEnvironmentVariable __MINGW_NAME_AW(GetEnvironmentVariable)
#define SetEnvironmentVariable __MINGW_NAME_AW(SetEnvironmentVariable)
#define _PROCESSTHREADSAPI_H_ 
#define TLS_OUT_OF_INDEXES ((DWORD)0xffffffff)
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenProcess (DWORD dwDesiredAccess, WINBOOL bInheritHandle, DWORD dwProcessId);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) QueueUserAPC (PAPCFUNC pfnAPC, HANDLE hThread, ULONG_PTR dwData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetProcessTimes (HANDLE hProcess, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime);
  __attribute__((dllimport)) __attribute__((noreturn)) void __attribute__((__stdcall__)) ExitProcess (UINT uExitCode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetExitCodeProcess (HANDLE hProcess, LPDWORD lpExitCode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SwitchToThread (void);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenThread (DWORD dwDesiredAccess, WINBOOL bInheritHandle, DWORD dwThreadId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetThreadPriorityBoost (HANDLE hThread, WINBOOL bDisablePriorityBoost);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetThreadPriorityBoost (HANDLE hThread, PBOOL pDisablePriorityBoost);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetThreadToken (PHANDLE Thread, HANDLE Token);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) OpenProcessToken (HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) OpenThreadToken (HANDLE ThreadHandle, DWORD DesiredAccess, WINBOOL OpenAsSelf, PHANDLE TokenHandle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetPriorityClass (HANDLE hProcess, DWORD dwPriorityClass);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetPriorityClass (HANDLE hProcess);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetProcessId (HANDLE Process);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetThreadId (HANDLE Thread);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetThreadContext (HANDLE hThread, LPCONTEXT lpContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FlushInstructionCache (HANDLE hProcess, LPCVOID lpBaseAddress, SIZE_T dwSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetThreadTimes (HANDLE hThread, LPFILETIME lpCreationTime, LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetCurrentProcessorNumber (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TerminateProcess (HANDLE hProcess, UINT uExitCode);
  typedef struct _STARTUPINFOA {
    DWORD cb;
    LPSTR lpReserved;
    LPSTR lpDesktop;
    LPSTR lpTitle;
    DWORD dwX;
    DWORD dwY;
    DWORD dwXSize;
    DWORD dwYSize;
    DWORD dwXCountChars;
    DWORD dwYCountChars;
    DWORD dwFillAttribute;
    DWORD dwFlags;
    WORD wShowWindow;
    WORD cbReserved2;
    LPBYTE lpReserved2;
    HANDLE hStdInput;
    HANDLE hStdOutput;
    HANDLE hStdError;
  } STARTUPINFOA, *LPSTARTUPINFOA;
  typedef struct _STARTUPINFOW {
    DWORD cb;
    LPWSTR lpReserved;
    LPWSTR lpDesktop;
    LPWSTR lpTitle;
    DWORD dwX;
    DWORD dwY;
    DWORD dwXSize;
    DWORD dwYSize;
    DWORD dwXCountChars;
    DWORD dwYCountChars;
    DWORD dwFillAttribute;
    DWORD dwFlags;
    WORD wShowWindow;
    WORD cbReserved2;
    LPBYTE lpReserved2;
    HANDLE hStdInput;
    HANDLE hStdOutput;
    HANDLE hStdError;
  } STARTUPINFOW, *LPSTARTUPINFOW;
  typedef STARTUPINFOA STARTUPINFO;
  typedef LPSTARTUPINFOA LPSTARTUPINFO;
  typedef struct _PROCESS_INFORMATION {
    HANDLE hProcess;
    HANDLE hThread;
    DWORD dwProcessId;
    DWORD dwThreadId;
  } PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;
  typedef enum _PROCESS_INFORMATION_CLASS {
    ProcessMemoryPriority,
    ProcessMemoryExhaustionInfo,
    ProcessAppMemoryInfo,
    ProcessInPrivateInfo,
    ProcessPowerThrottling,
    ProcessReservedValue1,
    ProcessTelemetryCoverageInfo,
    ProcessProtectionLevelInfo,
    ProcessLeapSecondInfo,
    ProcessMachineTypeInfo,
    ProcessInformationClassMax
  } PROCESS_INFORMATION_CLASS;
  typedef struct _APP_MEMORY_INFORMATION {
    ULONG64 AvailableCommit;
    ULONG64 PrivateCommitUsage;
    ULONG64 PeakPrivateCommitUsage;
    ULONG64 TotalCommitUsage;
  } APP_MEMORY_INFORMATION, *PAPP_MEMORY_INFORMATION;
  typedef enum _MACHINE_ATTRIBUTES {
    UserEnabled = 0x00000001,
    KernelEnabled = 0x00000002,
    Wow64Container = 0x00000004
  } MACHINE_ATTRIBUTES;
;
  typedef struct _PROCESS_MACHINE_INFORMATION {
    USHORT ProcessMachine;
    USHORT Res0;
    MACHINE_ATTRIBUTES MachineAttributes;
  } PROCESS_MACHINE_INFORMATION;
#define PME_CURRENT_VERSION 1
  typedef enum _PROCESS_MEMORY_EXHAUSTION_TYPE {
    PMETypeFailFastOnCommitFailure,
    PMETypeMax
  } PROCESS_MEMORY_EXHAUSTION_TYPE, *PPROCESS_MEMORY_EXHAUSTION_TYPE;
#define PME_FAILFAST_ON_COMMIT_FAIL_DISABLE 0x0
#define PME_FAILFAST_ON_COMMIT_FAIL_ENABLE 0x1
  typedef struct _PROCESS_MEMORY_EXHAUSTION_INFO {
    USHORT Version;
    USHORT Reserved;
    PROCESS_MEMORY_EXHAUSTION_TYPE Type;
    ULONG_PTR Value;
  } PROCESS_MEMORY_EXHAUSTION_INFO, *PPROCESS_MEMORY_EXHAUSTION_INFO;
#define PROCESS_POWER_THROTTLING_CURRENT_VERSION 1
#define PROCESS_POWER_THROTTLING_EXECUTION_SPEED 0x1
#define PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION 0x4
#define PROCESS_POWER_THROTTLING_VALID_FLAGS (PROCESS_POWER_THROTTLING_EXECUTION_SPEED | PROCESS_POWER_THROTTLING_IGNORE_TIMER_RESOLUTION)
  typedef struct _PROCESS_POWER_THROTTLING_STATE {
    ULONG Version;
    ULONG ControlMask;
    ULONG StateMask;
  } PROCESS_POWER_THROTTLING_STATE, *PPROCESS_POWER_THROTTLING_STATE;
  typedef struct PROCESS_PROTECTION_LEVEL_INFORMATION {
    DWORD ProtectionLevel;
  } PROCESS_PROTECTION_LEVEL_INFORMATION;
#define PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND 0x1
#define PROCESS_LEAP_SECOND_INFO_VALID_FLAGS PROCESS_LEAP_SECOND_INFO_FLAG_ENABLE_SIXTY_SECOND
  typedef struct _PROCESS_LEAP_SECOND_INFO {
    ULONG Flags;
    ULONG Reserved;
  } PROCESS_LEAP_SECOND_INFO, *PPROCESS_LEAP_SECOND_INFO;
  typedef struct _PROC_THREAD_ATTRIBUTE_LIST *PPROC_THREAD_ATTRIBUTE_LIST, *LPPROC_THREAD_ATTRIBUTE_LIST;
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateRemoteThread (HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TerminateThread (HANDLE hThread, DWORD dwExitCode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetProcessShutdownParameters (DWORD dwLevel, DWORD dwFlags);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetProcessVersion (DWORD ProcessId);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) GetStartupInfoW (LPSTARTUPINFOW lpStartupInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetThreadStackGuarantee (PULONG StackSizeInBytes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ProcessIdToSessionId (DWORD dwProcessId, DWORD *pSessionId);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateRemoteThreadEx (HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, LPDWORD lpThreadId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetThreadContext (HANDLE hThread, const CONTEXT *lpContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetProcessHandleCount (HANDLE hProcess, PDWORD pdwHandleCount);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateProcessAsUserW (HANDLE hToken, LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, WINBOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation);
#define PROCESS_AFFINITY_ENABLE_AUTO_UPDATE __MSABI_LONG(0x1U)
#define PROC_THREAD_ATTRIBUTE_REPLACE_VALUE 0x00000001
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetProcessIdOfThread (HANDLE Thread);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitializeProcThreadAttributeList (LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, DWORD dwAttributeCount, DWORD dwFlags, PSIZE_T lpSize);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) DeleteProcThreadAttributeList (LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetProcessAffinityUpdateMode (HANDLE hProcess, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryProcessAffinityUpdateMode (HANDLE hProcess, LPDWORD lpdwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UpdateProcThreadAttribute (LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList, DWORD dwFlags, DWORD_PTR Attribute, PVOID lpValue, SIZE_T cbSize, PVOID lpPreviousValue, PSIZE_T lpReturnSize);
#define MEMORY_PRIORITY_VERY_LOW 1
#define MEMORY_PRIORITY_LOW 2
#define MEMORY_PRIORITY_MEDIUM 3
#define MEMORY_PRIORITY_BELOW_NORMAL 4
#define MEMORY_PRIORITY_NORMAL 5
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateProcessA (LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, WINBOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateProcessW (LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, WINBOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation);
#define CreateProcess __MINGW_NAME_AW(CreateProcess)
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) GetCurrentProcess (void);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetCurrentProcessId (void);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) GetCurrentThread (void);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetCurrentThreadId (void);
  WINBOOL __attribute__((__stdcall__)) IsProcessorFeaturePresent (DWORD ProcessorFeature);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) FlushProcessWriteBuffers (void);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateThread (LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetThreadPriority (HANDLE hThread, int nPriority);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetThreadPriority (HANDLE hThread);
  __attribute__((dllimport)) __attribute__((noreturn)) void __attribute__((__stdcall__)) ExitThread (DWORD dwExitCode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetExitCodeThread (HANDLE hThread, LPDWORD lpExitCode);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SuspendThread (HANDLE hThread);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) ResumeThread (HANDLE hThread);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) TlsAlloc (void);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) TlsGetValue (DWORD dwTlsIndex);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TlsSetValue (DWORD dwTlsIndex, LPVOID lpTlsValue);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TlsFree (DWORD dwTlsIndex);
#define _PROCESSTOPOLOGYAPI_H_ 
#define _PROFILEAPI_H_ 
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryPerformanceCounter (LARGE_INTEGER *lpPerformanceCount);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryPerformanceFrequency (LARGE_INTEGER *lpFrequency);
#define _APISETREALTIME_ 
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryThreadCycleTime (HANDLE ThreadHandle, PULONG64 CycleTime);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryProcessCycleTime (HANDLE ProcessHandle, PULONG64 CycleTime);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryIdleProcessorCycleTime (PULONG BufferLength, PULONG64 ProcessorIdleCycleTime);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) QueryInterruptTimePrecise (PULONGLONG lpInterruptTimePrecise);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) QueryUnbiasedInterruptTimePrecise (PULONGLONG lpUnbiasedInterruptTimePrecise);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) QueryInterruptTime (PULONGLONG lpInterruptTime);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) QueryAuxiliaryCounterFrequency (PULONGLONG lpAuxiliaryCounterFrequency);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) ConvertAuxiliaryCounterToPerformanceCounter (ULONGLONG ullAuxiliaryCounterValue, PULONGLONG lpPerformanceCounterValue, PULONGLONG lpConversionError);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) ConvertPerformanceCounterToAuxiliaryCounter (ULONGLONG ullPerformanceCounterValue, PULONGLONG lpAuxiliaryCounterValue, PULONGLONG lpConversionError);
#define _APIAPPCONTAINER_ 
#define _APISECUREBASE_ 
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AccessCheck (PSECURITY_DESCRIPTOR pSecurityDescriptor, HANDLE ClientToken, DWORD DesiredAccess, PGENERIC_MAPPING GenericMapping, PPRIVILEGE_SET PrivilegeSet, LPDWORD PrivilegeSetLength, LPDWORD GrantedAccess, LPBOOL AccessStatus);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AccessCheckAndAuditAlarmW (LPCWSTR SubsystemName, LPVOID HandleId, LPWSTR ObjectTypeName, LPWSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, DWORD DesiredAccess, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPBOOL AccessStatus, LPBOOL pfGenerateOnClose);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AccessCheckByType (PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID PrincipalSelfSid, HANDLE ClientToken, DWORD DesiredAccess, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, PPRIVILEGE_SET PrivilegeSet, LPDWORD PrivilegeSetLength, LPDWORD GrantedAccess, LPBOOL AccessStatus);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AccessCheckByTypeResultList (PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID PrincipalSelfSid, HANDLE ClientToken, DWORD DesiredAccess, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, PPRIVILEGE_SET PrivilegeSet, LPDWORD PrivilegeSetLength, LPDWORD GrantedAccessList, LPDWORD AccessStatusList);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AccessCheckByTypeAndAuditAlarmW (LPCWSTR SubsystemName, LPVOID HandleId, LPCWSTR ObjectTypeName, LPCWSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPBOOL AccessStatus, LPBOOL pfGenerateOnClose);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AccessCheckByTypeResultListAndAuditAlarmW (LPCWSTR SubsystemName, LPVOID HandleId, LPCWSTR ObjectTypeName, LPCWSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccessList, LPDWORD AccessStatusList, LPBOOL pfGenerateOnClose);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AccessCheckByTypeResultListAndAuditAlarmByHandleW (LPCWSTR SubsystemName, LPVOID HandleId, HANDLE ClientToken, LPCWSTR ObjectTypeName, LPCWSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccessList, LPDWORD AccessStatusList, LPBOOL pfGenerateOnClose);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddAccessAllowedObjectAce (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, DWORD AccessMask, GUID *ObjectTypeGuid, GUID *InheritedObjectTypeGuid, PSID pSid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddAccessDeniedAce (PACL pAcl, DWORD dwAceRevision, DWORD AccessMask, PSID pSid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddAccessDeniedAceEx (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, DWORD AccessMask, PSID pSid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddAccessDeniedObjectAce (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, DWORD AccessMask, GUID *ObjectTypeGuid, GUID *InheritedObjectTypeGuid, PSID pSid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddAuditAccessAce (PACL pAcl, DWORD dwAceRevision, DWORD dwAccessMask, PSID pSid, WINBOOL bAuditSuccess, WINBOOL bAuditFailure);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddAuditAccessAceEx (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, DWORD dwAccessMask, PSID pSid, WINBOOL bAuditSuccess, WINBOOL bAuditFailure);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddAuditAccessObjectAce (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, DWORD AccessMask, GUID *ObjectTypeGuid, GUID *InheritedObjectTypeGuid, PSID pSid, WINBOOL bAuditSuccess, WINBOOL bAuditFailure);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AreAllAccessesGranted (DWORD GrantedAccess, DWORD DesiredAccess);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AreAnyAccessesGranted (DWORD GrantedAccess, DWORD DesiredAccess);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ConvertToAutoInheritPrivateObjectSecurity (PSECURITY_DESCRIPTOR ParentDescriptor, PSECURITY_DESCRIPTOR CurrentSecurityDescriptor, PSECURITY_DESCRIPTOR *NewSecurityDescriptor, GUID *ObjectType, BOOLEAN IsDirectoryObject, PGENERIC_MAPPING GenericMapping);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreatePrivateObjectSecurity (PSECURITY_DESCRIPTOR ParentDescriptor, PSECURITY_DESCRIPTOR CreatorDescriptor, PSECURITY_DESCRIPTOR *NewDescriptor, WINBOOL IsDirectoryObject, HANDLE Token, PGENERIC_MAPPING GenericMapping);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreatePrivateObjectSecurityEx (PSECURITY_DESCRIPTOR ParentDescriptor, PSECURITY_DESCRIPTOR CreatorDescriptor, PSECURITY_DESCRIPTOR *NewDescriptor, GUID *ObjectType, WINBOOL IsContainerObject, ULONG AutoInheritFlags, HANDLE Token, PGENERIC_MAPPING GenericMapping);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreatePrivateObjectSecurityWithMultipleInheritance (PSECURITY_DESCRIPTOR ParentDescriptor, PSECURITY_DESCRIPTOR CreatorDescriptor, PSECURITY_DESCRIPTOR *NewDescriptor, GUID **ObjectTypes, ULONG GuidCount, WINBOOL IsContainerObject, ULONG AutoInheritFlags, HANDLE Token, PGENERIC_MAPPING GenericMapping);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateRestrictedToken (HANDLE ExistingTokenHandle, DWORD Flags, DWORD DisableSidCount, PSID_AND_ATTRIBUTES SidsToDisable, DWORD DeletePrivilegeCount, PLUID_AND_ATTRIBUTES PrivilegesToDelete, DWORD RestrictedSidCount, PSID_AND_ATTRIBUTES SidsToRestrict, PHANDLE NewTokenHandle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DestroyPrivateObjectSecurity (PSECURITY_DESCRIPTOR *ObjectDescriptor);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EqualPrefixSid (PSID pSid1, PSID pSid2);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EqualSid (PSID pSid1, PSID pSid2);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindFirstFreeAce (PACL pAcl, LPVOID *pAce);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetFileSecurityW (LPCWSTR lpFileName, SECURITY_INFORMATION RequestedInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD nLength, LPDWORD lpnLengthNeeded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetPrivateObjectSecurity (PSECURITY_DESCRIPTOR ObjectDescriptor, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR ResultantDescriptor, DWORD DescriptorLength, PDWORD ReturnLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ImpersonateAnonymousToken (HANDLE ThreadHandle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ImpersonateLoggedOnUser (HANDLE hToken);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ImpersonateSelf (SECURITY_IMPERSONATION_LEVEL ImpersonationLevel);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsTokenRestricted (HANDLE TokenHandle);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) MapGenericMask (PDWORD AccessMask, PGENERIC_MAPPING GenericMapping);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ObjectCloseAuditAlarmW (LPCWSTR SubsystemName, LPVOID HandleId, WINBOOL GenerateOnClose);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ObjectDeleteAuditAlarmW (LPCWSTR SubsystemName, LPVOID HandleId, WINBOOL GenerateOnClose);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ObjectOpenAuditAlarmW (LPCWSTR SubsystemName, LPVOID HandleId, LPWSTR ObjectTypeName, LPWSTR ObjectName, PSECURITY_DESCRIPTOR pSecurityDescriptor, HANDLE ClientToken, DWORD DesiredAccess, DWORD GrantedAccess, PPRIVILEGE_SET Privileges, WINBOOL ObjectCreation, WINBOOL AccessGranted, LPBOOL GenerateOnClose);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ObjectPrivilegeAuditAlarmW (LPCWSTR SubsystemName, LPVOID HandleId, HANDLE ClientToken, DWORD DesiredAccess, PPRIVILEGE_SET Privileges, WINBOOL AccessGranted);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PrivilegeCheck (HANDLE ClientToken, PPRIVILEGE_SET RequiredPrivileges, LPBOOL pfResult);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PrivilegedServiceAuditAlarmW (LPCWSTR SubsystemName, LPCWSTR ServiceName, HANDLE ClientToken, PPRIVILEGE_SET Privileges, WINBOOL AccessGranted);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) QuerySecurityAccessMask (SECURITY_INFORMATION SecurityInformation, LPDWORD DesiredAccess);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RevertToSelf (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetAclInformation (PACL pAcl, LPVOID pAclInformation, DWORD nAclInformationLength, ACL_INFORMATION_CLASS dwAclInformationClass);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFileSecurityW (LPCWSTR lpFileName, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetPrivateObjectSecurity (SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR ModificationDescriptor, PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor, PGENERIC_MAPPING GenericMapping, HANDLE Token);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetPrivateObjectSecurityEx (SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR ModificationDescriptor, PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor, ULONG AutoInheritFlags, PGENERIC_MAPPING GenericMapping, HANDLE Token);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) SetSecurityAccessMask (SECURITY_INFORMATION SecurityInformation, LPDWORD DesiredAccess);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CheckTokenMembership (HANDLE TokenHandle, PSID SidToCheck, PBOOL IsMember);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddAce (PACL pAcl, DWORD dwAceRevision, DWORD dwStartingAceIndex, LPVOID pAceList, DWORD nAceListLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddAccessAllowedAce (PACL pAcl, DWORD dwAceRevision, DWORD AccessMask, PSID pSid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddAccessAllowedAceEx (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, DWORD AccessMask, PSID pSid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AdjustTokenGroups (HANDLE TokenHandle, WINBOOL ResetToDefault, PTOKEN_GROUPS NewState, DWORD BufferLength, PTOKEN_GROUPS PreviousState, PDWORD ReturnLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AdjustTokenPrivileges (HANDLE TokenHandle, WINBOOL DisableAllPrivileges, PTOKEN_PRIVILEGES NewState, DWORD BufferLength, PTOKEN_PRIVILEGES PreviousState, PDWORD ReturnLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AllocateAndInitializeSid (PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, PSID *pSid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AllocateLocallyUniqueId (PLUID Luid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CopySid (DWORD nDestinationSidLength, PSID pDestinationSid, PSID pSourceSid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateWellKnownSid (WELL_KNOWN_SID_TYPE WellKnownSidType, PSID DomainSid, PSID pSid, DWORD *cbSid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteAce (PACL pAcl, DWORD dwAceIndex);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DuplicateToken (HANDLE ExistingTokenHandle, SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, PHANDLE DuplicateTokenHandle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DuplicateTokenEx (HANDLE hExistingToken, DWORD dwDesiredAccess, LPSECURITY_ATTRIBUTES lpTokenAttributes, SECURITY_IMPERSONATION_LEVEL ImpersonationLevel, TOKEN_TYPE TokenType, PHANDLE phNewToken);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EqualDomainSid (PSID pSid1, PSID pSid2, WINBOOL *pfEqual);
  __attribute__((dllimport)) PVOID __attribute__((__stdcall__)) FreeSid (PSID pSid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetAce (PACL pAcl, DWORD dwAceIndex, LPVOID *pAce);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetAclInformation (PACL pAcl, LPVOID pAclInformation, DWORD nAclInformationLength, ACL_INFORMATION_CLASS dwAclInformationClass);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetKernelObjectSecurity (HANDLE Handle, SECURITY_INFORMATION RequestedInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD nLength, LPDWORD lpnLengthNeeded);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetLengthSid (PSID pSid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetSecurityDescriptorControl (PSECURITY_DESCRIPTOR pSecurityDescriptor, PSECURITY_DESCRIPTOR_CONTROL pControl, LPDWORD lpdwRevision);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetSecurityDescriptorDacl (PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL lpbDaclPresent, PACL *pDacl, LPBOOL lpbDaclDefaulted);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetSecurityDescriptorGroup (PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID *pGroup, LPBOOL lpbGroupDefaulted);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetSecurityDescriptorLength (PSECURITY_DESCRIPTOR pSecurityDescriptor);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetSecurityDescriptorOwner (PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID *pOwner, LPBOOL lpbOwnerDefaulted);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetSecurityDescriptorRMControl (PSECURITY_DESCRIPTOR SecurityDescriptor, PUCHAR RMControl);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetSecurityDescriptorSacl (PSECURITY_DESCRIPTOR pSecurityDescriptor, LPBOOL lpbSaclPresent, PACL *pSacl, LPBOOL lpbSaclDefaulted);
  __attribute__((dllimport)) PSID_IDENTIFIER_AUTHORITY __attribute__((__stdcall__)) GetSidIdentifierAuthority (PSID pSid);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetSidLengthRequired (UCHAR nSubAuthorityCount);
  __attribute__((dllimport)) PDWORD __attribute__((__stdcall__)) GetSidSubAuthority (PSID pSid, DWORD nSubAuthority);
  __attribute__((dllimport)) PUCHAR __attribute__((__stdcall__)) GetSidSubAuthorityCount (PSID pSid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetTokenInformation (HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetWindowsAccountDomainSid (PSID pSid, PSID pDomainSid, DWORD *cbDomainSid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitializeAcl (PACL pAcl, DWORD nAclLength, DWORD dwAclRevision);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitializeSecurityDescriptor (PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD dwRevision);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitializeSid (PSID Sid, PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsValidAcl (PACL pAcl);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsValidSecurityDescriptor (PSECURITY_DESCRIPTOR pSecurityDescriptor);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsValidSid (PSID pSid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsWellKnownSid (PSID pSid, WELL_KNOWN_SID_TYPE WellKnownSidType);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MakeAbsoluteSD (PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor, PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor, LPDWORD lpdwAbsoluteSecurityDescriptorSize, PACL pDacl, LPDWORD lpdwDaclSize, PACL pSacl, LPDWORD lpdwSaclSize, PSID pOwner, LPDWORD lpdwOwnerSize, PSID pPrimaryGroup, LPDWORD lpdwPrimaryGroupSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MakeSelfRelativeSD (PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor, PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor, LPDWORD lpdwBufferLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetKernelObjectSecurity (HANDLE Handle, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR SecurityDescriptor);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetSecurityDescriptorControl (PSECURITY_DESCRIPTOR pSecurityDescriptor, SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest, SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetSecurityDescriptorDacl (PSECURITY_DESCRIPTOR pSecurityDescriptor, WINBOOL bDaclPresent, PACL pDacl, WINBOOL bDaclDefaulted);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetSecurityDescriptorGroup (PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID pGroup, WINBOOL bGroupDefaulted);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetSecurityDescriptorOwner (PSECURITY_DESCRIPTOR pSecurityDescriptor, PSID pOwner, WINBOOL bOwnerDefaulted);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SetSecurityDescriptorRMControl (PSECURITY_DESCRIPTOR SecurityDescriptor, PUCHAR RMControl);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetSecurityDescriptorSacl (PSECURITY_DESCRIPTOR pSecurityDescriptor, WINBOOL bSaclPresent, PACL pSacl, WINBOOL bSaclDefaulted);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetTokenInformation (HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddMandatoryAce (PACL pAcl, DWORD dwAceRevision, DWORD AceFlags, DWORD MandatoryPolicy, PSID pLabelSid);
#define _SYNCHAPI_H_ 
#define SRWLOCK_INIT RTL_SRWLOCK_INIT
#define INIT_ONCE_STATIC_INIT RTL_RUN_ONCE_INIT
#define INIT_ONCE_CHECK_ONLY RTL_RUN_ONCE_CHECK_ONLY
#define INIT_ONCE_ASYNC RTL_RUN_ONCE_ASYNC
#define INIT_ONCE_INIT_FAILED RTL_RUN_ONCE_INIT_FAILED
#define INIT_ONCE_CTX_RESERVED_BITS RTL_RUN_ONCE_CTX_RESERVED_BITS
#define CONDITION_VARIABLE_INIT RTL_CONDITION_VARIABLE_INIT
#define CONDITION_VARIABLE_LOCKMODE_SHARED RTL_CONDITION_VARIABLE_LOCKMODE_SHARED
#define MUTEX_MODIFY_STATE MUTANT_QUERY_STATE
#define MUTEX_ALL_ACCESS MUTANT_ALL_ACCESS
  typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK;
  typedef RTL_RUN_ONCE INIT_ONCE;
  typedef PRTL_RUN_ONCE PINIT_ONCE;
  typedef PRTL_RUN_ONCE LPINIT_ONCE;
  typedef WINBOOL (__attribute__((__stdcall__)) *PINIT_ONCE_FN) (PINIT_ONCE InitOnce, PVOID Parameter, PVOID *Context);
  typedef RTL_CONDITION_VARIABLE CONDITION_VARIABLE, *PCONDITION_VARIABLE;
  __attribute__((dllimport)) void __attribute__((__stdcall__)) EnterCriticalSection (LPCRITICAL_SECTION lpCriticalSection);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) LeaveCriticalSection (LPCRITICAL_SECTION lpCriticalSection);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TryEnterCriticalSection (LPCRITICAL_SECTION lpCriticalSection);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) DeleteCriticalSection (LPCRITICAL_SECTION lpCriticalSection);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetEvent (HANDLE hEvent);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ResetEvent (HANDLE hEvent);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReleaseSemaphore (HANDLE hSemaphore, LONG lReleaseCount, LPLONG lpPreviousCount);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReleaseMutex (HANDLE hMutex);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) WaitForSingleObjectEx (HANDLE hHandle, DWORD dwMilliseconds, WINBOOL bAlertable);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) WaitForMultipleObjectsEx (DWORD nCount, const HANDLE *lpHandles, WINBOOL bWaitAll, DWORD dwMilliseconds, WINBOOL bAlertable);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenMutexW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenEventA (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenEventW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenSemaphoreW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpName);
  WINBOOL __attribute__((__stdcall__)) WaitOnAddress (volatile void *Address, PVOID CompareAddress, SIZE_T AddressSize, DWORD dwMilliseconds);
  void __attribute__((__stdcall__)) WakeByAddressSingle (PVOID Address);
  void __attribute__((__stdcall__)) WakeByAddressAll (PVOID Address);
#define CREATE_MUTEX_INITIAL_OWNER 0x1
#define CREATE_EVENT_MANUAL_RESET 0x1
#define CREATE_EVENT_INITIAL_SET 0x2
  __attribute__((dllimport)) void __attribute__((__stdcall__)) InitializeSRWLock (PSRWLOCK SRWLock);
  void __attribute__((__stdcall__)) ReleaseSRWLockExclusive (PSRWLOCK SRWLock);
  void __attribute__((__stdcall__)) ReleaseSRWLockShared (PSRWLOCK SRWLock);
  void __attribute__((__stdcall__)) AcquireSRWLockExclusive (PSRWLOCK SRWLock);
  void __attribute__((__stdcall__)) AcquireSRWLockShared (PSRWLOCK SRWLock);
  __attribute__((dllimport)) BOOLEAN __attribute__((__stdcall__)) TryAcquireSRWLockExclusive (PSRWLOCK SRWLock);
  __attribute__((dllimport)) BOOLEAN __attribute__((__stdcall__)) TryAcquireSRWLockShared (PSRWLOCK SRWLock);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitializeCriticalSectionEx (LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount, DWORD Flags);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) InitOnceInitialize (PINIT_ONCE InitOnce);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitOnceExecuteOnce (PINIT_ONCE InitOnce, PINIT_ONCE_FN InitFn, PVOID Parameter, LPVOID *Context);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitOnceBeginInitialize (LPINIT_ONCE lpInitOnce, DWORD dwFlags, PBOOL fPending, LPVOID *lpContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitOnceComplete (LPINIT_ONCE lpInitOnce, DWORD dwFlags, LPVOID lpContext);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) InitializeConditionVariable (PCONDITION_VARIABLE ConditionVariable);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) WakeConditionVariable (PCONDITION_VARIABLE ConditionVariable);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) WakeAllConditionVariable (PCONDITION_VARIABLE ConditionVariable);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SleepConditionVariableCS (PCONDITION_VARIABLE ConditionVariable, PCRITICAL_SECTION CriticalSection, DWORD dwMilliseconds);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SleepConditionVariableSRW (PCONDITION_VARIABLE ConditionVariable, PSRWLOCK SRWLock, DWORD dwMilliseconds, ULONG Flags);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateMutexExA (LPSECURITY_ATTRIBUTES lpMutexAttributes, LPCSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateMutexExW (LPSECURITY_ATTRIBUTES lpMutexAttributes, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateEventExA (LPSECURITY_ATTRIBUTES lpEventAttributes, LPCSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateEventExW (LPSECURITY_ATTRIBUTES lpEventAttributes, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateSemaphoreExW (LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
#define CreateMutexEx __MINGW_NAME_AW(CreateMutexEx)
#define CreateEventEx __MINGW_NAME_AW(CreateEventEx)
#define OpenEvent __MINGW_NAME_AW(OpenEvent)
  typedef void (__attribute__((__stdcall__)) *PTIMERAPCROUTINE) (LPVOID lpArgToCompletionRoutine, DWORD dwTimerLowValue, DWORD dwTimerHighValue);
  typedef RTL_BARRIER SYNCHRONIZATION_BARRIER;
  typedef PRTL_BARRIER PSYNCHRONIZATION_BARRIER;
  typedef PRTL_BARRIER LPSYNCHRONIZATION_BARRIER;
#define SYNCHRONIZATION_BARRIER_FLAGS_SPIN_ONLY 0x01
#define SYNCHRONIZATION_BARRIER_FLAGS_BLOCK_ONLY 0x02
#define SYNCHRONIZATION_BARRIER_FLAGS_NO_DELETE 0x04
  __attribute__((dllimport)) void __attribute__((__stdcall__)) InitializeCriticalSection (LPCRITICAL_SECTION lpCriticalSection);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitializeCriticalSectionAndSpinCount (LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SetCriticalSectionSpinCount (LPCRITICAL_SECTION lpCriticalSection, DWORD dwSpinCount);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) WaitForSingleObject (HANDLE hHandle, DWORD dwMilliseconds);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SleepEx (DWORD dwMilliseconds, WINBOOL bAlertable);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateMutexA (LPSECURITY_ATTRIBUTES lpMutexAttributes, WINBOOL bInitialOwner, LPCSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateMutexW (LPSECURITY_ATTRIBUTES lpMutexAttributes, WINBOOL bInitialOwner, LPCWSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateEventA (LPSECURITY_ATTRIBUTES lpEventAttributes, WINBOOL bManualReset, WINBOOL bInitialState, LPCSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateEventW (LPSECURITY_ATTRIBUTES lpEventAttributes, WINBOOL bManualReset, WINBOOL bInitialState, LPCWSTR lpName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetWaitableTimer (HANDLE hTimer, const LARGE_INTEGER *lpDueTime, LONG lPeriod, PTIMERAPCROUTINE pfnCompletionRoutine, LPVOID lpArgToCompletionRoutine, WINBOOL fResume);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CancelWaitableTimer (HANDLE hTimer);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenWaitableTimerW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpTimerName);
  WINBOOL __attribute__((__stdcall__)) EnterSynchronizationBarrier (LPSYNCHRONIZATION_BARRIER lpBarrier, DWORD dwFlags);
  WINBOOL __attribute__((__stdcall__)) InitializeSynchronizationBarrier (LPSYNCHRONIZATION_BARRIER lpBarrier, LONG lTotalThreads, LONG lSpinCount);
  WINBOOL __attribute__((__stdcall__)) DeleteSynchronizationBarrier (LPSYNCHRONIZATION_BARRIER lpBarrier);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) Sleep (DWORD dwMilliseconds);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SignalObjectAndWait (HANDLE hObjectToSignal, HANDLE hObjectToWaitOn, DWORD dwMilliseconds, WINBOOL bAlertable);
#define CREATE_WAITABLE_TIMER_MANUAL_RESET 0x1
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateWaitableTimerExW (LPSECURITY_ATTRIBUTES lpTimerAttributes, LPCWSTR lpTimerName, DWORD dwFlags, DWORD dwDesiredAccess);
#define CreateMutex __MINGW_NAME_AW(CreateMutex)
#define CreateEvent __MINGW_NAME_AW(CreateEvent)
#define _SYSINFOAPI_H_ 
  typedef struct _SYSTEM_INFO {
    __extension__ union {
      DWORD dwOemId;
      __extension__ struct {
 WORD wProcessorArchitecture;
 WORD wReserved;
      } ;
    } ;
    DWORD dwPageSize;
    LPVOID lpMinimumApplicationAddress;
    LPVOID lpMaximumApplicationAddress;
    DWORD_PTR dwActiveProcessorMask;
    DWORD dwNumberOfProcessors;
    DWORD dwProcessorType;
    DWORD dwAllocationGranularity;
    WORD wProcessorLevel;
    WORD wProcessorRevision;
  } SYSTEM_INFO, *LPSYSTEM_INFO;
  __attribute__((dllimport)) void __attribute__((__stdcall__)) GetSystemTime (LPSYSTEMTIME lpSystemTime);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) GetSystemTimeAsFileTime (LPFILETIME lpSystemTimeAsFileTime);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) GetLocalTime (LPSYSTEMTIME lpSystemTime);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) GetNativeSystemInfo (LPSYSTEM_INFO lpSystemInfo);
  __attribute__((dllimport)) ULONGLONG __attribute__((__stdcall__)) GetTickCount64 (void);
  typedef struct _MEMORYSTATUSEX {
    DWORD dwLength;
    DWORD dwMemoryLoad;
    DWORDLONG ullTotalPhys;
    DWORDLONG ullAvailPhys;
    DWORDLONG ullTotalPageFile;
    DWORDLONG ullAvailPageFile;
    DWORDLONG ullTotalVirtual;
    DWORDLONG ullAvailVirtual;
    DWORDLONG ullAvailExtendedVirtual;
  } MEMORYSTATUSEX,*LPMEMORYSTATUSEX;
  __attribute__((dllimport)) void __attribute__((__stdcall__)) GetSystemInfo (LPSYSTEM_INFO lpSystemInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GlobalMemoryStatusEx (LPMEMORYSTATUSEX lpBuffer);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetTickCount (void);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) GetSystemTimePreciseAsFileTime (LPFILETIME lpSystemTimeAsFileTime);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetVersionExA (LPOSVERSIONINFOA lpVersionInformation);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetVersionExW (LPOSVERSIONINFOW lpVersionInformation);
  typedef enum _COMPUTER_NAME_FORMAT {
    ComputerNameNetBIOS,
    ComputerNameDnsHostname,
    ComputerNameDnsDomain,
    ComputerNameDnsFullyQualified,
    ComputerNamePhysicalNetBIOS,
    ComputerNamePhysicalDnsHostname,
    ComputerNamePhysicalDnsDomain,
    ComputerNamePhysicalDnsFullyQualified,
    ComputerNameMax
  } COMPUTER_NAME_FORMAT;
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetVersion (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetLocalTime (const SYSTEMTIME *lpSystemTime);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetSystemTimeAdjustment (PDWORD lpTimeAdjustment, PDWORD lpTimeIncrement, PBOOL lpTimeAdjustmentDisabled);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetWindowsDirectoryA (LPSTR lpBuffer, UINT uSize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetWindowsDirectoryW (LPWSTR lpBuffer, UINT uSize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetSystemWindowsDirectoryA (LPSTR lpBuffer, UINT uSize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetSystemWindowsDirectoryW (LPWSTR lpBuffer, UINT uSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetComputerNameExA (COMPUTER_NAME_FORMAT NameType, LPSTR lpBuffer, LPDWORD nSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetComputerNameExW (COMPUTER_NAME_FORMAT NameType, LPWSTR lpBuffer, LPDWORD nSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetComputerNameExW (COMPUTER_NAME_FORMAT NameType, LPCWSTR lpBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetSystemTime (const SYSTEMTIME *lpSystemTime);
  __attribute__((dllimport)) ULONGLONG __attribute__((__stdcall__)) VerSetConditionMask (ULONGLONG ConditionMask, ULONG TypeMask, UCHAR Condition);
#define GetSystemDirectory __MINGW_NAME_AW(GetSystemDirectory)
#define GetWindowsDirectory __MINGW_NAME_AW(GetWindowsDirectory)
#define GetSystemWindowsDirectory __MINGW_NAME_AW(GetSystemWindowsDirectory)
#define GetComputerNameEx __MINGW_NAME_AW(GetComputerNameEx)
#define GetVersionEx __MINGW_NAME_AW(GetVersionEx)
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetSystemDirectoryA (LPSTR lpBuffer, UINT uSize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetSystemDirectoryW (LPWSTR lpBuffer, UINT uSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetLogicalProcessorInformation (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION Buffer, PDWORD ReturnedLength);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) EnumSystemFirmwareTables (DWORD FirmwareTableProviderSignature, PVOID pFirmwareTableEnumBuffer, DWORD BufferSize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetSystemFirmwareTable (DWORD FirmwareTableProviderSignature, DWORD FirmwareTableID, PVOID pFirmwareTableBuffer, DWORD BufferSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetProductInfo (DWORD dwOSMajorVersion, DWORD dwOSMinorVersion, DWORD dwSpMajorVersion, DWORD dwSpMinorVersion, PDWORD pdwReturnedProductType);
#define _SYSTEMTOPOLOGY_H_ 
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNumaHighestNodeNumber (PULONG HighestNodeNumber);
#define _THREADPOOLAPISET_H_ 
  typedef void (__attribute__((__stdcall__)) *PTP_WIN32_IO_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PVOID Overlapped, ULONG IoResult, ULONG_PTR NumberOfBytesTransferred, PTP_IO Io);
  __attribute__((dllimport)) PTP_POOL __attribute__((__stdcall__)) CreateThreadpool (PVOID reserved);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) SetThreadpoolThreadMaximum (PTP_POOL ptpp, DWORD cthrdMost);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetThreadpoolThreadMinimum (PTP_POOL ptpp, DWORD cthrdMic);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetThreadpoolStackInformation (PTP_POOL ptpp, PTP_POOL_STACK_INFORMATION ptpsi);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryThreadpoolStackInformation (PTP_POOL ptpp, PTP_POOL_STACK_INFORMATION ptpsi);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CloseThreadpool (PTP_POOL ptpp);
  __attribute__((dllimport)) PTP_CLEANUP_GROUP __attribute__((__stdcall__)) CreateThreadpoolCleanupGroup (void);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CloseThreadpoolCleanupGroupMembers (PTP_CLEANUP_GROUP ptpcg, WINBOOL fCancelPendingCallbacks, PVOID pvCleanupContext);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CloseThreadpoolCleanupGroup (PTP_CLEANUP_GROUP ptpcg);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) SetEventWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, HANDLE evt);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) ReleaseSemaphoreWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, HANDLE sem, DWORD crel);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) ReleaseMutexWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, HANDLE mut);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) LeaveCriticalSectionWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, PCRITICAL_SECTION pcs);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) FreeLibraryWhenCallbackReturns (PTP_CALLBACK_INSTANCE pci, HMODULE mod);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CallbackMayRunLong (PTP_CALLBACK_INSTANCE pci);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) DisassociateCurrentThreadFromCallback (PTP_CALLBACK_INSTANCE pci);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TrySubmitThreadpoolCallback (PTP_SIMPLE_CALLBACK pfns, PVOID pv, PTP_CALLBACK_ENVIRON pcbe);
  __attribute__((dllimport)) PTP_WORK __attribute__((__stdcall__)) CreateThreadpoolWork (PTP_WORK_CALLBACK pfnwk, PVOID pv, PTP_CALLBACK_ENVIRON pcbe);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) SubmitThreadpoolWork (PTP_WORK pwk);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) WaitForThreadpoolWorkCallbacks (PTP_WORK pwk, WINBOOL fCancelPendingCallbacks);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CloseThreadpoolWork (PTP_WORK pwk);
  __attribute__((dllimport)) PTP_TIMER __attribute__((__stdcall__)) CreateThreadpoolTimer (PTP_TIMER_CALLBACK pfnti, PVOID pv, PTP_CALLBACK_ENVIRON pcbe);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) SetThreadpoolTimer (PTP_TIMER pti, PFILETIME pftDueTime, DWORD msPeriod, DWORD msWindowLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsThreadpoolTimerSet (PTP_TIMER pti);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) WaitForThreadpoolTimerCallbacks (PTP_TIMER pti, WINBOOL fCancelPendingCallbacks);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CloseThreadpoolTimer (PTP_TIMER pti);
  __attribute__((dllimport)) PTP_WAIT __attribute__((__stdcall__)) CreateThreadpoolWait (PTP_WAIT_CALLBACK pfnwa, PVOID pv, PTP_CALLBACK_ENVIRON pcbe);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) SetThreadpoolWait (PTP_WAIT pwa, HANDLE h, PFILETIME pftTimeout);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) WaitForThreadpoolWaitCallbacks (PTP_WAIT pwa, WINBOOL fCancelPendingCallbacks);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CloseThreadpoolWait (PTP_WAIT pwa);
  __attribute__((dllimport)) PTP_IO __attribute__((__stdcall__)) CreateThreadpoolIo (HANDLE fl, PTP_WIN32_IO_CALLBACK pfnio, PVOID pv, PTP_CALLBACK_ENVIRON pcbe);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) StartThreadpoolIo (PTP_IO pio);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CancelThreadpoolIo (PTP_IO pio);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) WaitForThreadpoolIoCallbacks (PTP_IO pio, WINBOOL fCancelPendingCallbacks);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CloseThreadpoolIo (PTP_IO pio);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetThreadpoolTimerEx (PTP_TIMER pti, PFILETIME pftDueTime, DWORD msPeriod, DWORD msWindowLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetThreadpoolWaitEx (PTP_WAIT pwa, HANDLE h, PFILETIME pftTimeout, PVOID Reserved);
#define _THREADPOOLLEGACYAPISET_H_ 
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateTimerQueueTimer (PHANDLE phNewTimer, HANDLE TimerQueue, WAITORTIMERCALLBACK Callback, PVOID Parameter, DWORD DueTime, DWORD Period, ULONG Flags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteTimerQueueTimer (HANDLE TimerQueue, HANDLE Timer, HANDLE CompletionEvent);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueueUserWorkItem (LPTHREAD_START_ROUTINE Function, PVOID Context, ULONG Flags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnregisterWaitEx (HANDLE WaitHandle, HANDLE CompletionEvent);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateTimerQueue (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ChangeTimerQueueTimer (HANDLE TimerQueue, HANDLE Timer, ULONG DueTime, ULONG Period);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteTimerQueueEx (HANDLE TimerQueue, HANDLE CompletionEvent);
#define _APISETUTIL_ 
  __attribute__((dllimport)) PVOID __attribute__((__stdcall__)) EncodePointer (PVOID Ptr);
  __attribute__((dllimport)) PVOID __attribute__((__stdcall__)) DecodePointer (PVOID Ptr);
  __attribute__((dllimport)) PVOID __attribute__((__stdcall__)) EncodeSystemPointer (PVOID Ptr);
  __attribute__((dllimport)) PVOID __attribute__((__stdcall__)) DecodeSystemPointer (PVOID Ptr);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Beep (DWORD dwFreq, DWORD dwDuration);
#define _WOW64APISET_H_ 
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Wow64DisableWow64FsRedirection (PVOID *OldValue);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Wow64RevertWow64FsRedirection (PVOID OlValue);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetSystemWow64DirectoryA (LPSTR lpBuffer, UINT uSize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetSystemWow64DirectoryW (LPWSTR lpBuffer, UINT uSize);
#define GetSystemWow64Directory __MINGW_NAME_AW(GetSystemWow64Directory)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Wow64GetThreadContext (HANDLE hThread, PWOW64_CONTEXT lpContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Wow64SetThreadContext (HANDLE hThread, const WOW64_CONTEXT *lpContext);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) Wow64SuspendThread (HANDLE hThread);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsWow64Process (HANDLE hProcess, PBOOL Wow64Process);
#define __INTRINSIC_GROUP_WINBASE 
       
#define __INTRINSIC_PROLOG(name) (!defined(__INTRINSIC_DEFINED_ ## name)) && ((!defined (__INTRINSIC_ONLYSPECIAL)) || (defined (__INTRINSIC_ONLYSPECIAL) && defined(__INTRINSIC_SPECIAL_ ## name)))
#define __INTRINSICS_USEINLINE __MINGW_INTRIN_INLINE
#undef __INTRINSIC_GROUP_WINBASE
#define __INTRINSIC_ONLYSPECIAL 
#define __INTRINSIC_SPECIAL__InterlockedIncrement 
#define __INTRINSIC_SPECIAL__InterlockedDecrement 
#define __INTRINSIC_SPECIAL__InterlockedAdd 
#define __INTRINSIC_SPECIAL__InterlockedExchange 
#define __INTRINSIC_SPECIAL__InterlockedExchangeAdd 
#define __INTRINSIC_SPECIAL__InterlockedCompareExchange 
#define __INTRINSIC_SPECIAL__InterlockedCompareExchangePointer 
#define __INTRINSIC_SPECIAL__InterlockedExchangePointer 
#define __INTRINSIC_SPECIAL__InterlockedAnd64 
#define __INTRINSIC_SPECIAL__InterlockedOr64 
#define __INTRINSIC_SPECIAL__InterlockedXor64 
#define __INTRINSIC_SPECIAL__InterlockedIncrement64 
#define __INTRINSIC_SPECIAL__InterlockedDecrement64 
#define __INTRINSIC_SPECIAL__InterlockedAdd64 
#define __INTRINSIC_SPECIAL__InterlockedExchange64 
#define __INTRINSIC_SPECIAL__InterlockedExchangeAdd64 
#define __INTRINSIC_SPECIAL__InterlockedCompareExchange64 
#undef _lrotl
#undef _lrotr
#undef __INTRINSIC_ONLYSPECIAL
#undef __INTRINSIC_PROLOG
#undef __INTRINSIC_EPILOG
#undef __INTRINSICS_USEINLINE
#undef __FLAGCONSTRAINT
#undef __FLAGSET
#undef __FLAGCLOBBER1
#undef __FLAGCLOBBER2
       
#undef __has_builtin
#define GetCurrentTime() GetTickCount ()
#define DefineHandleTable(w) ( { (VOID)(w); TRUE; } )
#define LimitEmsPages(dw) 
#define SetSwapAreaSize(w) (w)
#define LockSegment(w) GlobalFix((HANDLE)(w))
#define UnlockSegment(w) GlobalUnfix((HANDLE)(w))
#define Yield() 
#define FILE_BEGIN 0
#define FILE_CURRENT 1
#define FILE_END 2
#define WAIT_FAILED ((DWORD)0xffffffff)
#define WAIT_OBJECT_0 ((STATUS_WAIT_0) + 0)
#define WAIT_ABANDONED ((STATUS_ABANDONED_WAIT_0) + 0)
#define WAIT_ABANDONED_0 ((STATUS_ABANDONED_WAIT_0) + 0)
#define WAIT_IO_COMPLETION STATUS_USER_APC
#define SecureZeroMemory RtlSecureZeroMemory
#define CaptureStackBackTrace RtlCaptureStackBackTrace
#define FILE_FLAG_WRITE_THROUGH 0x80000000
#define FILE_FLAG_OVERLAPPED 0x40000000
#define FILE_FLAG_NO_BUFFERING 0x20000000
#define FILE_FLAG_RANDOM_ACCESS 0x10000000
#define FILE_FLAG_SEQUENTIAL_SCAN 0x8000000
#define FILE_FLAG_DELETE_ON_CLOSE 0x4000000
#define FILE_FLAG_BACKUP_SEMANTICS 0x2000000
#define FILE_FLAG_POSIX_SEMANTICS 0x1000000
#define FILE_FLAG_SESSION_AWARE 0x800000
#define FILE_FLAG_OPEN_REPARSE_POINT 0x200000
#define FILE_FLAG_OPEN_NO_RECALL 0x100000
#define FILE_FLAG_FIRST_PIPE_INSTANCE 0x80000
#define PROGRESS_CONTINUE 0
#define PROGRESS_CANCEL 1
#define PROGRESS_STOP 2
#define PROGRESS_QUIET 3
#define CALLBACK_CHUNK_FINISHED 0x0
#define CALLBACK_STREAM_SWITCH 0x1
#define COPY_FILE_FAIL_IF_EXISTS 0x1
#define COPY_FILE_RESTARTABLE 0x2
#define COPY_FILE_OPEN_SOURCE_FOR_WRITE 0x4
#define COPY_FILE_ALLOW_DECRYPTED_DESTINATION 0x8
#define COPY_FILE_COPY_SYMLINK 0x800
#define COPY_FILE_NO_BUFFERING 0x1000
#define REPLACEFILE_WRITE_THROUGH 0x1
#define REPLACEFILE_IGNORE_MERGE_ERRORS 0x2
#define REPLACEFILE_IGNORE_ACL_ERRORS 0x4
#define PIPE_ACCESS_INBOUND 0x1
#define PIPE_ACCESS_OUTBOUND 0x2
#define PIPE_ACCESS_DUPLEX 0x3
#define PIPE_CLIENT_END 0x0
#define PIPE_SERVER_END 0x1
#define PIPE_WAIT 0x0
#define PIPE_NOWAIT 0x1
#define PIPE_READMODE_BYTE 0x0
#define PIPE_READMODE_MESSAGE 0x2
#define PIPE_TYPE_BYTE 0x0
#define PIPE_TYPE_MESSAGE 0x4
#define PIPE_ACCEPT_REMOTE_CLIENTS 0x0
#define PIPE_REJECT_REMOTE_CLIENTS 0x8
#define PIPE_UNLIMITED_INSTANCES 255
#define SECURITY_ANONYMOUS (SecurityAnonymous << 16)
#define SECURITY_IDENTIFICATION (SecurityIdentification << 16)
#define SECURITY_IMPERSONATION (SecurityImpersonation << 16)
#define SECURITY_DELEGATION (SecurityDelegation << 16)
#define SECURITY_CONTEXT_TRACKING 0x40000
#define SECURITY_EFFECTIVE_ONLY 0x80000
#define SECURITY_SQOS_PRESENT 0x100000
#define SECURITY_VALID_SQOS_FLAGS 0x1f0000
#define FAIL_FAST_GENERATE_EXCEPTION_ADDRESS 0x1
#define FAIL_FAST_NO_HARD_ERROR_DLG 0x2
  typedef void (__attribute__((__stdcall__)) *PFIBER_START_ROUTINE) (LPVOID lpFiberParameter);
  typedef PFIBER_START_ROUTINE LPFIBER_START_ROUTINE;
  typedef LPVOID (__attribute__((__stdcall__)) *PFIBER_CALLOUT_ROUTINE) (LPVOID lpParameter);
  typedef PLDT_ENTRY LPLDT_ENTRY;
#define SP_SERIALCOMM ((DWORD)0x1)
#define PST_UNSPECIFIED ((DWORD)0x0)
#define PST_RS232 ((DWORD)0x1)
#define PST_PARALLELPORT ((DWORD)0x2)
#define PST_RS422 ((DWORD)0x3)
#define PST_RS423 ((DWORD)0x4)
#define PST_RS449 ((DWORD)0x5)
#define PST_MODEM ((DWORD)0x6)
#define PST_FAX ((DWORD)0x21)
#define PST_SCANNER ((DWORD)0x22)
#define PST_NETWORK_BRIDGE ((DWORD)0x100)
#define PST_LAT ((DWORD)0x101)
#define PST_TCPIP_TELNET ((DWORD)0x102)
#define PST_X25 ((DWORD)0x103)
#define PCF_DTRDSR ((DWORD)0x1)
#define PCF_RTSCTS ((DWORD)0x2)
#define PCF_RLSD ((DWORD)0x4)
#define PCF_PARITY_CHECK ((DWORD)0x8)
#define PCF_XONXOFF ((DWORD)0x10)
#define PCF_SETXCHAR ((DWORD)0x20)
#define PCF_TOTALTIMEOUTS ((DWORD)0x40)
#define PCF_INTTIMEOUTS ((DWORD)0x80)
#define PCF_SPECIALCHARS ((DWORD)0x100)
#define PCF_16BITMODE ((DWORD)0x200)
#define SP_PARITY ((DWORD)0x1)
#define SP_BAUD ((DWORD)0x2)
#define SP_DATABITS ((DWORD)0x4)
#define SP_STOPBITS ((DWORD)0x8)
#define SP_HANDSHAKING ((DWORD)0x10)
#define SP_PARITY_CHECK ((DWORD)0x20)
#define SP_RLSD ((DWORD)0x40)
#define BAUD_075 ((DWORD)0x1)
#define BAUD_110 ((DWORD)0x2)
#define BAUD_134_5 ((DWORD)0x4)
#define BAUD_150 ((DWORD)0x8)
#define BAUD_300 ((DWORD)0x10)
#define BAUD_600 ((DWORD)0x20)
#define BAUD_1200 ((DWORD)0x40)
#define BAUD_1800 ((DWORD)0x80)
#define BAUD_2400 ((DWORD)0x100)
#define BAUD_4800 ((DWORD)0x200)
#define BAUD_7200 ((DWORD)0x400)
#define BAUD_9600 ((DWORD)0x800)
#define BAUD_14400 ((DWORD)0x1000)
#define BAUD_19200 ((DWORD)0x2000)
#define BAUD_38400 ((DWORD)0x4000)
#define BAUD_56K ((DWORD)0x8000)
#define BAUD_128K ((DWORD)0x10000)
#define BAUD_115200 ((DWORD)0x20000)
#define BAUD_57600 ((DWORD)0x40000)
#define BAUD_USER ((DWORD)0x10000000)
#define DATABITS_5 ((WORD)0x1)
#define DATABITS_6 ((WORD)0x2)
#define DATABITS_7 ((WORD)0x4)
#define DATABITS_8 ((WORD)0x8)
#define DATABITS_16 ((WORD)0x10)
#define DATABITS_16X ((WORD)0x20)
#define STOPBITS_10 ((WORD)0x1)
#define STOPBITS_15 ((WORD)0x2)
#define STOPBITS_20 ((WORD)0x4)
#define PARITY_NONE ((WORD)0x100)
#define PARITY_ODD ((WORD)0x200)
#define PARITY_EVEN ((WORD)0x400)
#define PARITY_MARK ((WORD)0x800)
#define PARITY_SPACE ((WORD)0x1000)
  typedef struct _COMMPROP {
    WORD wPacketLength;
    WORD wPacketVersion;
    DWORD dwServiceMask;
    DWORD dwReserved1;
    DWORD dwMaxTxQueue;
    DWORD dwMaxRxQueue;
    DWORD dwMaxBaud;
    DWORD dwProvSubType;
    DWORD dwProvCapabilities;
    DWORD dwSettableParams;
    DWORD dwSettableBaud;
    WORD wSettableData;
    WORD wSettableStopParity;
    DWORD dwCurrentTxQueue;
    DWORD dwCurrentRxQueue;
    DWORD dwProvSpec1;
    DWORD dwProvSpec2;
    WCHAR wcProvChar[1];
  } COMMPROP,*LPCOMMPROP;
#define COMMPROP_INITIALIZED ((DWORD)0xe73cf52e)
  typedef struct _COMSTAT {
    DWORD fCtsHold : 1;
    DWORD fDsrHold : 1;
    DWORD fRlsdHold : 1;
    DWORD fXoffHold : 1;
    DWORD fXoffSent : 1;
    DWORD fEof : 1;
    DWORD fTxim : 1;
    DWORD fReserved : 25;
    DWORD cbInQue;
    DWORD cbOutQue;
  } COMSTAT,*LPCOMSTAT;
#define DTR_CONTROL_DISABLE 0x0
#define DTR_CONTROL_ENABLE 0x1
#define DTR_CONTROL_HANDSHAKE 0x2
#define RTS_CONTROL_DISABLE 0x0
#define RTS_CONTROL_ENABLE 0x1
#define RTS_CONTROL_HANDSHAKE 0x2
#define RTS_CONTROL_TOGGLE 0x3
  typedef struct _DCB {
    DWORD DCBlength;
    DWORD BaudRate;
    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;
    WORD wReserved;
    WORD XonLim;
    WORD XoffLim;
    BYTE ByteSize;
    BYTE Parity;
    BYTE StopBits;
    char XonChar;
    char XoffChar;
    char ErrorChar;
    char EofChar;
    char EvtChar;
    WORD wReserved1;
  } DCB,*LPDCB;
  typedef struct _COMMTIMEOUTS {
    DWORD ReadIntervalTimeout;
    DWORD ReadTotalTimeoutMultiplier;
    DWORD ReadTotalTimeoutConstant;
    DWORD WriteTotalTimeoutMultiplier;
    DWORD WriteTotalTimeoutConstant;
  } COMMTIMEOUTS,*LPCOMMTIMEOUTS;
  typedef struct _COMMCONFIG {
    DWORD dwSize;
    WORD wVersion;
    WORD wReserved;
    DCB dcb;
    DWORD dwProviderSubType;
    DWORD dwProviderOffset;
    DWORD dwProviderSize;
    WCHAR wcProviderData[1];
  } COMMCONFIG,*LPCOMMCONFIG;
#define FreeModule(hLibModule) FreeLibrary((hLibModule))
#define MakeProcInstance(lpProc,hInstance) (lpProc)
#define FreeProcInstance(lpProc) (lpProc)
#define GMEM_FIXED 0x0
#define GMEM_MOVEABLE 0x2
#define GMEM_NOCOMPACT 0x10
#define GMEM_NODISCARD 0x20
#define GMEM_ZEROINIT 0x40
#define GMEM_MODIFY 0x80
#define GMEM_DISCARDABLE 0x100
#define GMEM_NOT_BANKED 0x1000
#define GMEM_SHARE 0x2000
#define GMEM_DDESHARE 0x2000
#define GMEM_NOTIFY 0x4000
#define GMEM_LOWER GMEM_NOT_BANKED
#define GMEM_VALID_FLAGS 0x7f72
#define GMEM_INVALID_HANDLE 0x8000
#define GHND (GMEM_MOVEABLE | GMEM_ZEROINIT)
#define GPTR (GMEM_FIXED | GMEM_ZEROINIT)
#define GlobalLRUNewest(h) ((HANDLE)(h))
#define GlobalLRUOldest(h) ((HANDLE)(h))
#define GlobalDiscard(h) GlobalReAlloc ((h), 0, GMEM_MOVEABLE)
#define GMEM_DISCARDED 0x4000
#define GMEM_LOCKCOUNT 0x00ff
  typedef struct _MEMORYSTATUS {
    DWORD dwLength;
    DWORD dwMemoryLoad;
    SIZE_T dwTotalPhys;
    SIZE_T dwAvailPhys;
    SIZE_T dwTotalPageFile;
    SIZE_T dwAvailPageFile;
    SIZE_T dwTotalVirtual;
    SIZE_T dwAvailVirtual;
  } MEMORYSTATUS,*LPMEMORYSTATUS;
#define NUMA_NO_PREFERRED_NODE ((DWORD) -1)
#define DEBUG_PROCESS 0x1
#define DEBUG_ONLY_THIS_PROCESS 0x2
#define CREATE_SUSPENDED 0x4
#define DETACHED_PROCESS 0x8
#define CREATE_NEW_CONSOLE 0x10
#define NORMAL_PRIORITY_CLASS 0x20
#define IDLE_PRIORITY_CLASS 0x40
#define HIGH_PRIORITY_CLASS 0x80
#define REALTIME_PRIORITY_CLASS 0x100
#define CREATE_NEW_PROCESS_GROUP 0x200
#define CREATE_UNICODE_ENVIRONMENT 0x400
#define CREATE_SEPARATE_WOW_VDM 0x800
#define CREATE_SHARED_WOW_VDM 0x1000
#define CREATE_FORCEDOS 0x2000
#define BELOW_NORMAL_PRIORITY_CLASS 0x4000
#define ABOVE_NORMAL_PRIORITY_CLASS 0x8000
#define INHERIT_PARENT_AFFINITY 0x10000
#define INHERIT_CALLER_PRIORITY 0x20000
#define CREATE_PROTECTED_PROCESS 0x40000
#define EXTENDED_STARTUPINFO_PRESENT 0x80000
#define PROCESS_MODE_BACKGROUND_BEGIN 0x100000
#define PROCESS_MODE_BACKGROUND_END 0x200000
#define CREATE_SECURE_PROCESS 0x400000
#define CREATE_BREAKAWAY_FROM_JOB 0x1000000
#define CREATE_PRESERVE_CODE_AUTHZ_LEVEL 0x2000000
#define CREATE_DEFAULT_ERROR_MODE 0x4000000
#define CREATE_NO_WINDOW 0x8000000
#define PROFILE_USER 0x10000000
#define PROFILE_KERNEL 0x20000000
#define PROFILE_SERVER 0x40000000
#define CREATE_IGNORE_SYSTEM_DEFAULT 0x80000000
#define STACK_SIZE_PARAM_IS_A_RESERVATION 0x10000
#define THREAD_PRIORITY_LOWEST THREAD_BASE_PRIORITY_MIN
#define THREAD_PRIORITY_BELOW_NORMAL (THREAD_PRIORITY_LOWEST+1)
#define THREAD_PRIORITY_NORMAL 0
#define THREAD_PRIORITY_HIGHEST THREAD_BASE_PRIORITY_MAX
#define THREAD_PRIORITY_ABOVE_NORMAL (THREAD_PRIORITY_HIGHEST-1)
#define THREAD_PRIORITY_ERROR_RETURN (MAXLONG)
#define THREAD_PRIORITY_TIME_CRITICAL THREAD_BASE_PRIORITY_LOWRT
#define THREAD_PRIORITY_IDLE THREAD_BASE_PRIORITY_IDLE
#define THREAD_MODE_BACKGROUND_BEGIN 0x00010000
#define THREAD_MODE_BACKGROUND_END 0x00020000
#define VOLUME_NAME_DOS 0x0
#define VOLUME_NAME_GUID 0x1
#define VOLUME_NAME_NT 0x2
#define VOLUME_NAME_NONE 0x4
#define FILE_NAME_NORMALIZED 0x0
#define FILE_NAME_OPENED 0x8
  typedef struct _JIT_DEBUG_INFO {
    DWORD dwSize;
    DWORD dwProcessorArchitecture;
    DWORD dwThreadID;
    DWORD dwReserved0;
    ULONG64 lpExceptionAddress;
    ULONG64 lpExceptionRecord;
    ULONG64 lpContextRecord;
  } JIT_DEBUG_INFO,*LPJIT_DEBUG_INFO;
  typedef JIT_DEBUG_INFO JIT_DEBUG_INFO32, *LPJIT_DEBUG_INFO32;
  typedef JIT_DEBUG_INFO JIT_DEBUG_INFO64, *LPJIT_DEBUG_INFO64;
  typedef PEXCEPTION_RECORD LPEXCEPTION_RECORD;
  typedef PEXCEPTION_POINTERS LPEXCEPTION_POINTERS;
#define DRIVE_UNKNOWN 0
#define DRIVE_NO_ROOT_DIR 1
#define DRIVE_REMOVABLE 2
#define DRIVE_FIXED 3
#define DRIVE_REMOTE 4
#define DRIVE_CDROM 5
#define DRIVE_RAMDISK 6
#define GetFreeSpace(w) (__MSABI_LONG(0x100000))
#define FILE_TYPE_UNKNOWN 0x0
#define FILE_TYPE_DISK 0x1
#define FILE_TYPE_CHAR 0x2
#define FILE_TYPE_PIPE 0x3
#define FILE_TYPE_REMOTE 0x8000
#define STD_INPUT_HANDLE ((DWORD)-10)
#define STD_OUTPUT_HANDLE ((DWORD)-11)
#define STD_ERROR_HANDLE ((DWORD)-12)
#define NOPARITY 0
#define ODDPARITY 1
#define EVENPARITY 2
#define MARKPARITY 3
#define SPACEPARITY 4
#define ONESTOPBIT 0
#define ONE5STOPBITS 1
#define TWOSTOPBITS 2
#define IGNORE 0
#define INFINITE 0xffffffff
#define CBR_110 110
#define CBR_300 300
#define CBR_600 600
#define CBR_1200 1200
#define CBR_2400 2400
#define CBR_4800 4800
#define CBR_9600 9600
#define CBR_14400 14400
#define CBR_19200 19200
#define CBR_38400 38400
#define CBR_56000 56000
#define CBR_57600 57600
#define CBR_115200 115200
#define CBR_128000 128000
#define CBR_256000 256000
#define CE_RXOVER 0x1
#define CE_OVERRUN 0x2
#define CE_RXPARITY 0x4
#define CE_FRAME 0x8
#define CE_BREAK 0x10
#define CE_TXFULL 0x100
#define CE_PTO 0x200
#define CE_IOE 0x400
#define CE_DNS 0x800
#define CE_OOP 0x1000
#define CE_MODE 0x8000
#define IE_BADID (-1)
#define IE_OPEN (-2)
#define IE_NOPEN (-3)
#define IE_MEMORY (-4)
#define IE_DEFAULT (-5)
#define IE_HARDWARE (-10)
#define IE_BYTESIZE (-11)
#define IE_BAUDRATE (-12)
#define EV_RXCHAR 0x1
#define EV_RXFLAG 0x2
#define EV_TXEMPTY 0x4
#define EV_CTS 0x8
#define EV_DSR 0x10
#define EV_RLSD 0x20
#define EV_BREAK 0x40
#define EV_ERR 0x80
#define EV_RING 0x100
#define EV_PERR 0x200
#define EV_RX80FULL 0x400
#define EV_EVENT1 0x800
#define EV_EVENT2 0x1000
#define SETXOFF 1
#define SETXON 2
#define SETRTS 3
#define CLRRTS 4
#define SETDTR 5
#define CLRDTR 6
#define RESETDEV 7
#define SETBREAK 8
#define CLRBREAK 9
#define PURGE_TXABORT 0x1
#define PURGE_RXABORT 0x2
#define PURGE_TXCLEAR 0x4
#define PURGE_RXCLEAR 0x8
#define LPTx 0x80
#define MS_CTS_ON ((DWORD)0x10)
#define MS_DSR_ON ((DWORD)0x20)
#define MS_RING_ON ((DWORD)0x40)
#define MS_RLSD_ON ((DWORD)0x80)
#define S_QUEUEEMPTY 0
#define S_THRESHOLD 1
#define S_ALLTHRESHOLD 2
#define S_NORMAL 0
#define S_LEGATO 1
#define S_STACCATO 2
#define S_PERIOD512 0
#define S_PERIOD1024 1
#define S_PERIOD2048 2
#define S_PERIODVOICE 3
#define S_WHITE512 4
#define S_WHITE1024 5
#define S_WHITE2048 6
#define S_WHITEVOICE 7
#define S_SERDVNA (-1)
#define S_SEROFM (-2)
#define S_SERMACT (-3)
#define S_SERQFUL (-4)
#define S_SERBDNT (-5)
#define S_SERDLN (-6)
#define S_SERDCC (-7)
#define S_SERDTP (-8)
#define S_SERDVL (-9)
#define S_SERDMD (-10)
#define S_SERDSH (-11)
#define S_SERDPT (-12)
#define S_SERDFQ (-13)
#define S_SERDDR (-14)
#define S_SERDSR (-15)
#define S_SERDST (-16)
#define NMPWAIT_WAIT_FOREVER 0xffffffff
#define NMPWAIT_NOWAIT 0x1
#define NMPWAIT_USE_DEFAULT_WAIT 0x0
#define FS_CASE_IS_PRESERVED FILE_CASE_PRESERVED_NAMES
#define FS_CASE_SENSITIVE FILE_CASE_SENSITIVE_SEARCH
#define FS_UNICODE_STORED_ON_DISK FILE_UNICODE_ON_DISK
#define FS_PERSISTENT_ACLS FILE_PERSISTENT_ACLS
#define FS_VOL_IS_COMPRESSED FILE_VOLUME_IS_COMPRESSED
#define FS_FILE_COMPRESSION FILE_FILE_COMPRESSION
#define FS_FILE_ENCRYPTION FILE_SUPPORTS_ENCRYPTION
#define OF_READ 0x0
#define OF_WRITE 0x1
#define OF_READWRITE 0x2
#define OF_SHARE_COMPAT 0x0
#define OF_SHARE_EXCLUSIVE 0x10
#define OF_SHARE_DENY_WRITE 0x20
#define OF_SHARE_DENY_READ 0x30
#define OF_SHARE_DENY_NONE 0x40
#define OF_PARSE 0x100
#define OF_DELETE 0x200
#define OF_VERIFY 0x400
#define OF_CANCEL 0x800
#define OF_CREATE 0x1000
#define OF_PROMPT 0x2000
#define OF_EXIST 0x4000
#define OF_REOPEN 0x8000
#define OFS_MAXPATHNAME 128
  typedef struct _OFSTRUCT {
    BYTE cBytes;
    BYTE fFixedDisk;
    WORD nErrCode;
    WORD Reserved1;
    WORD Reserved2;
    CHAR szPathName[128];
  } OFSTRUCT, *LPOFSTRUCT,*POFSTRUCT;
       
  extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) LONGLONG _InterlockedAnd64 (LONGLONG volatile *Destination, LONGLONG Value) {
    LONGLONG Old;
    do {
      Old = *Destination;
    } while (_InterlockedCompareExchange64 (Destination, Old &Value, Old) != Old);
    return Old;
  }
  extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) LONGLONG _InterlockedOr64 (LONGLONG volatile *Destination, LONGLONG Value) {
    LONGLONG Old;
    do {
      Old = *Destination;
    } while (_InterlockedCompareExchange64 (Destination, Old | Value, Old) != Old);
    return Old;
  }
  extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) LONGLONG _InterlockedXor64 (LONGLONG volatile *Destination, LONGLONG Value) {
    LONGLONG Old;
    do {
      Old = *Destination;
    } while (_InterlockedCompareExchange64 (Destination, Old ^ Value, Old) != Old);
    return Old;
  }
  extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) LONGLONG _InterlockedIncrement64 (LONGLONG volatile *Addend) {
    LONGLONG Old;
    do {
      Old = *Addend;
    } while (_InterlockedCompareExchange64 (Addend, Old + 1, Old) != Old);
    return Old + 1;
  }
  extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) LONGLONG _InterlockedDecrement64 (LONGLONG volatile *Addend) {
    LONGLONG Old;
    do {
      Old = *Addend;
    } while (_InterlockedCompareExchange64 (Addend, Old - 1, Old) != Old);
    return Old - 1;
  }
  extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) LONGLONG _InterlockedExchange64 (LONGLONG volatile *Target, LONGLONG Value) {
    LONGLONG Old;
    do {
      Old = *Target;
    } while (_InterlockedCompareExchange64 (Target, Value, Old) != Old);
    return Old;
  }
  extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) LONGLONG _InterlockedExchangeAdd64 (LONGLONG volatile *Addend, LONGLONG Value) {
    LONGLONG Old;
    do {
      Old = *Addend;
    } while (_InterlockedCompareExchange64 (Addend, Old + Value, Old) != Old);
    return Old;
  }
       
#undef __has_builtin
#define InterlockedCompareExchangePointer(Destination,ExChange,Comperand) (PVOID) (LONG_PTR)InterlockedCompareExchange ((LONG volatile *) (Destination),(LONG) (LONG_PTR) (ExChange),(LONG) (LONG_PTR) (Comperand))
#define InterlockedIncrementAcquire InterlockedIncrement
#define InterlockedIncrementRelease InterlockedIncrement
#define InterlockedDecrementAcquire InterlockedDecrement
#define InterlockedDecrementRelease InterlockedDecrement
#define InterlockedIncrementAcquire InterlockedIncrement
#define InterlockedIncrementRelease InterlockedIncrement
#define InterlockedCompareExchangeAcquire InterlockedCompareExchange
#define InterlockedCompareExchangeRelease InterlockedCompareExchange
#define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64
#define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64
#define InterlockedCompareExchangePointerAcquire InterlockedCompareExchangePointer
#define InterlockedCompareExchangePointerRelease InterlockedCompareExchangePointer
#define UnlockResource(hResData) ( { (VOID)(hResData); 0; } )
#define MAXINTATOM 0xc000
#define MAKEINTATOM(i) (LPTSTR) ((ULONG_PTR)((WORD)(i)))
#define INVALID_ATOM ((ATOM)0)
  __attribute__((dllimport)) HLOCAL __attribute__((__stdcall__)) LocalAlloc (UINT uFlags, SIZE_T uBytes);
  __attribute__((dllimport)) HLOCAL __attribute__((__stdcall__)) LocalFree (HLOCAL hMem);
  int __attribute__((__stdcall__)) WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd);
  int __attribute__((__stdcall__)) wWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GlobalFlags (HGLOBAL hMem);
  __attribute__((dllimport)) HGLOBAL __attribute__((__stdcall__)) GlobalHandle (LPCVOID pMem);
  __attribute__((dllimport)) SIZE_T __attribute__((__stdcall__)) GlobalCompact (DWORD dwMinFree);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) GlobalFix (HGLOBAL hMem);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) GlobalUnfix (HGLOBAL hMem);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) GlobalWire (HGLOBAL hMem);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GlobalUnWire (HGLOBAL hMem);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) GlobalMemoryStatus (LPMEMORYSTATUS lpBuffer);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) LocalLock (HLOCAL hMem);
  __attribute__((dllimport)) HLOCAL __attribute__((__stdcall__)) LocalHandle (LPCVOID pMem);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LocalUnlock (HLOCAL hMem);
  __attribute__((dllimport)) SIZE_T __attribute__((__stdcall__)) LocalSize (HLOCAL hMem);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) LocalFlags (HLOCAL hMem);
  __attribute__((dllimport)) SIZE_T __attribute__((__stdcall__)) LocalShrink (HLOCAL hMem, UINT cbNewSize);
  __attribute__((dllimport)) SIZE_T __attribute__((__stdcall__)) LocalCompact (UINT uMinFree);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) VirtualAllocExNuma (HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect, DWORD nndPreferred);
#define SCS_32BIT_BINARY 0
#define SCS_DOS_BINARY 1
#define SCS_WOW_BINARY 2
#define SCS_PIF_BINARY 3
#define SCS_POSIX_BINARY 4
#define SCS_OS216_BINARY 5
#define SCS_64BIT_BINARY 6
#define SCS_THIS_PLATFORM_BINARY SCS_32BIT_BINARY
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetBinaryTypeA (LPCSTR lpApplicationName, LPDWORD lpBinaryType);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetBinaryTypeW (LPCWSTR lpApplicationName, LPDWORD lpBinaryType);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetShortPathNameA (LPCSTR lpszLongPath, LPSTR lpszShortPath, DWORD cchBuffer);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetLongPathNameTransactedA (LPCSTR lpszShortPath, LPSTR lpszLongPath, DWORD cchBuffer, HANDLE hTransaction);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetLongPathNameTransactedW (LPCWSTR lpszShortPath, LPWSTR lpszLongPath, DWORD cchBuffer, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetProcessIoCounters (HANDLE hProcess, PIO_COUNTERS lpIoCounters);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetProcessWorkingSetSize (HANDLE hProcess, PSIZE_T lpMinimumWorkingSetSize, PSIZE_T lpMaximumWorkingSetSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetProcessWorkingSetSize (HANDLE hProcess, SIZE_T dwMinimumWorkingSetSize, SIZE_T dwMaximumWorkingSetSize);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) FatalExit (int ExitCode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetEnvironmentStringsA (LPCH NewEnvironment);
#define SetEnvironmentStrings SetEnvironmentStringsA
#define GetShortPathName GetShortPathNameA
#define GetBinaryType __MINGW_NAME_AW(GetBinaryType)
#define GetLongPathNameTransacted __MINGW_NAME_AW(GetLongPathNameTransacted)
  __attribute__((dllimport)) HGLOBAL __attribute__((__stdcall__)) GlobalAlloc (UINT uFlags, SIZE_T dwBytes);
  __attribute__((dllimport)) HGLOBAL __attribute__((__stdcall__)) GlobalReAlloc (HGLOBAL hMem, SIZE_T dwBytes, UINT uFlags);
  __attribute__((dllimport)) SIZE_T __attribute__((__stdcall__)) GlobalSize (HGLOBAL hMem);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) GlobalLock (HGLOBAL hMem);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GlobalUnlock (HGLOBAL hMem);
  __attribute__((dllimport)) HGLOBAL __attribute__((__stdcall__)) GlobalFree (HGLOBAL hMem);
  __attribute__((dllimport)) HLOCAL __attribute__((__stdcall__)) LocalReAlloc (HLOCAL hMem, SIZE_T uBytes, UINT uFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetProcessAffinityMask (HANDLE hProcess, PDWORD_PTR lpProcessAffinityMask, PDWORD_PTR lpSystemAffinityMask);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetProcessAffinityMask (HANDLE hProcess, DWORD_PTR dwProcessAffinityMask);
  __attribute__((dllimport)) DWORD_PTR __attribute__((__stdcall__)) SetThreadAffinityMask (HANDLE hThread, DWORD_PTR dwThreadAffinityMask);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) RaiseFailFastException (PEXCEPTION_RECORD pExceptionRecord, PCONTEXT pContextRecord, DWORD dwFlags);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SetThreadIdealProcessor (HANDLE hThread, DWORD dwIdealProcessor);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) CreateFiberEx (SIZE_T dwStackCommitSize, SIZE_T dwStackReserveSize, DWORD dwFlags, LPFIBER_START_ROUTINE lpStartAddress, LPVOID lpParameter);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) DeleteFiber (LPVOID lpFiber);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) SwitchToFiber (LPVOID lpFiber);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ConvertFiberToThread (void);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) ConvertThreadToFiberEx (LPVOID lpParameter, DWORD dwFlags);
  typedef enum _THREAD_INFORMATION_CLASS {
    ThreadMemoryPriority,
    ThreadAbsoluteCpuPriority,
    ThreadDynamicCodePolicy,
    ThreadPowerThrottling,
    ThreadInformationClassMax
  } THREAD_INFORMATION_CLASS;
#define FIBER_FLAG_FLOAT_SWITCH 0x1
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) CreateFiber (SIZE_T dwStackSize, LPFIBER_START_ROUTINE lpStartAddress, LPVOID lpParameter);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) ConvertThreadToFiber (LPVOID lpParameter);
#define PROCESS_DEP_ENABLE 0x00000001
#define PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION 0x00000002
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetProcessDEPPolicy (DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetProcessDEPPolicy (HANDLE hProcess, LPDWORD lpFlags, PBOOL lpPermanent);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RequestWakeupLatency (LATENCY_TIME latency);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsSystemResumeAutomatic (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetThreadIOPendingFlag (HANDLE hThread, PBOOL lpIOIsPending);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetThreadSelectorEntry (HANDLE hThread, DWORD dwSelector, LPLDT_ENTRY lpSelectorEntry);
  __attribute__((dllimport)) EXECUTION_STATE __attribute__((__stdcall__)) SetThreadExecutionState (EXECUTION_STATE esFlags);
#define FILE_SKIP_COMPLETION_PORT_ON_SUCCESS 0x1
#define FILE_SKIP_SET_EVENT_ON_HANDLE 0x2
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFileCompletionNotificationModes (HANDLE FileHandle, UCHAR Flags);
#define HasOverlappedIoCompleted(lpOverlapped) (((DWORD) (lpOverlapped)->Internal) != STATUS_PENDING)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFileIoOverlappedRange (HANDLE FileHandle, PUCHAR OverlappedRangeStart, ULONG Length);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Wow64GetThreadContext (HANDLE hThread, PWOW64_CONTEXT lpContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Wow64SetThreadContext (HANDLE hThread, const WOW64_CONTEXT *lpContext);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) Wow64SuspendThread (HANDLE hThread);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DebugSetProcessKillOnExit (WINBOOL KillOnExit);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DebugBreakProcess (HANDLE Process);
#define CRITICAL_SECTION_NO_DEBUG_INFO RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) WaitForMultipleObjects (DWORD nCount, const HANDLE *lpHandles, WINBOOL bWaitAll, DWORD dwMilliseconds);
  typedef enum _DEP_SYSTEM_POLICY_TYPE {
    DEPPolicyAlwaysOff = 0,
    DEPPolicyAlwaysOn,
    DEPPolicyOptIn,
    DEPPolicyOptOut,
    DEPTotalPolicyCount
  } DEP_SYSTEM_POLICY_TYPE;
#define HANDLE_FLAG_INHERIT 0x1
#define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x2
#define HINSTANCE_ERROR 32
#define GET_TAPE_MEDIA_INFORMATION 0
#define GET_TAPE_DRIVE_INFORMATION 1
#define SET_TAPE_MEDIA_INFORMATION 0
#define SET_TAPE_DRIVE_INFORMATION 1
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PulseEvent (HANDLE hEvent);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) GlobalDeleteAtom (ATOM nAtom);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitAtomTable (DWORD nSize);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) DeleteAtom (ATOM nAtom);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) SetHandleCount (UINT uNumber);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RequestDeviceWakeup (HANDLE hDevice);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CancelDeviceWakeupRequest (HANDLE hDevice);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetDevicePowerState (HANDLE hDevice, WINBOOL *pfOn);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetMessageWaitingIndicator (HANDLE hMsgIndicator, ULONG ulMsgCount);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFileShortNameA (HANDLE hFile, LPCSTR lpShortName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFileShortNameW (HANDLE hFile, LPCWSTR lpShortName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) LoadModule (LPCSTR lpModuleName, LPVOID lpParameterBlock);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) WinExec (LPCSTR lpCmdLine, UINT uCmdShow);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SetTapePosition (HANDLE hDevice, DWORD dwPositionMethod, DWORD dwPartition, DWORD dwOffsetLow, DWORD dwOffsetHigh, WINBOOL bImmediate);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetTapePosition (HANDLE hDevice, DWORD dwPositionType, LPDWORD lpdwPartition, LPDWORD lpdwOffsetLow, LPDWORD lpdwOffsetHigh);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) PrepareTape (HANDLE hDevice, DWORD dwOperation, WINBOOL bImmediate);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) EraseTape (HANDLE hDevice, DWORD dwEraseType, WINBOOL bImmediate);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CreateTapePartition (HANDLE hDevice, DWORD dwPartitionMethod, DWORD dwCount, DWORD dwSize);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) WriteTapemark (HANDLE hDevice, DWORD dwTapemarkType, DWORD dwTapemarkCount, WINBOOL bImmediate);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetTapeStatus (HANDLE hDevice);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetTapeParameters (HANDLE hDevice, DWORD dwOperation, LPDWORD lpdwSize, LPVOID lpTapeInformation);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SetTapeParameters (HANDLE hDevice, DWORD dwOperation, LPVOID lpTapeInformation);
  __attribute__((dllimport)) DEP_SYSTEM_POLICY_TYPE __attribute__((__stdcall__)) GetSystemDEPPolicy (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetSystemRegistryQuota (PDWORD pdwQuotaAllowed, PDWORD pdwQuotaUsed);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FileTimeToDosDateTime (const FILETIME *lpFileTime, LPWORD lpFatDate, LPWORD lpFatTime);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DosDateTimeToFileTime (WORD wFatDate, WORD wFatTime, LPFILETIME lpFileTime);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetSystemTimeAdjustment (DWORD dwTimeAdjustment, WINBOOL bTimeAdjustmentDisabled);
#define SetFileShortName __MINGW_NAME_AW(SetFileShortName)
#define SEM_FAILCRITICALERRORS 0x0001
#define SEM_NOGPFAULTERRORBOX 0x0002
#define SEM_NOALIGNMENTFAULTEXCEPT 0x0004
#define SEM_NOOPENFILEERRORBOX 0x8000
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetThreadErrorMode (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetThreadErrorMode (DWORD dwNewMode, LPDWORD lpOldMode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ClearCommBreak (HANDLE hFile);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ClearCommError (HANDLE hFile, LPDWORD lpErrors, LPCOMSTAT lpStat);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetupComm (HANDLE hFile, DWORD dwInQueue, DWORD dwOutQueue);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EscapeCommFunction (HANDLE hFile, DWORD dwFunc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCommConfig (HANDLE hCommDev, LPCOMMCONFIG lpCC, LPDWORD lpdwSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCommMask (HANDLE hFile, LPDWORD lpEvtMask);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCommProperties (HANDLE hFile, LPCOMMPROP lpCommProp);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCommModemStatus (HANDLE hFile, LPDWORD lpModemStat);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCommState (HANDLE hFile, LPDCB lpDCB);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCommTimeouts (HANDLE hFile, LPCOMMTIMEOUTS lpCommTimeouts);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PurgeComm (HANDLE hFile, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetCommBreak (HANDLE hFile);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetCommConfig (HANDLE hCommDev, LPCOMMCONFIG lpCC, DWORD dwSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetCommMask (HANDLE hFile, DWORD dwEvtMask);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetCommState (HANDLE hFile, LPDCB lpDCB);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetCommTimeouts (HANDLE hFile, LPCOMMTIMEOUTS lpCommTimeouts);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TransmitCommChar (HANDLE hFile, char cChar);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WaitCommEvent (HANDLE hFile, LPDWORD lpEvtMask, LPOVERLAPPED lpOverlapped);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetProcessPriorityBoost (HANDLE hProcess, PBOOL pDisablePriorityBoost);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetProcessPriorityBoost (HANDLE hProcess, WINBOOL bDisablePriorityBoost);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) MulDiv (int nNumber, int nNumerator, int nDenominator);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) FormatMessageA (DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer, DWORD nSize, va_list *Arguments);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) FormatMessageW (DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, va_list *Arguments);
#define FormatMessage __MINGW_NAME_AW(FormatMessage)
#define FORMAT_MESSAGE_IGNORE_INSERTS 0x00000200
#define FORMAT_MESSAGE_FROM_STRING 0x00000400
#define FORMAT_MESSAGE_FROM_HMODULE 0x00000800
#define FORMAT_MESSAGE_FROM_SYSTEM 0x00001000
#define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x00002000
#define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000ff
  typedef DWORD (__attribute__((__stdcall__)) *PFE_EXPORT_FUNC) (PBYTE pbData, PVOID pvCallbackContext, ULONG ulLength);
  typedef DWORD (__attribute__((__stdcall__)) *PFE_IMPORT_FUNC) (PBYTE pbData, PVOID pvCallbackContext, PULONG ulLength);
#define FILE_ENCRYPTABLE 0
#define FILE_IS_ENCRYPTED 1
#define FILE_SYSTEM_ATTR 2
#define FILE_ROOT_DIR 3
#define FILE_SYSTEM_DIR 4
#define FILE_UNKNOWN 5
#define FILE_SYSTEM_NOT_SUPPORT 6
#define FILE_USER_DISALLOWED 7
#define FILE_READ_ONLY 8
#define FILE_DIR_DISALLOWED 9
#define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100
#define EFS_USE_RECOVERY_KEYS (0x1)
#define CREATE_FOR_IMPORT (1)
#define CREATE_FOR_DIR (2)
#define OVERWRITE_HIDDEN (4)
#define EFSRPC_SECURE_ONLY (8)
#define EFS_DROP_ALTERNATE_STREAMS (0x10)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNamedPipeInfo (HANDLE hNamedPipe, LPDWORD lpFlags, LPDWORD lpOutBufferSize, LPDWORD lpInBufferSize, LPDWORD lpMaxInstances);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateMailslotA (LPCSTR lpName, DWORD nMaxMessageSize, DWORD lReadTimeout, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateMailslotW (LPCWSTR lpName, DWORD nMaxMessageSize, DWORD lReadTimeout, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetMailslotInfo (HANDLE hMailslot, LPDWORD lpMaxMessageSize, LPDWORD lpNextSize, LPDWORD lpMessageCount, LPDWORD lpReadTimeout);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetMailslotInfo (HANDLE hMailslot, DWORD lReadTimeout);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EncryptFileA (LPCSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EncryptFileW (LPCWSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DecryptFileA (LPCSTR lpFileName, DWORD dwReserved);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DecryptFileW (LPCWSTR lpFileName, DWORD dwReserved);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FileEncryptionStatusA (LPCSTR lpFileName, LPDWORD lpStatus);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FileEncryptionStatusW (LPCWSTR lpFileName, LPDWORD lpStatus);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) OpenEncryptedFileRawA (LPCSTR lpFileName, ULONG ulFlags, PVOID *pvContext);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) OpenEncryptedFileRawW (LPCWSTR lpFileName, ULONG ulFlags, PVOID *pvContext);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) ReadEncryptedFileRaw (PFE_EXPORT_FUNC pfExportCallback, PVOID pvCallbackContext, PVOID pvContext);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) WriteEncryptedFileRaw (PFE_IMPORT_FUNC pfImportCallback, PVOID pvCallbackContext, PVOID pvContext);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CloseEncryptedFileRaw (PVOID pvContext);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) lstrcmpA (LPCSTR lpString1, LPCSTR lpString2);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) lstrcmpW (LPCWSTR lpString1, LPCWSTR lpString2);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) lstrcmpiA (LPCSTR lpString1, LPCSTR lpString2);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) lstrcmpiW (LPCWSTR lpString1, LPCWSTR lpString2);
  __attribute__((dllimport)) LPSTR __attribute__((__stdcall__)) lstrcpynA (LPSTR lpString1, LPCSTR lpString2, int iMaxLength);
  __attribute__((dllimport)) LPWSTR __attribute__((__stdcall__)) lstrcpynW (LPWSTR lpString1, LPCWSTR lpString2, int iMaxLength);
  __attribute__((dllimport)) LPSTR __attribute__((__stdcall__)) lstrcpyA (LPSTR lpString1, LPCSTR lpString2);
  __attribute__((dllimport)) LPWSTR __attribute__((__stdcall__)) lstrcpyW (LPWSTR lpString1, LPCWSTR lpString2);
  __attribute__((dllimport)) LPSTR __attribute__((__stdcall__)) lstrcatA (LPSTR lpString1, LPCSTR lpString2);
  __attribute__((dllimport)) LPWSTR __attribute__((__stdcall__)) lstrcatW (LPWSTR lpString1, LPCWSTR lpString2);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) lstrlenA (LPCSTR lpString);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) lstrlenW (LPCWSTR lpString);
  __attribute__((dllimport)) HFILE __attribute__((__stdcall__)) OpenFile (LPCSTR lpFileName, LPOFSTRUCT lpReOpenBuff, UINT uStyle);
  __attribute__((dllimport)) HFILE __attribute__((__stdcall__)) _lopen (LPCSTR lpPathName, int iReadWrite);
  __attribute__((dllimport)) HFILE __attribute__((__stdcall__)) _lcreat (LPCSTR lpPathName, int iAttribute);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) _lread (HFILE hFile, LPVOID lpBuffer, UINT uBytes);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) _lwrite (HFILE hFile, LPCCH lpBuffer, UINT uBytes);
  __attribute__((dllimport)) long __attribute__((__stdcall__)) _hread (HFILE hFile, LPVOID lpBuffer, long lBytes);
  __attribute__((dllimport)) long __attribute__((__stdcall__)) _hwrite (HFILE hFile, LPCCH lpBuffer, long lBytes);
  __attribute__((dllimport)) HFILE __attribute__((__stdcall__)) _lclose (HFILE hFile);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) _llseek (HFILE hFile, LONG lOffset, int iOrigin);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsTextUnicode (const void *lpv, int iSize, LPINT lpiResult);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SignalObjectAndWait (HANDLE hObjectToSignal, HANDLE hObjectToWaitOn, DWORD dwMilliseconds, WINBOOL bAlertable);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) BackupRead (HANDLE hFile, LPBYTE lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, WINBOOL bAbort, WINBOOL bProcessSecurity, LPVOID *lpContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) BackupSeek (HANDLE hFile, DWORD dwLowBytesToSeek, DWORD dwHighBytesToSeek, LPDWORD lpdwLowByteSeeked, LPDWORD lpdwHighByteSeeked, LPVOID *lpContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) BackupWrite (HANDLE hFile, LPBYTE lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, WINBOOL bAbort, WINBOOL bProcessSecurity, LPVOID *lpContext);
#define CreateMailslot __MINGW_NAME_AW(CreateMailslot)
#define EncryptFile __MINGW_NAME_AW(EncryptFile)
#define DecryptFile __MINGW_NAME_AW(DecryptFile)
#define FileEncryptionStatus __MINGW_NAME_AW(FileEncryptionStatus)
#define OpenEncryptedFileRaw __MINGW_NAME_AW(OpenEncryptedFileRaw)
#define lstrcmp __MINGW_NAME_AW(lstrcmp)
#define lstrcmpi __MINGW_NAME_AW(lstrcmpi)
#define lstrcpyn __MINGW_NAME_AW(lstrcpyn)
#define lstrcpy __MINGW_NAME_AW(lstrcpy)
#define lstrcat __MINGW_NAME_AW(lstrcat)
#define lstrlen __MINGW_NAME_AW(lstrlen)
  typedef struct _WIN32_STREAM_ID {
    DWORD dwStreamId;
    DWORD dwStreamAttributes;
    LARGE_INTEGER Size;
    DWORD dwStreamNameSize;
    WCHAR cStreamName[1];
  } WIN32_STREAM_ID,*LPWIN32_STREAM_ID;
#define BACKUP_INVALID 0x00000000
#define BACKUP_DATA 0x00000001
#define BACKUP_EA_DATA 0x00000002
#define BACKUP_SECURITY_DATA 0x00000003
#define BACKUP_ALTERNATE_DATA 0x00000004
#define BACKUP_LINK 0x00000005
#define BACKUP_PROPERTY_DATA 0x00000006
#define BACKUP_OBJECT_ID 0x00000007
#define BACKUP_REPARSE_DATA 0x00000008
#define BACKUP_SPARSE_BLOCK 0x00000009
#define BACKUP_TXFS_DATA 0x0000000a
#define BACKUP_GHOSTED_FILE_EXTENTS 0x0000000b
#define STREAM_NORMAL_ATTRIBUTE 0x00000000
#define STREAM_MODIFIED_WHEN_READ 0x00000001
#define STREAM_CONTAINS_SECURITY 0x00000002
#define STREAM_CONTAINS_PROPERTIES 0x00000004
#define STREAM_SPARSE_ATTRIBUTE 0x00000008
#define STREAM_CONTAINS_GHOSTED_FILE_EXTENTS 0x00000010
#define STARTF_USESHOWWINDOW 0x00000001
#define STARTF_USESIZE 0x00000002
#define STARTF_USEPOSITION 0x00000004
#define STARTF_USECOUNTCHARS 0x00000008
#define STARTF_USEFILLATTRIBUTE 0x00000010
#define STARTF_RUNFULLSCREEN 0x00000020
#define STARTF_FORCEONFEEDBACK 0x00000040
#define STARTF_FORCEOFFFEEDBACK 0x00000080
#define STARTF_USESTDHANDLES 0x00000100
#define STARTF_USEHOTKEY 0x00000200
#define STARTF_TITLEISLINKNAME 0x00000800
#define STARTF_TITLEISAPPID 0x00001000
#define STARTF_PREVENTPINNING 0x00002000
#define STARTF_UNTRUSTEDSOURCE 0x00008000
  typedef struct _STARTUPINFOEXA {
    STARTUPINFOA StartupInfo;
    LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList;
  } STARTUPINFOEXA,*LPSTARTUPINFOEXA;
  typedef struct _STARTUPINFOEXW {
    STARTUPINFOW StartupInfo;
    LPPROC_THREAD_ATTRIBUTE_LIST lpAttributeList;
  } STARTUPINFOEXW,*LPSTARTUPINFOEXW;
  typedef STARTUPINFOEXA STARTUPINFOEX;
  typedef LPSTARTUPINFOEXA LPSTARTUPINFOEX;
#define SHUTDOWN_NORETRY 0x1
  WINBOOL __attribute__((__stdcall__)) GetSystemTimes (LPFILETIME lpIdleTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNamedPipeInfo (HANDLE hNamedPipe, LPDWORD lpFlags, LPDWORD lpOutBufferSize, LPDWORD lpInBufferSize, LPDWORD lpMaxInstances);
#define CreateSemaphore __MINGW_NAME_AW(CreateSemaphore)
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateSemaphoreW (LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCWSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateWaitableTimerW (LPSECURITY_ATTRIBUTES lpTimerAttributes, WINBOOL bManualReset, LPCWSTR lpTimerName);
#define LoadLibrary __MINGW_NAME_AW(LoadLibrary)
  __attribute__((dllimport)) HMODULE __attribute__((__stdcall__)) LoadLibraryW (LPCWSTR lpLibFileName);
  __attribute__((dllimport)) HMODULE __attribute__((__stdcall__)) LoadLibraryA (LPCSTR lpLibFileName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenMutexA (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenSemaphoreA (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateWaitableTimerA (LPSECURITY_ATTRIBUTES lpTimerAttributes, WINBOOL bManualReset, LPCSTR lpTimerName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenWaitableTimerA (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCSTR lpTimerName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateFileMappingA (HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateWaitableTimerExA (LPSECURITY_ATTRIBUTES lpTimerAttributes, LPCSTR lpTimerName, DWORD dwFlags, DWORD dwDesiredAccess);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateFileMappingNumaA (HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCSTR lpName, DWORD nndPreferred);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenFileMappingA (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCSTR lpName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetLogicalDriveStringsA (DWORD nBufferLength, LPSTR lpBuffer);
#define OpenMutex OpenMutexA
#define OpenSemaphore OpenSemaphoreA
#define OpenWaitableTimer OpenWaitableTimerA
#define CreateFileMapping CreateFileMappingA
#define OpenFileMapping OpenFileMappingA
#define GetLogicalDriveStrings GetLogicalDriveStringsA
#define CreateWaitableTimer __MINGW_NAME_AW(CreateWaitableTimer)
#define CreateWaitableTimerEx CreateWaitableTimerExA
#define CreateFileMappingNuma CreateFileMappingNumaA
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateSemaphoreA (LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateSemaphoreExA (LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCSTR lpName, DWORD dwFlags, DWORD dwDesiredAccess);
#define CreateSemaphoreEx CreateSemaphoreExA
#define PROTECTION_LEVEL_WINTCB_LIGHT 0x00000000
#define PROTECTION_LEVEL_WINDOWS 0x00000001
#define PROTECTION_LEVEL_WINDOWS_LIGHT 0x00000002
#define PROTECTION_LEVEL_ANTIMALWARE_LIGHT 0x00000003
#define PROTECTION_LEVEL_LSA_LIGHT 0x00000004
#define PROTECTION_LEVEL_WINTCB 0x00000005
#define PROTECTION_LEVEL_CODEGEN_LIGHT 0x00000006
#define PROTECTION_LEVEL_AUTHENTICODE 0x00000007
#define PROTECTION_LEVEL_PPL_APP 0x00000008
#define PROTECTION_LEVEL_SAME 0xffffffff
#define PROTECTION_LEVEL_NONE 0xfffffffe
#define PROCESS_NAME_NATIVE 0x00000001
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryFullProcessImageNameA (HANDLE hProcess, DWORD dwFlags, LPSTR lpExeName, PDWORD lpdwSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryFullProcessImageNameW (HANDLE hProcess, DWORD dwFlags, LPWSTR lpExeName, PDWORD lpdwSize);
#define QueryFullProcessImageName __MINGW_NAME_AW(QueryFullProcessImageName)
#define PROC_THREAD_ATTRIBUTE_NUMBER 0x0000ffff
#define PROC_THREAD_ATTRIBUTE_THREAD 0x00010000
#define PROC_THREAD_ATTRIBUTE_INPUT 0x00020000
#define PROC_THREAD_ATTRIBUTE_ADDITIVE 0x00040000
  typedef enum _PROC_THREAD_ATTRIBUTE_NUM {
    ProcThreadAttributeParentProcess = 0,
    ProcThreadAttributeHandleList = 2
    ,ProcThreadAttributeProtectionLevel = 11
  } PROC_THREAD_ATTRIBUTE_NUM;
#define ProcThreadAttributeValue(Number,Thread,Input,Additive) (((Number) &PROC_THREAD_ATTRIBUTE_NUMBER) | ((Thread != FALSE) ? PROC_THREAD_ATTRIBUTE_THREAD : 0) | ((Input != FALSE) ? PROC_THREAD_ATTRIBUTE_INPUT : 0) | ((Additive != FALSE) ? PROC_THREAD_ATTRIBUTE_ADDITIVE : 0))
#define PROC_THREAD_ATTRIBUTE_PARENT_PROCESS ProcThreadAttributeValue (ProcThreadAttributeParentProcess, FALSE, TRUE, FALSE)
#define PROC_THREAD_ATTRIBUTE_HANDLE_LIST ProcThreadAttributeValue (ProcThreadAttributeHandleList, FALSE, TRUE, FALSE)
#define PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL ProcThreadAttributeValue (ProcThreadAttributeProtectionLevel, FALSE, TRUE, FALSE)
#define ATOM_FLAG_GLOBAL 0x2
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetProcessShutdownParameters (LPDWORD lpdwLevel, LPDWORD lpdwFlags);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) FatalAppExitA (UINT uAction, LPCSTR lpMessageText);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) FatalAppExitW (UINT uAction, LPCWSTR lpMessageText);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) GetStartupInfoA (LPSTARTUPINFOA lpStartupInfo);
  __attribute__((dllimport)) HRSRC __attribute__((__stdcall__)) FindResourceA (HMODULE hModule, LPCSTR lpName, LPCSTR lpType);
  __attribute__((dllimport)) HRSRC __attribute__((__stdcall__)) FindResourceW (HMODULE hModule, LPCWSTR lpName, LPCWSTR lpType);
  __attribute__((dllimport)) HRSRC __attribute__((__stdcall__)) FindResourceExA (HMODULE hModule, LPCSTR lpType, LPCSTR lpName, WORD wLanguage);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceTypesA (HMODULE hModule, ENUMRESTYPEPROCA lpEnumFunc, LONG_PTR lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceTypesW (HMODULE hModule, ENUMRESTYPEPROCW lpEnumFunc, LONG_PTR lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceNamesA (HMODULE hModule, LPCSTR lpType, ENUMRESNAMEPROCA lpEnumFunc, LONG_PTR lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceNamesW (HMODULE hModule, LPCWSTR lpType, ENUMRESNAMEPROCW lpEnumFunc, LONG_PTR lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceLanguagesA (HMODULE hModule, LPCSTR lpType, LPCSTR lpName, ENUMRESLANGPROCA lpEnumFunc, LONG_PTR lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumResourceLanguagesW (HMODULE hModule, LPCWSTR lpType, LPCWSTR lpName, ENUMRESLANGPROCW lpEnumFunc, LONG_PTR lParam);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) BeginUpdateResourceA (LPCSTR pFileName, WINBOOL bDeleteExistingResources);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) BeginUpdateResourceW (LPCWSTR pFileName, WINBOOL bDeleteExistingResources);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UpdateResourceA (HANDLE hUpdate, LPCSTR lpType, LPCSTR lpName, WORD wLanguage, LPVOID lpData, DWORD cb);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UpdateResourceW (HANDLE hUpdate, LPCWSTR lpType, LPCWSTR lpName, WORD wLanguage, LPVOID lpData, DWORD cb);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EndUpdateResourceA (HANDLE hUpdate, WINBOOL fDiscard);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EndUpdateResourceW (HANDLE hUpdate, WINBOOL fDiscard);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) GlobalAddAtomA (LPCSTR lpString);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) GlobalAddAtomW (LPCWSTR lpString);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) GlobalAddAtomExA (LPCSTR lpString, DWORD Flags);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) GlobalAddAtomExW (LPCWSTR lpString, DWORD Flags);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) GlobalFindAtomA (LPCSTR lpString);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) GlobalFindAtomW (LPCWSTR lpString);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GlobalGetAtomNameA (ATOM nAtom, LPSTR lpBuffer, int nSize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GlobalGetAtomNameW (ATOM nAtom, LPWSTR lpBuffer, int nSize);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) AddAtomA (LPCSTR lpString);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) AddAtomW (LPCWSTR lpString);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) FindAtomA (LPCSTR lpString);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) FindAtomW (LPCWSTR lpString);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetAtomNameA (ATOM nAtom, LPSTR lpBuffer, int nSize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetAtomNameW (ATOM nAtom, LPWSTR lpBuffer, int nSize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetProfileIntA (LPCSTR lpAppName, LPCSTR lpKeyName, INT nDefault);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetProfileIntW (LPCWSTR lpAppName, LPCWSTR lpKeyName, INT nDefault);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetProfileStringA (LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpDefault, LPSTR lpReturnedString, DWORD nSize);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetProfileStringW (LPCWSTR lpAppName, LPCWSTR lpKeyName, LPCWSTR lpDefault, LPWSTR lpReturnedString, DWORD nSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteProfileStringA (LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpString);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteProfileStringW (LPCWSTR lpAppName, LPCWSTR lpKeyName, LPCWSTR lpString);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetProfileSectionA (LPCSTR lpAppName, LPSTR lpReturnedString, DWORD nSize);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetProfileSectionW (LPCWSTR lpAppName, LPWSTR lpReturnedString, DWORD nSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteProfileSectionA (LPCSTR lpAppName, LPCSTR lpString);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteProfileSectionW (LPCWSTR lpAppName, LPCWSTR lpString);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetPrivateProfileIntA (LPCSTR lpAppName, LPCSTR lpKeyName, INT nDefault, LPCSTR lpFileName);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetPrivateProfileIntW (LPCWSTR lpAppName, LPCWSTR lpKeyName, INT nDefault, LPCWSTR lpFileName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetPrivateProfileStringA (LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpDefault, LPSTR lpReturnedString, DWORD nSize, LPCSTR lpFileName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetPrivateProfileStringW (LPCWSTR lpAppName, LPCWSTR lpKeyName, LPCWSTR lpDefault, LPWSTR lpReturnedString, DWORD nSize, LPCWSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WritePrivateProfileStringA (LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpString, LPCSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WritePrivateProfileStringW (LPCWSTR lpAppName, LPCWSTR lpKeyName, LPCWSTR lpString, LPCWSTR lpFileName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetPrivateProfileSectionA (LPCSTR lpAppName, LPSTR lpReturnedString, DWORD nSize, LPCSTR lpFileName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetPrivateProfileSectionW (LPCWSTR lpAppName, LPWSTR lpReturnedString, DWORD nSize, LPCWSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WritePrivateProfileSectionA (LPCSTR lpAppName, LPCSTR lpString, LPCSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WritePrivateProfileSectionW (LPCWSTR lpAppName, LPCWSTR lpString, LPCWSTR lpFileName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetPrivateProfileSectionNamesA (LPSTR lpszReturnBuffer, DWORD nSize, LPCSTR lpFileName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetPrivateProfileSectionNamesW (LPWSTR lpszReturnBuffer, DWORD nSize, LPCWSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetPrivateProfileStructA (LPCSTR lpszSection, LPCSTR lpszKey, LPVOID lpStruct, UINT uSizeStruct, LPCSTR szFile);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetPrivateProfileStructW (LPCWSTR lpszSection, LPCWSTR lpszKey, LPVOID lpStruct, UINT uSizeStruct, LPCWSTR szFile);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WritePrivateProfileStructA (LPCSTR lpszSection, LPCSTR lpszKey, LPVOID lpStruct, UINT uSizeStruct, LPCSTR szFile);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WritePrivateProfileStructW (LPCWSTR lpszSection, LPCWSTR lpszKey, LPVOID lpStruct, UINT uSizeStruct, LPCWSTR szFile);
#define GetStartupInfo GetStartupInfoA
#define FindResourceEx FindResourceExA
#define FatalAppExit __MINGW_NAME_AW(FatalAppExit)
#define GetFirmwareEnvironmentVariable __MINGW_NAME_AW(GetFirmwareEnvironmentVariable)
#define SetFirmwareEnvironmentVariable __MINGW_NAME_AW(SetFirmwareEnvironmentVariable)
#define FindResource __MINGW_NAME_AW(FindResource)
#define EnumResourceTypes __MINGW_NAME_AW(EnumResourceTypes)
#define EnumResourceNames __MINGW_NAME_AW(EnumResourceNames)
#define EnumResourceLanguages __MINGW_NAME_AW(EnumResourceLanguages)
#define BeginUpdateResource __MINGW_NAME_AW(BeginUpdateResource)
#define UpdateResource __MINGW_NAME_AW(UpdateResource)
#define EndUpdateResource __MINGW_NAME_AW(EndUpdateResource)
#define GlobalAddAtom __MINGW_NAME_AW(GlobalAddAtom)
#define GlobalAddAtomEx __MINGW_NAME_AW(GlobalAddAtomEx)
#define GlobalFindAtom __MINGW_NAME_AW(GlobalFindAtom)
#define GlobalGetAtomName __MINGW_NAME_AW(GlobalGetAtomName)
#define AddAtom __MINGW_NAME_AW(AddAtom)
#define FindAtom __MINGW_NAME_AW(FindAtom)
#define GetAtomName __MINGW_NAME_AW(GetAtomName)
#define GetProfileInt __MINGW_NAME_AW(GetProfileInt)
#define GetProfileString __MINGW_NAME_AW(GetProfileString)
#define WriteProfileString __MINGW_NAME_AW(WriteProfileString)
#define GetProfileSection __MINGW_NAME_AW(GetProfileSection)
#define WriteProfileSection __MINGW_NAME_AW(WriteProfileSection)
#define GetPrivateProfileInt __MINGW_NAME_AW(GetPrivateProfileInt)
#define GetPrivateProfileString __MINGW_NAME_AW(GetPrivateProfileString)
#define WritePrivateProfileString __MINGW_NAME_AW(WritePrivateProfileString)
#define GetPrivateProfileSection __MINGW_NAME_AW(GetPrivateProfileSection)
#define WritePrivateProfileSection __MINGW_NAME_AW(WritePrivateProfileSection)
#define GetPrivateProfileSectionNames __MINGW_NAME_AW(GetPrivateProfileSectionNames)
#define GetPrivateProfileStruct __MINGW_NAME_AW(GetPrivateProfileStruct)
#define WritePrivateProfileStruct __MINGW_NAME_AW(WritePrivateProfileStruct)
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetSystemWow64DirectoryA (LPSTR lpBuffer, UINT uSize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetSystemWow64DirectoryW (LPWSTR lpBuffer, UINT uSize);
#define GetSystemWow64Directory __MINGW_NAME_AW(GetSystemWow64Directory)
  __attribute__((dllimport)) BOOLEAN __attribute__((__stdcall__)) Wow64EnableWow64FsRedirection (BOOLEAN Wow64FsEnableRedirection);
  typedef UINT (__attribute__((__stdcall__)) *PGET_SYSTEM_WOW64_DIRECTORY_A) (LPSTR lpBuffer, UINT uSize);
  typedef UINT (__attribute__((__stdcall__)) *PGET_SYSTEM_WOW64_DIRECTORY_W) (LPWSTR lpBuffer, UINT uSize);
#define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A "GetSystemWow64DirectoryA"
#define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W L"GetSystemWow64DirectoryA"
#define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T TEXT ("GetSystemWow64DirectoryA")
#define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A "GetSystemWow64DirectoryW"
#define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W L"GetSystemWow64DirectoryW"
#define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T TEXT ("GetSystemWow64DirectoryW")
#define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A __MINGW_NAME_UAW_EXT(GET_SYSTEM_WOW64_DIRECTORY_NAME,A)
#define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W __MINGW_NAME_UAW_EXT(GET_SYSTEM_WOW64_DIRECTORY_NAME,W)
#define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T __MINGW_NAME_UAW_EXT(GET_SYSTEM_WOW64_DIRECTORY_NAME,T)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetDllDirectoryA (LPCSTR lpPathName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetDllDirectoryW (LPCWSTR lpPathName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetDllDirectoryA (DWORD nBufferLength, LPSTR lpBuffer);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetDllDirectoryW (DWORD nBufferLength, LPWSTR lpBuffer);
#define SetDllDirectory __MINGW_NAME_AW(SetDllDirectory)
#define GetDllDirectory __MINGW_NAME_AW(GetDllDirectory)
#define BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE 0x1
#define BASE_SEARCH_PATH_DISABLE_SAFE_SEARCHMODE 0x10000
#define BASE_SEARCH_PATH_PERMANENT 0x8000
#define BASE_SEARCH_PATH_INVALID_FLAGS ~0x18001
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetSearchPathMode (DWORD Flags);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFirmwareEnvironmentVariableA (LPCSTR lpName, LPCSTR lpGuid, PVOID pBuffer, DWORD nSize);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFirmwareEnvironmentVariableW (LPCWSTR lpName, LPCWSTR lpGuid, PVOID pBuffer, DWORD nSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFirmwareEnvironmentVariableA (LPCSTR lpName, LPCSTR lpGuid, PVOID pValue, DWORD nSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFirmwareEnvironmentVariableW (LPCWSTR lpName, LPCWSTR lpGuid, PVOID pValue, DWORD nSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateDirectoryExA (LPCSTR lpTemplateDirectory, LPCSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateDirectoryExW (LPCWSTR lpTemplateDirectory, LPCWSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
#define CreateDirectoryEx __MINGW_NAME_AW(CreateDirectoryEx)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateDirectoryTransactedA (LPCSTR lpTemplateDirectory, LPCSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateDirectoryTransactedW (LPCWSTR lpTemplateDirectory, LPCWSTR lpNewDirectory, LPSECURITY_ATTRIBUTES lpSecurityAttributes, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RemoveDirectoryTransactedA (LPCSTR lpPathName, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RemoveDirectoryTransactedW (LPCWSTR lpPathName, HANDLE hTransaction);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFullPathNameTransactedA (LPCSTR lpFileName, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart, HANDLE hTransaction);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFullPathNameTransactedW (LPCWSTR lpFileName, DWORD nBufferLength, LPWSTR lpBuffer, LPWSTR *lpFilePart, HANDLE hTransaction);
#define CreateDirectoryTransacted __MINGW_NAME_AW(CreateDirectoryTransacted)
#define RemoveDirectoryTransacted __MINGW_NAME_AW(RemoveDirectoryTransacted)
#define GetFullPathNameTransacted __MINGW_NAME_AW(GetFullPathNameTransacted)
#define DDD_RAW_TARGET_PATH 0x00000001
#define DDD_REMOVE_DEFINITION 0x00000002
#define DDD_EXACT_MATCH_ON_REMOVE 0x00000004
#define DDD_NO_BROADCAST_SYSTEM 0x00000008
#define DDD_LUID_BROADCAST_DRIVE 0x00000010
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DefineDosDeviceA (DWORD dwFlags, LPCSTR lpDeviceName, LPCSTR lpTargetPath);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) QueryDosDeviceA (LPCSTR lpDeviceName, LPSTR lpTargetPath, DWORD ucchMax);
#define DefineDosDevice DefineDosDeviceA
#define QueryDosDevice QueryDosDeviceA
#define EXPAND_LOCAL_DRIVES 
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateFileTransactedA (LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile, HANDLE hTransaction, PUSHORT pusMiniVersion, PVOID lpExtendedParameter);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateFileTransactedW (LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile, HANDLE hTransaction, PUSHORT pusMiniVersion, PVOID lpExtendedParameter);
#define CreateFileTransacted __MINGW_NAME_AW(CreateFileTransacted)
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) ReOpenFile (HANDLE hOriginalFile, DWORD dwDesiredAccess, DWORD dwShareMode, DWORD dwFlagsAndAttributes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFileAttributesTransactedA (LPCSTR lpFileName, DWORD dwFileAttributes, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFileAttributesTransactedW (LPCWSTR lpFileName, DWORD dwFileAttributes, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetFileAttributesTransactedA (LPCSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetFileAttributesTransactedW (LPCWSTR lpFileName, GET_FILEEX_INFO_LEVELS fInfoLevelId, LPVOID lpFileInformation, HANDLE hTransaction);
#define SetFileAttributesTransacted __MINGW_NAME_AW(SetFileAttributesTransacted)
#define GetFileAttributesTransacted __MINGW_NAME_AW(GetFileAttributesTransacted)
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetCompressedFileSizeA (LPCSTR lpFileName, LPDWORD lpFileSizeHigh);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetCompressedFileSizeW (LPCWSTR lpFileName, LPDWORD lpFileSizeHigh);
#define GetCompressedFileSize __MINGW_NAME_AW(GetCompressedFileSize)
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetCompressedFileSizeTransactedA (LPCSTR lpFileName, LPDWORD lpFileSizeHigh, HANDLE hTransaction);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetCompressedFileSizeTransactedW (LPCWSTR lpFileName, LPDWORD lpFileSizeHigh, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteFileTransactedA (LPCSTR lpFileName, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteFileTransactedW (LPCWSTR lpFileName, HANDLE hTransaction);
#define DeleteFileTransacted __MINGW_NAME_AW(DeleteFileTransacted)
#define GetCompressedFileSizeTransacted __MINGW_NAME_AW(GetCompressedFileSizeTransacted)
  typedef DWORD (__attribute__((__stdcall__)) *LPPROGRESS_ROUTINE) (LARGE_INTEGER TotalFileSize, LARGE_INTEGER TotalBytesTransferred, LARGE_INTEGER StreamSize, LARGE_INTEGER StreamBytesTransferred, DWORD dwStreamNumber, DWORD dwCallbackReason, HANDLE hSourceFile, HANDLE hDestinationFile, LPVOID lpData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CopyFileExA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CopyFileExW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags);
#define CopyFileEx __MINGW_NAME_AW(CopyFileEx)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CheckNameLegalDOS8Dot3A (LPCSTR lpName, LPSTR lpOemName, DWORD OemNameSize, PBOOL pbNameContainsSpaces, PBOOL pbNameLegal);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CheckNameLegalDOS8Dot3W (LPCWSTR lpName, LPSTR lpOemName, DWORD OemNameSize, PBOOL pbNameContainsSpaces, PBOOL pbNameLegal);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstFileTransactedA (LPCSTR lpFileName, FINDEX_INFO_LEVELS fInfoLevelId, LPVOID lpFindFileData, FINDEX_SEARCH_OPS fSearchOp, LPVOID lpSearchFilter, DWORD dwAdditionalFlags, HANDLE hTransaction);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstFileTransactedW (LPCWSTR lpFileName, FINDEX_INFO_LEVELS fInfoLevelId, LPVOID lpFindFileData, FINDEX_SEARCH_OPS fSearchOp, LPVOID lpSearchFilter, DWORD dwAdditionalFlags, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CopyFileTransactedA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CopyFileTransactedW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags, HANDLE hTransaction);
#define FindFirstFileTransacted __MINGW_NAME_AW(FindFirstFileTransacted)
#define CopyFileTransacted __MINGW_NAME_AW(CopyFileTransacted)
#define CheckNameLegalDOS8Dot3 __MINGW_NAME_AW(CheckNameLegalDOS8Dot3)
#define CopyFile __MINGW_NAME_AW(CopyFile)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CopyFileA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, WINBOOL bFailIfExists);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CopyFileW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, WINBOOL bFailIfExists);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MoveFileA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MoveFileW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName);
#define MoveFile __MINGW_NAME_AW(MoveFile)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MoveFileExA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MoveFileExW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, DWORD dwFlags);
#define MoveFileEx __MINGW_NAME_AW(MoveFileEx)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MoveFileWithProgressA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MoveFileWithProgressW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, DWORD dwFlags);
#define MoveFileWithProgress __MINGW_NAME_AW(MoveFileWithProgress)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MoveFileTransactedA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, DWORD dwFlags, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MoveFileTransactedW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, DWORD dwFlags, HANDLE hTransaction);
#define MoveFileTransacted __MINGW_NAME_AW(MoveFileTransacted)
#define MOVEFILE_REPLACE_EXISTING 0x00000001
#define MOVEFILE_COPY_ALLOWED 0x00000002
#define MOVEFILE_DELAY_UNTIL_REBOOT 0x00000004
#define MOVEFILE_WRITE_THROUGH 0x00000008
#define MOVEFILE_CREATE_HARDLINK 0x00000010
#define MOVEFILE_FAIL_IF_NOT_TRACKABLE 0x00000020
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNamedPipeClientComputerNameA (HANDLE Pipe, LPSTR ClientComputerName, ULONG ClientComputerNameLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WaitNamedPipeA (LPCSTR lpNamedPipeName, DWORD nTimeOut);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CallNamedPipeA (LPCSTR lpNamedPipeName, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesRead, DWORD nTimeOut);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CallNamedPipeW (LPCWSTR lpNamedPipeName, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesRead, DWORD nTimeOut);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateNamedPipeA (LPCSTR lpName, DWORD dwOpenMode, DWORD dwPipeMode, DWORD nMaxInstances, DWORD nOutBufferSize, DWORD nInBufferSize, DWORD nDefaultTimeOut, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
#define WaitNamedPipe WaitNamedPipeA
#define CreateNamedPipe CreateNamedPipeA
#define CallNamedPipe __MINGW_NAME_AW(CallNamedPipe)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNamedPipeHandleStateA (HANDLE hNamedPipe, LPDWORD lpState, LPDWORD lpCurInstances, LPDWORD lpMaxCollectionCount, LPDWORD lpCollectDataTimeout, LPSTR lpUserName, DWORD nMaxUserNameSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNamedPipeHandleStateW (HANDLE hNamedPipe, LPDWORD lpState, LPDWORD lpCurInstances, LPDWORD lpMaxCollectionCount, LPDWORD lpCollectDataTimeout, LPWSTR lpUserName, DWORD nMaxUserNameSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReplaceFileA (LPCSTR lpReplacedFileName, LPCSTR lpReplacementFileName, LPCSTR lpBackupFileName, DWORD dwReplaceFlags, LPVOID lpExclude, LPVOID lpReserved);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReplaceFileW (LPCWSTR lpReplacedFileName, LPCWSTR lpReplacementFileName, LPCWSTR lpBackupFileName, DWORD dwReplaceFlags, LPVOID lpExclude, LPVOID lpReserved);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateHardLinkA (LPCSTR lpFileName, LPCSTR lpExistingFileName, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateHardLinkW (LPCWSTR lpFileName, LPCWSTR lpExistingFileName, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
#define ReplaceFile __MINGW_NAME_AW(ReplaceFile)
#define CreateHardLink __MINGW_NAME_AW(CreateHardLink)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateHardLinkTransactedA (LPCSTR lpFileName, LPCSTR lpExistingFileName, LPSECURITY_ATTRIBUTES lpSecurityAttributes, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateHardLinkTransactedW (LPCWSTR lpFileName, LPCWSTR lpExistingFileName, LPSECURITY_ATTRIBUTES lpSecurityAttributes, HANDLE hTransaction);
#define CreateHardLinkTransacted __MINGW_NAME_AW(CreateHardLinkTransacted)
  typedef enum _STREAM_INFO_LEVELS {
    FindStreamInfoStandard,
    FindStreamInfoMaxInfoLevel
  } STREAM_INFO_LEVELS;
  typedef struct _WIN32_FIND_STREAM_DATA {
    LARGE_INTEGER StreamSize;
    WCHAR cStreamName[260 + 36];
  } WIN32_FIND_STREAM_DATA,*PWIN32_FIND_STREAM_DATA;
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstStreamW (LPCWSTR lpFileName, STREAM_INFO_LEVELS InfoLevel, LPVOID lpFindStreamData, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindNextStreamW (HANDLE hFindStream, LPVOID lpFindStreamData);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstStreamTransactedW (LPCWSTR lpFileName, STREAM_INFO_LEVELS InfoLevel, LPVOID lpFindStreamData, DWORD dwFlags, HANDLE hTransaction);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstFileNameW (LPCWSTR lpFileName, DWORD dwFlags, LPDWORD StringLength, PWSTR LinkName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindNextFileNameW (HANDLE hFindStream, LPDWORD StringLength, PWSTR LinkName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstFileNameTransactedW (LPCWSTR lpFileName, DWORD dwFlags, LPDWORD StringLength, PWSTR LinkName, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNamedPipeClientProcessId (HANDLE Pipe, PULONG ClientProcessId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNamedPipeClientSessionId (HANDLE Pipe, PULONG ClientSessionId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNamedPipeServerProcessId (HANDLE Pipe, PULONG ServerProcessId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNamedPipeServerSessionId (HANDLE Pipe, PULONG ServerSessionId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFileBandwidthReservation (HANDLE hFile, DWORD nPeriodMilliseconds, DWORD nBytesPerPeriod, WINBOOL bDiscardable, LPDWORD lpTransferSize, LPDWORD lpNumOutstandingRequests);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetFileBandwidthReservation (HANDLE hFile, LPDWORD lpPeriodMilliseconds, LPDWORD lpBytesPerPeriod, LPBOOL pDiscardable, LPDWORD lpTransferSize, LPDWORD lpNumOutstandingRequests);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) SetFileApisToOEM (void);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) SetFileApisToANSI (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AreFileApisANSI (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ClearEventLogA (HANDLE hEventLog, LPCSTR lpBackupFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ClearEventLogW (HANDLE hEventLog, LPCWSTR lpBackupFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) BackupEventLogA (HANDLE hEventLog, LPCSTR lpBackupFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) BackupEventLogW (HANDLE hEventLog, LPCWSTR lpBackupFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CloseEventLog (HANDLE hEventLog);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeregisterEventSource (HANDLE hEventLog);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) NotifyChangeEventLog (HANDLE hEventLog, HANDLE hEvent);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNumberOfEventLogRecords (HANDLE hEventLog, PDWORD NumberOfRecords);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetOldestEventLogRecord (HANDLE hEventLog, PDWORD OldestRecord);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenEventLogA (LPCSTR lpUNCServerName, LPCSTR lpSourceName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenEventLogW (LPCWSTR lpUNCServerName, LPCWSTR lpSourceName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) RegisterEventSourceA (LPCSTR lpUNCServerName, LPCSTR lpSourceName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) RegisterEventSourceW (LPCWSTR lpUNCServerName, LPCWSTR lpSourceName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenBackupEventLogA (LPCSTR lpUNCServerName, LPCSTR lpFileName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenBackupEventLogW (LPCWSTR lpUNCServerName, LPCWSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadEventLogA (HANDLE hEventLog, DWORD dwReadFlags, DWORD dwRecordOffset, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, DWORD *pnBytesRead, DWORD *pnMinNumberOfBytesNeeded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadEventLogW (HANDLE hEventLog, DWORD dwReadFlags, DWORD dwRecordOffset, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, DWORD *pnBytesRead, DWORD *pnMinNumberOfBytesNeeded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReportEventA (HANDLE hEventLog, WORD wType, WORD wCategory, DWORD dwEventID, PSID lpUserSid, WORD wNumStrings, DWORD dwDataSize, LPCSTR *lpStrings, LPVOID lpRawData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReportEventW (HANDLE hEventLog, WORD wType, WORD wCategory, DWORD dwEventID, PSID lpUserSid, WORD wNumStrings, DWORD dwDataSize, LPCWSTR *lpStrings, LPVOID lpRawData);
#define GetVolumeInformation GetVolumeInformationA
#define GetNamedPipeHandleState __MINGW_NAME_AW(GetNamedPipeHandleState)
#define ClearEventLog __MINGW_NAME_AW(ClearEventLog)
#define BackupEventLog __MINGW_NAME_AW(BackupEventLog)
#define OpenEventLog __MINGW_NAME_AW(OpenEventLog)
#define RegisterEventSource __MINGW_NAME_AW(RegisterEventSource)
#define OpenBackupEventLog __MINGW_NAME_AW(OpenBackupEventLog)
#define ReadEventLog __MINGW_NAME_AW(ReadEventLog)
#define ReportEvent __MINGW_NAME_AW(ReportEvent)
#define GetNamedPipeClientComputerName GetNamedPipeClientComputerNameA
#define EVENTLOG_FULL_INFO 0
  typedef struct _EVENTLOG_FULL_INFORMATION {
    DWORD dwFull;
  } EVENTLOG_FULL_INFORMATION,*LPEVENTLOG_FULL_INFORMATION;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetEventLogInformation (HANDLE hEventLog, DWORD dwInfoLevel, LPVOID lpBuffer, DWORD cbBufSize, LPDWORD pcbBytesNeeded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetVolumeInformationA (LPCSTR lpRootPathName, LPSTR lpVolumeNameBuffer, DWORD nVolumeNameSize, LPDWORD lpVolumeSerialNumber, LPDWORD lpMaximumComponentLength, LPDWORD lpFileSystemFlags, LPSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadDirectoryChangesW (HANDLE hDirectory, LPVOID lpBuffer, DWORD nBufferLength, WINBOOL bWatchSubtree, DWORD dwNotifyFilter, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AccessCheckAndAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, LPSTR ObjectTypeName, LPSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, DWORD DesiredAccess, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPBOOL AccessStatus, LPBOOL pfGenerateOnClose);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AccessCheckByTypeAndAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, LPCSTR ObjectTypeName, LPCSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPBOOL AccessStatus, LPBOOL pfGenerateOnClose);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AccessCheckByTypeResultListAndAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, LPCSTR ObjectTypeName, LPCSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPDWORD AccessStatusList, LPBOOL pfGenerateOnClose);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AccessCheckByTypeResultListAndAuditAlarmByHandleA (LPCSTR SubsystemName, LPVOID HandleId, HANDLE ClientToken, LPCSTR ObjectTypeName, LPCSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPDWORD AccessStatusList, LPBOOL pfGenerateOnClose);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ObjectOpenAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, LPSTR ObjectTypeName, LPSTR ObjectName, PSECURITY_DESCRIPTOR pSecurityDescriptor, HANDLE ClientToken, DWORD DesiredAccess, DWORD GrantedAccess, PPRIVILEGE_SET Privileges, WINBOOL ObjectCreation, WINBOOL AccessGranted, LPBOOL GenerateOnClose);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ObjectPrivilegeAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, HANDLE ClientToken, DWORD DesiredAccess, PPRIVILEGE_SET Privileges, WINBOOL AccessGranted);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ObjectCloseAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, WINBOOL GenerateOnClose);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ObjectDeleteAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, WINBOOL GenerateOnClose);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PrivilegedServiceAuditAlarmA (LPCSTR SubsystemName, LPCSTR ServiceName, HANDLE ClientToken, PPRIVILEGE_SET Privileges, WINBOOL AccessGranted);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetFileSecurityA (LPCSTR lpFileName, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetFileSecurityA (LPCSTR lpFileName, SECURITY_INFORMATION RequestedInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD nLength, LPDWORD lpnLengthNeeded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsBadReadPtr (const void *lp, UINT_PTR ucb);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsBadWritePtr (LPVOID lp, UINT_PTR ucb);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsBadHugeReadPtr (const void *lp, UINT_PTR ucb);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsBadHugeWritePtr (LPVOID lp, UINT_PTR ucb);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsBadCodePtr (FARPROC lpfn);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsBadStringPtrA (LPCSTR lpsz, UINT_PTR ucchMax);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsBadStringPtrW (LPCWSTR lpsz, UINT_PTR ucchMax);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) MapViewOfFileExNuma (HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap, LPVOID lpBaseAddress, DWORD nndPreferred);
#define AccessCheckAndAuditAlarm AccessCheckAndAuditAlarmA
#define AccessCheckByTypeAndAuditAlarm AccessCheckByTypeAndAuditAlarmA
#define AccessCheckByTypeResultListAndAuditAlarm AccessCheckByTypeResultListAndAuditAlarmA
#define AccessCheckByTypeResultListAndAuditAlarmByHandle AccessCheckByTypeResultListAndAuditAlarmByHandleA
#define ObjectOpenAuditAlarm ObjectOpenAuditAlarmA
#define ObjectPrivilegeAuditAlarm ObjectPrivilegeAuditAlarmA
#define ObjectCloseAuditAlarm ObjectCloseAuditAlarmA
#define ObjectDeleteAuditAlarm ObjectDeleteAuditAlarmA
#define PrivilegedServiceAuditAlarm PrivilegedServiceAuditAlarmA
#define SetFileSecurity SetFileSecurityA
#define GetFileSecurity GetFileSecurityA
#define IsBadStringPtr __MINGW_NAME_AW(IsBadStringPtr)
#define LookupAccountNameLocalA(n,s,cs,d,cd,u) LookupAccountNameA (NULL, n, s, cs, d, cd, u)
#define LookupAccountNameLocalW(n,s,cs,d,cd,u) LookupAccountNameW (NULL, n, s, cs, d, cd, u)
#define LookupAccountNameLocal(n,s,cs,d,cd,u) __MINGW_NAME_AW(LookupAccountName) (NULL, n, s, cs, d, cd, u)
#define LookupAccountSidLocalA(s,n,cn,d,cd,u) LookupAccountSidA (NULL, s, n, cn, d, cd, u)
#define LookupAccountSidLocalW(s,n,cn,d,cd,u) LookupAccountSidW (NULL, s, n, cn, d, cd, u)
#define LookupAccountSidLocal(s,n,cn,d,cd,u) __MINGW_NAME_AW(LookupAccountSid) (NULL, s, n, cn, d, cd, u)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) BuildCommDCBA (LPCSTR lpDef, LPDCB lpDCB);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) BuildCommDCBW (LPCWSTR lpDef, LPDCB lpDCB);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) BuildCommDCBAndTimeoutsA (LPCSTR lpDef, LPDCB lpDCB, LPCOMMTIMEOUTS lpCommTimeouts);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) BuildCommDCBAndTimeoutsW (LPCWSTR lpDef, LPDCB lpDCB, LPCOMMTIMEOUTS lpCommTimeouts);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CommConfigDialogA (LPCSTR lpszName, HWND hWnd, LPCOMMCONFIG lpCC);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CommConfigDialogW (LPCWSTR lpszName, HWND hWnd, LPCOMMCONFIG lpCC);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetDefaultCommConfigA (LPCSTR lpszName, LPCOMMCONFIG lpCC, LPDWORD lpdwSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetDefaultCommConfigW (LPCWSTR lpszName, LPCOMMCONFIG lpCC, LPDWORD lpdwSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetDefaultCommConfigA (LPCSTR lpszName, LPCOMMCONFIG lpCC, DWORD dwSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetDefaultCommConfigW (LPCWSTR lpszName, LPCOMMCONFIG lpCC, DWORD dwSize);
#define BuildCommDCB __MINGW_NAME_AW(BuildCommDCB)
#define BuildCommDCBAndTimeouts __MINGW_NAME_AW(BuildCommDCBAndTimeouts)
#define CommConfigDialog __MINGW_NAME_AW(CommConfigDialog)
#define GetDefaultCommConfig __MINGW_NAME_AW(GetDefaultCommConfig)
#define SetDefaultCommConfig __MINGW_NAME_AW(SetDefaultCommConfig)
#define MAX_COMPUTERNAME_LENGTH 15
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetComputerNameA (LPCSTR lpComputerName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetComputerNameW (LPCWSTR lpComputerName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetComputerNameExA (COMPUTER_NAME_FORMAT NameType, LPCTSTR lpBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DnsHostnameToComputerNameA (LPCSTR Hostname, LPSTR ComputerName, LPDWORD nSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DnsHostnameToComputerNameW (LPCWSTR Hostname, LPWSTR ComputerName, LPDWORD nSize);
#define SetComputerNameEx SetComputerNameExA
#define SetComputerName __MINGW_NAME_AW(SetComputerName)
#define DnsHostnameToComputerName __MINGW_NAME_AW(DnsHostnameToComputerName)
#define LOGON32_LOGON_INTERACTIVE 2
#define LOGON32_LOGON_NETWORK 3
#define LOGON32_LOGON_BATCH 4
#define LOGON32_LOGON_SERVICE 5
#define LOGON32_LOGON_UNLOCK 7
#define LOGON32_LOGON_NETWORK_CLEARTEXT 8
#define LOGON32_LOGON_NEW_CREDENTIALS 9
#define LOGON32_PROVIDER_DEFAULT 0
#define LOGON32_PROVIDER_WINNT35 1
#define LOGON32_PROVIDER_WINNT40 2
#define LOGON32_PROVIDER_WINNT50 3
#define LOGON32_PROVIDER_VIRTUAL 4
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LogonUserA (LPCSTR lpszUsername, LPCSTR lpszDomain, LPCSTR lpszPassword, DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LogonUserW (LPCWSTR lpszUsername, LPCWSTR lpszDomain, LPCWSTR lpszPassword, DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LogonUserExA (LPCSTR lpszUsername, LPCSTR lpszDomain, LPCSTR lpszPassword, DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken, PSID *ppLogonSid, PVOID *ppProfileBuffer, LPDWORD pdwProfileLength, PQUOTA_LIMITS pQuotaLimits);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LogonUserExW (LPCWSTR lpszUsername, LPCWSTR lpszDomain, LPCWSTR lpszPassword, DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken, PSID *ppLogonSid, PVOID *ppProfileBuffer, LPDWORD pdwProfileLength, PQUOTA_LIMITS pQuotaLimits);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateProcessAsUserA (HANDLE hToken, LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, WINBOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation);
#define CreateProcessAsUser CreateProcessAsUserA
#define LogonUser __MINGW_NAME_AW(LogonUser)
#define LogonUserEx __MINGW_NAME_AW(LogonUserEx)
#define LOGON_WITH_PROFILE 0x00000001
#define LOGON_NETCREDENTIALS_ONLY 0x00000002
#define LOGON_ZERO_PASSWORD_BUFFER 0x80000000
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateProcessWithLogonW (LPCWSTR lpUsername, LPCWSTR lpDomain, LPCWSTR lpPassword, DWORD dwLogonFlags, LPCWSTR lpApplicationName, LPWSTR lpCommandLine, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateProcessWithTokenW (HANDLE hToken, DWORD dwLogonFlags, LPCWSTR lpApplicationName, LPWSTR lpCommandLine, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsTokenUntrusted (HANDLE TokenHandle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RegisterWaitForSingleObject (PHANDLE phNewWaitObject, HANDLE hObject, WAITORTIMERCALLBACK Callback, PVOID Context, ULONG dwMilliseconds, ULONG dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnregisterWait (HANDLE WaitHandle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) BindIoCompletionCallback (HANDLE FileHandle, LPOVERLAPPED_COMPLETION_ROUTINE Function, ULONG Flags);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) SetTimerQueueTimer (HANDLE TimerQueue, WAITORTIMERCALLBACK Callback, PVOID Parameter, DWORD DueTime, DWORD Period, WINBOOL PreferIo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CancelTimerQueueTimer (HANDLE TimerQueue, HANDLE Timer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteTimerQueue (HANDLE TimerQueue);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddIntegrityLabelToBoundaryDescriptor (HANDLE *BoundaryDescriptor, PSID IntegrityLabel);
#define HW_PROFILE_GUIDLEN 39
#define MAX_PROFILE_LEN 80
#define DOCKINFO_UNDOCKED (0x1)
#define DOCKINFO_DOCKED (0x2)
#define DOCKINFO_USER_SUPPLIED (0x4)
#define DOCKINFO_USER_UNDOCKED (DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED)
#define DOCKINFO_USER_DOCKED (DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED)
  typedef struct tagHW_PROFILE_INFOA {
    DWORD dwDockInfo;
    CHAR szHwProfileGuid[39];
    CHAR szHwProfileName[80];
  } HW_PROFILE_INFOA,*LPHW_PROFILE_INFOA;
  typedef struct tagHW_PROFILE_INFOW {
    DWORD dwDockInfo;
    WCHAR szHwProfileGuid[39];
    WCHAR szHwProfileName[80];
  } HW_PROFILE_INFOW,*LPHW_PROFILE_INFOW;
  typedef HW_PROFILE_INFOA HW_PROFILE_INFO;
  typedef LPHW_PROFILE_INFOA LPHW_PROFILE_INFO;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCurrentHwProfileA (LPHW_PROFILE_INFOA lpHwProfileInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCurrentHwProfileW (LPHW_PROFILE_INFOW lpHwProfileInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) VerifyVersionInfoA (LPOSVERSIONINFOEXA lpVersionInformation, DWORD dwTypeMask, DWORDLONG dwlConditionMask);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) VerifyVersionInfoW (LPOSVERSIONINFOEXW lpVersionInformation, DWORD dwTypeMask, DWORDLONG dwlConditionMask);
#define GetCurrentHwProfile __MINGW_NAME_AW(GetCurrentHwProfile)
#define VerifyVersionInfo __MINGW_NAME_AW(VerifyVersionInfo)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetUserNameA (LPSTR lpBuffer, LPDWORD pcbBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetUserNameW (LPWSTR lpBuffer, LPDWORD pcbBuffer);
#define GetUserName __MINGW_NAME_AW(GetUserName)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LookupAccountNameA (LPCSTR lpSystemName, LPCSTR lpAccountName, PSID Sid, LPDWORD cbSid, LPSTR ReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LookupAccountNameW (LPCWSTR lpSystemName, LPCWSTR lpAccountName, PSID Sid, LPDWORD cbSid, LPWSTR ReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LookupAccountSidA (LPCSTR lpSystemName, PSID Sid, LPSTR Name, LPDWORD cchName, LPSTR ReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LookupAccountSidW (LPCWSTR lpSystemName, PSID Sid, LPWSTR Name, LPDWORD cchName, LPWSTR ReferencedDomainName, LPDWORD cchReferencedDomainName, PSID_NAME_USE peUse);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LookupPrivilegeDisplayNameA (LPCSTR lpSystemName, LPCSTR lpName, LPSTR lpDisplayName, LPDWORD cchDisplayName, LPDWORD lpLanguageId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LookupPrivilegeDisplayNameW (LPCWSTR lpSystemName, LPCWSTR lpName, LPWSTR lpDisplayName, LPDWORD cchDisplayName, LPDWORD lpLanguageId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LookupPrivilegeNameA (LPCSTR lpSystemName, PLUID lpLuid, LPSTR lpName, LPDWORD cchName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LookupPrivilegeNameW (LPCWSTR lpSystemName, PLUID lpLuid, LPWSTR lpName, LPDWORD cchName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LookupPrivilegeValueA (LPCSTR lpSystemName, LPCSTR lpName, PLUID lpLuid);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LookupPrivilegeValueW (LPCWSTR lpSystemName, LPCWSTR lpName, PLUID lpLuid);
#define LookupAccountSid __MINGW_NAME_AW(LookupAccountSid)
#define LookupAccountName __MINGW_NAME_AW(LookupAccountName)
#define LookupPrivilegeValue __MINGW_NAME_AW(LookupPrivilegeValue)
#define LookupPrivilegeName __MINGW_NAME_AW(LookupPrivilegeName)
#define LookupPrivilegeDisplayName __MINGW_NAME_AW(LookupPrivilegeDisplayName)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetVolumeLabelA (LPCSTR lpRootPathName, LPCSTR lpVolumeName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreatePrivateNamespaceA (LPSECURITY_ATTRIBUTES lpPrivateNamespaceAttributes, LPVOID lpBoundaryDescriptor, LPCSTR lpAliasPrefix);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenPrivateNamespaceA (LPVOID lpBoundaryDescriptor, LPCSTR lpAliasPrefix);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateBoundaryDescriptorA (LPCSTR Name, ULONG Flags);
#define CreatePrivateNamespace __MINGW_NAME_AW(CreatePrivateNamespace)
#define OpenPrivateNamespace __MINGW_NAME_AW(OpenPrivateNamespace)
#define CreateBoundaryDescriptor __MINGW_NAME_AW(CreateBoundaryDescriptor)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetVolumeLabelW (LPCWSTR lpRootPathName, LPCWSTR lpVolumeName);
#define SetVolumeLabel __MINGW_NAME_AW(SetVolumeLabel)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetComputerNameA (LPSTR lpBuffer, LPDWORD nSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetComputerNameW (LPWSTR lpBuffer, LPDWORD nSize);
#define GetComputerName __MINGW_NAME_AW(GetComputerName)
#define _WINERROR_ 
#define __IN__WINERROR_ 1
#define FACILITY_WINDOWSUPDATE 36
#define FACILITY_WINDOWS_CE 24
#define FACILITY_WINDOWS 8
#define FACILITY_URT 19
#define FACILITY_UMI 22
#define FACILITY_SXS 23
#define FACILITY_STORAGE 3
#define FACILITY_STATE_MANAGEMENT 34
#define FACILITY_SSPI 9
#define FACILITY_SCARD 16
#define FACILITY_SETUPAPI 15
#define FACILITY_SECURITY 9
#define FACILITY_RPC 1
#define FACILITY_WIN32 7
#define FACILITY_CONTROL 10
#define FACILITY_NULL 0
#define FACILITY_METADIRECTORY 35
#define FACILITY_MSMQ 14
#define FACILITY_MEDIASERVER 13
#define FACILITY_INTERNET 12
#define FACILITY_ITF 4
#define FACILITY_HTTP 25
#define FACILITY_DPLAY 21
#define FACILITY_DISPATCH 2
#define FACILITY_DIRECTORYSERVICE 37
#define FACILITY_CONFIGURATION 33
#define FACILITY_COMPLUS 17
#define FACILITY_CERT 11
#define FACILITY_BACKGROUNDCOPY 32
#define FACILITY_ACS 20
#define FACILITY_AAF 18
#define FACILITY_AUDCLNT 2185
#define ERROR_SUCCESS __MSABI_LONG(0)
#define NO_ERROR __MSABI_LONG(0)
#define SEC_E_OK ((HRESULT)0x00000000)
#define ERROR_INVALID_FUNCTION __MSABI_LONG(1)
#define ERROR_FILE_NOT_FOUND __MSABI_LONG(2)
#define ERROR_PATH_NOT_FOUND __MSABI_LONG(3)
#define ERROR_TOO_MANY_OPEN_FILES __MSABI_LONG(4)
#define ERROR_ACCESS_DENIED __MSABI_LONG(5)
#define ERROR_INVALID_HANDLE __MSABI_LONG(6)
#define ERROR_ARENA_TRASHED __MSABI_LONG(7)
#define ERROR_NOT_ENOUGH_MEMORY __MSABI_LONG(8)
#define ERROR_INVALID_BLOCK __MSABI_LONG(9)
#define ERROR_BAD_ENVIRONMENT __MSABI_LONG(10)
#define ERROR_BAD_FORMAT __MSABI_LONG(11)
#define ERROR_INVALID_ACCESS __MSABI_LONG(12)
#define ERROR_INVALID_DATA __MSABI_LONG(13)
#define ERROR_OUTOFMEMORY __MSABI_LONG(14)
#define ERROR_INVALID_DRIVE __MSABI_LONG(15)
#define ERROR_CURRENT_DIRECTORY __MSABI_LONG(16)
#define ERROR_NOT_SAME_DEVICE __MSABI_LONG(17)
#define ERROR_NO_MORE_FILES __MSABI_LONG(18)
#define ERROR_WRITE_PROTECT __MSABI_LONG(19)
#define ERROR_BAD_UNIT __MSABI_LONG(20)
#define ERROR_NOT_READY __MSABI_LONG(21)
#define ERROR_BAD_COMMAND __MSABI_LONG(22)
#define ERROR_CRC __MSABI_LONG(23)
#define ERROR_BAD_LENGTH __MSABI_LONG(24)
#define ERROR_SEEK __MSABI_LONG(25)
#define ERROR_NOT_DOS_DISK __MSABI_LONG(26)
#define ERROR_SECTOR_NOT_FOUND __MSABI_LONG(27)
#define ERROR_OUT_OF_PAPER __MSABI_LONG(28)
#define ERROR_WRITE_FAULT __MSABI_LONG(29)
#define ERROR_READ_FAULT __MSABI_LONG(30)
#define ERROR_GEN_FAILURE __MSABI_LONG(31)
#define ERROR_SHARING_VIOLATION __MSABI_LONG(32)
#define ERROR_LOCK_VIOLATION __MSABI_LONG(33)
#define ERROR_WRONG_DISK __MSABI_LONG(34)
#define ERROR_SHARING_BUFFER_EXCEEDED __MSABI_LONG(36)
#define ERROR_HANDLE_EOF __MSABI_LONG(38)
#define ERROR_HANDLE_DISK_FULL __MSABI_LONG(39)
#define ERROR_NOT_SUPPORTED __MSABI_LONG(50)
#define ERROR_REM_NOT_LIST __MSABI_LONG(51)
#define ERROR_DUP_NAME __MSABI_LONG(52)
#define ERROR_BAD_NETPATH __MSABI_LONG(53)
#define ERROR_NETWORK_BUSY __MSABI_LONG(54)
#define ERROR_DEV_NOT_EXIST __MSABI_LONG(55)
#define ERROR_TOO_MANY_CMDS __MSABI_LONG(56)
#define ERROR_ADAP_HDW_ERR __MSABI_LONG(57)
#define ERROR_BAD_NET_RESP __MSABI_LONG(58)
#define ERROR_UNEXP_NET_ERR __MSABI_LONG(59)
#define ERROR_BAD_REM_ADAP __MSABI_LONG(60)
#define ERROR_PRINTQ_FULL __MSABI_LONG(61)
#define ERROR_NO_SPOOL_SPACE __MSABI_LONG(62)
#define ERROR_PRINT_CANCELLED __MSABI_LONG(63)
#define ERROR_NETNAME_DELETED __MSABI_LONG(64)
#define ERROR_NETWORK_ACCESS_DENIED __MSABI_LONG(65)
#define ERROR_BAD_DEV_TYPE __MSABI_LONG(66)
#define ERROR_BAD_NET_NAME __MSABI_LONG(67)
#define ERROR_TOO_MANY_NAMES __MSABI_LONG(68)
#define ERROR_TOO_MANY_SESS __MSABI_LONG(69)
#define ERROR_SHARING_PAUSED __MSABI_LONG(70)
#define ERROR_REQ_NOT_ACCEP __MSABI_LONG(71)
#define ERROR_REDIR_PAUSED __MSABI_LONG(72)
#define ERROR_FILE_EXISTS __MSABI_LONG(80)
#define ERROR_CANNOT_MAKE __MSABI_LONG(82)
#define ERROR_FAIL_I24 __MSABI_LONG(83)
#define ERROR_OUT_OF_STRUCTURES __MSABI_LONG(84)
#define ERROR_ALREADY_ASSIGNED __MSABI_LONG(85)
#define ERROR_INVALID_PASSWORD __MSABI_LONG(86)
#define ERROR_INVALID_PARAMETER __MSABI_LONG(87)
#define ERROR_NET_WRITE_FAULT __MSABI_LONG(88)
#define ERROR_NO_PROC_SLOTS __MSABI_LONG(89)
#define ERROR_TOO_MANY_SEMAPHORES __MSABI_LONG(100)
#define ERROR_EXCL_SEM_ALREADY_OWNED __MSABI_LONG(101)
#define ERROR_SEM_IS_SET __MSABI_LONG(102)
#define ERROR_TOO_MANY_SEM_REQUESTS __MSABI_LONG(103)
#define ERROR_INVALID_AT_INTERRUPT_TIME __MSABI_LONG(104)
#define ERROR_SEM_OWNER_DIED __MSABI_LONG(105)
#define ERROR_SEM_USER_LIMIT __MSABI_LONG(106)
#define ERROR_DISK_CHANGE __MSABI_LONG(107)
#define ERROR_DRIVE_LOCKED __MSABI_LONG(108)
#define ERROR_BROKEN_PIPE __MSABI_LONG(109)
#define ERROR_OPEN_FAILED __MSABI_LONG(110)
#define ERROR_BUFFER_OVERFLOW __MSABI_LONG(111)
#define ERROR_DISK_FULL __MSABI_LONG(112)
#define ERROR_NO_MORE_SEARCH_HANDLES __MSABI_LONG(113)
#define ERROR_INVALID_TARGET_HANDLE __MSABI_LONG(114)
#define ERROR_INVALID_CATEGORY __MSABI_LONG(117)
#define ERROR_INVALID_VERIFY_SWITCH __MSABI_LONG(118)
#define ERROR_BAD_DRIVER_LEVEL __MSABI_LONG(119)
#define ERROR_CALL_NOT_IMPLEMENTED __MSABI_LONG(120)
#define ERROR_SEM_TIMEOUT __MSABI_LONG(121)
#define ERROR_INSUFFICIENT_BUFFER __MSABI_LONG(122)
#define ERROR_INVALID_NAME __MSABI_LONG(123)
#define ERROR_INVALID_LEVEL __MSABI_LONG(124)
#define ERROR_NO_VOLUME_LABEL __MSABI_LONG(125)
#define ERROR_MOD_NOT_FOUND __MSABI_LONG(126)
#define ERROR_PROC_NOT_FOUND __MSABI_LONG(127)
#define ERROR_WAIT_NO_CHILDREN __MSABI_LONG(128)
#define ERROR_CHILD_NOT_COMPLETE __MSABI_LONG(129)
#define ERROR_DIRECT_ACCESS_HANDLE __MSABI_LONG(130)
#define ERROR_NEGATIVE_SEEK __MSABI_LONG(131)
#define ERROR_SEEK_ON_DEVICE __MSABI_LONG(132)
#define ERROR_IS_JOIN_TARGET __MSABI_LONG(133)
#define ERROR_IS_JOINED __MSABI_LONG(134)
#define ERROR_IS_SUBSTED __MSABI_LONG(135)
#define ERROR_NOT_JOINED __MSABI_LONG(136)
#define ERROR_NOT_SUBSTED __MSABI_LONG(137)
#define ERROR_JOIN_TO_JOIN __MSABI_LONG(138)
#define ERROR_SUBST_TO_SUBST __MSABI_LONG(139)
#define ERROR_JOIN_TO_SUBST __MSABI_LONG(140)
#define ERROR_SUBST_TO_JOIN __MSABI_LONG(141)
#define ERROR_BUSY_DRIVE __MSABI_LONG(142)
#define ERROR_SAME_DRIVE __MSABI_LONG(143)
#define ERROR_DIR_NOT_ROOT __MSABI_LONG(144)
#define ERROR_DIR_NOT_EMPTY __MSABI_LONG(145)
#define ERROR_IS_SUBST_PATH __MSABI_LONG(146)
#define ERROR_IS_JOIN_PATH __MSABI_LONG(147)
#define ERROR_PATH_BUSY __MSABI_LONG(148)
#define ERROR_IS_SUBST_TARGET __MSABI_LONG(149)
#define ERROR_SYSTEM_TRACE __MSABI_LONG(150)
#define ERROR_INVALID_EVENT_COUNT __MSABI_LONG(151)
#define ERROR_TOO_MANY_MUXWAITERS __MSABI_LONG(152)
#define ERROR_INVALID_LIST_FORMAT __MSABI_LONG(153)
#define ERROR_LABEL_TOO_LONG __MSABI_LONG(154)
#define ERROR_TOO_MANY_TCBS __MSABI_LONG(155)
#define ERROR_SIGNAL_REFUSED __MSABI_LONG(156)
#define ERROR_DISCARDED __MSABI_LONG(157)
#define ERROR_NOT_LOCKED __MSABI_LONG(158)
#define ERROR_BAD_THREADID_ADDR __MSABI_LONG(159)
#define ERROR_BAD_ARGUMENTS __MSABI_LONG(160)
#define ERROR_BAD_PATHNAME __MSABI_LONG(161)
#define ERROR_SIGNAL_PENDING __MSABI_LONG(162)
#define ERROR_MAX_THRDS_REACHED __MSABI_LONG(164)
#define ERROR_LOCK_FAILED __MSABI_LONG(167)
#define ERROR_BUSY __MSABI_LONG(170)
#define ERROR_CANCEL_VIOLATION __MSABI_LONG(173)
#define ERROR_ATOMIC_LOCKS_NOT_SUPPORTED __MSABI_LONG(174)
#define ERROR_INVALID_SEGMENT_NUMBER __MSABI_LONG(180)
#define ERROR_INVALID_ORDINAL __MSABI_LONG(182)
#define ERROR_ALREADY_EXISTS __MSABI_LONG(183)
#define ERROR_INVALID_FLAG_NUMBER __MSABI_LONG(186)
#define ERROR_SEM_NOT_FOUND __MSABI_LONG(187)
#define ERROR_INVALID_STARTING_CODESEG __MSABI_LONG(188)
#define ERROR_INVALID_STACKSEG __MSABI_LONG(189)
#define ERROR_INVALID_MODULETYPE __MSABI_LONG(190)
#define ERROR_INVALID_EXE_SIGNATURE __MSABI_LONG(191)
#define ERROR_EXE_MARKED_INVALID __MSABI_LONG(192)
#define ERROR_BAD_EXE_FORMAT __MSABI_LONG(193)
#define ERROR_ITERATED_DATA_EXCEEDS_64k __MSABI_LONG(194)
#define ERROR_INVALID_MINALLOCSIZE __MSABI_LONG(195)
#define ERROR_DYNLINK_FROM_INVALID_RING __MSABI_LONG(196)
#define ERROR_IOPL_NOT_ENABLED __MSABI_LONG(197)
#define ERROR_INVALID_SEGDPL __MSABI_LONG(198)
#define ERROR_AUTODATASEG_EXCEEDS_64k __MSABI_LONG(199)
#define ERROR_RING2SEG_MUST_BE_MOVABLE __MSABI_LONG(200)
#define ERROR_RELOC_CHAIN_XEEDS_SEGLIM __MSABI_LONG(201)
#define ERROR_INFLOOP_IN_RELOC_CHAIN __MSABI_LONG(202)
#define ERROR_ENVVAR_NOT_FOUND __MSABI_LONG(203)
#define ERROR_NO_SIGNAL_SENT __MSABI_LONG(205)
#define ERROR_FILENAME_EXCED_RANGE __MSABI_LONG(206)
#define ERROR_RING2_STACK_IN_USE __MSABI_LONG(207)
#define ERROR_META_EXPANSION_TOO_LONG __MSABI_LONG(208)
#define ERROR_INVALID_SIGNAL_NUMBER __MSABI_LONG(209)
#define ERROR_THREAD_1_INACTIVE __MSABI_LONG(210)
#define ERROR_LOCKED __MSABI_LONG(212)
#define ERROR_TOO_MANY_MODULES __MSABI_LONG(214)
#define ERROR_NESTING_NOT_ALLOWED __MSABI_LONG(215)
#define ERROR_EXE_MACHINE_TYPE_MISMATCH __MSABI_LONG(216)
#define ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY __MSABI_LONG(217)
#define ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY __MSABI_LONG(218)
#define ERROR_FILE_CHECKED_OUT __MSABI_LONG(220)
#define ERROR_CHECKOUT_REQUIRED __MSABI_LONG(221)
#define ERROR_BAD_FILE_TYPE __MSABI_LONG(222)
#define ERROR_FILE_TOO_LARGE __MSABI_LONG(223)
#define ERROR_FORMS_AUTH_REQUIRED __MSABI_LONG(224)
#define ERROR_PIPE_LOCAL __MSABI_LONG(229)
#define ERROR_BAD_PIPE __MSABI_LONG(230)
#define ERROR_PIPE_BUSY __MSABI_LONG(231)
#define ERROR_NO_DATA __MSABI_LONG(232)
#define ERROR_PIPE_NOT_CONNECTED __MSABI_LONG(233)
#define ERROR_MORE_DATA __MSABI_LONG(234)
#define ERROR_VC_DISCONNECTED __MSABI_LONG(240)
#define ERROR_INVALID_EA_NAME __MSABI_LONG(254)
#define ERROR_EA_LIST_INCONSISTENT __MSABI_LONG(255)
#define WAIT_TIMEOUT __MSABI_LONG(258)
#define ERROR_NO_MORE_ITEMS __MSABI_LONG(259)
#define ERROR_CANNOT_COPY __MSABI_LONG(266)
#define ERROR_DIRECTORY __MSABI_LONG(267)
#define ERROR_EAS_DIDNT_FIT __MSABI_LONG(275)
#define ERROR_EA_FILE_CORRUPT __MSABI_LONG(276)
#define ERROR_EA_TABLE_FULL __MSABI_LONG(277)
#define ERROR_INVALID_EA_HANDLE __MSABI_LONG(278)
#define ERROR_EAS_NOT_SUPPORTED __MSABI_LONG(282)
#define ERROR_NOT_OWNER __MSABI_LONG(288)
#define ERROR_TOO_MANY_POSTS __MSABI_LONG(298)
#define ERROR_PARTIAL_COPY __MSABI_LONG(299)
#define ERROR_OPLOCK_NOT_GRANTED __MSABI_LONG(300)
#define ERROR_INVALID_OPLOCK_PROTOCOL __MSABI_LONG(301)
#define ERROR_DISK_TOO_FRAGMENTED __MSABI_LONG(302)
#define ERROR_DELETE_PENDING __MSABI_LONG(303)
#define ERROR_INVALID_TOKEN __MSABI_LONG(315)
#define ERROR_MR_MID_NOT_FOUND __MSABI_LONG(317)
#define ERROR_SCOPE_NOT_FOUND __MSABI_LONG(318)
#define ERROR_OBJECT_NOT_EXTERNALLY_BACKED __MSABI_LONG(342)
#define ERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN __MSABI_LONG(343)
#define ERROR_COMPRESSION_NOT_BENEFICIAL __MSABI_LONG(344)
#define ERROR_INVALID_ADDRESS __MSABI_LONG(487)
#define ERROR_ARITHMETIC_OVERFLOW __MSABI_LONG(534)
#define ERROR_PIPE_CONNECTED __MSABI_LONG(535)
#define ERROR_PIPE_LISTENING __MSABI_LONG(536)
#define ERROR_WAKE_SYSTEM __MSABI_LONG(730)
#define ERROR_WAIT_1 __MSABI_LONG(731)
#define ERROR_WAIT_2 __MSABI_LONG(732)
#define ERROR_WAIT_3 __MSABI_LONG(733)
#define ERROR_WAIT_63 __MSABI_LONG(734)
#define ERROR_ABANDONED_WAIT_0 __MSABI_LONG(735)
#define ERROR_ABANDONED_WAIT_63 __MSABI_LONG(736)
#define ERROR_USER_APC __MSABI_LONG(737)
#define ERROR_KERNEL_APC __MSABI_LONG(738)
#define ERROR_ALERTED __MSABI_LONG(739)
#define ERROR_EA_ACCESS_DENIED __MSABI_LONG(994)
#define ERROR_OPERATION_ABORTED __MSABI_LONG(995)
#define ERROR_IO_INCOMPLETE __MSABI_LONG(996)
#define ERROR_IO_PENDING __MSABI_LONG(997)
#define ERROR_NOACCESS __MSABI_LONG(998)
#define ERROR_SWAPERROR __MSABI_LONG(999)
#define ERROR_STACK_OVERFLOW __MSABI_LONG(1001)
#define ERROR_INVALID_MESSAGE __MSABI_LONG(1002)
#define ERROR_CAN_NOT_COMPLETE __MSABI_LONG(1003)
#define ERROR_INVALID_FLAGS __MSABI_LONG(1004)
#define ERROR_UNRECOGNIZED_VOLUME __MSABI_LONG(1005)
#define ERROR_FILE_INVALID __MSABI_LONG(1006)
#define ERROR_FULLSCREEN_MODE __MSABI_LONG(1007)
#define ERROR_NO_TOKEN __MSABI_LONG(1008)
#define ERROR_BADDB __MSABI_LONG(1009)
#define ERROR_BADKEY __MSABI_LONG(1010)
#define ERROR_CANTOPEN __MSABI_LONG(1011)
#define ERROR_CANTREAD __MSABI_LONG(1012)
#define ERROR_CANTWRITE __MSABI_LONG(1013)
#define ERROR_REGISTRY_RECOVERED __MSABI_LONG(1014)
#define ERROR_REGISTRY_CORRUPT __MSABI_LONG(1015)
#define ERROR_REGISTRY_IO_FAILED __MSABI_LONG(1016)
#define ERROR_NOT_REGISTRY_FILE __MSABI_LONG(1017)
#define ERROR_KEY_DELETED __MSABI_LONG(1018)
#define ERROR_NO_LOG_SPACE __MSABI_LONG(1019)
#define ERROR_KEY_HAS_CHILDREN __MSABI_LONG(1020)
#define ERROR_CHILD_MUST_BE_VOLATILE __MSABI_LONG(1021)
#define ERROR_NOTIFY_ENUM_DIR __MSABI_LONG(1022)
#define ERROR_DEPENDENT_SERVICES_RUNNING __MSABI_LONG(1051)
#define ERROR_INVALID_SERVICE_CONTROL __MSABI_LONG(1052)
#define ERROR_SERVICE_REQUEST_TIMEOUT __MSABI_LONG(1053)
#define ERROR_SERVICE_NO_THREAD __MSABI_LONG(1054)
#define ERROR_SERVICE_DATABASE_LOCKED __MSABI_LONG(1055)
#define ERROR_SERVICE_ALREADY_RUNNING __MSABI_LONG(1056)
#define ERROR_INVALID_SERVICE_ACCOUNT __MSABI_LONG(1057)
#define ERROR_SERVICE_DISABLED __MSABI_LONG(1058)
#define ERROR_CIRCULAR_DEPENDENCY __MSABI_LONG(1059)
#define ERROR_SERVICE_DOES_NOT_EXIST __MSABI_LONG(1060)
#define ERROR_SERVICE_CANNOT_ACCEPT_CTRL __MSABI_LONG(1061)
#define ERROR_SERVICE_NOT_ACTIVE __MSABI_LONG(1062)
#define ERROR_FAILED_SERVICE_CONTROLLER_CONNECT __MSABI_LONG(1063)
#define ERROR_EXCEPTION_IN_SERVICE __MSABI_LONG(1064)
#define ERROR_DATABASE_DOES_NOT_EXIST __MSABI_LONG(1065)
#define ERROR_SERVICE_SPECIFIC_ERROR __MSABI_LONG(1066)
#define ERROR_PROCESS_ABORTED __MSABI_LONG(1067)
#define ERROR_SERVICE_DEPENDENCY_FAIL __MSABI_LONG(1068)
#define ERROR_SERVICE_LOGON_FAILED __MSABI_LONG(1069)
#define ERROR_SERVICE_START_HANG __MSABI_LONG(1070)
#define ERROR_INVALID_SERVICE_LOCK __MSABI_LONG(1071)
#define ERROR_SERVICE_MARKED_FOR_DELETE __MSABI_LONG(1072)
#define ERROR_SERVICE_EXISTS __MSABI_LONG(1073)
#define ERROR_ALREADY_RUNNING_LKG __MSABI_LONG(1074)
#define ERROR_SERVICE_DEPENDENCY_DELETED __MSABI_LONG(1075)
#define ERROR_BOOT_ALREADY_ACCEPTED __MSABI_LONG(1076)
#define ERROR_SERVICE_NEVER_STARTED __MSABI_LONG(1077)
#define ERROR_DUPLICATE_SERVICE_NAME __MSABI_LONG(1078)
#define ERROR_DIFFERENT_SERVICE_ACCOUNT __MSABI_LONG(1079)
#define ERROR_CANNOT_DETECT_DRIVER_FAILURE __MSABI_LONG(1080)
#define ERROR_CANNOT_DETECT_PROCESS_ABORT __MSABI_LONG(1081)
#define ERROR_NO_RECOVERY_PROGRAM __MSABI_LONG(1082)
#define ERROR_SERVICE_NOT_IN_EXE __MSABI_LONG(1083)
#define ERROR_NOT_SAFEBOOT_SERVICE __MSABI_LONG(1084)
#define ERROR_END_OF_MEDIA __MSABI_LONG(1100)
#define ERROR_FILEMARK_DETECTED __MSABI_LONG(1101)
#define ERROR_BEGINNING_OF_MEDIA __MSABI_LONG(1102)
#define ERROR_SETMARK_DETECTED __MSABI_LONG(1103)
#define ERROR_NO_DATA_DETECTED __MSABI_LONG(1104)
#define ERROR_PARTITION_FAILURE __MSABI_LONG(1105)
#define ERROR_INVALID_BLOCK_LENGTH __MSABI_LONG(1106)
#define ERROR_DEVICE_NOT_PARTITIONED __MSABI_LONG(1107)
#define ERROR_UNABLE_TO_LOCK_MEDIA __MSABI_LONG(1108)
#define ERROR_UNABLE_TO_UNLOAD_MEDIA __MSABI_LONG(1109)
#define ERROR_MEDIA_CHANGED __MSABI_LONG(1110)
#define ERROR_BUS_RESET __MSABI_LONG(1111)
#define ERROR_NO_MEDIA_IN_DRIVE __MSABI_LONG(1112)
#define ERROR_NO_UNICODE_TRANSLATION __MSABI_LONG(1113)
#define ERROR_DLL_INIT_FAILED __MSABI_LONG(1114)
#define ERROR_SHUTDOWN_IN_PROGRESS __MSABI_LONG(1115)
#define ERROR_NO_SHUTDOWN_IN_PROGRESS __MSABI_LONG(1116)
#define ERROR_IO_DEVICE __MSABI_LONG(1117)
#define ERROR_SERIAL_NO_DEVICE __MSABI_LONG(1118)
#define ERROR_IRQ_BUSY __MSABI_LONG(1119)
#define ERROR_MORE_WRITES __MSABI_LONG(1120)
#define ERROR_COUNTER_TIMEOUT __MSABI_LONG(1121)
#define ERROR_FLOPPY_ID_MARK_NOT_FOUND __MSABI_LONG(1122)
#define ERROR_FLOPPY_WRONG_CYLINDER __MSABI_LONG(1123)
#define ERROR_FLOPPY_UNKNOWN_ERROR __MSABI_LONG(1124)
#define ERROR_FLOPPY_BAD_REGISTERS __MSABI_LONG(1125)
#define ERROR_DISK_RECALIBRATE_FAILED __MSABI_LONG(1126)
#define ERROR_DISK_OPERATION_FAILED __MSABI_LONG(1127)
#define ERROR_DISK_RESET_FAILED __MSABI_LONG(1128)
#define ERROR_EOM_OVERFLOW __MSABI_LONG(1129)
#define ERROR_NOT_ENOUGH_SERVER_MEMORY __MSABI_LONG(1130)
#define ERROR_POSSIBLE_DEADLOCK __MSABI_LONG(1131)
#define ERROR_MAPPED_ALIGNMENT __MSABI_LONG(1132)
#define ERROR_SET_POWER_STATE_VETOED __MSABI_LONG(1140)
#define ERROR_SET_POWER_STATE_FAILED __MSABI_LONG(1141)
#define ERROR_TOO_MANY_LINKS __MSABI_LONG(1142)
#define ERROR_OLD_WIN_VERSION __MSABI_LONG(1150)
#define ERROR_APP_WRONG_OS __MSABI_LONG(1151)
#define ERROR_SINGLE_INSTANCE_APP __MSABI_LONG(1152)
#define ERROR_RMODE_APP __MSABI_LONG(1153)
#define ERROR_INVALID_DLL __MSABI_LONG(1154)
#define ERROR_NO_ASSOCIATION __MSABI_LONG(1155)
#define ERROR_DDE_FAIL __MSABI_LONG(1156)
#define ERROR_DLL_NOT_FOUND __MSABI_LONG(1157)
#define ERROR_NO_MORE_USER_HANDLES __MSABI_LONG(1158)
#define ERROR_MESSAGE_SYNC_ONLY __MSABI_LONG(1159)
#define ERROR_SOURCE_ELEMENT_EMPTY __MSABI_LONG(1160)
#define ERROR_DESTINATION_ELEMENT_FULL __MSABI_LONG(1161)
#define ERROR_ILLEGAL_ELEMENT_ADDRESS __MSABI_LONG(1162)
#define ERROR_MAGAZINE_NOT_PRESENT __MSABI_LONG(1163)
#define ERROR_DEVICE_REINITIALIZATION_NEEDED __MSABI_LONG(1164)
#define ERROR_DEVICE_REQUIRES_CLEANING __MSABI_LONG(1165)
#define ERROR_DEVICE_DOOR_OPEN __MSABI_LONG(1166)
#define ERROR_DEVICE_NOT_CONNECTED __MSABI_LONG(1167)
#define ERROR_NOT_FOUND __MSABI_LONG(1168)
#define ERROR_NO_MATCH __MSABI_LONG(1169)
#define ERROR_SET_NOT_FOUND __MSABI_LONG(1170)
#define ERROR_POINT_NOT_FOUND __MSABI_LONG(1171)
#define ERROR_NO_TRACKING_SERVICE __MSABI_LONG(1172)
#define ERROR_NO_VOLUME_ID __MSABI_LONG(1173)
#define ERROR_UNABLE_TO_REMOVE_REPLACED __MSABI_LONG(1175)
#define ERROR_UNABLE_TO_MOVE_REPLACEMENT __MSABI_LONG(1176)
#define ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 __MSABI_LONG(1177)
#define ERROR_JOURNAL_DELETE_IN_PROGRESS __MSABI_LONG(1178)
#define ERROR_JOURNAL_NOT_ACTIVE __MSABI_LONG(1179)
#define ERROR_POTENTIAL_FILE_FOUND __MSABI_LONG(1180)
#define ERROR_JOURNAL_ENTRY_DELETED __MSABI_LONG(1181)
#define ERROR_BAD_DEVICE __MSABI_LONG(1200)
#define ERROR_CONNECTION_UNAVAIL __MSABI_LONG(1201)
#define ERROR_DEVICE_ALREADY_REMEMBERED __MSABI_LONG(1202)
#define ERROR_NO_NET_OR_BAD_PATH __MSABI_LONG(1203)
#define ERROR_BAD_PROVIDER __MSABI_LONG(1204)
#define ERROR_CANNOT_OPEN_PROFILE __MSABI_LONG(1205)
#define ERROR_BAD_PROFILE __MSABI_LONG(1206)
#define ERROR_NOT_CONTAINER __MSABI_LONG(1207)
#define ERROR_EXTENDED_ERROR __MSABI_LONG(1208)
#define ERROR_INVALID_GROUPNAME __MSABI_LONG(1209)
#define ERROR_INVALID_COMPUTERNAME __MSABI_LONG(1210)
#define ERROR_INVALID_EVENTNAME __MSABI_LONG(1211)
#define ERROR_INVALID_DOMAINNAME __MSABI_LONG(1212)
#define ERROR_INVALID_SERVICENAME __MSABI_LONG(1213)
#define ERROR_INVALID_NETNAME __MSABI_LONG(1214)
#define ERROR_INVALID_SHARENAME __MSABI_LONG(1215)
#define ERROR_INVALID_PASSWORDNAME __MSABI_LONG(1216)
#define ERROR_INVALID_MESSAGENAME __MSABI_LONG(1217)
#define ERROR_INVALID_MESSAGEDEST __MSABI_LONG(1218)
#define ERROR_SESSION_CREDENTIAL_CONFLICT __MSABI_LONG(1219)
#define ERROR_REMOTE_SESSION_LIMIT_EXCEEDED __MSABI_LONG(1220)
#define ERROR_DUP_DOMAINNAME __MSABI_LONG(1221)
#define ERROR_NO_NETWORK __MSABI_LONG(1222)
#define ERROR_CANCELLED __MSABI_LONG(1223)
#define ERROR_USER_MAPPED_FILE __MSABI_LONG(1224)
#define ERROR_CONNECTION_REFUSED __MSABI_LONG(1225)
#define ERROR_GRACEFUL_DISCONNECT __MSABI_LONG(1226)
#define ERROR_ADDRESS_ALREADY_ASSOCIATED __MSABI_LONG(1227)
#define ERROR_ADDRESS_NOT_ASSOCIATED __MSABI_LONG(1228)
#define ERROR_CONNECTION_INVALID __MSABI_LONG(1229)
#define ERROR_CONNECTION_ACTIVE __MSABI_LONG(1230)
#define ERROR_NETWORK_UNREACHABLE __MSABI_LONG(1231)
#define ERROR_HOST_UNREACHABLE __MSABI_LONG(1232)
#define ERROR_PROTOCOL_UNREACHABLE __MSABI_LONG(1233)
#define ERROR_PORT_UNREACHABLE __MSABI_LONG(1234)
#define ERROR_REQUEST_ABORTED __MSABI_LONG(1235)
#define ERROR_CONNECTION_ABORTED __MSABI_LONG(1236)
#define ERROR_RETRY __MSABI_LONG(1237)
#define ERROR_CONNECTION_COUNT_LIMIT __MSABI_LONG(1238)
#define ERROR_LOGIN_TIME_RESTRICTION __MSABI_LONG(1239)
#define ERROR_LOGIN_WKSTA_RESTRICTION __MSABI_LONG(1240)
#define ERROR_INCORRECT_ADDRESS __MSABI_LONG(1241)
#define ERROR_ALREADY_REGISTERED __MSABI_LONG(1242)
#define ERROR_SERVICE_NOT_FOUND __MSABI_LONG(1243)
#define ERROR_NOT_AUTHENTICATED __MSABI_LONG(1244)
#define ERROR_NOT_LOGGED_ON __MSABI_LONG(1245)
#define ERROR_CONTINUE __MSABI_LONG(1246)
#define ERROR_ALREADY_INITIALIZED __MSABI_LONG(1247)
#define ERROR_NO_MORE_DEVICES __MSABI_LONG(1248)
#define ERROR_NO_SUCH_SITE __MSABI_LONG(1249)
#define ERROR_DOMAIN_CONTROLLER_EXISTS __MSABI_LONG(1250)
#define ERROR_ONLY_IF_CONNECTED __MSABI_LONG(1251)
#define ERROR_OVERRIDE_NOCHANGES __MSABI_LONG(1252)
#define ERROR_BAD_USER_PROFILE __MSABI_LONG(1253)
#define ERROR_NOT_SUPPORTED_ON_SBS __MSABI_LONG(1254)
#define ERROR_SERVER_SHUTDOWN_IN_PROGRESS __MSABI_LONG(1255)
#define ERROR_HOST_DOWN __MSABI_LONG(1256)
#define ERROR_NON_ACCOUNT_SID __MSABI_LONG(1257)
#define ERROR_NON_DOMAIN_SID __MSABI_LONG(1258)
#define ERROR_APPHELP_BLOCK __MSABI_LONG(1259)
#define ERROR_ACCESS_DISABLED_BY_POLICY __MSABI_LONG(1260)
#define ERROR_REG_NAT_CONSUMPTION __MSABI_LONG(1261)
#define ERROR_CSCSHARE_OFFLINE __MSABI_LONG(1262)
#define ERROR_PKINIT_FAILURE __MSABI_LONG(1263)
#define ERROR_SMARTCARD_SUBSYSTEM_FAILURE __MSABI_LONG(1264)
#define ERROR_DOWNGRADE_DETECTED __MSABI_LONG(1265)
#define ERROR_MACHINE_LOCKED __MSABI_LONG(1271)
#define ERROR_CALLBACK_SUPPLIED_INVALID_DATA __MSABI_LONG(1273)
#define ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED __MSABI_LONG(1274)
#define ERROR_DRIVER_BLOCKED __MSABI_LONG(1275)
#define ERROR_INVALID_IMPORT_OF_NON_DLL __MSABI_LONG(1276)
#define ERROR_ACCESS_DISABLED_WEBBLADE __MSABI_LONG(1277)
#define ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER __MSABI_LONG(1278)
#define ERROR_RECOVERY_FAILURE __MSABI_LONG(1279)
#define ERROR_ALREADY_FIBER __MSABI_LONG(1280)
#define ERROR_ALREADY_THREAD __MSABI_LONG(1281)
#define ERROR_STACK_BUFFER_OVERRUN __MSABI_LONG(1282)
#define ERROR_PARAMETER_QUOTA_EXCEEDED __MSABI_LONG(1283)
#define ERROR_DEBUGGER_INACTIVE __MSABI_LONG(1284)
#define ERROR_DELAY_LOAD_FAILED __MSABI_LONG(1285)
#define ERROR_VDM_DISALLOWED __MSABI_LONG(1286)
#define ERROR_UNIDENTIFIED_ERROR __MSABI_LONG(1287)
#define ERROR_NOT_ALL_ASSIGNED __MSABI_LONG(1300)
#define ERROR_SOME_NOT_MAPPED __MSABI_LONG(1301)
#define ERROR_NO_QUOTAS_FOR_ACCOUNT __MSABI_LONG(1302)
#define ERROR_LOCAL_USER_SESSION_KEY __MSABI_LONG(1303)
#define ERROR_NULL_LM_PASSWORD __MSABI_LONG(1304)
#define ERROR_UNKNOWN_REVISION __MSABI_LONG(1305)
#define ERROR_REVISION_MISMATCH __MSABI_LONG(1306)
#define ERROR_INVALID_OWNER __MSABI_LONG(1307)
#define ERROR_INVALID_PRIMARY_GROUP __MSABI_LONG(1308)
#define ERROR_NO_IMPERSONATION_TOKEN __MSABI_LONG(1309)
#define ERROR_CANT_DISABLE_MANDATORY __MSABI_LONG(1310)
#define ERROR_NO_LOGON_SERVERS __MSABI_LONG(1311)
#define ERROR_NO_SUCH_LOGON_SESSION __MSABI_LONG(1312)
#define ERROR_NO_SUCH_PRIVILEGE __MSABI_LONG(1313)
#define ERROR_PRIVILEGE_NOT_HELD __MSABI_LONG(1314)
#define ERROR_INVALID_ACCOUNT_NAME __MSABI_LONG(1315)
#define ERROR_USER_EXISTS __MSABI_LONG(1316)
#define ERROR_NO_SUCH_USER __MSABI_LONG(1317)
#define ERROR_GROUP_EXISTS __MSABI_LONG(1318)
#define ERROR_NO_SUCH_GROUP __MSABI_LONG(1319)
#define ERROR_MEMBER_IN_GROUP __MSABI_LONG(1320)
#define ERROR_MEMBER_NOT_IN_GROUP __MSABI_LONG(1321)
#define ERROR_LAST_ADMIN __MSABI_LONG(1322)
#define ERROR_WRONG_PASSWORD __MSABI_LONG(1323)
#define ERROR_ILL_FORMED_PASSWORD __MSABI_LONG(1324)
#define ERROR_PASSWORD_RESTRICTION __MSABI_LONG(1325)
#define ERROR_LOGON_FAILURE __MSABI_LONG(1326)
#define ERROR_ACCOUNT_RESTRICTION __MSABI_LONG(1327)
#define ERROR_INVALID_LOGON_HOURS __MSABI_LONG(1328)
#define ERROR_INVALID_WORKSTATION __MSABI_LONG(1329)
#define ERROR_PASSWORD_EXPIRED __MSABI_LONG(1330)
#define ERROR_ACCOUNT_DISABLED __MSABI_LONG(1331)
#define ERROR_NONE_MAPPED __MSABI_LONG(1332)
#define ERROR_TOO_MANY_LUIDS_REQUESTED __MSABI_LONG(1333)
#define ERROR_LUIDS_EXHAUSTED __MSABI_LONG(1334)
#define ERROR_INVALID_SUB_AUTHORITY __MSABI_LONG(1335)
#define ERROR_INVALID_ACL __MSABI_LONG(1336)
#define ERROR_INVALID_SID __MSABI_LONG(1337)
#define ERROR_INVALID_SECURITY_DESCR __MSABI_LONG(1338)
#define ERROR_BAD_INHERITANCE_ACL __MSABI_LONG(1340)
#define ERROR_SERVER_DISABLED __MSABI_LONG(1341)
#define ERROR_SERVER_NOT_DISABLED __MSABI_LONG(1342)
#define ERROR_INVALID_ID_AUTHORITY __MSABI_LONG(1343)
#define ERROR_ALLOTTED_SPACE_EXCEEDED __MSABI_LONG(1344)
#define ERROR_INVALID_GROUP_ATTRIBUTES __MSABI_LONG(1345)
#define ERROR_BAD_IMPERSONATION_LEVEL __MSABI_LONG(1346)
#define ERROR_CANT_OPEN_ANONYMOUS __MSABI_LONG(1347)
#define ERROR_BAD_VALIDATION_CLASS __MSABI_LONG(1348)
#define ERROR_BAD_TOKEN_TYPE __MSABI_LONG(1349)
#define ERROR_NO_SECURITY_ON_OBJECT __MSABI_LONG(1350)
#define ERROR_CANT_ACCESS_DOMAIN_INFO __MSABI_LONG(1351)
#define ERROR_INVALID_SERVER_STATE __MSABI_LONG(1352)
#define ERROR_INVALID_DOMAIN_STATE __MSABI_LONG(1353)
#define ERROR_INVALID_DOMAIN_ROLE __MSABI_LONG(1354)
#define ERROR_NO_SUCH_DOMAIN __MSABI_LONG(1355)
#define ERROR_DOMAIN_EXISTS __MSABI_LONG(1356)
#define ERROR_DOMAIN_LIMIT_EXCEEDED __MSABI_LONG(1357)
#define ERROR_INTERNAL_DB_CORRUPTION __MSABI_LONG(1358)
#define ERROR_INTERNAL_ERROR __MSABI_LONG(1359)
#define ERROR_GENERIC_NOT_MAPPED __MSABI_LONG(1360)
#define ERROR_BAD_DESCRIPTOR_FORMAT __MSABI_LONG(1361)
#define ERROR_NOT_LOGON_PROCESS __MSABI_LONG(1362)
#define ERROR_LOGON_SESSION_EXISTS __MSABI_LONG(1363)
#define ERROR_NO_SUCH_PACKAGE __MSABI_LONG(1364)
#define ERROR_BAD_LOGON_SESSION_STATE __MSABI_LONG(1365)
#define ERROR_LOGON_SESSION_COLLISION __MSABI_LONG(1366)
#define ERROR_INVALID_LOGON_TYPE __MSABI_LONG(1367)
#define ERROR_CANNOT_IMPERSONATE __MSABI_LONG(1368)
#define ERROR_RXACT_INVALID_STATE __MSABI_LONG(1369)
#define ERROR_RXACT_COMMIT_FAILURE __MSABI_LONG(1370)
#define ERROR_SPECIAL_ACCOUNT __MSABI_LONG(1371)
#define ERROR_SPECIAL_GROUP __MSABI_LONG(1372)
#define ERROR_SPECIAL_USER __MSABI_LONG(1373)
#define ERROR_MEMBERS_PRIMARY_GROUP __MSABI_LONG(1374)
#define ERROR_TOKEN_ALREADY_IN_USE __MSABI_LONG(1375)
#define ERROR_NO_SUCH_ALIAS __MSABI_LONG(1376)
#define ERROR_MEMBER_NOT_IN_ALIAS __MSABI_LONG(1377)
#define ERROR_MEMBER_IN_ALIAS __MSABI_LONG(1378)
#define ERROR_ALIAS_EXISTS __MSABI_LONG(1379)
#define ERROR_LOGON_NOT_GRANTED __MSABI_LONG(1380)
#define ERROR_TOO_MANY_SECRETS __MSABI_LONG(1381)
#define ERROR_SECRET_TOO_LONG __MSABI_LONG(1382)
#define ERROR_INTERNAL_DB_ERROR __MSABI_LONG(1383)
#define ERROR_TOO_MANY_CONTEXT_IDS __MSABI_LONG(1384)
#define ERROR_LOGON_TYPE_NOT_GRANTED __MSABI_LONG(1385)
#define ERROR_NT_CROSS_ENCRYPTION_REQUIRED __MSABI_LONG(1386)
#define ERROR_NO_SUCH_MEMBER __MSABI_LONG(1387)
#define ERROR_INVALID_MEMBER __MSABI_LONG(1388)
#define ERROR_TOO_MANY_SIDS __MSABI_LONG(1389)
#define ERROR_LM_CROSS_ENCRYPTION_REQUIRED __MSABI_LONG(1390)
#define ERROR_NO_INHERITANCE __MSABI_LONG(1391)
#define ERROR_FILE_CORRUPT __MSABI_LONG(1392)
#define ERROR_DISK_CORRUPT __MSABI_LONG(1393)
#define ERROR_NO_USER_SESSION_KEY __MSABI_LONG(1394)
#define ERROR_LICENSE_QUOTA_EXCEEDED __MSABI_LONG(1395)
#define ERROR_WRONG_TARGET_NAME __MSABI_LONG(1396)
#define ERROR_MUTUAL_AUTH_FAILED __MSABI_LONG(1397)
#define ERROR_TIME_SKEW __MSABI_LONG(1398)
#define ERROR_CURRENT_DOMAIN_NOT_ALLOWED __MSABI_LONG(1399)
#define ERROR_INVALID_WINDOW_HANDLE __MSABI_LONG(1400)
#define ERROR_INVALID_MENU_HANDLE __MSABI_LONG(1401)
#define ERROR_INVALID_CURSOR_HANDLE __MSABI_LONG(1402)
#define ERROR_INVALID_ACCEL_HANDLE __MSABI_LONG(1403)
#define ERROR_INVALID_HOOK_HANDLE __MSABI_LONG(1404)
#define ERROR_INVALID_DWP_HANDLE __MSABI_LONG(1405)
#define ERROR_TLW_WITH_WSCHILD __MSABI_LONG(1406)
#define ERROR_CANNOT_FIND_WND_CLASS __MSABI_LONG(1407)
#define ERROR_WINDOW_OF_OTHER_THREAD __MSABI_LONG(1408)
#define ERROR_HOTKEY_ALREADY_REGISTERED __MSABI_LONG(1409)
#define ERROR_CLASS_ALREADY_EXISTS __MSABI_LONG(1410)
#define ERROR_CLASS_DOES_NOT_EXIST __MSABI_LONG(1411)
#define ERROR_CLASS_HAS_WINDOWS __MSABI_LONG(1412)
#define ERROR_INVALID_INDEX __MSABI_LONG(1413)
#define ERROR_INVALID_ICON_HANDLE __MSABI_LONG(1414)
#define ERROR_PRIVATE_DIALOG_INDEX __MSABI_LONG(1415)
#define ERROR_LISTBOX_ID_NOT_FOUND __MSABI_LONG(1416)
#define ERROR_NO_WILDCARD_CHARACTERS __MSABI_LONG(1417)
#define ERROR_CLIPBOARD_NOT_OPEN __MSABI_LONG(1418)
#define ERROR_HOTKEY_NOT_REGISTERED __MSABI_LONG(1419)
#define ERROR_WINDOW_NOT_DIALOG __MSABI_LONG(1420)
#define ERROR_CONTROL_ID_NOT_FOUND __MSABI_LONG(1421)
#define ERROR_INVALID_COMBOBOX_MESSAGE __MSABI_LONG(1422)
#define ERROR_WINDOW_NOT_COMBOBOX __MSABI_LONG(1423)
#define ERROR_INVALID_EDIT_HEIGHT __MSABI_LONG(1424)
#define ERROR_DC_NOT_FOUND __MSABI_LONG(1425)
#define ERROR_INVALID_HOOK_FILTER __MSABI_LONG(1426)
#define ERROR_INVALID_FILTER_PROC __MSABI_LONG(1427)
#define ERROR_HOOK_NEEDS_HMOD __MSABI_LONG(1428)
#define ERROR_GLOBAL_ONLY_HOOK __MSABI_LONG(1429)
#define ERROR_JOURNAL_HOOK_SET __MSABI_LONG(1430)
#define ERROR_HOOK_NOT_INSTALLED __MSABI_LONG(1431)
#define ERROR_INVALID_LB_MESSAGE __MSABI_LONG(1432)
#define ERROR_SETCOUNT_ON_BAD_LB __MSABI_LONG(1433)
#define ERROR_LB_WITHOUT_TABSTOPS __MSABI_LONG(1434)
#define ERROR_DESTROY_OBJECT_OF_OTHER_THREAD __MSABI_LONG(1435)
#define ERROR_CHILD_WINDOW_MENU __MSABI_LONG(1436)
#define ERROR_NO_SYSTEM_MENU __MSABI_LONG(1437)
#define ERROR_INVALID_MSGBOX_STYLE __MSABI_LONG(1438)
#define ERROR_INVALID_SPI_VALUE __MSABI_LONG(1439)
#define ERROR_SCREEN_ALREADY_LOCKED __MSABI_LONG(1440)
#define ERROR_HWNDS_HAVE_DIFF_PARENT __MSABI_LONG(1441)
#define ERROR_NOT_CHILD_WINDOW __MSABI_LONG(1442)
#define ERROR_INVALID_GW_COMMAND __MSABI_LONG(1443)
#define ERROR_INVALID_THREAD_ID __MSABI_LONG(1444)
#define ERROR_NON_MDICHILD_WINDOW __MSABI_LONG(1445)
#define ERROR_POPUP_ALREADY_ACTIVE __MSABI_LONG(1446)
#define ERROR_NO_SCROLLBARS __MSABI_LONG(1447)
#define ERROR_INVALID_SCROLLBAR_RANGE __MSABI_LONG(1448)
#define ERROR_INVALID_SHOWWIN_COMMAND __MSABI_LONG(1449)
#define ERROR_NO_SYSTEM_RESOURCES __MSABI_LONG(1450)
#define ERROR_NONPAGED_SYSTEM_RESOURCES __MSABI_LONG(1451)
#define ERROR_PAGED_SYSTEM_RESOURCES __MSABI_LONG(1452)
#define ERROR_WORKING_SET_QUOTA __MSABI_LONG(1453)
#define ERROR_PAGEFILE_QUOTA __MSABI_LONG(1454)
#define ERROR_COMMITMENT_LIMIT __MSABI_LONG(1455)
#define ERROR_MENU_ITEM_NOT_FOUND __MSABI_LONG(1456)
#define ERROR_INVALID_KEYBOARD_HANDLE __MSABI_LONG(1457)
#define ERROR_HOOK_TYPE_NOT_ALLOWED __MSABI_LONG(1458)
#define ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION __MSABI_LONG(1459)
#define ERROR_TIMEOUT __MSABI_LONG(1460)
#define ERROR_INVALID_MONITOR_HANDLE __MSABI_LONG(1461)
#define ERROR_INCORRECT_SIZE __MSABI_LONG(1462)
#define ERROR_SYMLINK_CLASS_DISABLED __MSABI_LONG(1463)
#define ERROR_SYMLINK_NOT_SUPPORTED __MSABI_LONG(1464)
#define ERROR_XML_PARSE_ERROR __MSABI_LONG(1465)
#define ERROR_XMLDSIG_ERROR __MSABI_LONG(1466)
#define ERROR_RESTART_APPLICATION __MSABI_LONG(1467)
#define ERROR_WRONG_COMPARTMENT __MSABI_LONG(1468)
#define ERROR_AUTHIP_FAILURE __MSABI_LONG(1469)
#define ERROR_NO_NVRAM_RESOURCES __MSABI_LONG(1470)
#define ERROR_NOT_GUI_PROCESS __MSABI_LONG(1471)
#define ERROR_EVENTLOG_FILE_CORRUPT __MSABI_LONG(1500)
#define ERROR_EVENTLOG_CANT_START __MSABI_LONG(1501)
#define ERROR_LOG_FILE_FULL __MSABI_LONG(1502)
#define ERROR_EVENTLOG_FILE_CHANGED __MSABI_LONG(1503)
#define ERROR_INSTALL_SERVICE_FAILURE __MSABI_LONG(1601)
#define ERROR_INSTALL_USEREXIT __MSABI_LONG(1602)
#define ERROR_INSTALL_FAILURE __MSABI_LONG(1603)
#define ERROR_INSTALL_SUSPEND __MSABI_LONG(1604)
#define ERROR_UNKNOWN_PRODUCT __MSABI_LONG(1605)
#define ERROR_UNKNOWN_FEATURE __MSABI_LONG(1606)
#define ERROR_UNKNOWN_COMPONENT __MSABI_LONG(1607)
#define ERROR_UNKNOWN_PROPERTY __MSABI_LONG(1608)
#define ERROR_INVALID_HANDLE_STATE __MSABI_LONG(1609)
#define ERROR_BAD_CONFIGURATION __MSABI_LONG(1610)
#define ERROR_INDEX_ABSENT __MSABI_LONG(1611)
#define ERROR_INSTALL_SOURCE_ABSENT __MSABI_LONG(1612)
#define ERROR_INSTALL_PACKAGE_VERSION __MSABI_LONG(1613)
#define ERROR_PRODUCT_UNINSTALLED __MSABI_LONG(1614)
#define ERROR_BAD_QUERY_SYNTAX __MSABI_LONG(1615)
#define ERROR_INVALID_FIELD __MSABI_LONG(1616)
#define ERROR_DEVICE_REMOVED __MSABI_LONG(1617)
#define ERROR_INSTALL_ALREADY_RUNNING __MSABI_LONG(1618)
#define ERROR_INSTALL_PACKAGE_OPEN_FAILED __MSABI_LONG(1619)
#define ERROR_INSTALL_PACKAGE_INVALID __MSABI_LONG(1620)
#define ERROR_INSTALL_UI_FAILURE __MSABI_LONG(1621)
#define ERROR_INSTALL_LOG_FAILURE __MSABI_LONG(1622)
#define ERROR_INSTALL_LANGUAGE_UNSUPPORTED __MSABI_LONG(1623)
#define ERROR_INSTALL_TRANSFORM_FAILURE __MSABI_LONG(1624)
#define ERROR_INSTALL_PACKAGE_REJECTED __MSABI_LONG(1625)
#define ERROR_FUNCTION_NOT_CALLED __MSABI_LONG(1626)
#define ERROR_FUNCTION_FAILED __MSABI_LONG(1627)
#define ERROR_INVALID_TABLE __MSABI_LONG(1628)
#define ERROR_DATATYPE_MISMATCH __MSABI_LONG(1629)
#define ERROR_UNSUPPORTED_TYPE __MSABI_LONG(1630)
#define ERROR_CREATE_FAILED __MSABI_LONG(1631)
#define ERROR_INSTALL_TEMP_UNWRITABLE __MSABI_LONG(1632)
#define ERROR_INSTALL_PLATFORM_UNSUPPORTED __MSABI_LONG(1633)
#define ERROR_INSTALL_NOTUSED __MSABI_LONG(1634)
#define ERROR_PATCH_PACKAGE_OPEN_FAILED __MSABI_LONG(1635)
#define ERROR_PATCH_PACKAGE_INVALID __MSABI_LONG(1636)
#define ERROR_PATCH_PACKAGE_UNSUPPORTED __MSABI_LONG(1637)
#define ERROR_PRODUCT_VERSION __MSABI_LONG(1638)
#define ERROR_INVALID_COMMAND_LINE __MSABI_LONG(1639)
#define ERROR_INSTALL_REMOTE_DISALLOWED __MSABI_LONG(1640)
#define ERROR_SUCCESS_REBOOT_INITIATED __MSABI_LONG(1641)
#define ERROR_PATCH_TARGET_NOT_FOUND __MSABI_LONG(1642)
#define ERROR_PATCH_PACKAGE_REJECTED __MSABI_LONG(1643)
#define ERROR_INSTALL_TRANSFORM_REJECTED __MSABI_LONG(1644)
#define ERROR_INSTALL_REMOTE_PROHIBITED __MSABI_LONG(1645)
#define RPC_S_INVALID_STRING_BINDING __MSABI_LONG(1700)
#define RPC_S_WRONG_KIND_OF_BINDING __MSABI_LONG(1701)
#define RPC_S_INVALID_BINDING __MSABI_LONG(1702)
#define RPC_S_PROTSEQ_NOT_SUPPORTED __MSABI_LONG(1703)
#define RPC_S_INVALID_RPC_PROTSEQ __MSABI_LONG(1704)
#define RPC_S_INVALID_STRING_UUID __MSABI_LONG(1705)
#define RPC_S_INVALID_ENDPOINT_FORMAT __MSABI_LONG(1706)
#define RPC_S_INVALID_NET_ADDR __MSABI_LONG(1707)
#define RPC_S_NO_ENDPOINT_FOUND __MSABI_LONG(1708)
#define RPC_S_INVALID_TIMEOUT __MSABI_LONG(1709)
#define RPC_S_OBJECT_NOT_FOUND __MSABI_LONG(1710)
#define RPC_S_ALREADY_REGISTERED __MSABI_LONG(1711)
#define RPC_S_TYPE_ALREADY_REGISTERED __MSABI_LONG(1712)
#define RPC_S_ALREADY_LISTENING __MSABI_LONG(1713)
#define RPC_S_NO_PROTSEQS_REGISTERED __MSABI_LONG(1714)
#define RPC_S_NOT_LISTENING __MSABI_LONG(1715)
#define RPC_S_UNKNOWN_MGR_TYPE __MSABI_LONG(1716)
#define RPC_S_UNKNOWN_IF __MSABI_LONG(1717)
#define RPC_S_NO_BINDINGS __MSABI_LONG(1718)
#define RPC_S_NO_PROTSEQS __MSABI_LONG(1719)
#define RPC_S_CANT_CREATE_ENDPOINT __MSABI_LONG(1720)
#define RPC_S_OUT_OF_RESOURCES __MSABI_LONG(1721)
#define RPC_S_SERVER_UNAVAILABLE __MSABI_LONG(1722)
#define RPC_S_SERVER_TOO_BUSY __MSABI_LONG(1723)
#define RPC_S_INVALID_NETWORK_OPTIONS __MSABI_LONG(1724)
#define RPC_S_NO_CALL_ACTIVE __MSABI_LONG(1725)
#define RPC_S_CALL_FAILED __MSABI_LONG(1726)
#define RPC_S_CALL_FAILED_DNE __MSABI_LONG(1727)
#define RPC_S_PROTOCOL_ERROR __MSABI_LONG(1728)
#define RPC_S_PROXY_ACCESS_DENIED __MSABI_LONG(1729)
#define RPC_S_UNSUPPORTED_TRANS_SYN __MSABI_LONG(1730)
#define RPC_S_UNSUPPORTED_TYPE __MSABI_LONG(1732)
#define RPC_S_INVALID_TAG __MSABI_LONG(1733)
#define RPC_S_INVALID_BOUND __MSABI_LONG(1734)
#define RPC_S_NO_ENTRY_NAME __MSABI_LONG(1735)
#define RPC_S_INVALID_NAME_SYNTAX __MSABI_LONG(1736)
#define RPC_S_UNSUPPORTED_NAME_SYNTAX __MSABI_LONG(1737)
#define RPC_S_UUID_NO_ADDRESS __MSABI_LONG(1739)
#define RPC_S_DUPLICATE_ENDPOINT __MSABI_LONG(1740)
#define RPC_S_UNKNOWN_AUTHN_TYPE __MSABI_LONG(1741)
#define RPC_S_MAX_CALLS_TOO_SMALL __MSABI_LONG(1742)
#define RPC_S_STRING_TOO_LONG __MSABI_LONG(1743)
#define RPC_S_PROTSEQ_NOT_FOUND __MSABI_LONG(1744)
#define RPC_S_PROCNUM_OUT_OF_RANGE __MSABI_LONG(1745)
#define RPC_S_BINDING_HAS_NO_AUTH __MSABI_LONG(1746)
#define RPC_S_UNKNOWN_AUTHN_SERVICE __MSABI_LONG(1747)
#define RPC_S_UNKNOWN_AUTHN_LEVEL __MSABI_LONG(1748)
#define RPC_S_INVALID_AUTH_IDENTITY __MSABI_LONG(1749)
#define RPC_S_UNKNOWN_AUTHZ_SERVICE __MSABI_LONG(1750)
#define EPT_S_INVALID_ENTRY __MSABI_LONG(1751)
#define EPT_S_CANT_PERFORM_OP __MSABI_LONG(1752)
#define EPT_S_NOT_REGISTERED __MSABI_LONG(1753)
#define RPC_S_NOTHING_TO_EXPORT __MSABI_LONG(1754)
#define RPC_S_INCOMPLETE_NAME __MSABI_LONG(1755)
#define RPC_S_INVALID_VERS_OPTION __MSABI_LONG(1756)
#define RPC_S_NO_MORE_MEMBERS __MSABI_LONG(1757)
#define RPC_S_NOT_ALL_OBJS_UNEXPORTED __MSABI_LONG(1758)
#define RPC_S_INTERFACE_NOT_FOUND __MSABI_LONG(1759)
#define RPC_S_ENTRY_ALREADY_EXISTS __MSABI_LONG(1760)
#define RPC_S_ENTRY_NOT_FOUND __MSABI_LONG(1761)
#define RPC_S_NAME_SERVICE_UNAVAILABLE __MSABI_LONG(1762)
#define RPC_S_INVALID_NAF_ID __MSABI_LONG(1763)
#define RPC_S_CANNOT_SUPPORT __MSABI_LONG(1764)
#define RPC_S_NO_CONTEXT_AVAILABLE __MSABI_LONG(1765)
#define RPC_S_INTERNAL_ERROR __MSABI_LONG(1766)
#define RPC_S_ZERO_DIVIDE __MSABI_LONG(1767)
#define RPC_S_ADDRESS_ERROR __MSABI_LONG(1768)
#define RPC_S_FP_DIV_ZERO __MSABI_LONG(1769)
#define RPC_S_FP_UNDERFLOW __MSABI_LONG(1770)
#define RPC_S_FP_OVERFLOW __MSABI_LONG(1771)
#define RPC_X_NO_MORE_ENTRIES __MSABI_LONG(1772)
#define RPC_X_SS_CHAR_TRANS_OPEN_FAIL __MSABI_LONG(1773)
#define RPC_X_SS_CHAR_TRANS_SHORT_FILE __MSABI_LONG(1774)
#define RPC_X_SS_IN_NULL_CONTEXT __MSABI_LONG(1775)
#define RPC_X_SS_CONTEXT_DAMAGED __MSABI_LONG(1777)
#define RPC_X_SS_HANDLES_MISMATCH __MSABI_LONG(1778)
#define RPC_X_SS_CANNOT_GET_CALL_HANDLE __MSABI_LONG(1779)
#define RPC_X_NULL_REF_POINTER __MSABI_LONG(1780)
#define RPC_X_ENUM_VALUE_OUT_OF_RANGE __MSABI_LONG(1781)
#define RPC_X_BYTE_COUNT_TOO_SMALL __MSABI_LONG(1782)
#define RPC_X_BAD_STUB_DATA __MSABI_LONG(1783)
#define ERROR_INVALID_USER_BUFFER __MSABI_LONG(1784)
#define ERROR_UNRECOGNIZED_MEDIA __MSABI_LONG(1785)
#define ERROR_NO_TRUST_LSA_SECRET __MSABI_LONG(1786)
#define ERROR_NO_TRUST_SAM_ACCOUNT __MSABI_LONG(1787)
#define ERROR_TRUSTED_DOMAIN_FAILURE __MSABI_LONG(1788)
#define ERROR_TRUSTED_RELATIONSHIP_FAILURE __MSABI_LONG(1789)
#define ERROR_TRUST_FAILURE __MSABI_LONG(1790)
#define RPC_S_CALL_IN_PROGRESS __MSABI_LONG(1791)
#define ERROR_NETLOGON_NOT_STARTED __MSABI_LONG(1792)
#define ERROR_ACCOUNT_EXPIRED __MSABI_LONG(1793)
#define ERROR_REDIRECTOR_HAS_OPEN_HANDLES __MSABI_LONG(1794)
#define ERROR_PRINTER_DRIVER_ALREADY_INSTALLED __MSABI_LONG(1795)
#define ERROR_UNKNOWN_PORT __MSABI_LONG(1796)
#define ERROR_UNKNOWN_PRINTER_DRIVER __MSABI_LONG(1797)
#define ERROR_UNKNOWN_PRINTPROCESSOR __MSABI_LONG(1798)
#define ERROR_INVALID_SEPARATOR_FILE __MSABI_LONG(1799)
#define ERROR_INVALID_PRIORITY __MSABI_LONG(1800)
#define ERROR_INVALID_PRINTER_NAME __MSABI_LONG(1801)
#define ERROR_PRINTER_ALREADY_EXISTS __MSABI_LONG(1802)
#define ERROR_INVALID_PRINTER_COMMAND __MSABI_LONG(1803)
#define ERROR_INVALID_DATATYPE __MSABI_LONG(1804)
#define ERROR_INVALID_ENVIRONMENT __MSABI_LONG(1805)
#define RPC_S_NO_MORE_BINDINGS __MSABI_LONG(1806)
#define ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT __MSABI_LONG(1807)
#define ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT __MSABI_LONG(1808)
#define ERROR_NOLOGON_SERVER_TRUST_ACCOUNT __MSABI_LONG(1809)
#define ERROR_DOMAIN_TRUST_INCONSISTENT __MSABI_LONG(1810)
#define ERROR_SERVER_HAS_OPEN_HANDLES __MSABI_LONG(1811)
#define ERROR_RESOURCE_DATA_NOT_FOUND __MSABI_LONG(1812)
#define ERROR_RESOURCE_TYPE_NOT_FOUND __MSABI_LONG(1813)
#define ERROR_RESOURCE_NAME_NOT_FOUND __MSABI_LONG(1814)
#define ERROR_RESOURCE_LANG_NOT_FOUND __MSABI_LONG(1815)
#define ERROR_NOT_ENOUGH_QUOTA __MSABI_LONG(1816)
#define RPC_S_NO_INTERFACES __MSABI_LONG(1817)
#define RPC_S_CALL_CANCELLED __MSABI_LONG(1818)
#define RPC_S_BINDING_INCOMPLETE __MSABI_LONG(1819)
#define RPC_S_COMM_FAILURE __MSABI_LONG(1820)
#define RPC_S_UNSUPPORTED_AUTHN_LEVEL __MSABI_LONG(1821)
#define RPC_S_NO_PRINC_NAME __MSABI_LONG(1822)
#define RPC_S_NOT_RPC_ERROR __MSABI_LONG(1823)
#define RPC_S_UUID_LOCAL_ONLY __MSABI_LONG(1824)
#define RPC_S_SEC_PKG_ERROR __MSABI_LONG(1825)
#define RPC_S_NOT_CANCELLED __MSABI_LONG(1826)
#define RPC_X_INVALID_ES_ACTION __MSABI_LONG(1827)
#define RPC_X_WRONG_ES_VERSION __MSABI_LONG(1828)
#define RPC_X_WRONG_STUB_VERSION __MSABI_LONG(1829)
#define RPC_X_INVALID_PIPE_OBJECT __MSABI_LONG(1830)
#define RPC_X_WRONG_PIPE_ORDER __MSABI_LONG(1831)
#define RPC_X_WRONG_PIPE_VERSION __MSABI_LONG(1832)
#define RPC_S_COOKIE_AUTH_FAILED __MSABI_LONG(1833)
#define RPC_S_DO_NOT_DISTURB __MSABI_LONG(1834)
#define RPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED __MSABI_LONG(1835)
#define RPC_S_SYSTEM_HANDLE_TYPE_MISMATCH __MSABI_LONG(1836)
#define RPC_S_GROUP_MEMBER_NOT_FOUND __MSABI_LONG(1898)
#define EPT_S_CANT_CREATE __MSABI_LONG(1899)
#define RPC_S_INVALID_OBJECT __MSABI_LONG(1900)
#define ERROR_INVALID_TIME __MSABI_LONG(1901)
#define ERROR_INVALID_FORM_NAME __MSABI_LONG(1902)
#define ERROR_INVALID_FORM_SIZE __MSABI_LONG(1903)
#define ERROR_ALREADY_WAITING __MSABI_LONG(1904)
#define ERROR_PRINTER_DELETED __MSABI_LONG(1905)
#define ERROR_INVALID_PRINTER_STATE __MSABI_LONG(1906)
#define ERROR_PASSWORD_MUST_CHANGE __MSABI_LONG(1907)
#define ERROR_DOMAIN_CONTROLLER_NOT_FOUND __MSABI_LONG(1908)
#define ERROR_ACCOUNT_LOCKED_OUT __MSABI_LONG(1909)
#define OR_INVALID_OXID __MSABI_LONG(1910)
#define OR_INVALID_OID __MSABI_LONG(1911)
#define OR_INVALID_SET __MSABI_LONG(1912)
#define RPC_S_SEND_INCOMPLETE __MSABI_LONG(1913)
#define RPC_S_INVALID_ASYNC_HANDLE __MSABI_LONG(1914)
#define RPC_S_INVALID_ASYNC_CALL __MSABI_LONG(1915)
#define RPC_X_PIPE_CLOSED __MSABI_LONG(1916)
#define RPC_X_PIPE_DISCIPLINE_ERROR __MSABI_LONG(1917)
#define RPC_X_PIPE_EMPTY __MSABI_LONG(1918)
#define ERROR_NO_SITENAME __MSABI_LONG(1919)
#define ERROR_CANT_ACCESS_FILE __MSABI_LONG(1920)
#define ERROR_CANT_RESOLVE_FILENAME __MSABI_LONG(1921)
#define RPC_S_ENTRY_TYPE_MISMATCH __MSABI_LONG(1922)
#define RPC_S_NOT_ALL_OBJS_EXPORTED __MSABI_LONG(1923)
#define RPC_S_INTERFACE_NOT_EXPORTED __MSABI_LONG(1924)
#define RPC_S_PROFILE_NOT_ADDED __MSABI_LONG(1925)
#define RPC_S_PRF_ELT_NOT_ADDED __MSABI_LONG(1926)
#define RPC_S_PRF_ELT_NOT_REMOVED __MSABI_LONG(1927)
#define RPC_S_GRP_ELT_NOT_ADDED __MSABI_LONG(1928)
#define RPC_S_GRP_ELT_NOT_REMOVED __MSABI_LONG(1929)
#define ERROR_KM_DRIVER_BLOCKED __MSABI_LONG(1930)
#define ERROR_CONTEXT_EXPIRED __MSABI_LONG(1931)
#define ERROR_PER_USER_TRUST_QUOTA_EXCEEDED __MSABI_LONG(1932)
#define ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED __MSABI_LONG(1933)
#define ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED __MSABI_LONG(1934)
#define ERROR_AUTHENTICATION_FIREWALL_FAILED __MSABI_LONG(1935)
#define ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED __MSABI_LONG(1936)
#define ERROR_INVALID_PIXEL_FORMAT __MSABI_LONG(2000)
#define ERROR_BAD_DRIVER __MSABI_LONG(2001)
#define ERROR_INVALID_WINDOW_STYLE __MSABI_LONG(2002)
#define ERROR_METAFILE_NOT_SUPPORTED __MSABI_LONG(2003)
#define ERROR_TRANSFORM_NOT_SUPPORTED __MSABI_LONG(2004)
#define ERROR_CLIPPING_NOT_SUPPORTED __MSABI_LONG(2005)
#define ERROR_INVALID_CMM __MSABI_LONG(2010)
#define ERROR_INVALID_PROFILE __MSABI_LONG(2011)
#define ERROR_TAG_NOT_FOUND __MSABI_LONG(2012)
#define ERROR_TAG_NOT_PRESENT __MSABI_LONG(2013)
#define ERROR_DUPLICATE_TAG __MSABI_LONG(2014)
#define ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE __MSABI_LONG(2015)
#define ERROR_PROFILE_NOT_FOUND __MSABI_LONG(2016)
#define ERROR_INVALID_COLORSPACE __MSABI_LONG(2017)
#define ERROR_ICM_NOT_ENABLED __MSABI_LONG(2018)
#define ERROR_DELETING_ICM_XFORM __MSABI_LONG(2019)
#define ERROR_INVALID_TRANSFORM __MSABI_LONG(2020)
#define ERROR_COLORSPACE_MISMATCH __MSABI_LONG(2021)
#define ERROR_INVALID_COLORINDEX __MSABI_LONG(2022)
#define ERROR_CONNECTED_OTHER_PASSWORD __MSABI_LONG(2108)
#define ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT __MSABI_LONG(2109)
#define ERROR_BAD_USERNAME __MSABI_LONG(2202)
#define ERROR_NOT_CONNECTED __MSABI_LONG(2250)
#define ERROR_OPEN_FILES __MSABI_LONG(2401)
#define ERROR_ACTIVE_CONNECTIONS __MSABI_LONG(2402)
#define ERROR_DEVICE_IN_USE __MSABI_LONG(2404)
#define ERROR_UNKNOWN_PRINT_MONITOR __MSABI_LONG(3000)
#define ERROR_PRINTER_DRIVER_IN_USE __MSABI_LONG(3001)
#define ERROR_SPOOL_FILE_NOT_FOUND __MSABI_LONG(3002)
#define ERROR_SPL_NO_STARTDOC __MSABI_LONG(3003)
#define ERROR_SPL_NO_ADDJOB __MSABI_LONG(3004)
#define ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED __MSABI_LONG(3005)
#define ERROR_PRINT_MONITOR_ALREADY_INSTALLED __MSABI_LONG(3006)
#define ERROR_INVALID_PRINT_MONITOR __MSABI_LONG(3007)
#define ERROR_PRINT_MONITOR_IN_USE __MSABI_LONG(3008)
#define ERROR_PRINTER_HAS_JOBS_QUEUED __MSABI_LONG(3009)
#define ERROR_SUCCESS_REBOOT_REQUIRED __MSABI_LONG(3010)
#define ERROR_SUCCESS_RESTART_REQUIRED __MSABI_LONG(3011)
#define ERROR_PRINTER_NOT_FOUND __MSABI_LONG(3012)
#define ERROR_PRINTER_DRIVER_WARNED __MSABI_LONG(3013)
#define ERROR_PRINTER_DRIVER_BLOCKED __MSABI_LONG(3014)
#define ERROR_WINS_INTERNAL __MSABI_LONG(4000)
#define ERROR_CAN_NOT_DEL_LOCAL_WINS __MSABI_LONG(4001)
#define ERROR_STATIC_INIT __MSABI_LONG(4002)
#define ERROR_INC_BACKUP __MSABI_LONG(4003)
#define ERROR_FULL_BACKUP __MSABI_LONG(4004)
#define ERROR_REC_NON_EXISTENT __MSABI_LONG(4005)
#define ERROR_RPL_NOT_ALLOWED __MSABI_LONG(4006)
#define ERROR_DHCP_ADDRESS_CONFLICT __MSABI_LONG(4100)
#define ERROR_WMI_GUID_NOT_FOUND __MSABI_LONG(4200)
#define ERROR_WMI_INSTANCE_NOT_FOUND __MSABI_LONG(4201)
#define ERROR_WMI_ITEMID_NOT_FOUND __MSABI_LONG(4202)
#define ERROR_WMI_TRY_AGAIN __MSABI_LONG(4203)
#define ERROR_WMI_DP_NOT_FOUND __MSABI_LONG(4204)
#define ERROR_WMI_UNRESOLVED_INSTANCE_REF __MSABI_LONG(4205)
#define ERROR_WMI_ALREADY_ENABLED __MSABI_LONG(4206)
#define ERROR_WMI_GUID_DISCONNECTED __MSABI_LONG(4207)
#define ERROR_WMI_SERVER_UNAVAILABLE __MSABI_LONG(4208)
#define ERROR_WMI_DP_FAILED __MSABI_LONG(4209)
#define ERROR_WMI_INVALID_MOF __MSABI_LONG(4210)
#define ERROR_WMI_INVALID_REGINFO __MSABI_LONG(4211)
#define ERROR_WMI_ALREADY_DISABLED __MSABI_LONG(4212)
#define ERROR_WMI_READ_ONLY __MSABI_LONG(4213)
#define ERROR_WMI_SET_FAILURE __MSABI_LONG(4214)
#define ERROR_INVALID_MEDIA __MSABI_LONG(4300)
#define ERROR_INVALID_LIBRARY __MSABI_LONG(4301)
#define ERROR_INVALID_MEDIA_POOL __MSABI_LONG(4302)
#define ERROR_DRIVE_MEDIA_MISMATCH __MSABI_LONG(4303)
#define ERROR_MEDIA_OFFLINE __MSABI_LONG(4304)
#define ERROR_LIBRARY_OFFLINE __MSABI_LONG(4305)
#define ERROR_EMPTY __MSABI_LONG(4306)
#define ERROR_NOT_EMPTY __MSABI_LONG(4307)
#define ERROR_MEDIA_UNAVAILABLE __MSABI_LONG(4308)
#define ERROR_RESOURCE_DISABLED __MSABI_LONG(4309)
#define ERROR_INVALID_CLEANER __MSABI_LONG(4310)
#define ERROR_UNABLE_TO_CLEAN __MSABI_LONG(4311)
#define ERROR_OBJECT_NOT_FOUND __MSABI_LONG(4312)
#define ERROR_DATABASE_FAILURE __MSABI_LONG(4313)
#define ERROR_DATABASE_FULL __MSABI_LONG(4314)
#define ERROR_MEDIA_INCOMPATIBLE __MSABI_LONG(4315)
#define ERROR_RESOURCE_NOT_PRESENT __MSABI_LONG(4316)
#define ERROR_INVALID_OPERATION __MSABI_LONG(4317)
#define ERROR_MEDIA_NOT_AVAILABLE __MSABI_LONG(4318)
#define ERROR_DEVICE_NOT_AVAILABLE __MSABI_LONG(4319)
#define ERROR_REQUEST_REFUSED __MSABI_LONG(4320)
#define ERROR_INVALID_DRIVE_OBJECT __MSABI_LONG(4321)
#define ERROR_LIBRARY_FULL __MSABI_LONG(4322)
#define ERROR_MEDIUM_NOT_ACCESSIBLE __MSABI_LONG(4323)
#define ERROR_UNABLE_TO_LOAD_MEDIUM __MSABI_LONG(4324)
#define ERROR_UNABLE_TO_INVENTORY_DRIVE __MSABI_LONG(4325)
#define ERROR_UNABLE_TO_INVENTORY_SLOT __MSABI_LONG(4326)
#define ERROR_UNABLE_TO_INVENTORY_TRANSPORT __MSABI_LONG(4327)
#define ERROR_TRANSPORT_FULL __MSABI_LONG(4328)
#define ERROR_CONTROLLING_IEPORT __MSABI_LONG(4329)
#define ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA __MSABI_LONG(4330)
#define ERROR_CLEANER_SLOT_SET __MSABI_LONG(4331)
#define ERROR_CLEANER_SLOT_NOT_SET __MSABI_LONG(4332)
#define ERROR_CLEANER_CARTRIDGE_SPENT __MSABI_LONG(4333)
#define ERROR_UNEXPECTED_OMID __MSABI_LONG(4334)
#define ERROR_CANT_DELETE_LAST_ITEM __MSABI_LONG(4335)
#define ERROR_MESSAGE_EXCEEDS_MAX_SIZE __MSABI_LONG(4336)
#define ERROR_VOLUME_CONTAINS_SYS_FILES __MSABI_LONG(4337)
#define ERROR_INDIGENOUS_TYPE __MSABI_LONG(4338)
#define ERROR_NO_SUPPORTING_DRIVES __MSABI_LONG(4339)
#define ERROR_CLEANER_CARTRIDGE_INSTALLED __MSABI_LONG(4340)
#define ERROR_IEPORT_FULL __MSABI_LONG(4341)
#define ERROR_FILE_OFFLINE __MSABI_LONG(4350)
#define ERROR_REMOTE_STORAGE_NOT_ACTIVE __MSABI_LONG(4351)
#define ERROR_REMOTE_STORAGE_MEDIA_ERROR __MSABI_LONG(4352)
#define ERROR_NOT_A_REPARSE_POINT __MSABI_LONG(4390)
#define ERROR_REPARSE_ATTRIBUTE_CONFLICT __MSABI_LONG(4391)
#define ERROR_INVALID_REPARSE_DATA __MSABI_LONG(4392)
#define ERROR_REPARSE_TAG_INVALID __MSABI_LONG(4393)
#define ERROR_REPARSE_TAG_MISMATCH __MSABI_LONG(4394)
#define ERROR_VOLUME_NOT_SIS_ENABLED __MSABI_LONG(4500)
#define ERROR_DEPENDENT_RESOURCE_EXISTS __MSABI_LONG(5001)
#define ERROR_DEPENDENCY_NOT_FOUND __MSABI_LONG(5002)
#define ERROR_DEPENDENCY_ALREADY_EXISTS __MSABI_LONG(5003)
#define ERROR_RESOURCE_NOT_ONLINE __MSABI_LONG(5004)
#define ERROR_HOST_NODE_NOT_AVAILABLE __MSABI_LONG(5005)
#define ERROR_RESOURCE_NOT_AVAILABLE __MSABI_LONG(5006)
#define ERROR_RESOURCE_NOT_FOUND __MSABI_LONG(5007)
#define ERROR_SHUTDOWN_CLUSTER __MSABI_LONG(5008)
#define ERROR_CANT_EVICT_ACTIVE_NODE __MSABI_LONG(5009)
#define ERROR_OBJECT_ALREADY_EXISTS __MSABI_LONG(5010)
#define ERROR_OBJECT_IN_LIST __MSABI_LONG(5011)
#define ERROR_GROUP_NOT_AVAILABLE __MSABI_LONG(5012)
#define ERROR_GROUP_NOT_FOUND __MSABI_LONG(5013)
#define ERROR_GROUP_NOT_ONLINE __MSABI_LONG(5014)
#define ERROR_HOST_NODE_NOT_RESOURCE_OWNER __MSABI_LONG(5015)
#define ERROR_HOST_NODE_NOT_GROUP_OWNER __MSABI_LONG(5016)
#define ERROR_RESMON_CREATE_FAILED __MSABI_LONG(5017)
#define ERROR_RESMON_ONLINE_FAILED __MSABI_LONG(5018)
#define ERROR_RESOURCE_ONLINE __MSABI_LONG(5019)
#define ERROR_QUORUM_RESOURCE __MSABI_LONG(5020)
#define ERROR_NOT_QUORUM_CAPABLE __MSABI_LONG(5021)
#define ERROR_CLUSTER_SHUTTING_DOWN __MSABI_LONG(5022)
#define ERROR_INVALID_STATE __MSABI_LONG(5023)
#define ERROR_RESOURCE_PROPERTIES_STORED __MSABI_LONG(5024)
#define ERROR_NOT_QUORUM_CLASS __MSABI_LONG(5025)
#define ERROR_CORE_RESOURCE __MSABI_LONG(5026)
#define ERROR_QUORUM_RESOURCE_ONLINE_FAILED __MSABI_LONG(5027)
#define ERROR_QUORUMLOG_OPEN_FAILED __MSABI_LONG(5028)
#define ERROR_CLUSTERLOG_CORRUPT __MSABI_LONG(5029)
#define ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE __MSABI_LONG(5030)
#define ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE __MSABI_LONG(5031)
#define ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND __MSABI_LONG(5032)
#define ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE __MSABI_LONG(5033)
#define ERROR_QUORUM_OWNER_ALIVE __MSABI_LONG(5034)
#define ERROR_NETWORK_NOT_AVAILABLE __MSABI_LONG(5035)
#define ERROR_NODE_NOT_AVAILABLE __MSABI_LONG(5036)
#define ERROR_ALL_NODES_NOT_AVAILABLE __MSABI_LONG(5037)
#define ERROR_RESOURCE_FAILED __MSABI_LONG(5038)
#define ERROR_CLUSTER_INVALID_NODE __MSABI_LONG(5039)
#define ERROR_CLUSTER_NODE_EXISTS __MSABI_LONG(5040)
#define ERROR_CLUSTER_JOIN_IN_PROGRESS __MSABI_LONG(5041)
#define ERROR_CLUSTER_NODE_NOT_FOUND __MSABI_LONG(5042)
#define ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND __MSABI_LONG(5043)
#define ERROR_CLUSTER_NETWORK_EXISTS __MSABI_LONG(5044)
#define ERROR_CLUSTER_NETWORK_NOT_FOUND __MSABI_LONG(5045)
#define ERROR_CLUSTER_NETINTERFACE_EXISTS __MSABI_LONG(5046)
#define ERROR_CLUSTER_NETINTERFACE_NOT_FOUND __MSABI_LONG(5047)
#define ERROR_CLUSTER_INVALID_REQUEST __MSABI_LONG(5048)
#define ERROR_CLUSTER_INVALID_NETWORK_PROVIDER __MSABI_LONG(5049)
#define ERROR_CLUSTER_NODE_DOWN __MSABI_LONG(5050)
#define ERROR_CLUSTER_NODE_UNREACHABLE __MSABI_LONG(5051)
#define ERROR_CLUSTER_NODE_NOT_MEMBER __MSABI_LONG(5052)
#define ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS __MSABI_LONG(5053)
#define ERROR_CLUSTER_INVALID_NETWORK __MSABI_LONG(5054)
#define ERROR_CLUSTER_NODE_UP __MSABI_LONG(5056)
#define ERROR_CLUSTER_IPADDR_IN_USE __MSABI_LONG(5057)
#define ERROR_CLUSTER_NODE_NOT_PAUSED __MSABI_LONG(5058)
#define ERROR_CLUSTER_NO_SECURITY_CONTEXT __MSABI_LONG(5059)
#define ERROR_CLUSTER_NETWORK_NOT_INTERNAL __MSABI_LONG(5060)
#define ERROR_CLUSTER_NODE_ALREADY_UP __MSABI_LONG(5061)
#define ERROR_CLUSTER_NODE_ALREADY_DOWN __MSABI_LONG(5062)
#define ERROR_CLUSTER_NETWORK_ALREADY_ONLINE __MSABI_LONG(5063)
#define ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE __MSABI_LONG(5064)
#define ERROR_CLUSTER_NODE_ALREADY_MEMBER __MSABI_LONG(5065)
#define ERROR_CLUSTER_LAST_INTERNAL_NETWORK __MSABI_LONG(5066)
#define ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS __MSABI_LONG(5067)
#define ERROR_INVALID_OPERATION_ON_QUORUM __MSABI_LONG(5068)
#define ERROR_DEPENDENCY_NOT_ALLOWED __MSABI_LONG(5069)
#define ERROR_CLUSTER_NODE_PAUSED __MSABI_LONG(5070)
#define ERROR_NODE_CANT_HOST_RESOURCE __MSABI_LONG(5071)
#define ERROR_CLUSTER_NODE_NOT_READY __MSABI_LONG(5072)
#define ERROR_CLUSTER_NODE_SHUTTING_DOWN __MSABI_LONG(5073)
#define ERROR_CLUSTER_JOIN_ABORTED __MSABI_LONG(5074)
#define ERROR_CLUSTER_INCOMPATIBLE_VERSIONS __MSABI_LONG(5075)
#define ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED __MSABI_LONG(5076)
#define ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED __MSABI_LONG(5077)
#define ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND __MSABI_LONG(5078)
#define ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED __MSABI_LONG(5079)
#define ERROR_CLUSTER_RESNAME_NOT_FOUND __MSABI_LONG(5080)
#define ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED __MSABI_LONG(5081)
#define ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST __MSABI_LONG(5082)
#define ERROR_CLUSTER_DATABASE_SEQMISMATCH __MSABI_LONG(5083)
#define ERROR_RESMON_INVALID_STATE __MSABI_LONG(5084)
#define ERROR_CLUSTER_GUM_NOT_LOCKER __MSABI_LONG(5085)
#define ERROR_QUORUM_DISK_NOT_FOUND __MSABI_LONG(5086)
#define ERROR_DATABASE_BACKUP_CORRUPT __MSABI_LONG(5087)
#define ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT __MSABI_LONG(5088)
#define ERROR_RESOURCE_PROPERTY_UNCHANGEABLE __MSABI_LONG(5089)
#define ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE __MSABI_LONG(5890)
#define ERROR_CLUSTER_QUORUMLOG_NOT_FOUND __MSABI_LONG(5891)
#define ERROR_CLUSTER_MEMBERSHIP_HALT __MSABI_LONG(5892)
#define ERROR_CLUSTER_INSTANCE_ID_MISMATCH __MSABI_LONG(5893)
#define ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP __MSABI_LONG(5894)
#define ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH __MSABI_LONG(5895)
#define ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP __MSABI_LONG(5896)
#define ERROR_CLUSTER_PARAMETER_MISMATCH __MSABI_LONG(5897)
#define ERROR_NODE_CANNOT_BE_CLUSTERED __MSABI_LONG(5898)
#define ERROR_CLUSTER_WRONG_OS_VERSION __MSABI_LONG(5899)
#define ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME __MSABI_LONG(5900)
#define ERROR_CLUSCFG_ALREADY_COMMITTED __MSABI_LONG(5901)
#define ERROR_CLUSCFG_ROLLBACK_FAILED __MSABI_LONG(5902)
#define ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT __MSABI_LONG(5903)
#define ERROR_CLUSTER_OLD_VERSION __MSABI_LONG(5904)
#define ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME __MSABI_LONG(5905)
#define ERROR_ENCRYPTION_FAILED __MSABI_LONG(6000)
#define ERROR_DECRYPTION_FAILED __MSABI_LONG(6001)
#define ERROR_FILE_ENCRYPTED __MSABI_LONG(6002)
#define ERROR_NO_RECOVERY_POLICY __MSABI_LONG(6003)
#define ERROR_NO_EFS __MSABI_LONG(6004)
#define ERROR_WRONG_EFS __MSABI_LONG(6005)
#define ERROR_NO_USER_KEYS __MSABI_LONG(6006)
#define ERROR_FILE_NOT_ENCRYPTED __MSABI_LONG(6007)
#define ERROR_NOT_EXPORT_FORMAT __MSABI_LONG(6008)
#define ERROR_FILE_READ_ONLY __MSABI_LONG(6009)
#define ERROR_DIR_EFS_DISALLOWED __MSABI_LONG(6010)
#define ERROR_EFS_SERVER_NOT_TRUSTED __MSABI_LONG(6011)
#define ERROR_BAD_RECOVERY_POLICY __MSABI_LONG(6012)
#define ERROR_EFS_ALG_BLOB_TOO_BIG __MSABI_LONG(6013)
#define ERROR_VOLUME_NOT_SUPPORT_EFS __MSABI_LONG(6014)
#define ERROR_EFS_DISABLED __MSABI_LONG(6015)
#define ERROR_EFS_VERSION_NOT_SUPPORT __MSABI_LONG(6016)
#define ERROR_NO_BROWSER_SERVERS_FOUND __MSABI_LONG(6118)
#define SCHED_E_SERVICE_NOT_LOCALSYSTEM __MSABI_LONG(6200)
#define ERROR_CTX_WINSTATION_NAME_INVALID __MSABI_LONG(7001)
#define ERROR_CTX_INVALID_PD __MSABI_LONG(7002)
#define ERROR_CTX_PD_NOT_FOUND __MSABI_LONG(7003)
#define ERROR_CTX_WD_NOT_FOUND __MSABI_LONG(7004)
#define ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY __MSABI_LONG(7005)
#define ERROR_CTX_SERVICE_NAME_COLLISION __MSABI_LONG(7006)
#define ERROR_CTX_CLOSE_PENDING __MSABI_LONG(7007)
#define ERROR_CTX_NO_OUTBUF __MSABI_LONG(7008)
#define ERROR_CTX_MODEM_INF_NOT_FOUND __MSABI_LONG(7009)
#define ERROR_CTX_INVALID_MODEMNAME __MSABI_LONG(7010)
#define ERROR_CTX_MODEM_RESPONSE_ERROR __MSABI_LONG(7011)
#define ERROR_CTX_MODEM_RESPONSE_TIMEOUT __MSABI_LONG(7012)
#define ERROR_CTX_MODEM_RESPONSE_NO_CARRIER __MSABI_LONG(7013)
#define ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE __MSABI_LONG(7014)
#define ERROR_CTX_MODEM_RESPONSE_BUSY __MSABI_LONG(7015)
#define ERROR_CTX_MODEM_RESPONSE_VOICE __MSABI_LONG(7016)
#define ERROR_CTX_TD_ERROR __MSABI_LONG(7017)
#define ERROR_CTX_WINSTATION_NOT_FOUND __MSABI_LONG(7022)
#define ERROR_CTX_WINSTATION_ALREADY_EXISTS __MSABI_LONG(7023)
#define ERROR_CTX_WINSTATION_BUSY __MSABI_LONG(7024)
#define ERROR_CTX_BAD_VIDEO_MODE __MSABI_LONG(7025)
#define ERROR_CTX_GRAPHICS_INVALID __MSABI_LONG(7035)
#define ERROR_CTX_LOGON_DISABLED __MSABI_LONG(7037)
#define ERROR_CTX_NOT_CONSOLE __MSABI_LONG(7038)
#define ERROR_CTX_CLIENT_QUERY_TIMEOUT __MSABI_LONG(7040)
#define ERROR_CTX_CONSOLE_DISCONNECT __MSABI_LONG(7041)
#define ERROR_CTX_CONSOLE_CONNECT __MSABI_LONG(7042)
#define ERROR_CTX_SHADOW_DENIED __MSABI_LONG(7044)
#define ERROR_CTX_WINSTATION_ACCESS_DENIED __MSABI_LONG(7045)
#define ERROR_CTX_INVALID_WD __MSABI_LONG(7049)
#define ERROR_CTX_SHADOW_INVALID __MSABI_LONG(7050)
#define ERROR_CTX_SHADOW_DISABLED __MSABI_LONG(7051)
#define ERROR_CTX_CLIENT_LICENSE_IN_USE __MSABI_LONG(7052)
#define ERROR_CTX_CLIENT_LICENSE_NOT_SET __MSABI_LONG(7053)
#define ERROR_CTX_LICENSE_NOT_AVAILABLE __MSABI_LONG(7054)
#define ERROR_CTX_LICENSE_CLIENT_INVALID __MSABI_LONG(7055)
#define ERROR_CTX_LICENSE_EXPIRED __MSABI_LONG(7056)
#define ERROR_CTX_SHADOW_NOT_RUNNING __MSABI_LONG(7057)
#define ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE __MSABI_LONG(7058)
#define ERROR_ACTIVATION_COUNT_EXCEEDED __MSABI_LONG(7059)
#define FRS_ERR_INVALID_API_SEQUENCE __MSABI_LONG(8001)
#define FRS_ERR_STARTING_SERVICE __MSABI_LONG(8002)
#define FRS_ERR_STOPPING_SERVICE __MSABI_LONG(8003)
#define FRS_ERR_INTERNAL_API __MSABI_LONG(8004)
#define FRS_ERR_INTERNAL __MSABI_LONG(8005)
#define FRS_ERR_SERVICE_COMM __MSABI_LONG(8006)
#define FRS_ERR_INSUFFICIENT_PRIV __MSABI_LONG(8007)
#define FRS_ERR_AUTHENTICATION __MSABI_LONG(8008)
#define FRS_ERR_PARENT_INSUFFICIENT_PRIV __MSABI_LONG(8009)
#define FRS_ERR_PARENT_AUTHENTICATION __MSABI_LONG(8010)
#define FRS_ERR_CHILD_TO_PARENT_COMM __MSABI_LONG(8011)
#define FRS_ERR_PARENT_TO_CHILD_COMM __MSABI_LONG(8012)
#define FRS_ERR_SYSVOL_POPULATE __MSABI_LONG(8013)
#define FRS_ERR_SYSVOL_POPULATE_TIMEOUT __MSABI_LONG(8014)
#define FRS_ERR_SYSVOL_IS_BUSY __MSABI_LONG(8015)
#define FRS_ERR_SYSVOL_DEMOTE __MSABI_LONG(8016)
#define FRS_ERR_INVALID_SERVICE_PARAMETER __MSABI_LONG(8017)
#define DS_S_SUCCESS NO_ERROR
#define ERROR_DS_NOT_INSTALLED __MSABI_LONG(8200)
#define ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY __MSABI_LONG(8201)
#define ERROR_DS_NO_ATTRIBUTE_OR_VALUE __MSABI_LONG(8202)
#define ERROR_DS_INVALID_ATTRIBUTE_SYNTAX __MSABI_LONG(8203)
#define ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED __MSABI_LONG(8204)
#define ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS __MSABI_LONG(8205)
#define ERROR_DS_BUSY __MSABI_LONG(8206)
#define ERROR_DS_UNAVAILABLE __MSABI_LONG(8207)
#define ERROR_DS_NO_RIDS_ALLOCATED __MSABI_LONG(8208)
#define ERROR_DS_NO_MORE_RIDS __MSABI_LONG(8209)
#define ERROR_DS_INCORRECT_ROLE_OWNER __MSABI_LONG(8210)
#define ERROR_DS_RIDMGR_INIT_ERROR __MSABI_LONG(8211)
#define ERROR_DS_OBJ_CLASS_VIOLATION __MSABI_LONG(8212)
#define ERROR_DS_CANT_ON_NON_LEAF __MSABI_LONG(8213)
#define ERROR_DS_CANT_ON_RDN __MSABI_LONG(8214)
#define ERROR_DS_CANT_MOD_OBJ_CLASS __MSABI_LONG(8215)
#define ERROR_DS_CROSS_DOM_MOVE_ERROR __MSABI_LONG(8216)
#define ERROR_DS_GC_NOT_AVAILABLE __MSABI_LONG(8217)
#define ERROR_SHARED_POLICY __MSABI_LONG(8218)
#define ERROR_POLICY_OBJECT_NOT_FOUND __MSABI_LONG(8219)
#define ERROR_POLICY_ONLY_IN_DS __MSABI_LONG(8220)
#define ERROR_PROMOTION_ACTIVE __MSABI_LONG(8221)
#define ERROR_NO_PROMOTION_ACTIVE __MSABI_LONG(8222)
#define ERROR_DS_OPERATIONS_ERROR __MSABI_LONG(8224)
#define ERROR_DS_PROTOCOL_ERROR __MSABI_LONG(8225)
#define ERROR_DS_TIMELIMIT_EXCEEDED __MSABI_LONG(8226)
#define ERROR_DS_SIZELIMIT_EXCEEDED __MSABI_LONG(8227)
#define ERROR_DS_ADMIN_LIMIT_EXCEEDED __MSABI_LONG(8228)
#define ERROR_DS_COMPARE_FALSE __MSABI_LONG(8229)
#define ERROR_DS_COMPARE_TRUE __MSABI_LONG(8230)
#define ERROR_DS_AUTH_METHOD_NOT_SUPPORTED __MSABI_LONG(8231)
#define ERROR_DS_STRONG_AUTH_REQUIRED __MSABI_LONG(8232)
#define ERROR_DS_INAPPROPRIATE_AUTH __MSABI_LONG(8233)
#define ERROR_DS_AUTH_UNKNOWN __MSABI_LONG(8234)
#define ERROR_DS_REFERRAL __MSABI_LONG(8235)
#define ERROR_DS_UNAVAILABLE_CRIT_EXTENSION __MSABI_LONG(8236)
#define ERROR_DS_CONFIDENTIALITY_REQUIRED __MSABI_LONG(8237)
#define ERROR_DS_INAPPROPRIATE_MATCHING __MSABI_LONG(8238)
#define ERROR_DS_CONSTRAINT_VIOLATION __MSABI_LONG(8239)
#define ERROR_DS_NO_SUCH_OBJECT __MSABI_LONG(8240)
#define ERROR_DS_ALIAS_PROBLEM __MSABI_LONG(8241)
#define ERROR_DS_INVALID_DN_SYNTAX __MSABI_LONG(8242)
#define ERROR_DS_IS_LEAF __MSABI_LONG(8243)
#define ERROR_DS_ALIAS_DEREF_PROBLEM __MSABI_LONG(8244)
#define ERROR_DS_UNWILLING_TO_PERFORM __MSABI_LONG(8245)
#define ERROR_DS_LOOP_DETECT __MSABI_LONG(8246)
#define ERROR_DS_NAMING_VIOLATION __MSABI_LONG(8247)
#define ERROR_DS_OBJECT_RESULTS_TOO_LARGE __MSABI_LONG(8248)
#define ERROR_DS_AFFECTS_MULTIPLE_DSAS __MSABI_LONG(8249)
#define ERROR_DS_SERVER_DOWN __MSABI_LONG(8250)
#define ERROR_DS_LOCAL_ERROR __MSABI_LONG(8251)
#define ERROR_DS_ENCODING_ERROR __MSABI_LONG(8252)
#define ERROR_DS_DECODING_ERROR __MSABI_LONG(8253)
#define ERROR_DS_FILTER_UNKNOWN __MSABI_LONG(8254)
#define ERROR_DS_PARAM_ERROR __MSABI_LONG(8255)
#define ERROR_DS_NOT_SUPPORTED __MSABI_LONG(8256)
#define ERROR_DS_NO_RESULTS_RETURNED __MSABI_LONG(8257)
#define ERROR_DS_CONTROL_NOT_FOUND __MSABI_LONG(8258)
#define ERROR_DS_CLIENT_LOOP __MSABI_LONG(8259)
#define ERROR_DS_REFERRAL_LIMIT_EXCEEDED __MSABI_LONG(8260)
#define ERROR_DS_SORT_CONTROL_MISSING __MSABI_LONG(8261)
#define ERROR_DS_OFFSET_RANGE_ERROR __MSABI_LONG(8262)
#define ERROR_DS_ROOT_MUST_BE_NC __MSABI_LONG(8301)
#define ERROR_DS_ADD_REPLICA_INHIBITED __MSABI_LONG(8302)
#define ERROR_DS_ATT_NOT_DEF_IN_SCHEMA __MSABI_LONG(8303)
#define ERROR_DS_MAX_OBJ_SIZE_EXCEEDED __MSABI_LONG(8304)
#define ERROR_DS_OBJ_STRING_NAME_EXISTS __MSABI_LONG(8305)
#define ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA __MSABI_LONG(8306)
#define ERROR_DS_RDN_DOESNT_MATCH_SCHEMA __MSABI_LONG(8307)
#define ERROR_DS_NO_REQUESTED_ATTS_FOUND __MSABI_LONG(8308)
#define ERROR_DS_USER_BUFFER_TO_SMALL __MSABI_LONG(8309)
#define ERROR_DS_ATT_IS_NOT_ON_OBJ __MSABI_LONG(8310)
#define ERROR_DS_ILLEGAL_MOD_OPERATION __MSABI_LONG(8311)
#define ERROR_DS_OBJ_TOO_LARGE __MSABI_LONG(8312)
#define ERROR_DS_BAD_INSTANCE_TYPE __MSABI_LONG(8313)
#define ERROR_DS_MASTERDSA_REQUIRED __MSABI_LONG(8314)
#define ERROR_DS_OBJECT_CLASS_REQUIRED __MSABI_LONG(8315)
#define ERROR_DS_MISSING_REQUIRED_ATT __MSABI_LONG(8316)
#define ERROR_DS_ATT_NOT_DEF_FOR_CLASS __MSABI_LONG(8317)
#define ERROR_DS_ATT_ALREADY_EXISTS __MSABI_LONG(8318)
#define ERROR_DS_CANT_ADD_ATT_VALUES __MSABI_LONG(8320)
#define ERROR_DS_SINGLE_VALUE_CONSTRAINT __MSABI_LONG(8321)
#define ERROR_DS_RANGE_CONSTRAINT __MSABI_LONG(8322)
#define ERROR_DS_ATT_VAL_ALREADY_EXISTS __MSABI_LONG(8323)
#define ERROR_DS_CANT_REM_MISSING_ATT __MSABI_LONG(8324)
#define ERROR_DS_CANT_REM_MISSING_ATT_VAL __MSABI_LONG(8325)
#define ERROR_DS_ROOT_CANT_BE_SUBREF __MSABI_LONG(8326)
#define ERROR_DS_NO_CHAINING __MSABI_LONG(8327)
#define ERROR_DS_NO_CHAINED_EVAL __MSABI_LONG(8328)
#define ERROR_DS_NO_PARENT_OBJECT __MSABI_LONG(8329)
#define ERROR_DS_PARENT_IS_AN_ALIAS __MSABI_LONG(8330)
#define ERROR_DS_CANT_MIX_MASTER_AND_REPS __MSABI_LONG(8331)
#define ERROR_DS_CHILDREN_EXIST __MSABI_LONG(8332)
#define ERROR_DS_OBJ_NOT_FOUND __MSABI_LONG(8333)
#define ERROR_DS_ALIASED_OBJ_MISSING __MSABI_LONG(8334)
#define ERROR_DS_BAD_NAME_SYNTAX __MSABI_LONG(8335)
#define ERROR_DS_ALIAS_POINTS_TO_ALIAS __MSABI_LONG(8336)
#define ERROR_DS_CANT_DEREF_ALIAS __MSABI_LONG(8337)
#define ERROR_DS_OUT_OF_SCOPE __MSABI_LONG(8338)
#define ERROR_DS_OBJECT_BEING_REMOVED __MSABI_LONG(8339)
#define ERROR_DS_CANT_DELETE_DSA_OBJ __MSABI_LONG(8340)
#define ERROR_DS_GENERIC_ERROR __MSABI_LONG(8341)
#define ERROR_DS_DSA_MUST_BE_INT_MASTER __MSABI_LONG(8342)
#define ERROR_DS_CLASS_NOT_DSA __MSABI_LONG(8343)
#define ERROR_DS_INSUFF_ACCESS_RIGHTS __MSABI_LONG(8344)
#define ERROR_DS_ILLEGAL_SUPERIOR __MSABI_LONG(8345)
#define ERROR_DS_ATTRIBUTE_OWNED_BY_SAM __MSABI_LONG(8346)
#define ERROR_DS_NAME_TOO_MANY_PARTS __MSABI_LONG(8347)
#define ERROR_DS_NAME_TOO_LONG __MSABI_LONG(8348)
#define ERROR_DS_NAME_VALUE_TOO_LONG __MSABI_LONG(8349)
#define ERROR_DS_NAME_UNPARSEABLE __MSABI_LONG(8350)
#define ERROR_DS_NAME_TYPE_UNKNOWN __MSABI_LONG(8351)
#define ERROR_DS_NOT_AN_OBJECT __MSABI_LONG(8352)
#define ERROR_DS_SEC_DESC_TOO_SHORT __MSABI_LONG(8353)
#define ERROR_DS_SEC_DESC_INVALID __MSABI_LONG(8354)
#define ERROR_DS_NO_DELETED_NAME __MSABI_LONG(8355)
#define ERROR_DS_SUBREF_MUST_HAVE_PARENT __MSABI_LONG(8356)
#define ERROR_DS_NCNAME_MUST_BE_NC __MSABI_LONG(8357)
#define ERROR_DS_CANT_ADD_SYSTEM_ONLY __MSABI_LONG(8358)
#define ERROR_DS_CLASS_MUST_BE_CONCRETE __MSABI_LONG(8359)
#define ERROR_DS_INVALID_DMD __MSABI_LONG(8360)
#define ERROR_DS_OBJ_GUID_EXISTS __MSABI_LONG(8361)
#define ERROR_DS_NOT_ON_BACKLINK __MSABI_LONG(8362)
#define ERROR_DS_NO_CROSSREF_FOR_NC __MSABI_LONG(8363)
#define ERROR_DS_SHUTTING_DOWN __MSABI_LONG(8364)
#define ERROR_DS_UNKNOWN_OPERATION __MSABI_LONG(8365)
#define ERROR_DS_INVALID_ROLE_OWNER __MSABI_LONG(8366)
#define ERROR_DS_COULDNT_CONTACT_FSMO __MSABI_LONG(8367)
#define ERROR_DS_CROSS_NC_DN_RENAME __MSABI_LONG(8368)
#define ERROR_DS_CANT_MOD_SYSTEM_ONLY __MSABI_LONG(8369)
#define ERROR_DS_REPLICATOR_ONLY __MSABI_LONG(8370)
#define ERROR_DS_OBJ_CLASS_NOT_DEFINED __MSABI_LONG(8371)
#define ERROR_DS_OBJ_CLASS_NOT_SUBCLASS __MSABI_LONG(8372)
#define ERROR_DS_NAME_REFERENCE_INVALID __MSABI_LONG(8373)
#define ERROR_DS_CROSS_REF_EXISTS __MSABI_LONG(8374)
#define ERROR_DS_CANT_DEL_MASTER_CROSSREF __MSABI_LONG(8375)
#define ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD __MSABI_LONG(8376)
#define ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX __MSABI_LONG(8377)
#define ERROR_DS_DUP_RDN __MSABI_LONG(8378)
#define ERROR_DS_DUP_OID __MSABI_LONG(8379)
#define ERROR_DS_DUP_MAPI_ID __MSABI_LONG(8380)
#define ERROR_DS_DUP_SCHEMA_ID_GUID __MSABI_LONG(8381)
#define ERROR_DS_DUP_LDAP_DISPLAY_NAME __MSABI_LONG(8382)
#define ERROR_DS_SEMANTIC_ATT_TEST __MSABI_LONG(8383)
#define ERROR_DS_SYNTAX_MISMATCH __MSABI_LONG(8384)
#define ERROR_DS_EXISTS_IN_MUST_HAVE __MSABI_LONG(8385)
#define ERROR_DS_EXISTS_IN_MAY_HAVE __MSABI_LONG(8386)
#define ERROR_DS_NONEXISTENT_MAY_HAVE __MSABI_LONG(8387)
#define ERROR_DS_NONEXISTENT_MUST_HAVE __MSABI_LONG(8388)
#define ERROR_DS_AUX_CLS_TEST_FAIL __MSABI_LONG(8389)
#define ERROR_DS_NONEXISTENT_POSS_SUP __MSABI_LONG(8390)
#define ERROR_DS_SUB_CLS_TEST_FAIL __MSABI_LONG(8391)
#define ERROR_DS_BAD_RDN_ATT_ID_SYNTAX __MSABI_LONG(8392)
#define ERROR_DS_EXISTS_IN_AUX_CLS __MSABI_LONG(8393)
#define ERROR_DS_EXISTS_IN_SUB_CLS __MSABI_LONG(8394)
#define ERROR_DS_EXISTS_IN_POSS_SUP __MSABI_LONG(8395)
#define ERROR_DS_RECALCSCHEMA_FAILED __MSABI_LONG(8396)
#define ERROR_DS_TREE_DELETE_NOT_FINISHED __MSABI_LONG(8397)
#define ERROR_DS_CANT_DELETE __MSABI_LONG(8398)
#define ERROR_DS_ATT_SCHEMA_REQ_ID __MSABI_LONG(8399)
#define ERROR_DS_BAD_ATT_SCHEMA_SYNTAX __MSABI_LONG(8400)
#define ERROR_DS_CANT_CACHE_ATT __MSABI_LONG(8401)
#define ERROR_DS_CANT_CACHE_CLASS __MSABI_LONG(8402)
#define ERROR_DS_CANT_REMOVE_ATT_CACHE __MSABI_LONG(8403)
#define ERROR_DS_CANT_REMOVE_CLASS_CACHE __MSABI_LONG(8404)
#define ERROR_DS_CANT_RETRIEVE_DN __MSABI_LONG(8405)
#define ERROR_DS_MISSING_SUPREF __MSABI_LONG(8406)
#define ERROR_DS_CANT_RETRIEVE_INSTANCE __MSABI_LONG(8407)
#define ERROR_DS_CODE_INCONSISTENCY __MSABI_LONG(8408)
#define ERROR_DS_DATABASE_ERROR __MSABI_LONG(8409)
#define ERROR_DS_GOVERNSID_MISSING __MSABI_LONG(8410)
#define ERROR_DS_MISSING_EXPECTED_ATT __MSABI_LONG(8411)
#define ERROR_DS_NCNAME_MISSING_CR_REF __MSABI_LONG(8412)
#define ERROR_DS_SECURITY_CHECKING_ERROR __MSABI_LONG(8413)
#define ERROR_DS_SCHEMA_NOT_LOADED __MSABI_LONG(8414)
#define ERROR_DS_SCHEMA_ALLOC_FAILED __MSABI_LONG(8415)
#define ERROR_DS_ATT_SCHEMA_REQ_SYNTAX __MSABI_LONG(8416)
#define ERROR_DS_GCVERIFY_ERROR __MSABI_LONG(8417)
#define ERROR_DS_DRA_SCHEMA_MISMATCH __MSABI_LONG(8418)
#define ERROR_DS_CANT_FIND_DSA_OBJ __MSABI_LONG(8419)
#define ERROR_DS_CANT_FIND_EXPECTED_NC __MSABI_LONG(8420)
#define ERROR_DS_CANT_FIND_NC_IN_CACHE __MSABI_LONG(8421)
#define ERROR_DS_CANT_RETRIEVE_CHILD __MSABI_LONG(8422)
#define ERROR_DS_SECURITY_ILLEGAL_MODIFY __MSABI_LONG(8423)
#define ERROR_DS_CANT_REPLACE_HIDDEN_REC __MSABI_LONG(8424)
#define ERROR_DS_BAD_HIERARCHY_FILE __MSABI_LONG(8425)
#define ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED __MSABI_LONG(8426)
#define ERROR_DS_CONFIG_PARAM_MISSING __MSABI_LONG(8427)
#define ERROR_DS_COUNTING_AB_INDICES_FAILED __MSABI_LONG(8428)
#define ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED __MSABI_LONG(8429)
#define ERROR_DS_INTERNAL_FAILURE __MSABI_LONG(8430)
#define ERROR_DS_UNKNOWN_ERROR __MSABI_LONG(8431)
#define ERROR_DS_ROOT_REQUIRES_CLASS_TOP __MSABI_LONG(8432)
#define ERROR_DS_REFUSING_FSMO_ROLES __MSABI_LONG(8433)
#define ERROR_DS_MISSING_FSMO_SETTINGS __MSABI_LONG(8434)
#define ERROR_DS_UNABLE_TO_SURRENDER_ROLES __MSABI_LONG(8435)
#define ERROR_DS_DRA_GENERIC __MSABI_LONG(8436)
#define ERROR_DS_DRA_INVALID_PARAMETER __MSABI_LONG(8437)
#define ERROR_DS_DRA_BUSY __MSABI_LONG(8438)
#define ERROR_DS_DRA_BAD_DN __MSABI_LONG(8439)
#define ERROR_DS_DRA_BAD_NC __MSABI_LONG(8440)
#define ERROR_DS_DRA_DN_EXISTS __MSABI_LONG(8441)
#define ERROR_DS_DRA_INTERNAL_ERROR __MSABI_LONG(8442)
#define ERROR_DS_DRA_INCONSISTENT_DIT __MSABI_LONG(8443)
#define ERROR_DS_DRA_CONNECTION_FAILED __MSABI_LONG(8444)
#define ERROR_DS_DRA_BAD_INSTANCE_TYPE __MSABI_LONG(8445)
#define ERROR_DS_DRA_OUT_OF_MEM __MSABI_LONG(8446)
#define ERROR_DS_DRA_MAIL_PROBLEM __MSABI_LONG(8447)
#define ERROR_DS_DRA_REF_ALREADY_EXISTS __MSABI_LONG(8448)
#define ERROR_DS_DRA_REF_NOT_FOUND __MSABI_LONG(8449)
#define ERROR_DS_DRA_OBJ_IS_REP_SOURCE __MSABI_LONG(8450)
#define ERROR_DS_DRA_DB_ERROR __MSABI_LONG(8451)
#define ERROR_DS_DRA_NO_REPLICA __MSABI_LONG(8452)
#define ERROR_DS_DRA_ACCESS_DENIED __MSABI_LONG(8453)
#define ERROR_DS_DRA_NOT_SUPPORTED __MSABI_LONG(8454)
#define ERROR_DS_DRA_RPC_CANCELLED __MSABI_LONG(8455)
#define ERROR_DS_DRA_SOURCE_DISABLED __MSABI_LONG(8456)
#define ERROR_DS_DRA_SINK_DISABLED __MSABI_LONG(8457)
#define ERROR_DS_DRA_NAME_COLLISION __MSABI_LONG(8458)
#define ERROR_DS_DRA_SOURCE_REINSTALLED __MSABI_LONG(8459)
#define ERROR_DS_DRA_MISSING_PARENT __MSABI_LONG(8460)
#define ERROR_DS_DRA_PREEMPTED __MSABI_LONG(8461)
#define ERROR_DS_DRA_ABANDON_SYNC __MSABI_LONG(8462)
#define ERROR_DS_DRA_SHUTDOWN __MSABI_LONG(8463)
#define ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET __MSABI_LONG(8464)
#define ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA __MSABI_LONG(8465)
#define ERROR_DS_DRA_EXTN_CONNECTION_FAILED __MSABI_LONG(8466)
#define ERROR_DS_INSTALL_SCHEMA_MISMATCH __MSABI_LONG(8467)
#define ERROR_DS_DUP_LINK_ID __MSABI_LONG(8468)
#define ERROR_DS_NAME_ERROR_RESOLVING __MSABI_LONG(8469)
#define ERROR_DS_NAME_ERROR_NOT_FOUND __MSABI_LONG(8470)
#define ERROR_DS_NAME_ERROR_NOT_UNIQUE __MSABI_LONG(8471)
#define ERROR_DS_NAME_ERROR_NO_MAPPING __MSABI_LONG(8472)
#define ERROR_DS_NAME_ERROR_DOMAIN_ONLY __MSABI_LONG(8473)
#define ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING __MSABI_LONG(8474)
#define ERROR_DS_CONSTRUCTED_ATT_MOD __MSABI_LONG(8475)
#define ERROR_DS_WRONG_OM_OBJ_CLASS __MSABI_LONG(8476)
#define ERROR_DS_DRA_REPL_PENDING __MSABI_LONG(8477)
#define ERROR_DS_DS_REQUIRED __MSABI_LONG(8478)
#define ERROR_DS_INVALID_LDAP_DISPLAY_NAME __MSABI_LONG(8479)
#define ERROR_DS_NON_BASE_SEARCH __MSABI_LONG(8480)
#define ERROR_DS_CANT_RETRIEVE_ATTS __MSABI_LONG(8481)
#define ERROR_DS_BACKLINK_WITHOUT_LINK __MSABI_LONG(8482)
#define ERROR_DS_EPOCH_MISMATCH __MSABI_LONG(8483)
#define ERROR_DS_SRC_NAME_MISMATCH __MSABI_LONG(8484)
#define ERROR_DS_SRC_AND_DST_NC_IDENTICAL __MSABI_LONG(8485)
#define ERROR_DS_DST_NC_MISMATCH __MSABI_LONG(8486)
#define ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC __MSABI_LONG(8487)
#define ERROR_DS_SRC_GUID_MISMATCH __MSABI_LONG(8488)
#define ERROR_DS_CANT_MOVE_DELETED_OBJECT __MSABI_LONG(8489)
#define ERROR_DS_PDC_OPERATION_IN_PROGRESS __MSABI_LONG(8490)
#define ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD __MSABI_LONG(8491)
#define ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION __MSABI_LONG(8492)
#define ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS __MSABI_LONG(8493)
#define ERROR_DS_NC_MUST_HAVE_NC_PARENT __MSABI_LONG(8494)
#define ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE __MSABI_LONG(8495)
#define ERROR_DS_DST_DOMAIN_NOT_NATIVE __MSABI_LONG(8496)
#define ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER __MSABI_LONG(8497)
#define ERROR_DS_CANT_MOVE_ACCOUNT_GROUP __MSABI_LONG(8498)
#define ERROR_DS_CANT_MOVE_RESOURCE_GROUP __MSABI_LONG(8499)
#define ERROR_DS_INVALID_SEARCH_FLAG __MSABI_LONG(8500)
#define ERROR_DS_NO_TREE_DELETE_ABOVE_NC __MSABI_LONG(8501)
#define ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE __MSABI_LONG(8502)
#define ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE __MSABI_LONG(8503)
#define ERROR_DS_SAM_INIT_FAILURE __MSABI_LONG(8504)
#define ERROR_DS_SENSITIVE_GROUP_VIOLATION __MSABI_LONG(8505)
#define ERROR_DS_CANT_MOD_PRIMARYGROUPID __MSABI_LONG(8506)
#define ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD __MSABI_LONG(8507)
#define ERROR_DS_NONSAFE_SCHEMA_CHANGE __MSABI_LONG(8508)
#define ERROR_DS_SCHEMA_UPDATE_DISALLOWED __MSABI_LONG(8509)
#define ERROR_DS_CANT_CREATE_UNDER_SCHEMA __MSABI_LONG(8510)
#define ERROR_DS_INSTALL_NO_SRC_SCH_VERSION __MSABI_LONG(8511)
#define ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE __MSABI_LONG(8512)
#define ERROR_DS_INVALID_GROUP_TYPE __MSABI_LONG(8513)
#define ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN __MSABI_LONG(8514)
#define ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN __MSABI_LONG(8515)
#define ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER __MSABI_LONG(8516)
#define ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER __MSABI_LONG(8517)
#define ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER __MSABI_LONG(8518)
#define ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER __MSABI_LONG(8519)
#define ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER __MSABI_LONG(8520)
#define ERROR_DS_HAVE_PRIMARY_MEMBERS __MSABI_LONG(8521)
#define ERROR_DS_STRING_SD_CONVERSION_FAILED __MSABI_LONG(8522)
#define ERROR_DS_NAMING_MASTER_GC __MSABI_LONG(8523)
#define ERROR_DS_DNS_LOOKUP_FAILURE __MSABI_LONG(8524)
#define ERROR_DS_COULDNT_UPDATE_SPNS __MSABI_LONG(8525)
#define ERROR_DS_CANT_RETRIEVE_SD __MSABI_LONG(8526)
#define ERROR_DS_KEY_NOT_UNIQUE __MSABI_LONG(8527)
#define ERROR_DS_WRONG_LINKED_ATT_SYNTAX __MSABI_LONG(8528)
#define ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD __MSABI_LONG(8529)
#define ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY __MSABI_LONG(8530)
#define ERROR_DS_CANT_START __MSABI_LONG(8531)
#define ERROR_DS_INIT_FAILURE __MSABI_LONG(8532)
#define ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION __MSABI_LONG(8533)
#define ERROR_DS_SOURCE_DOMAIN_IN_FOREST __MSABI_LONG(8534)
#define ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST __MSABI_LONG(8535)
#define ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED __MSABI_LONG(8536)
#define ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN __MSABI_LONG(8537)
#define ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER __MSABI_LONG(8538)
#define ERROR_DS_SRC_SID_EXISTS_IN_FOREST __MSABI_LONG(8539)
#define ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH __MSABI_LONG(8540)
#define ERROR_SAM_INIT_FAILURE __MSABI_LONG(8541)
#define ERROR_DS_DRA_SCHEMA_INFO_SHIP __MSABI_LONG(8542)
#define ERROR_DS_DRA_SCHEMA_CONFLICT __MSABI_LONG(8543)
#define ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT __MSABI_LONG(8544)
#define ERROR_DS_DRA_OBJ_NC_MISMATCH __MSABI_LONG(8545)
#define ERROR_DS_NC_STILL_HAS_DSAS __MSABI_LONG(8546)
#define ERROR_DS_GC_REQUIRED __MSABI_LONG(8547)
#define ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY __MSABI_LONG(8548)
#define ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS __MSABI_LONG(8549)
#define ERROR_DS_CANT_ADD_TO_GC __MSABI_LONG(8550)
#define ERROR_DS_NO_CHECKPOINT_WITH_PDC __MSABI_LONG(8551)
#define ERROR_DS_SOURCE_AUDITING_NOT_ENABLED __MSABI_LONG(8552)
#define ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC __MSABI_LONG(8553)
#define ERROR_DS_INVALID_NAME_FOR_SPN __MSABI_LONG(8554)
#define ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS __MSABI_LONG(8555)
#define ERROR_DS_UNICODEPWD_NOT_IN_QUOTES __MSABI_LONG(8556)
#define ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED __MSABI_LONG(8557)
#define ERROR_DS_MUST_BE_RUN_ON_DST_DC __MSABI_LONG(8558)
#define ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER __MSABI_LONG(8559)
#define ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ __MSABI_LONG(8560)
#define ERROR_DS_INIT_FAILURE_CONSOLE __MSABI_LONG(8561)
#define ERROR_DS_SAM_INIT_FAILURE_CONSOLE __MSABI_LONG(8562)
#define ERROR_DS_FOREST_VERSION_TOO_HIGH __MSABI_LONG(8563)
#define ERROR_DS_DOMAIN_VERSION_TOO_HIGH __MSABI_LONG(8564)
#define ERROR_DS_FOREST_VERSION_TOO_LOW __MSABI_LONG(8565)
#define ERROR_DS_DOMAIN_VERSION_TOO_LOW __MSABI_LONG(8566)
#define ERROR_DS_INCOMPATIBLE_VERSION __MSABI_LONG(8567)
#define ERROR_DS_LOW_DSA_VERSION __MSABI_LONG(8568)
#define ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN __MSABI_LONG(8569)
#define ERROR_DS_NOT_SUPPORTED_SORT_ORDER __MSABI_LONG(8570)
#define ERROR_DS_NAME_NOT_UNIQUE __MSABI_LONG(8571)
#define ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 __MSABI_LONG(8572)
#define ERROR_DS_OUT_OF_VERSION_STORE __MSABI_LONG(8573)
#define ERROR_DS_INCOMPATIBLE_CONTROLS_USED __MSABI_LONG(8574)
#define ERROR_DS_NO_REF_DOMAIN __MSABI_LONG(8575)
#define ERROR_DS_RESERVED_LINK_ID __MSABI_LONG(8576)
#define ERROR_DS_LINK_ID_NOT_AVAILABLE __MSABI_LONG(8577)
#define ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER __MSABI_LONG(8578)
#define ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE __MSABI_LONG(8579)
#define ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC __MSABI_LONG(8580)
#define ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG __MSABI_LONG(8581)
#define ERROR_DS_MODIFYDN_WRONG_GRANDPARENT __MSABI_LONG(8582)
#define ERROR_DS_NAME_ERROR_TRUST_REFERRAL __MSABI_LONG(8583)
#define ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER __MSABI_LONG(8584)
#define ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD __MSABI_LONG(8585)
#define ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 __MSABI_LONG(8586)
#define ERROR_DS_THREAD_LIMIT_EXCEEDED __MSABI_LONG(8587)
#define ERROR_DS_NOT_CLOSEST __MSABI_LONG(8588)
#define ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF __MSABI_LONG(8589)
#define ERROR_DS_SINGLE_USER_MODE_FAILED __MSABI_LONG(8590)
#define ERROR_DS_NTDSCRIPT_SYNTAX_ERROR __MSABI_LONG(8591)
#define ERROR_DS_NTDSCRIPT_PROCESS_ERROR __MSABI_LONG(8592)
#define ERROR_DS_DIFFERENT_REPL_EPOCHS __MSABI_LONG(8593)
#define ERROR_DS_DRS_EXTENSIONS_CHANGED __MSABI_LONG(8594)
#define ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR __MSABI_LONG(8595)
#define ERROR_DS_NO_MSDS_INTID __MSABI_LONG(8596)
#define ERROR_DS_DUP_MSDS_INTID __MSABI_LONG(8597)
#define ERROR_DS_EXISTS_IN_RDNATTID __MSABI_LONG(8598)
#define ERROR_DS_AUTHORIZATION_FAILED __MSABI_LONG(8599)
#define ERROR_DS_INVALID_SCRIPT __MSABI_LONG(8600)
#define ERROR_DS_REMOTE_CROSSREF_OP_FAILED __MSABI_LONG(8601)
#define ERROR_DS_CROSS_REF_BUSY __MSABI_LONG(8602)
#define ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN __MSABI_LONG(8603)
#define ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC __MSABI_LONG(8604)
#define ERROR_DS_DUPLICATE_ID_FOUND __MSABI_LONG(8605)
#define ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT __MSABI_LONG(8606)
#define ERROR_DS_GROUP_CONVERSION_ERROR __MSABI_LONG(8607)
#define ERROR_DS_CANT_MOVE_APP_BASIC_GROUP __MSABI_LONG(8608)
#define ERROR_DS_CANT_MOVE_APP_QUERY_GROUP __MSABI_LONG(8609)
#define ERROR_DS_ROLE_NOT_VERIFIED __MSABI_LONG(8610)
#define ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL __MSABI_LONG(8611)
#define ERROR_DS_DOMAIN_RENAME_IN_PROGRESS __MSABI_LONG(8612)
#define ERROR_DS_EXISTING_AD_CHILD_NC __MSABI_LONG(8613)
#define ERROR_DS_REPL_LIFETIME_EXCEEDED __MSABI_LONG(8614)
#define ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER __MSABI_LONG(8615)
#define ERROR_DS_LDAP_SEND_QUEUE_FULL __MSABI_LONG(8616)
#define ERROR_DS_DRA_OUT_SCHEDULE_WINDOW __MSABI_LONG(8617)
#define DNS_ERROR_RESPONSE_CODES_BASE 9000
#define DNS_ERROR_RCODE_NO_ERROR NO_ERROR
#define DNS_ERROR_MASK 0x00002328
#define DNS_ERROR_RCODE_FORMAT_ERROR __MSABI_LONG(9001)
#define DNS_ERROR_RCODE_SERVER_FAILURE __MSABI_LONG(9002)
#define DNS_ERROR_RCODE_NAME_ERROR __MSABI_LONG(9003)
#define DNS_ERROR_RCODE_NOT_IMPLEMENTED __MSABI_LONG(9004)
#define DNS_ERROR_RCODE_REFUSED __MSABI_LONG(9005)
#define DNS_ERROR_RCODE_YXDOMAIN __MSABI_LONG(9006)
#define DNS_ERROR_RCODE_YXRRSET __MSABI_LONG(9007)
#define DNS_ERROR_RCODE_NXRRSET __MSABI_LONG(9008)
#define DNS_ERROR_RCODE_NOTAUTH __MSABI_LONG(9009)
#define DNS_ERROR_RCODE_NOTZONE __MSABI_LONG(9010)
#define DNS_ERROR_RCODE_BADSIG __MSABI_LONG(9016)
#define DNS_ERROR_RCODE_BADKEY __MSABI_LONG(9017)
#define DNS_ERROR_RCODE_BADTIME __MSABI_LONG(9018)
#define DNS_ERROR_RCODE_LAST DNS_ERROR_RCODE_BADTIME
#define DNS_ERROR_PACKET_FMT_BASE 9500
#define DNS_INFO_NO_RECORDS __MSABI_LONG(9501)
#define DNS_ERROR_BAD_PACKET __MSABI_LONG(9502)
#define DNS_ERROR_NO_PACKET __MSABI_LONG(9503)
#define DNS_ERROR_RCODE __MSABI_LONG(9504)
#define DNS_ERROR_UNSECURE_PACKET __MSABI_LONG(9505)
#define DNS_STATUS_PACKET_UNSECURE DNS_ERROR_UNSECURE_PACKET
#define DNS_ERROR_NO_MEMORY ERROR_OUTOFMEMORY
#define DNS_ERROR_INVALID_NAME ERROR_INVALID_NAME
#define DNS_ERROR_INVALID_DATA ERROR_INVALID_DATA
#define DNS_ERROR_GENERAL_API_BASE 9550
#define DNS_ERROR_INVALID_TYPE __MSABI_LONG(9551)
#define DNS_ERROR_INVALID_IP_ADDRESS __MSABI_LONG(9552)
#define DNS_ERROR_INVALID_PROPERTY __MSABI_LONG(9553)
#define DNS_ERROR_TRY_AGAIN_LATER __MSABI_LONG(9554)
#define DNS_ERROR_NOT_UNIQUE __MSABI_LONG(9555)
#define DNS_ERROR_NON_RFC_NAME __MSABI_LONG(9556)
#define DNS_STATUS_FQDN __MSABI_LONG(9557)
#define DNS_STATUS_DOTTED_NAME __MSABI_LONG(9558)
#define DNS_STATUS_SINGLE_PART_NAME __MSABI_LONG(9559)
#define DNS_ERROR_INVALID_NAME_CHAR __MSABI_LONG(9560)
#define DNS_ERROR_NUMERIC_NAME __MSABI_LONG(9561)
#define DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER __MSABI_LONG(9562)
#define DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION __MSABI_LONG(9563)
#define DNS_ERROR_CANNOT_FIND_ROOT_HINTS __MSABI_LONG(9564)
#define DNS_ERROR_INCONSISTENT_ROOT_HINTS __MSABI_LONG(9565)
#define DNS_ERROR_ZONE_BASE 9600
#define DNS_ERROR_ZONE_DOES_NOT_EXIST __MSABI_LONG(9601)
#define DNS_ERROR_NO_ZONE_INFO __MSABI_LONG(9602)
#define DNS_ERROR_INVALID_ZONE_OPERATION __MSABI_LONG(9603)
#define DNS_ERROR_ZONE_CONFIGURATION_ERROR __MSABI_LONG(9604)
#define DNS_ERROR_ZONE_HAS_NO_SOA_RECORD __MSABI_LONG(9605)
#define DNS_ERROR_ZONE_HAS_NO_NS_RECORDS __MSABI_LONG(9606)
#define DNS_ERROR_ZONE_LOCKED __MSABI_LONG(9607)
#define DNS_ERROR_ZONE_CREATION_FAILED __MSABI_LONG(9608)
#define DNS_ERROR_ZONE_ALREADY_EXISTS __MSABI_LONG(9609)
#define DNS_ERROR_AUTOZONE_ALREADY_EXISTS __MSABI_LONG(9610)
#define DNS_ERROR_INVALID_ZONE_TYPE __MSABI_LONG(9611)
#define DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP __MSABI_LONG(9612)
#define DNS_ERROR_ZONE_NOT_SECONDARY __MSABI_LONG(9613)
#define DNS_ERROR_NEED_SECONDARY_ADDRESSES __MSABI_LONG(9614)
#define DNS_ERROR_WINS_INIT_FAILED __MSABI_LONG(9615)
#define DNS_ERROR_NEED_WINS_SERVERS __MSABI_LONG(9616)
#define DNS_ERROR_NBSTAT_INIT_FAILED __MSABI_LONG(9617)
#define DNS_ERROR_SOA_DELETE_INVALID __MSABI_LONG(9618)
#define DNS_ERROR_FORWARDER_ALREADY_EXISTS __MSABI_LONG(9619)
#define DNS_ERROR_ZONE_REQUIRES_MASTER_IP __MSABI_LONG(9620)
#define DNS_ERROR_ZONE_IS_SHUTDOWN __MSABI_LONG(9621)
#define DNS_ERROR_DATAFILE_BASE 9650
#define DNS_ERROR_PRIMARY_REQUIRES_DATAFILE __MSABI_LONG(9651)
#define DNS_ERROR_INVALID_DATAFILE_NAME __MSABI_LONG(9652)
#define DNS_ERROR_DATAFILE_OPEN_FAILURE __MSABI_LONG(9653)
#define DNS_ERROR_FILE_WRITEBACK_FAILED __MSABI_LONG(9654)
#define DNS_ERROR_DATAFILE_PARSING __MSABI_LONG(9655)
#define DNS_ERROR_DATABASE_BASE 9700
#define DNS_ERROR_RECORD_DOES_NOT_EXIST __MSABI_LONG(9701)
#define DNS_ERROR_RECORD_FORMAT __MSABI_LONG(9702)
#define DNS_ERROR_NODE_CREATION_FAILED __MSABI_LONG(9703)
#define DNS_ERROR_UNKNOWN_RECORD_TYPE __MSABI_LONG(9704)
#define DNS_ERROR_RECORD_TIMED_OUT __MSABI_LONG(9705)
#define DNS_ERROR_NAME_NOT_IN_ZONE __MSABI_LONG(9706)
#define DNS_ERROR_CNAME_LOOP __MSABI_LONG(9707)
#define DNS_ERROR_NODE_IS_CNAME __MSABI_LONG(9708)
#define DNS_ERROR_CNAME_COLLISION __MSABI_LONG(9709)
#define DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT __MSABI_LONG(9710)
#define DNS_ERROR_RECORD_ALREADY_EXISTS __MSABI_LONG(9711)
#define DNS_ERROR_SECONDARY_DATA __MSABI_LONG(9712)
#define DNS_ERROR_NO_CREATE_CACHE_DATA __MSABI_LONG(9713)
#define DNS_ERROR_NAME_DOES_NOT_EXIST __MSABI_LONG(9714)
#define DNS_WARNING_PTR_CREATE_FAILED __MSABI_LONG(9715)
#define DNS_WARNING_DOMAIN_UNDELETED __MSABI_LONG(9716)
#define DNS_ERROR_DS_UNAVAILABLE __MSABI_LONG(9717)
#define DNS_ERROR_DS_ZONE_ALREADY_EXISTS __MSABI_LONG(9718)
#define DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE __MSABI_LONG(9719)
#define DNS_ERROR_OPERATION_BASE 9750
#define DNS_INFO_AXFR_COMPLETE __MSABI_LONG(9751)
#define DNS_ERROR_AXFR __MSABI_LONG(9752)
#define DNS_INFO_ADDED_LOCAL_WINS __MSABI_LONG(9753)
#define DNS_ERROR_SECURE_BASE 9800
#define DNS_STATUS_CONTINUE_NEEDED __MSABI_LONG(9801)
#define DNS_ERROR_SETUP_BASE 9850
#define DNS_ERROR_NO_TCPIP __MSABI_LONG(9851)
#define DNS_ERROR_NO_DNS_SERVERS __MSABI_LONG(9852)
#define DNS_ERROR_DP_BASE 9900
#define DNS_ERROR_DP_DOES_NOT_EXIST __MSABI_LONG(9901)
#define DNS_ERROR_DP_ALREADY_EXISTS __MSABI_LONG(9902)
#define DNS_ERROR_DP_NOT_ENLISTED __MSABI_LONG(9903)
#define DNS_ERROR_DP_ALREADY_ENLISTED __MSABI_LONG(9904)
#define DNS_ERROR_DP_NOT_AVAILABLE __MSABI_LONG(9905)
#define DNS_ERROR_DP_FSMO_ERROR __MSABI_LONG(9906)
#define WSABASEERR 10000
#define WSAEINTR (WSABASEERR + 4)
#define WSAEBADF (WSABASEERR + 9)
#define WSAEACCES (WSABASEERR + 13)
#define WSAEFAULT (WSABASEERR + 14)
#define WSAEINVAL (WSABASEERR + 22)
#define WSAEMFILE (WSABASEERR + 24)
#define WSAEWOULDBLOCK (WSABASEERR + 35)
#define WSAEINPROGRESS (WSABASEERR + 36)
#define WSAEALREADY (WSABASEERR + 37)
#define WSAENOTSOCK (WSABASEERR + 38)
#define WSAEDESTADDRREQ (WSABASEERR + 39)
#define WSAEMSGSIZE (WSABASEERR + 40)
#define WSAEPROTOTYPE (WSABASEERR + 41)
#define WSAENOPROTOOPT (WSABASEERR + 42)
#define WSAEPROTONOSUPPORT (WSABASEERR + 43)
#define WSAESOCKTNOSUPPORT (WSABASEERR + 44)
#define WSAEOPNOTSUPP (WSABASEERR + 45)
#define WSAEPFNOSUPPORT (WSABASEERR + 46)
#define WSAEAFNOSUPPORT (WSABASEERR + 47)
#define WSAEADDRINUSE (WSABASEERR + 48)
#define WSAEADDRNOTAVAIL (WSABASEERR + 49)
#define WSAENETDOWN (WSABASEERR + 50)
#define WSAENETUNREACH (WSABASEERR + 51)
#define WSAENETRESET (WSABASEERR + 52)
#define WSAECONNABORTED (WSABASEERR + 53)
#define WSAECONNRESET (WSABASEERR + 54)
#define WSAENOBUFS (WSABASEERR + 55)
#define WSAEISCONN (WSABASEERR + 56)
#define WSAENOTCONN (WSABASEERR + 57)
#define WSAESHUTDOWN (WSABASEERR + 58)
#define WSAETOOMANYREFS (WSABASEERR + 59)
#define WSAETIMEDOUT (WSABASEERR + 60)
#define WSAECONNREFUSED (WSABASEERR + 61)
#define WSAELOOP (WSABASEERR + 62)
#define WSAENAMETOOLONG (WSABASEERR + 63)
#define WSAEHOSTDOWN (WSABASEERR + 64)
#define WSAEHOSTUNREACH (WSABASEERR + 65)
#define WSAENOTEMPTY (WSABASEERR + 66)
#define WSAEPROCLIM (WSABASEERR + 67)
#define WSAEUSERS (WSABASEERR + 68)
#define WSAEDQUOT (WSABASEERR + 69)
#define WSAESTALE (WSABASEERR + 70)
#define WSAEREMOTE (WSABASEERR + 71)
#define WSASYSNOTREADY (WSABASEERR + 91)
#define WSAVERNOTSUPPORTED (WSABASEERR + 92)
#define WSANOTINITIALISED (WSABASEERR + 93)
#define WSAEDISCON (WSABASEERR + 101)
#define WSAENOMORE (WSABASEERR + 102)
#define WSAECANCELLED (WSABASEERR + 103)
#define WSAEINVALIDPROCTABLE (WSABASEERR + 104)
#define WSAEINVALIDPROVIDER (WSABASEERR + 105)
#define WSAEPROVIDERFAILEDINIT (WSABASEERR + 106)
#define WSASYSCALLFAILURE (WSABASEERR + 107)
#define WSASERVICE_NOT_FOUND (WSABASEERR + 108)
#define WSATYPE_NOT_FOUND (WSABASEERR + 109)
#define WSA_E_NO_MORE (WSABASEERR + 110)
#define WSA_E_CANCELLED (WSABASEERR + 111)
#define WSAEREFUSED (WSABASEERR + 112)
#define WSAHOST_NOT_FOUND (WSABASEERR + 1001)
#define WSATRY_AGAIN (WSABASEERR + 1002)
#define WSANO_RECOVERY (WSABASEERR + 1003)
#define WSANO_DATA (WSABASEERR + 1004)
#define WSA_QOS_RECEIVERS (WSABASEERR + 1005)
#define WSA_QOS_SENDERS (WSABASEERR + 1006)
#define WSA_QOS_NO_SENDERS (WSABASEERR + 1007)
#define WSA_QOS_NO_RECEIVERS (WSABASEERR + 1008)
#define WSA_QOS_REQUEST_CONFIRMED (WSABASEERR + 1009)
#define WSA_QOS_ADMISSION_FAILURE (WSABASEERR + 1010)
#define WSA_QOS_POLICY_FAILURE (WSABASEERR + 1011)
#define WSA_QOS_BAD_STYLE (WSABASEERR + 1012)
#define WSA_QOS_BAD_OBJECT (WSABASEERR + 1013)
#define WSA_QOS_TRAFFIC_CTRL_ERROR (WSABASEERR + 1014)
#define WSA_QOS_GENERIC_ERROR (WSABASEERR + 1015)
#define WSA_QOS_ESERVICETYPE (WSABASEERR + 1016)
#define WSA_QOS_EFLOWSPEC (WSABASEERR + 1017)
#define WSA_QOS_EPROVSPECBUF (WSABASEERR + 1018)
#define WSA_QOS_EFILTERSTYLE (WSABASEERR + 1019)
#define WSA_QOS_EFILTERTYPE (WSABASEERR + 1020)
#define WSA_QOS_EFILTERCOUNT (WSABASEERR + 1021)
#define WSA_QOS_EOBJLENGTH (WSABASEERR + 1022)
#define WSA_QOS_EFLOWCOUNT (WSABASEERR + 1023)
#define WSA_QOS_EUNKNOWNPSOBJ (WSABASEERR + 1024)
#define WSA_QOS_EUNKOWNPSOBJ WSA_QOS_EUNKNOWNPSOBJ
#define WSA_QOS_EPOLICYOBJ (WSABASEERR + 1025)
#define WSA_QOS_EFLOWDESC (WSABASEERR + 1026)
#define WSA_QOS_EPSFLOWSPEC (WSABASEERR + 1027)
#define WSA_QOS_EPSFILTERSPEC (WSABASEERR + 1028)
#define WSA_QOS_ESDMODEOBJ (WSABASEERR + 1029)
#define WSA_QOS_ESHAPERATEOBJ (WSABASEERR + 1030)
#define WSA_QOS_RESERVED_PETYPE (WSABASEERR + 1031)
#define ERROR_SXS_SECTION_NOT_FOUND __MSABI_LONG(14000)
#define ERROR_SXS_CANT_GEN_ACTCTX __MSABI_LONG(14001)
#define ERROR_SXS_INVALID_ACTCTXDATA_FORMAT __MSABI_LONG(14002)
#define ERROR_SXS_ASSEMBLY_NOT_FOUND __MSABI_LONG(14003)
#define ERROR_SXS_MANIFEST_FORMAT_ERROR __MSABI_LONG(14004)
#define ERROR_SXS_MANIFEST_PARSE_ERROR __MSABI_LONG(14005)
#define ERROR_SXS_ACTIVATION_CONTEXT_DISABLED __MSABI_LONG(14006)
#define ERROR_SXS_KEY_NOT_FOUND __MSABI_LONG(14007)
#define ERROR_SXS_VERSION_CONFLICT __MSABI_LONG(14008)
#define ERROR_SXS_WRONG_SECTION_TYPE __MSABI_LONG(14009)
#define ERROR_SXS_THREAD_QUERIES_DISABLED __MSABI_LONG(14010)
#define ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET __MSABI_LONG(14011)
#define ERROR_SXS_UNKNOWN_ENCODING_GROUP __MSABI_LONG(14012)
#define ERROR_SXS_UNKNOWN_ENCODING __MSABI_LONG(14013)
#define ERROR_SXS_INVALID_XML_NAMESPACE_URI __MSABI_LONG(14014)
#define ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED __MSABI_LONG(14015)
#define ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED __MSABI_LONG(14016)
#define ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE __MSABI_LONG(14017)
#define ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE __MSABI_LONG(14018)
#define ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE __MSABI_LONG(14019)
#define ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT __MSABI_LONG(14020)
#define ERROR_SXS_DUPLICATE_DLL_NAME __MSABI_LONG(14021)
#define ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME __MSABI_LONG(14022)
#define ERROR_SXS_DUPLICATE_CLSID __MSABI_LONG(14023)
#define ERROR_SXS_DUPLICATE_IID __MSABI_LONG(14024)
#define ERROR_SXS_DUPLICATE_TLBID __MSABI_LONG(14025)
#define ERROR_SXS_DUPLICATE_PROGID __MSABI_LONG(14026)
#define ERROR_SXS_DUPLICATE_ASSEMBLY_NAME __MSABI_LONG(14027)
#define ERROR_SXS_FILE_HASH_MISMATCH __MSABI_LONG(14028)
#define ERROR_SXS_POLICY_PARSE_ERROR __MSABI_LONG(14029)
#define ERROR_SXS_XML_E_MISSINGQUOTE __MSABI_LONG(14030)
#define ERROR_SXS_XML_E_COMMENTSYNTAX __MSABI_LONG(14031)
#define ERROR_SXS_XML_E_BADSTARTNAMECHAR __MSABI_LONG(14032)
#define ERROR_SXS_XML_E_BADNAMECHAR __MSABI_LONG(14033)
#define ERROR_SXS_XML_E_BADCHARINSTRING __MSABI_LONG(14034)
#define ERROR_SXS_XML_E_XMLDECLSYNTAX __MSABI_LONG(14035)
#define ERROR_SXS_XML_E_BADCHARDATA __MSABI_LONG(14036)
#define ERROR_SXS_XML_E_MISSINGWHITESPACE __MSABI_LONG(14037)
#define ERROR_SXS_XML_E_EXPECTINGTAGEND __MSABI_LONG(14038)
#define ERROR_SXS_XML_E_MISSINGSEMICOLON __MSABI_LONG(14039)
#define ERROR_SXS_XML_E_UNBALANCEDPAREN __MSABI_LONG(14040)
#define ERROR_SXS_XML_E_INTERNALERROR __MSABI_LONG(14041)
#define ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE __MSABI_LONG(14042)
#define ERROR_SXS_XML_E_INCOMPLETE_ENCODING __MSABI_LONG(14043)
#define ERROR_SXS_XML_E_MISSING_PAREN __MSABI_LONG(14044)
#define ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE __MSABI_LONG(14045)
#define ERROR_SXS_XML_E_MULTIPLE_COLONS __MSABI_LONG(14046)
#define ERROR_SXS_XML_E_INVALID_DECIMAL __MSABI_LONG(14047)
#define ERROR_SXS_XML_E_INVALID_HEXIDECIMAL __MSABI_LONG(14048)
#define ERROR_SXS_XML_E_INVALID_UNICODE __MSABI_LONG(14049)
#define ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK __MSABI_LONG(14050)
#define ERROR_SXS_XML_E_UNEXPECTEDENDTAG __MSABI_LONG(14051)
#define ERROR_SXS_XML_E_UNCLOSEDTAG __MSABI_LONG(14052)
#define ERROR_SXS_XML_E_DUPLICATEATTRIBUTE __MSABI_LONG(14053)
#define ERROR_SXS_XML_E_MULTIPLEROOTS __MSABI_LONG(14054)
#define ERROR_SXS_XML_E_INVALIDATROOTLEVEL __MSABI_LONG(14055)
#define ERROR_SXS_XML_E_BADXMLDECL __MSABI_LONG(14056)
#define ERROR_SXS_XML_E_MISSINGROOT __MSABI_LONG(14057)
#define ERROR_SXS_XML_E_UNEXPECTEDEOF __MSABI_LONG(14058)
#define ERROR_SXS_XML_E_BADPEREFINSUBSET __MSABI_LONG(14059)
#define ERROR_SXS_XML_E_UNCLOSEDSTARTTAG __MSABI_LONG(14060)
#define ERROR_SXS_XML_E_UNCLOSEDENDTAG __MSABI_LONG(14061)
#define ERROR_SXS_XML_E_UNCLOSEDSTRING __MSABI_LONG(14062)
#define ERROR_SXS_XML_E_UNCLOSEDCOMMENT __MSABI_LONG(14063)
#define ERROR_SXS_XML_E_UNCLOSEDDECL __MSABI_LONG(14064)
#define ERROR_SXS_XML_E_UNCLOSEDCDATA __MSABI_LONG(14065)
#define ERROR_SXS_XML_E_RESERVEDNAMESPACE __MSABI_LONG(14066)
#define ERROR_SXS_XML_E_INVALIDENCODING __MSABI_LONG(14067)
#define ERROR_SXS_XML_E_INVALIDSWITCH __MSABI_LONG(14068)
#define ERROR_SXS_XML_E_BADXMLCASE __MSABI_LONG(14069)
#define ERROR_SXS_XML_E_INVALID_STANDALONE __MSABI_LONG(14070)
#define ERROR_SXS_XML_E_UNEXPECTED_STANDALONE __MSABI_LONG(14071)
#define ERROR_SXS_XML_E_INVALID_VERSION __MSABI_LONG(14072)
#define ERROR_SXS_XML_E_MISSINGEQUALS __MSABI_LONG(14073)
#define ERROR_SXS_PROTECTION_RECOVERY_FAILED __MSABI_LONG(14074)
#define ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT __MSABI_LONG(14075)
#define ERROR_SXS_PROTECTION_CATALOG_NOT_VALID __MSABI_LONG(14076)
#define ERROR_SXS_UNTRANSLATABLE_HRESULT __MSABI_LONG(14077)
#define ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING __MSABI_LONG(14078)
#define ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE __MSABI_LONG(14079)
#define ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME __MSABI_LONG(14080)
#define ERROR_SXS_ASSEMBLY_MISSING __MSABI_LONG(14081)
#define ERROR_SXS_CORRUPT_ACTIVATION_STACK __MSABI_LONG(14082)
#define ERROR_SXS_CORRUPTION __MSABI_LONG(14083)
#define ERROR_SXS_EARLY_DEACTIVATION __MSABI_LONG(14084)
#define ERROR_SXS_INVALID_DEACTIVATION __MSABI_LONG(14085)
#define ERROR_SXS_MULTIPLE_DEACTIVATION __MSABI_LONG(14086)
#define ERROR_SXS_PROCESS_TERMINATION_REQUESTED __MSABI_LONG(14087)
#define ERROR_SXS_RELEASE_ACTIVATION_CONTEXT __MSABI_LONG(14088)
#define ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY __MSABI_LONG(14089)
#define ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE __MSABI_LONG(14090)
#define ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME __MSABI_LONG(14091)
#define ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE __MSABI_LONG(14092)
#define ERROR_SXS_IDENTITY_PARSE_ERROR __MSABI_LONG(14093)
#define ERROR_MALFORMED_SUBSTITUTION_STRING __MSABI_LONG(14094)
#define ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN __MSABI_LONG(14095)
#define ERROR_UNMAPPED_SUBSTITUTION_STRING __MSABI_LONG(14096)
#define ERROR_SXS_ASSEMBLY_NOT_LOCKED __MSABI_LONG(14097)
#define ERROR_SXS_COMPONENT_STORE_CORRUPT __MSABI_LONG(14098)
#define ERROR_ADVANCED_INSTALLER_FAILED __MSABI_LONG(14099)
#define ERROR_XML_ENCODING_MISMATCH __MSABI_LONG(14100)
#define ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT __MSABI_LONG(14101)
#define ERROR_SXS_IDENTITIES_DIFFERENT __MSABI_LONG(14102)
#define ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT __MSABI_LONG(14103)
#define ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY __MSABI_LONG(14104)
#define ERROR_SXS_MANIFEST_TOO_BIG __MSABI_LONG(14105)
#define ERROR_SXS_SETTING_NOT_REGISTERED __MSABI_LONG(14106)
#define ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE __MSABI_LONG(14107)
#define ERROR_SMI_PRIMITIVE_INSTALLER_FAILED __MSABI_LONG(14108)
#define ERROR_GENERIC_COMMAND_FAILED __MSABI_LONG(14109)
#define ERROR_SXS_FILE_HASH_MISSING __MSABI_LONG(14110)
#define ERROR_IPSEC_QM_POLICY_EXISTS __MSABI_LONG(13000)
#define ERROR_IPSEC_QM_POLICY_NOT_FOUND __MSABI_LONG(13001)
#define ERROR_IPSEC_QM_POLICY_IN_USE __MSABI_LONG(13002)
#define ERROR_IPSEC_MM_POLICY_EXISTS __MSABI_LONG(13003)
#define ERROR_IPSEC_MM_POLICY_NOT_FOUND __MSABI_LONG(13004)
#define ERROR_IPSEC_MM_POLICY_IN_USE __MSABI_LONG(13005)
#define ERROR_IPSEC_MM_FILTER_EXISTS __MSABI_LONG(13006)
#define ERROR_IPSEC_MM_FILTER_NOT_FOUND __MSABI_LONG(13007)
#define ERROR_IPSEC_TRANSPORT_FILTER_EXISTS __MSABI_LONG(13008)
#define ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND __MSABI_LONG(13009)
#define ERROR_IPSEC_MM_AUTH_EXISTS __MSABI_LONG(13010)
#define ERROR_IPSEC_MM_AUTH_NOT_FOUND __MSABI_LONG(13011)
#define ERROR_IPSEC_MM_AUTH_IN_USE __MSABI_LONG(13012)
#define ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND __MSABI_LONG(13013)
#define ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND __MSABI_LONG(13014)
#define ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND __MSABI_LONG(13015)
#define ERROR_IPSEC_TUNNEL_FILTER_EXISTS __MSABI_LONG(13016)
#define ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND __MSABI_LONG(13017)
#define ERROR_IPSEC_MM_FILTER_PENDING_DELETION __MSABI_LONG(13018)
#define ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION __MSABI_LONG(13019)
#define ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION __MSABI_LONG(13020)
#define ERROR_IPSEC_MM_POLICY_PENDING_DELETION __MSABI_LONG(13021)
#define ERROR_IPSEC_MM_AUTH_PENDING_DELETION __MSABI_LONG(13022)
#define ERROR_IPSEC_QM_POLICY_PENDING_DELETION __MSABI_LONG(13023)
#define WARNING_IPSEC_MM_POLICY_PRUNED __MSABI_LONG(13024)
#define WARNING_IPSEC_QM_POLICY_PRUNED __MSABI_LONG(13025)
#define ERROR_IPSEC_IKE_NEG_STATUS_BEGIN __MSABI_LONG(13800)
#define ERROR_IPSEC_IKE_AUTH_FAIL __MSABI_LONG(13801)
#define ERROR_IPSEC_IKE_ATTRIB_FAIL __MSABI_LONG(13802)
#define ERROR_IPSEC_IKE_NEGOTIATION_PENDING __MSABI_LONG(13803)
#define ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR __MSABI_LONG(13804)
#define ERROR_IPSEC_IKE_TIMED_OUT __MSABI_LONG(13805)
#define ERROR_IPSEC_IKE_NO_CERT __MSABI_LONG(13806)
#define ERROR_IPSEC_IKE_SA_DELETED __MSABI_LONG(13807)
#define ERROR_IPSEC_IKE_SA_REAPED __MSABI_LONG(13808)
#define ERROR_IPSEC_IKE_MM_ACQUIRE_DROP __MSABI_LONG(13809)
#define ERROR_IPSEC_IKE_QM_ACQUIRE_DROP __MSABI_LONG(13810)
#define ERROR_IPSEC_IKE_QUEUE_DROP_MM __MSABI_LONG(13811)
#define ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM __MSABI_LONG(13812)
#define ERROR_IPSEC_IKE_DROP_NO_RESPONSE __MSABI_LONG(13813)
#define ERROR_IPSEC_IKE_MM_DELAY_DROP __MSABI_LONG(13814)
#define ERROR_IPSEC_IKE_QM_DELAY_DROP __MSABI_LONG(13815)
#define ERROR_IPSEC_IKE_ERROR __MSABI_LONG(13816)
#define ERROR_IPSEC_IKE_CRL_FAILED __MSABI_LONG(13817)
#define ERROR_IPSEC_IKE_INVALID_KEY_USAGE __MSABI_LONG(13818)
#define ERROR_IPSEC_IKE_INVALID_CERT_TYPE __MSABI_LONG(13819)
#define ERROR_IPSEC_IKE_NO_PRIVATE_KEY __MSABI_LONG(13820)
#define ERROR_IPSEC_IKE_DH_FAIL __MSABI_LONG(13822)
#define ERROR_IPSEC_IKE_INVALID_HEADER __MSABI_LONG(13824)
#define ERROR_IPSEC_IKE_NO_POLICY __MSABI_LONG(13825)
#define ERROR_IPSEC_IKE_INVALID_SIGNATURE __MSABI_LONG(13826)
#define ERROR_IPSEC_IKE_KERBEROS_ERROR __MSABI_LONG(13827)
#define ERROR_IPSEC_IKE_NO_PUBLIC_KEY __MSABI_LONG(13828)
#define ERROR_IPSEC_IKE_PROCESS_ERR __MSABI_LONG(13829)
#define ERROR_IPSEC_IKE_PROCESS_ERR_SA __MSABI_LONG(13830)
#define ERROR_IPSEC_IKE_PROCESS_ERR_PROP __MSABI_LONG(13831)
#define ERROR_IPSEC_IKE_PROCESS_ERR_TRANS __MSABI_LONG(13832)
#define ERROR_IPSEC_IKE_PROCESS_ERR_KE __MSABI_LONG(13833)
#define ERROR_IPSEC_IKE_PROCESS_ERR_ID __MSABI_LONG(13834)
#define ERROR_IPSEC_IKE_PROCESS_ERR_CERT __MSABI_LONG(13835)
#define ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ __MSABI_LONG(13836)
#define ERROR_IPSEC_IKE_PROCESS_ERR_HASH __MSABI_LONG(13837)
#define ERROR_IPSEC_IKE_PROCESS_ERR_SIG __MSABI_LONG(13838)
#define ERROR_IPSEC_IKE_PROCESS_ERR_NONCE __MSABI_LONG(13839)
#define ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY __MSABI_LONG(13840)
#define ERROR_IPSEC_IKE_PROCESS_ERR_DELETE __MSABI_LONG(13841)
#define ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR __MSABI_LONG(13842)
#define ERROR_IPSEC_IKE_INVALID_PAYLOAD __MSABI_LONG(13843)
#define ERROR_IPSEC_IKE_LOAD_SOFT_SA __MSABI_LONG(13844)
#define ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN __MSABI_LONG(13845)
#define ERROR_IPSEC_IKE_INVALID_COOKIE __MSABI_LONG(13846)
#define ERROR_IPSEC_IKE_NO_PEER_CERT __MSABI_LONG(13847)
#define ERROR_IPSEC_IKE_PEER_CRL_FAILED __MSABI_LONG(13848)
#define ERROR_IPSEC_IKE_POLICY_CHANGE __MSABI_LONG(13849)
#define ERROR_IPSEC_IKE_NO_MM_POLICY __MSABI_LONG(13850)
#define ERROR_IPSEC_IKE_NOTCBPRIV __MSABI_LONG(13851)
#define ERROR_IPSEC_IKE_SECLOADFAIL __MSABI_LONG(13852)
#define ERROR_IPSEC_IKE_FAILSSPINIT __MSABI_LONG(13853)
#define ERROR_IPSEC_IKE_FAILQUERYSSP __MSABI_LONG(13854)
#define ERROR_IPSEC_IKE_SRVACQFAIL __MSABI_LONG(13855)
#define ERROR_IPSEC_IKE_SRVQUERYCRED __MSABI_LONG(13856)
#define ERROR_IPSEC_IKE_GETSPIFAIL __MSABI_LONG(13857)
#define ERROR_IPSEC_IKE_INVALID_FILTER __MSABI_LONG(13858)
#define ERROR_IPSEC_IKE_OUT_OF_MEMORY __MSABI_LONG(13859)
#define ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED __MSABI_LONG(13860)
#define ERROR_IPSEC_IKE_INVALID_POLICY __MSABI_LONG(13861)
#define ERROR_IPSEC_IKE_UNKNOWN_DOI __MSABI_LONG(13862)
#define ERROR_IPSEC_IKE_INVALID_SITUATION __MSABI_LONG(13863)
#define ERROR_IPSEC_IKE_DH_FAILURE __MSABI_LONG(13864)
#define ERROR_IPSEC_IKE_INVALID_GROUP __MSABI_LONG(13865)
#define ERROR_IPSEC_IKE_ENCRYPT __MSABI_LONG(13866)
#define ERROR_IPSEC_IKE_DECRYPT __MSABI_LONG(13867)
#define ERROR_IPSEC_IKE_POLICY_MATCH __MSABI_LONG(13868)
#define ERROR_IPSEC_IKE_UNSUPPORTED_ID __MSABI_LONG(13869)
#define ERROR_IPSEC_IKE_INVALID_HASH __MSABI_LONG(13870)
#define ERROR_IPSEC_IKE_INVALID_HASH_ALG __MSABI_LONG(13871)
#define ERROR_IPSEC_IKE_INVALID_HASH_SIZE __MSABI_LONG(13872)
#define ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG __MSABI_LONG(13873)
#define ERROR_IPSEC_IKE_INVALID_AUTH_ALG __MSABI_LONG(13874)
#define ERROR_IPSEC_IKE_INVALID_SIG __MSABI_LONG(13875)
#define ERROR_IPSEC_IKE_LOAD_FAILED __MSABI_LONG(13876)
#define ERROR_IPSEC_IKE_RPC_DELETE __MSABI_LONG(13877)
#define ERROR_IPSEC_IKE_BENIGN_REINIT __MSABI_LONG(13878)
#define ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY __MSABI_LONG(13879)
#define ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN __MSABI_LONG(13881)
#define ERROR_IPSEC_IKE_MM_LIMIT __MSABI_LONG(13882)
#define ERROR_IPSEC_IKE_NEGOTIATION_DISABLED __MSABI_LONG(13883)
#define ERROR_IPSEC_IKE_QM_LIMIT __MSABI_LONG(13884)
#define ERROR_IPSEC_IKE_MM_EXPIRED __MSABI_LONG(13885)
#define ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID __MSABI_LONG(13886)
#define ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH __MSABI_LONG(13887)
#define ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID __MSABI_LONG(13888)
#define ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD __MSABI_LONG(13889)
#define ERROR_IPSEC_IKE_DOS_COOKIE_SENT __MSABI_LONG(13890)
#define ERROR_IPSEC_IKE_SHUTTING_DOWN __MSABI_LONG(13891)
#define ERROR_IPSEC_IKE_CGA_AUTH_FAILED __MSABI_LONG(13892)
#define ERROR_IPSEC_IKE_PROCESS_ERR_NATOA __MSABI_LONG(13893)
#define ERROR_IPSEC_IKE_INVALID_MM_FOR_QM __MSABI_LONG(13894)
#define ERROR_IPSEC_IKE_QM_EXPIRED __MSABI_LONG(13895)
#define ERROR_IPSEC_IKE_TOO_MANY_FILTERS __MSABI_LONG(13896)
#define ERROR_IPSEC_IKE_NEG_STATUS_END __MSABI_LONG(13897)
#define ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL __MSABI_LONG(13898)
#define ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE __MSABI_LONG(13899)
#define ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING __MSABI_LONG(13900)
#define ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING __MSABI_LONG(13901)
#define ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS __MSABI_LONG(13902)
#define ERROR_IPSEC_IKE_RATELIMIT_DROP __MSABI_LONG(13903)
#define ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE __MSABI_LONG(13904)
#define ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE __MSABI_LONG(13905)
#define ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE __MSABI_LONG(13906)
#define ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY __MSABI_LONG(13907)
#define ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE __MSABI_LONG(13908)
#define ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END __MSABI_LONG(13909)
#define ERROR_IPSEC_BAD_SPI __MSABI_LONG(13910)
#define ERROR_IPSEC_SA_LIFETIME_EXPIRED __MSABI_LONG(13911)
#define ERROR_IPSEC_WRONG_SA __MSABI_LONG(13912)
#define ERROR_IPSEC_REPLAY_CHECK_FAILED __MSABI_LONG(13913)
#define ERROR_IPSEC_INVALID_PACKET __MSABI_LONG(13914)
#define ERROR_IPSEC_INTEGRITY_CHECK_FAILED __MSABI_LONG(13915)
#define ERROR_IPSEC_CLEAR_TEXT_DROP __MSABI_LONG(13916)
#define ERROR_IPSEC_AUTH_FIREWALL_DROP __MSABI_LONG(13917)
#define ERROR_IPSEC_THROTTLE_DROP __MSABI_LONG(13918)
#define ERROR_IPSEC_DOSP_BLOCK __MSABI_LONG(13925)
#define ERROR_IPSEC_DOSP_RECEIVED_MULTICAST __MSABI_LONG(13926)
#define ERROR_IPSEC_DOSP_INVALID_PACKET __MSABI_LONG(13927)
#define ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED __MSABI_LONG(13928)
#define ERROR_IPSEC_DOSP_MAX_ENTRIES __MSABI_LONG(13929)
#define ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED __MSABI_LONG(13930)
#define ERROR_IPSEC_DOSP_NOT_INSTALLED __MSABI_LONG(13931)
#define ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES __MSABI_LONG(13932)
#define ERROR_EVT_INVALID_CHANNEL_PATH __MSABI_LONG(15000)
#define ERROR_EVT_INVALID_QUERY __MSABI_LONG(15001)
#define ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND __MSABI_LONG(15002)
#define ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND __MSABI_LONG(15003)
#define ERROR_EVT_INVALID_PUBLISHER_NAME __MSABI_LONG(15004)
#define ERROR_EVT_INVALID_EVENT_DATA __MSABI_LONG(15005)
#define ERROR_EVT_CHANNEL_NOT_FOUND __MSABI_LONG(15007)
#define ERROR_EVT_MALFORMED_XML_TEXT __MSABI_LONG(15008)
#define ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL __MSABI_LONG(15009)
#define ERROR_EVT_CONFIGURATION_ERROR __MSABI_LONG(15010)
#define ERROR_EVT_QUERY_RESULT_STALE __MSABI_LONG(15011)
#define ERROR_EVT_QUERY_RESULT_INVALID_POSITION __MSABI_LONG(15012)
#define ERROR_EVT_NON_VALIDATING_MSXML __MSABI_LONG(15013)
#define ERROR_EVT_FILTER_ALREADYSCOPED __MSABI_LONG(15014)
#define ERROR_EVT_FILTER_NOTELTSET __MSABI_LONG(15015)
#define ERROR_EVT_FILTER_INVARG __MSABI_LONG(15016)
#define ERROR_EVT_FILTER_INVTEST __MSABI_LONG(15017)
#define ERROR_EVT_FILTER_INVTYPE __MSABI_LONG(15018)
#define ERROR_EVT_FILTER_PARSEERR __MSABI_LONG(15019)
#define ERROR_EVT_FILTER_UNSUPPORTEDOP __MSABI_LONG(15020)
#define ERROR_EVT_FILTER_UNEXPECTEDTOKEN __MSABI_LONG(15021)
#define ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL __MSABI_LONG(15022)
#define ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE __MSABI_LONG(15023)
#define ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE __MSABI_LONG(15024)
#define ERROR_EVT_CHANNEL_CANNOT_ACTIVATE __MSABI_LONG(15025)
#define ERROR_EVT_FILTER_TOO_COMPLEX __MSABI_LONG(15026)
#define ERROR_EVT_MESSAGE_NOT_FOUND __MSABI_LONG(15027)
#define ERROR_EVT_MESSAGE_ID_NOT_FOUND __MSABI_LONG(15028)
#define ERROR_EVT_UNRESOLVED_VALUE_INSERT __MSABI_LONG(15029)
#define ERROR_EVT_UNRESOLVED_PARAMETER_INSERT __MSABI_LONG(15030)
#define ERROR_EVT_MAX_INSERTS_REACHED __MSABI_LONG(15031)
#define ERROR_EVT_EVENT_DEFINITION_NOT_FOUND __MSABI_LONG(15032)
#define ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND __MSABI_LONG(15033)
#define ERROR_EVT_VERSION_TOO_OLD __MSABI_LONG(15034)
#define ERROR_EVT_VERSION_TOO_NEW __MSABI_LONG(15035)
#define ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY __MSABI_LONG(15036)
#define ERROR_EVT_PUBLISHER_DISABLED __MSABI_LONG(15037)
#define ERROR_EVT_FILTER_OUT_OF_RANGE __MSABI_LONG(15038)
#define ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE __MSABI_LONG(15080)
#define ERROR_EC_LOG_DISABLED __MSABI_LONG(15081)
#define ERROR_EC_CIRCULAR_FORWARDING __MSABI_LONG(15082)
#define ERROR_EC_CREDSTORE_FULL __MSABI_LONG(15083)
#define ERROR_EC_CRED_NOT_FOUND __MSABI_LONG(15084)
#define ERROR_EC_NO_ACTIVE_CHANNEL __MSABI_LONG(15085)
#define ERROR_MUI_FILE_NOT_FOUND __MSABI_LONG(15100)
#define ERROR_MUI_INVALID_FILE __MSABI_LONG(15101)
#define ERROR_MUI_INVALID_RC_CONFIG __MSABI_LONG(15102)
#define ERROR_MUI_INVALID_LOCALE_NAME __MSABI_LONG(15103)
#define ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME __MSABI_LONG(15104)
#define ERROR_MUI_FILE_NOT_LOADED __MSABI_LONG(15105)
#define ERROR_RESOURCE_ENUM_USER_STOP __MSABI_LONG(15106)
#define ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED __MSABI_LONG(15107)
#define ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME __MSABI_LONG(15108)
#define ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE __MSABI_LONG(15110)
#define ERROR_MRM_INVALID_PRICONFIG __MSABI_LONG(15111)
#define ERROR_MRM_INVALID_FILE_TYPE __MSABI_LONG(15112)
#define ERROR_MRM_UNKNOWN_QUALIFIER __MSABI_LONG(15113)
#define ERROR_MRM_INVALID_QUALIFIER_VALUE __MSABI_LONG(15114)
#define ERROR_MRM_NO_CANDIDATE __MSABI_LONG(15115)
#define ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE __MSABI_LONG(15116)
#define ERROR_MRM_RESOURCE_TYPE_MISMATCH __MSABI_LONG(15117)
#define ERROR_MRM_DUPLICATE_MAP_NAME __MSABI_LONG(15118)
#define ERROR_MRM_DUPLICATE_ENTRY __MSABI_LONG(15119)
#define ERROR_MRM_INVALID_RESOURCE_IDENTIFIER __MSABI_LONG(15120)
#define ERROR_MRM_FILEPATH_TOO_LONG __MSABI_LONG(15121)
#define ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE __MSABI_LONG(15122)
#define ERROR_MRM_INVALID_PRI_FILE __MSABI_LONG(15126)
#define ERROR_MRM_NAMED_RESOURCE_NOT_FOUND __MSABI_LONG(15127)
#define ERROR_MRM_MAP_NOT_FOUND __MSABI_LONG(15135)
#define ERROR_MRM_UNSUPPORTED_PROFILE_TYPE __MSABI_LONG(15136)
#define ERROR_MRM_INVALID_QUALIFIER_OPERATOR __MSABI_LONG(15137)
#define ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE __MSABI_LONG(15138)
#define ERROR_MRM_AUTOMERGE_ENABLED __MSABI_LONG(15139)
#define ERROR_MRM_TOO_MANY_RESOURCES __MSABI_LONG(15140)
#define ERROR_MCA_INVALID_CAPABILITIES_STRING __MSABI_LONG(15200)
#define ERROR_MCA_INVALID_VCP_VERSION __MSABI_LONG(15201)
#define ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION __MSABI_LONG(15202)
#define ERROR_MCA_MCCS_VERSION_MISMATCH __MSABI_LONG(15203)
#define ERROR_MCA_UNSUPPORTED_MCCS_VERSION __MSABI_LONG(15204)
#define ERROR_MCA_INTERNAL_ERROR __MSABI_LONG(15205)
#define ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED __MSABI_LONG(15206)
#define ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE __MSABI_LONG(15207)
#define ERROR_AMBIGUOUS_SYSTEM_DEVICE __MSABI_LONG(15250)
#define ERROR_SYSTEM_DEVICE_NOT_FOUND __MSABI_LONG(15299)
#define ERROR_HASH_NOT_SUPPORTED __MSABI_LONG(15300)
#define ERROR_HASH_NOT_PRESENT __MSABI_LONG(15301)
#define ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED __MSABI_LONG(15321)
#define ERROR_GPIO_CLIENT_INFORMATION_INVALID __MSABI_LONG(15322)
#define ERROR_GPIO_VERSION_NOT_SUPPORTED __MSABI_LONG(15323)
#define ERROR_GPIO_INVALID_REGISTRATION_PACKET __MSABI_LONG(15324)
#define ERROR_GPIO_OPERATION_DENIED __MSABI_LONG(15325)
#define ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE __MSABI_LONG(15326)
#define ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED __MSABI_LONG(15327)
#define ERROR_CANNOT_SWITCH_RUNLEVEL __MSABI_LONG(15400)
#define ERROR_INVALID_RUNLEVEL_SETTING __MSABI_LONG(15401)
#define ERROR_RUNLEVEL_SWITCH_TIMEOUT __MSABI_LONG(15402)
#define ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT __MSABI_LONG(15403)
#define ERROR_RUNLEVEL_SWITCH_IN_PROGRESS __MSABI_LONG(15404)
#define ERROR_SERVICES_FAILED_AUTOSTART __MSABI_LONG(15405)
#define ERROR_COM_TASK_STOP_PENDING __MSABI_LONG(15501)
#define ERROR_INSTALL_OPEN_PACKAGE_FAILED __MSABI_LONG(15600)
#define ERROR_INSTALL_PACKAGE_NOT_FOUND __MSABI_LONG(15601)
#define ERROR_INSTALL_INVALID_PACKAGE __MSABI_LONG(15602)
#define ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED __MSABI_LONG(15603)
#define ERROR_INSTALL_OUT_OF_DISK_SPACE __MSABI_LONG(15604)
#define ERROR_INSTALL_NETWORK_FAILURE __MSABI_LONG(15605)
#define ERROR_INSTALL_REGISTRATION_FAILURE __MSABI_LONG(15606)
#define ERROR_INSTALL_DEREGISTRATION_FAILURE __MSABI_LONG(15607)
#define ERROR_INSTALL_CANCEL __MSABI_LONG(15608)
#define ERROR_INSTALL_FAILED __MSABI_LONG(15609)
#define ERROR_REMOVE_FAILED __MSABI_LONG(15610)
#define ERROR_PACKAGE_ALREADY_EXISTS __MSABI_LONG(15611)
#define ERROR_NEEDS_REMEDIATION __MSABI_LONG(15612)
#define ERROR_INSTALL_PREREQUISITE_FAILED __MSABI_LONG(15613)
#define ERROR_PACKAGE_REPOSITORY_CORRUPTED __MSABI_LONG(15614)
#define ERROR_INSTALL_POLICY_FAILURE __MSABI_LONG(15615)
#define ERROR_PACKAGE_UPDATING __MSABI_LONG(15616)
#define ERROR_DEPLOYMENT_BLOCKED_BY_POLICY __MSABI_LONG(15617)
#define ERROR_PACKAGES_IN_USE __MSABI_LONG(15618)
#define ERROR_RECOVERY_FILE_CORRUPT __MSABI_LONG(15619)
#define ERROR_INVALID_STAGED_SIGNATURE __MSABI_LONG(15620)
#define ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED __MSABI_LONG(15621)
#define ERROR_INSTALL_PACKAGE_DOWNGRADE __MSABI_LONG(15622)
#define ERROR_SYSTEM_NEEDS_REMEDIATION __MSABI_LONG(15623)
#define ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN __MSABI_LONG(15624)
#define ERROR_RESILIENCY_FILE_CORRUPT __MSABI_LONG(15625)
#define ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING __MSABI_LONG(15626)
#define APPMODEL_ERROR_NO_PACKAGE __MSABI_LONG(15700)
#define APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT __MSABI_LONG(15701)
#define APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT __MSABI_LONG(15702)
#define APPMODEL_ERROR_NO_APPLICATION __MSABI_LONG(15703)
#define ERROR_STATE_LOAD_STORE_FAILED __MSABI_LONG(15800)
#define ERROR_STATE_GET_VERSION_FAILED __MSABI_LONG(15801)
#define ERROR_STATE_SET_VERSION_FAILED __MSABI_LONG(15802)
#define ERROR_STATE_STRUCTURED_RESET_FAILED __MSABI_LONG(15803)
#define ERROR_STATE_OPEN_CONTAINER_FAILED __MSABI_LONG(15804)
#define ERROR_STATE_CREATE_CONTAINER_FAILED __MSABI_LONG(15805)
#define ERROR_STATE_DELETE_CONTAINER_FAILED __MSABI_LONG(15806)
#define ERROR_STATE_READ_SETTING_FAILED __MSABI_LONG(15807)
#define ERROR_STATE_WRITE_SETTING_FAILED __MSABI_LONG(15808)
#define ERROR_STATE_DELETE_SETTING_FAILED __MSABI_LONG(15809)
#define ERROR_STATE_QUERY_SETTING_FAILED __MSABI_LONG(15810)
#define ERROR_STATE_READ_COMPOSITE_SETTING_FAILED __MSABI_LONG(15811)
#define ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED __MSABI_LONG(15812)
#define ERROR_STATE_ENUMERATE_CONTAINER_FAILED __MSABI_LONG(15813)
#define ERROR_STATE_ENUMERATE_SETTINGS_FAILED __MSABI_LONG(15814)
#define ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED __MSABI_LONG(15815)
#define ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED __MSABI_LONG(15816)
#define ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED __MSABI_LONG(15817)
#define ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED __MSABI_LONG(15818)
#define ERROR_API_UNAVAILABLE __MSABI_LONG(15841)
#define SEVERITY_SUCCESS 0
#define SEVERITY_ERROR 1
#define SUCCEEDED(hr) ((HRESULT)(hr) >= 0)
#define FAILED(hr) ((HRESULT)(hr) < 0)
#define IS_ERROR(Status) ((unsigned __LONG32)(Status) >> 31==SEVERITY_ERROR)
#define HRESULT_CODE(hr) ((hr) & 0xFFFF)
#define SCODE_CODE(sc) ((sc) & 0xFFFF)
#define HRESULT_FACILITY(hr) (((hr) >> 16) & 0x1fff)
#define SCODE_FACILITY(sc) (((sc) >> 16) & 0x1fff)
#define HRESULT_SEVERITY(hr) (((hr) >> 31) & 0x1)
#define SCODE_SEVERITY(sc) (((sc) >> 31) & 0x1)
#define MAKE_HRESULT(sev,fac,code) ((HRESULT) (((unsigned __LONG32)(sev)<<31) | ((unsigned __LONG32)(fac)<<16) | ((unsigned __LONG32)(code))))
#define MAKE_SCODE(sev,fac,code) ((SCODE) (((unsigned __LONG32)(sev)<<31) | ((unsigned __LONG32)(fac)<<16) | ((unsigned __LONG32)(code))))
#define FACILITY_NT_BIT 0x10000000
#define __HRESULT_FROM_WIN32(x) ((HRESULT)(x) <= 0 ? ((HRESULT)(x)) : ((HRESULT) (((x) & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000)))
#define HRESULT_FROM_WIN32(x) __HRESULT_FROM_WIN32(x)
#define HRESULT_FROM_NT(x) ((HRESULT) ((x) | FACILITY_NT_BIT))
#define GetScode(hr) ((SCODE) (hr))
#define ResultFromScode(sc) ((HRESULT) (sc))
#define PropagateResult(hrPrevious,scBase) ((HRESULT) scBase)
#define _HRESULT_TYPEDEF_(_sc) ((HRESULT)_sc)
#define NOERROR 0
#define E_UNEXPECTED _HRESULT_TYPEDEF_(0x8000FFFF)
#define E_NOTIMPL _HRESULT_TYPEDEF_(0x80004001)
#define E_OUTOFMEMORY _HRESULT_TYPEDEF_(0x8007000E)
#define E_INVALIDARG _HRESULT_TYPEDEF_(0x80070057)
#define E_NOINTERFACE _HRESULT_TYPEDEF_(0x80004002)
#define E_POINTER _HRESULT_TYPEDEF_(0x80004003)
#define E_HANDLE _HRESULT_TYPEDEF_(0x80070006)
#define E_ABORT _HRESULT_TYPEDEF_(0x80004004)
#define E_FAIL _HRESULT_TYPEDEF_(0x80004005)
#define E_ACCESSDENIED _HRESULT_TYPEDEF_(0x80070005)
#define E_PENDING _HRESULT_TYPEDEF_(0x8000000A)
#define E_NOT_SUFFICIENT_BUFFER HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
#define CO_E_INIT_TLS _HRESULT_TYPEDEF_(0x80004006)
#define CO_E_INIT_SHARED_ALLOCATOR _HRESULT_TYPEDEF_(0x80004007)
#define CO_E_INIT_MEMORY_ALLOCATOR _HRESULT_TYPEDEF_(0x80004008)
#define CO_E_INIT_CLASS_CACHE _HRESULT_TYPEDEF_(0x80004009)
#define CO_E_INIT_RPC_CHANNEL _HRESULT_TYPEDEF_(0x8000400A)
#define CO_E_INIT_TLS_SET_CHANNEL_CONTROL _HRESULT_TYPEDEF_(0x8000400B)
#define CO_E_INIT_TLS_CHANNEL_CONTROL _HRESULT_TYPEDEF_(0x8000400C)
#define CO_E_INIT_UNACCEPTED_USER_ALLOCATOR _HRESULT_TYPEDEF_(0x8000400D)
#define CO_E_INIT_SCM_MUTEX_EXISTS _HRESULT_TYPEDEF_(0x8000400E)
#define CO_E_INIT_SCM_FILE_MAPPING_EXISTS _HRESULT_TYPEDEF_(0x8000400F)
#define CO_E_INIT_SCM_MAP_VIEW_OF_FILE _HRESULT_TYPEDEF_(0x80004010)
#define CO_E_INIT_SCM_EXEC_FAILURE _HRESULT_TYPEDEF_(0x80004011)
#define CO_E_INIT_ONLY_SINGLE_THREADED _HRESULT_TYPEDEF_(0x80004012)
#define CO_E_CANT_REMOTE _HRESULT_TYPEDEF_(0x80004013)
#define CO_E_BAD_SERVER_NAME _HRESULT_TYPEDEF_(0x80004014)
#define CO_E_WRONG_SERVER_IDENTITY _HRESULT_TYPEDEF_(0x80004015)
#define CO_E_OLE1DDE_DISABLED _HRESULT_TYPEDEF_(0x80004016)
#define CO_E_RUNAS_SYNTAX _HRESULT_TYPEDEF_(0x80004017)
#define CO_E_CREATEPROCESS_FAILURE _HRESULT_TYPEDEF_(0x80004018)
#define CO_E_RUNAS_CREATEPROCESS_FAILURE _HRESULT_TYPEDEF_(0x80004019)
#define CO_E_RUNAS_LOGON_FAILURE _HRESULT_TYPEDEF_(0x8000401A)
#define CO_E_LAUNCH_PERMSSION_DENIED _HRESULT_TYPEDEF_(0x8000401B)
#define CO_E_START_SERVICE_FAILURE _HRESULT_TYPEDEF_(0x8000401C)
#define CO_E_REMOTE_COMMUNICATION_FAILURE _HRESULT_TYPEDEF_(0x8000401D)
#define CO_E_SERVER_START_TIMEOUT _HRESULT_TYPEDEF_(0x8000401E)
#define CO_E_CLSREG_INCONSISTENT _HRESULT_TYPEDEF_(0x8000401F)
#define CO_E_IIDREG_INCONSISTENT _HRESULT_TYPEDEF_(0x80004020)
#define CO_E_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80004021)
#define CO_E_RELOAD_DLL _HRESULT_TYPEDEF_(0x80004022)
#define CO_E_MSI_ERROR _HRESULT_TYPEDEF_(0x80004023)
#define CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT _HRESULT_TYPEDEF_(0x80004024)
#define CO_E_SERVER_PAUSED _HRESULT_TYPEDEF_(0x80004025)
#define CO_E_SERVER_NOT_PAUSED _HRESULT_TYPEDEF_(0x80004026)
#define CO_E_CLASS_DISABLED _HRESULT_TYPEDEF_(0x80004027)
#define CO_E_CLRNOTAVAILABLE _HRESULT_TYPEDEF_(0x80004028)
#define CO_E_ASYNC_WORK_REJECTED _HRESULT_TYPEDEF_(0x80004029)
#define CO_E_SERVER_INIT_TIMEOUT _HRESULT_TYPEDEF_(0x8000402A)
#define CO_E_NO_SECCTX_IN_ACTIVATE _HRESULT_TYPEDEF_(0x8000402B)
#define CO_E_TRACKER_CONFIG _HRESULT_TYPEDEF_(0x80004030)
#define CO_E_THREADPOOL_CONFIG _HRESULT_TYPEDEF_(0x80004031)
#define CO_E_SXS_CONFIG _HRESULT_TYPEDEF_(0x80004032)
#define CO_E_MALFORMED_SPN _HRESULT_TYPEDEF_(0x80004033)
#define S_OK ((HRESULT)0x00000000)
#define S_FALSE ((HRESULT)0x00000001)
#define OLE_E_FIRST ((HRESULT)0x80040000)
#define OLE_E_LAST ((HRESULT)0x800400FF)
#define OLE_S_FIRST ((HRESULT)0x00040000)
#define OLE_S_LAST ((HRESULT)0x000400FF)
#define OLE_E_OLEVERB _HRESULT_TYPEDEF_(0x80040000)
#define OLE_E_ADVF _HRESULT_TYPEDEF_(0x80040001)
#define OLE_E_ENUM_NOMORE _HRESULT_TYPEDEF_(0x80040002)
#define OLE_E_ADVISENOTSUPPORTED _HRESULT_TYPEDEF_(0x80040003)
#define OLE_E_NOCONNECTION _HRESULT_TYPEDEF_(0x80040004)
#define OLE_E_NOTRUNNING _HRESULT_TYPEDEF_(0x80040005)
#define OLE_E_NOCACHE _HRESULT_TYPEDEF_(0x80040006)
#define OLE_E_BLANK _HRESULT_TYPEDEF_(0x80040007)
#define OLE_E_CLASSDIFF _HRESULT_TYPEDEF_(0x80040008)
#define OLE_E_CANT_GETMONIKER _HRESULT_TYPEDEF_(0x80040009)
#define OLE_E_CANT_BINDTOSOURCE _HRESULT_TYPEDEF_(0x8004000A)
#define OLE_E_STATIC _HRESULT_TYPEDEF_(0x8004000B)
#define OLE_E_PROMPTSAVECANCELLED _HRESULT_TYPEDEF_(0x8004000C)
#define OLE_E_INVALIDRECT _HRESULT_TYPEDEF_(0x8004000D)
#define OLE_E_WRONGCOMPOBJ _HRESULT_TYPEDEF_(0x8004000E)
#define OLE_E_INVALIDHWND _HRESULT_TYPEDEF_(0x8004000F)
#define OLE_E_NOT_INPLACEACTIVE _HRESULT_TYPEDEF_(0x80040010)
#define OLE_E_CANTCONVERT _HRESULT_TYPEDEF_(0x80040011)
#define OLE_E_NOSTORAGE _HRESULT_TYPEDEF_(0x80040012)
#define DV_E_FORMATETC _HRESULT_TYPEDEF_(0x80040064)
#define DV_E_DVTARGETDEVICE _HRESULT_TYPEDEF_(0x80040065)
#define DV_E_STGMEDIUM _HRESULT_TYPEDEF_(0x80040066)
#define DV_E_STATDATA _HRESULT_TYPEDEF_(0x80040067)
#define DV_E_LINDEX _HRESULT_TYPEDEF_(0x80040068)
#define DV_E_TYMED _HRESULT_TYPEDEF_(0x80040069)
#define DV_E_CLIPFORMAT _HRESULT_TYPEDEF_(0x8004006A)
#define DV_E_DVASPECT _HRESULT_TYPEDEF_(0x8004006B)
#define DV_E_DVTARGETDEVICE_SIZE _HRESULT_TYPEDEF_(0x8004006C)
#define DV_E_NOIVIEWOBJECT _HRESULT_TYPEDEF_(0x8004006D)
#define DRAGDROP_E_FIRST __MSABI_LONG(0x80040100)
#define DRAGDROP_E_LAST __MSABI_LONG(0x8004010F)
#define DRAGDROP_S_FIRST __MSABI_LONG(0x00040100)
#define DRAGDROP_S_LAST __MSABI_LONG(0x0004010F)
#define DRAGDROP_E_NOTREGISTERED _HRESULT_TYPEDEF_(0x80040100)
#define DRAGDROP_E_ALREADYREGISTERED _HRESULT_TYPEDEF_(0x80040101)
#define DRAGDROP_E_INVALIDHWND _HRESULT_TYPEDEF_(0x80040102)
#define CLASSFACTORY_E_FIRST __MSABI_LONG(0x80040110)
#define CLASSFACTORY_E_LAST __MSABI_LONG(0x8004011F)
#define CLASSFACTORY_S_FIRST __MSABI_LONG(0x00040110)
#define CLASSFACTORY_S_LAST __MSABI_LONG(0x0004011F)
#define CLASS_E_NOAGGREGATION _HRESULT_TYPEDEF_(0x80040110)
#define CLASS_E_CLASSNOTAVAILABLE _HRESULT_TYPEDEF_(0x80040111)
#define CLASS_E_NOTLICENSED _HRESULT_TYPEDEF_(0x80040112)
#define MARSHAL_E_FIRST __MSABI_LONG(0x80040120)
#define MARSHAL_E_LAST __MSABI_LONG(0x8004012F)
#define MARSHAL_S_FIRST __MSABI_LONG(0x00040120)
#define MARSHAL_S_LAST __MSABI_LONG(0x0004012F)
#define DATA_E_FIRST __MSABI_LONG(0x80040130)
#define DATA_E_LAST __MSABI_LONG(0x8004013F)
#define DATA_S_FIRST __MSABI_LONG(0x00040130)
#define DATA_S_LAST __MSABI_LONG(0x0004013F)
#define VIEW_E_FIRST __MSABI_LONG(0x80040140)
#define VIEW_E_LAST __MSABI_LONG(0x8004014F)
#define VIEW_S_FIRST __MSABI_LONG(0x00040140)
#define VIEW_S_LAST __MSABI_LONG(0x0004014F)
#define VIEW_E_DRAW _HRESULT_TYPEDEF_(0x80040140)
#define REGDB_E_FIRST __MSABI_LONG(0x80040150)
#define REGDB_E_LAST __MSABI_LONG(0x8004015F)
#define REGDB_S_FIRST __MSABI_LONG(0x00040150)
#define REGDB_S_LAST __MSABI_LONG(0x0004015F)
#define REGDB_E_READREGDB _HRESULT_TYPEDEF_(0x80040150)
#define REGDB_E_WRITEREGDB _HRESULT_TYPEDEF_(0x80040151)
#define REGDB_E_KEYMISSING _HRESULT_TYPEDEF_(0x80040152)
#define REGDB_E_INVALIDVALUE _HRESULT_TYPEDEF_(0x80040153)
#define REGDB_E_CLASSNOTREG _HRESULT_TYPEDEF_(0x80040154)
#define REGDB_E_IIDNOTREG _HRESULT_TYPEDEF_(0x80040155)
#define REGDB_E_BADTHREADINGMODEL _HRESULT_TYPEDEF_(0x80040156)
#define CAT_E_FIRST __MSABI_LONG(0x80040160)
#define CAT_E_LAST __MSABI_LONG(0x80040161)
#define CAT_E_CATIDNOEXIST _HRESULT_TYPEDEF_(0x80040160)
#define CAT_E_NODESCRIPTION _HRESULT_TYPEDEF_(0x80040161)
#define CS_E_FIRST __MSABI_LONG(0x80040164)
#define CS_E_LAST __MSABI_LONG(0x8004016F)
#define CS_E_PACKAGE_NOTFOUND _HRESULT_TYPEDEF_(0x80040164)
#define CS_E_NOT_DELETABLE _HRESULT_TYPEDEF_(0x80040165)
#define CS_E_CLASS_NOTFOUND _HRESULT_TYPEDEF_(0x80040166)
#define CS_E_INVALID_VERSION _HRESULT_TYPEDEF_(0x80040167)
#define CS_E_NO_CLASSSTORE _HRESULT_TYPEDEF_(0x80040168)
#define CS_E_OBJECT_NOTFOUND _HRESULT_TYPEDEF_(0x80040169)
#define CS_E_OBJECT_ALREADY_EXISTS _HRESULT_TYPEDEF_(0x8004016A)
#define CS_E_INVALID_PATH _HRESULT_TYPEDEF_(0x8004016B)
#define CS_E_NETWORK_ERROR _HRESULT_TYPEDEF_(0x8004016C)
#define CS_E_ADMIN_LIMIT_EXCEEDED _HRESULT_TYPEDEF_(0x8004016D)
#define CS_E_SCHEMA_MISMATCH _HRESULT_TYPEDEF_(0x8004016E)
#define CS_E_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x8004016F)
#define CACHE_E_FIRST __MSABI_LONG(0x80040170)
#define CACHE_E_LAST __MSABI_LONG(0x8004017F)
#define CACHE_S_FIRST __MSABI_LONG(0x00040170)
#define CACHE_S_LAST __MSABI_LONG(0x0004017F)
#define CACHE_E_NOCACHE_UPDATED _HRESULT_TYPEDEF_(0x80040170)
#define OLEOBJ_E_FIRST __MSABI_LONG(0x80040180)
#define OLEOBJ_E_LAST __MSABI_LONG(0x8004018F)
#define OLEOBJ_S_FIRST __MSABI_LONG(0x00040180)
#define OLEOBJ_S_LAST __MSABI_LONG(0x0004018F)
#define OLEOBJ_E_NOVERBS _HRESULT_TYPEDEF_(0x80040180)
#define OLEOBJ_E_INVALIDVERB _HRESULT_TYPEDEF_(0x80040181)
#define CLIENTSITE_E_FIRST __MSABI_LONG(0x80040190)
#define CLIENTSITE_E_LAST __MSABI_LONG(0x8004019F)
#define CLIENTSITE_S_FIRST __MSABI_LONG(0x00040190)
#define CLIENTSITE_S_LAST __MSABI_LONG(0x0004019F)
#define INPLACE_E_NOTUNDOABLE _HRESULT_TYPEDEF_(0x800401A0)
#define INPLACE_E_NOTOOLSPACE _HRESULT_TYPEDEF_(0x800401A1)
#define INPLACE_E_FIRST __MSABI_LONG(0x800401A0)
#define INPLACE_E_LAST __MSABI_LONG(0x800401AF)
#define INPLACE_S_FIRST __MSABI_LONG(0x000401A0)
#define INPLACE_S_LAST __MSABI_LONG(0x000401AF)
#define ENUM_E_FIRST __MSABI_LONG(0x800401B0)
#define ENUM_E_LAST __MSABI_LONG(0x800401BF)
#define ENUM_S_FIRST __MSABI_LONG(0x000401B0)
#define ENUM_S_LAST __MSABI_LONG(0x000401BF)
#define CONVERT10_E_FIRST __MSABI_LONG(0x800401C0)
#define CONVERT10_E_LAST __MSABI_LONG(0x800401CF)
#define CONVERT10_S_FIRST __MSABI_LONG(0x000401C0)
#define CONVERT10_S_LAST __MSABI_LONG(0x000401CF)
#define CONVERT10_E_OLESTREAM_GET _HRESULT_TYPEDEF_(0x800401C0)
#define CONVERT10_E_OLESTREAM_PUT _HRESULT_TYPEDEF_(0x800401C1)
#define CONVERT10_E_OLESTREAM_FMT _HRESULT_TYPEDEF_(0x800401C2)
#define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB _HRESULT_TYPEDEF_(0x800401C3)
#define CONVERT10_E_STG_FMT _HRESULT_TYPEDEF_(0x800401C4)
#define CONVERT10_E_STG_NO_STD_STREAM _HRESULT_TYPEDEF_(0x800401C5)
#define CONVERT10_E_STG_DIB_TO_BITMAP _HRESULT_TYPEDEF_(0x800401C6)
#define CLIPBRD_E_FIRST __MSABI_LONG(0x800401D0)
#define CLIPBRD_E_LAST __MSABI_LONG(0x800401DF)
#define CLIPBRD_S_FIRST __MSABI_LONG(0x000401D0)
#define CLIPBRD_S_LAST __MSABI_LONG(0x000401DF)
#define CLIPBRD_E_CANT_OPEN _HRESULT_TYPEDEF_(0x800401D0)
#define CLIPBRD_E_CANT_EMPTY _HRESULT_TYPEDEF_(0x800401D1)
#define CLIPBRD_E_CANT_SET _HRESULT_TYPEDEF_(0x800401D2)
#define CLIPBRD_E_BAD_DATA _HRESULT_TYPEDEF_(0x800401D3)
#define CLIPBRD_E_CANT_CLOSE _HRESULT_TYPEDEF_(0x800401D4)
#define MK_E_FIRST __MSABI_LONG(0x800401E0)
#define MK_E_LAST __MSABI_LONG(0x800401EF)
#define MK_S_FIRST __MSABI_LONG(0x000401E0)
#define MK_S_LAST __MSABI_LONG(0x000401EF)
#define MK_E_CONNECTMANUALLY _HRESULT_TYPEDEF_(0x800401E0)
#define MK_E_EXCEEDEDDEADLINE _HRESULT_TYPEDEF_(0x800401E1)
#define MK_E_NEEDGENERIC _HRESULT_TYPEDEF_(0x800401E2)
#define MK_E_UNAVAILABLE _HRESULT_TYPEDEF_(0x800401E3)
#define MK_E_SYNTAX _HRESULT_TYPEDEF_(0x800401E4)
#define MK_E_NOOBJECT _HRESULT_TYPEDEF_(0x800401E5)
#define MK_E_INVALIDEXTENSION _HRESULT_TYPEDEF_(0x800401E6)
#define MK_E_INTERMEDIATEINTERFACENOTSUPPORTED _HRESULT_TYPEDEF_(0x800401E7)
#define MK_E_NOTBINDABLE _HRESULT_TYPEDEF_(0x800401E8)
#define MK_E_NOTBOUND _HRESULT_TYPEDEF_(0x800401E9)
#define MK_E_CANTOPENFILE _HRESULT_TYPEDEF_(0x800401EA)
#define MK_E_MUSTBOTHERUSER _HRESULT_TYPEDEF_(0x800401EB)
#define MK_E_NOINVERSE _HRESULT_TYPEDEF_(0x800401EC)
#define MK_E_NOSTORAGE _HRESULT_TYPEDEF_(0x800401ED)
#define MK_E_NOPREFIX _HRESULT_TYPEDEF_(0x800401EE)
#define MK_E_ENUMERATION_FAILED _HRESULT_TYPEDEF_(0x800401EF)
#define CO_E_FIRST __MSABI_LONG(0x800401F0)
#define CO_E_LAST __MSABI_LONG(0x800401FF)
#define CO_S_FIRST __MSABI_LONG(0x000401F0)
#define CO_S_LAST __MSABI_LONG(0x000401FF)
#define CO_E_NOTINITIALIZED _HRESULT_TYPEDEF_(0x800401F0)
#define CO_E_ALREADYINITIALIZED _HRESULT_TYPEDEF_(0x800401F1)
#define CO_E_CANTDETERMINECLASS _HRESULT_TYPEDEF_(0x800401F2)
#define CO_E_CLASSSTRING _HRESULT_TYPEDEF_(0x800401F3)
#define CO_E_IIDSTRING _HRESULT_TYPEDEF_(0x800401F4)
#define CO_E_APPNOTFOUND _HRESULT_TYPEDEF_(0x800401F5)
#define CO_E_APPSINGLEUSE _HRESULT_TYPEDEF_(0x800401F6)
#define CO_E_ERRORINAPP _HRESULT_TYPEDEF_(0x800401F7)
#define CO_E_DLLNOTFOUND _HRESULT_TYPEDEF_(0x800401F8)
#define CO_E_ERRORINDLL _HRESULT_TYPEDEF_(0x800401F9)
#define CO_E_WRONGOSFORAPP _HRESULT_TYPEDEF_(0x800401FA)
#define CO_E_OBJNOTREG _HRESULT_TYPEDEF_(0x800401FB)
#define CO_E_OBJISREG _HRESULT_TYPEDEF_(0x800401FC)
#define CO_E_OBJNOTCONNECTED _HRESULT_TYPEDEF_(0x800401FD)
#define CO_E_APPDIDNTREG _HRESULT_TYPEDEF_(0x800401FE)
#define CO_E_RELEASED _HRESULT_TYPEDEF_(0x800401FF)
#define EVENT_E_FIRST __MSABI_LONG(0x80040200)
#define EVENT_E_LAST __MSABI_LONG(0x8004021F)
#define EVENT_S_FIRST __MSABI_LONG(0x00040200)
#define EVENT_S_LAST __MSABI_LONG(0x0004021F)
#define EVENT_S_SOME_SUBSCRIBERS_FAILED _HRESULT_TYPEDEF_(0x00040200)
#define EVENT_E_ALL_SUBSCRIBERS_FAILED _HRESULT_TYPEDEF_(0x80040201)
#define EVENT_S_NOSUBSCRIBERS _HRESULT_TYPEDEF_(0x00040202)
#define EVENT_E_QUERYSYNTAX _HRESULT_TYPEDEF_(0x80040203)
#define EVENT_E_QUERYFIELD _HRESULT_TYPEDEF_(0x80040204)
#define EVENT_E_INTERNALEXCEPTION _HRESULT_TYPEDEF_(0x80040205)
#define EVENT_E_INTERNALERROR _HRESULT_TYPEDEF_(0x80040206)
#define EVENT_E_INVALID_PER_USER_SID _HRESULT_TYPEDEF_(0x80040207)
#define EVENT_E_USER_EXCEPTION _HRESULT_TYPEDEF_(0x80040208)
#define EVENT_E_TOO_MANY_METHODS _HRESULT_TYPEDEF_(0x80040209)
#define EVENT_E_MISSING_EVENTCLASS _HRESULT_TYPEDEF_(0x8004020A)
#define EVENT_E_NOT_ALL_REMOVED _HRESULT_TYPEDEF_(0x8004020B)
#define EVENT_E_COMPLUS_NOT_INSTALLED _HRESULT_TYPEDEF_(0x8004020C)
#define EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT _HRESULT_TYPEDEF_(0x8004020D)
#define EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT _HRESULT_TYPEDEF_(0x8004020E)
#define EVENT_E_INVALID_EVENT_CLASS_PARTITION _HRESULT_TYPEDEF_(0x8004020F)
#define EVENT_E_PER_USER_SID_NOT_LOGGED_ON _HRESULT_TYPEDEF_(0x80040210)
#define XACT_E_FIRST 0x8004D000
#define XACT_E_LAST 0x8004D029
#define XACT_S_FIRST 0x0004D000
#define XACT_S_LAST 0x0004D010
#define XACT_E_ALREADYOTHERSINGLEPHASE _HRESULT_TYPEDEF_(0x8004D000)
#define XACT_E_CANTRETAIN _HRESULT_TYPEDEF_(0x8004D001)
#define XACT_E_COMMITFAILED _HRESULT_TYPEDEF_(0x8004D002)
#define XACT_E_COMMITPREVENTED _HRESULT_TYPEDEF_(0x8004D003)
#define XACT_E_HEURISTICABORT _HRESULT_TYPEDEF_(0x8004D004)
#define XACT_E_HEURISTICCOMMIT _HRESULT_TYPEDEF_(0x8004D005)
#define XACT_E_HEURISTICDAMAGE _HRESULT_TYPEDEF_(0x8004D006)
#define XACT_E_HEURISTICDANGER _HRESULT_TYPEDEF_(0x8004D007)
#define XACT_E_ISOLATIONLEVEL _HRESULT_TYPEDEF_(0x8004D008)
#define XACT_E_NOASYNC _HRESULT_TYPEDEF_(0x8004D009)
#define XACT_E_NOENLIST _HRESULT_TYPEDEF_(0x8004D00A)
#define XACT_E_NOISORETAIN _HRESULT_TYPEDEF_(0x8004D00B)
#define XACT_E_NORESOURCE _HRESULT_TYPEDEF_(0x8004D00C)
#define XACT_E_NOTCURRENT _HRESULT_TYPEDEF_(0x8004D00D)
#define XACT_E_NOTRANSACTION _HRESULT_TYPEDEF_(0x8004D00E)
#define XACT_E_NOTSUPPORTED _HRESULT_TYPEDEF_(0x8004D00F)
#define XACT_E_UNKNOWNRMGRID _HRESULT_TYPEDEF_(0x8004D010)
#define XACT_E_WRONGSTATE _HRESULT_TYPEDEF_(0x8004D011)
#define XACT_E_WRONGUOW _HRESULT_TYPEDEF_(0x8004D012)
#define XACT_E_XTIONEXISTS _HRESULT_TYPEDEF_(0x8004D013)
#define XACT_E_NOIMPORTOBJECT _HRESULT_TYPEDEF_(0x8004D014)
#define XACT_E_INVALIDCOOKIE _HRESULT_TYPEDEF_(0x8004D015)
#define XACT_E_INDOUBT _HRESULT_TYPEDEF_(0x8004D016)
#define XACT_E_NOTIMEOUT _HRESULT_TYPEDEF_(0x8004D017)
#define XACT_E_ALREADYINPROGRESS _HRESULT_TYPEDEF_(0x8004D018)
#define XACT_E_ABORTED _HRESULT_TYPEDEF_(0x8004D019)
#define XACT_E_LOGFULL _HRESULT_TYPEDEF_(0x8004D01A)
#define XACT_E_TMNOTAVAILABLE _HRESULT_TYPEDEF_(0x8004D01B)
#define XACT_E_CONNECTION_DOWN _HRESULT_TYPEDEF_(0x8004D01C)
#define XACT_E_CONNECTION_DENIED _HRESULT_TYPEDEF_(0x8004D01D)
#define XACT_E_REENLISTTIMEOUT _HRESULT_TYPEDEF_(0x8004D01E)
#define XACT_E_TIP_CONNECT_FAILED _HRESULT_TYPEDEF_(0x8004D01F)
#define XACT_E_TIP_PROTOCOL_ERROR _HRESULT_TYPEDEF_(0x8004D020)
#define XACT_E_TIP_PULL_FAILED _HRESULT_TYPEDEF_(0x8004D021)
#define XACT_E_DEST_TMNOTAVAILABLE _HRESULT_TYPEDEF_(0x8004D022)
#define XACT_E_TIP_DISABLED _HRESULT_TYPEDEF_(0x8004D023)
#define XACT_E_NETWORK_TX_DISABLED _HRESULT_TYPEDEF_(0x8004D024)
#define XACT_E_PARTNER_NETWORK_TX_DISABLED _HRESULT_TYPEDEF_(0x8004D025)
#define XACT_E_XA_TX_DISABLED _HRESULT_TYPEDEF_(0x8004D026)
#define XACT_E_UNABLE_TO_READ_DTC_CONFIG _HRESULT_TYPEDEF_(0x8004D027)
#define XACT_E_UNABLE_TO_LOAD_DTC_PROXY _HRESULT_TYPEDEF_(0x8004D028)
#define XACT_E_ABORTING _HRESULT_TYPEDEF_(0x8004D029)
#define XACT_E_CLERKNOTFOUND _HRESULT_TYPEDEF_(0x8004D080)
#define XACT_E_CLERKEXISTS _HRESULT_TYPEDEF_(0x8004D081)
#define XACT_E_RECOVERYINPROGRESS _HRESULT_TYPEDEF_(0x8004D082)
#define XACT_E_TRANSACTIONCLOSED _HRESULT_TYPEDEF_(0x8004D083)
#define XACT_E_INVALIDLSN _HRESULT_TYPEDEF_(0x8004D084)
#define XACT_E_REPLAYREQUEST _HRESULT_TYPEDEF_(0x8004D085)
#define XACT_S_ASYNC _HRESULT_TYPEDEF_(0x0004D000)
#define XACT_S_DEFECT _HRESULT_TYPEDEF_(0x0004D001)
#define XACT_S_READONLY _HRESULT_TYPEDEF_(0x0004D002)
#define XACT_S_SOMENORETAIN _HRESULT_TYPEDEF_(0x0004D003)
#define XACT_S_OKINFORM _HRESULT_TYPEDEF_(0x0004D004)
#define XACT_S_MADECHANGESCONTENT _HRESULT_TYPEDEF_(0x0004D005)
#define XACT_S_MADECHANGESINFORM _HRESULT_TYPEDEF_(0x0004D006)
#define XACT_S_ALLNORETAIN _HRESULT_TYPEDEF_(0x0004D007)
#define XACT_S_ABORTING _HRESULT_TYPEDEF_(0x0004D008)
#define XACT_S_SINGLEPHASE _HRESULT_TYPEDEF_(0x0004D009)
#define XACT_S_LOCALLY_OK _HRESULT_TYPEDEF_(0x0004D00A)
#define XACT_S_LASTRESOURCEMANAGER _HRESULT_TYPEDEF_(0x0004D010)
#define CONTEXT_E_FIRST __MSABI_LONG(0x8004E000)
#define CONTEXT_E_LAST __MSABI_LONG(0x8004E02F)
#define CONTEXT_S_FIRST __MSABI_LONG(0x0004E000)
#define CONTEXT_S_LAST __MSABI_LONG(0x0004E02F)
#define CONTEXT_E_ABORTED _HRESULT_TYPEDEF_(0x8004E002)
#define CONTEXT_E_ABORTING _HRESULT_TYPEDEF_(0x8004E003)
#define CONTEXT_E_NOCONTEXT _HRESULT_TYPEDEF_(0x8004E004)
#define CONTEXT_E_WOULD_DEADLOCK _HRESULT_TYPEDEF_(0x8004E005)
#define CONTEXT_E_SYNCH_TIMEOUT _HRESULT_TYPEDEF_(0x8004E006)
#define CONTEXT_E_OLDREF _HRESULT_TYPEDEF_(0x8004E007)
#define CONTEXT_E_ROLENOTFOUND _HRESULT_TYPEDEF_(0x8004E00C)
#define CONTEXT_E_TMNOTAVAILABLE _HRESULT_TYPEDEF_(0x8004E00F)
#define CO_E_ACTIVATIONFAILED _HRESULT_TYPEDEF_(0x8004E021)
#define CO_E_ACTIVATIONFAILED_EVENTLOGGED _HRESULT_TYPEDEF_(0x8004E022)
#define CO_E_ACTIVATIONFAILED_CATALOGERROR _HRESULT_TYPEDEF_(0x8004E023)
#define CO_E_ACTIVATIONFAILED_TIMEOUT _HRESULT_TYPEDEF_(0x8004E024)
#define CO_E_INITIALIZATIONFAILED _HRESULT_TYPEDEF_(0x8004E025)
#define CONTEXT_E_NOJIT _HRESULT_TYPEDEF_(0x8004E026)
#define CONTEXT_E_NOTRANSACTION _HRESULT_TYPEDEF_(0x8004E027)
#define CO_E_THREADINGMODEL_CHANGED _HRESULT_TYPEDEF_(0x8004E028)
#define CO_E_NOIISINTRINSICS _HRESULT_TYPEDEF_(0x8004E029)
#define CO_E_NOCOOKIES _HRESULT_TYPEDEF_(0x8004E02A)
#define CO_E_DBERROR _HRESULT_TYPEDEF_(0x8004E02B)
#define CO_E_NOTPOOLED _HRESULT_TYPEDEF_(0x8004E02C)
#define CO_E_NOTCONSTRUCTED _HRESULT_TYPEDEF_(0x8004E02D)
#define CO_E_NOSYNCHRONIZATION _HRESULT_TYPEDEF_(0x8004E02E)
#define CO_E_ISOLEVELMISMATCH _HRESULT_TYPEDEF_(0x8004E02F)
#define OLE_S_USEREG _HRESULT_TYPEDEF_(0x00040000)
#define OLE_S_STATIC _HRESULT_TYPEDEF_(0x00040001)
#define OLE_S_MAC_CLIPFORMAT _HRESULT_TYPEDEF_(0x00040002)
#define DRAGDROP_S_DROP _HRESULT_TYPEDEF_(0x00040100)
#define DRAGDROP_S_CANCEL _HRESULT_TYPEDEF_(0x00040101)
#define DRAGDROP_S_USEDEFAULTCURSORS _HRESULT_TYPEDEF_(0x00040102)
#define DATA_S_SAMEFORMATETC _HRESULT_TYPEDEF_(0x00040130)
#define VIEW_S_ALREADY_FROZEN _HRESULT_TYPEDEF_(0x00040140)
#define CACHE_S_FORMATETC_NOTSUPPORTED _HRESULT_TYPEDEF_(0x00040170)
#define CACHE_S_SAMECACHE _HRESULT_TYPEDEF_(0x00040171)
#define CACHE_S_SOMECACHES_NOTUPDATED _HRESULT_TYPEDEF_(0x00040172)
#define OLEOBJ_S_INVALIDVERB _HRESULT_TYPEDEF_(0x00040180)
#define OLEOBJ_S_CANNOT_DOVERB_NOW _HRESULT_TYPEDEF_(0x00040181)
#define OLEOBJ_S_INVALIDHWND _HRESULT_TYPEDEF_(0x00040182)
#define INPLACE_S_TRUNCATED _HRESULT_TYPEDEF_(0x000401A0)
#define CONVERT10_S_NO_PRESENTATION _HRESULT_TYPEDEF_(0x000401C0)
#define MK_S_REDUCED_TO_SELF _HRESULT_TYPEDEF_(0x000401E2)
#define MK_S_ME _HRESULT_TYPEDEF_(0x000401E4)
#define MK_S_HIM _HRESULT_TYPEDEF_(0x000401E5)
#define MK_S_US _HRESULT_TYPEDEF_(0x000401E6)
#define MK_S_MONIKERALREADYREGISTERED _HRESULT_TYPEDEF_(0x000401E7)
#define SCHED_S_TASK_READY _HRESULT_TYPEDEF_(0x00041300)
#define SCHED_S_TASK_RUNNING _HRESULT_TYPEDEF_(0x00041301)
#define SCHED_S_TASK_DISABLED _HRESULT_TYPEDEF_(0x00041302)
#define SCHED_S_TASK_HAS_NOT_RUN _HRESULT_TYPEDEF_(0x00041303)
#define SCHED_S_TASK_NO_MORE_RUNS _HRESULT_TYPEDEF_(0x00041304)
#define SCHED_S_TASK_NOT_SCHEDULED _HRESULT_TYPEDEF_(0x00041305)
#define SCHED_S_TASK_TERMINATED _HRESULT_TYPEDEF_(0x00041306)
#define SCHED_S_TASK_NO_VALID_TRIGGERS _HRESULT_TYPEDEF_(0x00041307)
#define SCHED_S_EVENT_TRIGGER _HRESULT_TYPEDEF_(0x00041308)
#define SCHED_E_TRIGGER_NOT_FOUND _HRESULT_TYPEDEF_(0x80041309)
#define SCHED_E_TASK_NOT_READY _HRESULT_TYPEDEF_(0x8004130A)
#define SCHED_E_TASK_NOT_RUNNING _HRESULT_TYPEDEF_(0x8004130B)
#define SCHED_E_SERVICE_NOT_INSTALLED _HRESULT_TYPEDEF_(0x8004130C)
#define SCHED_E_CANNOT_OPEN_TASK _HRESULT_TYPEDEF_(0x8004130D)
#define SCHED_E_INVALID_TASK _HRESULT_TYPEDEF_(0x8004130E)
#define SCHED_E_ACCOUNT_INFORMATION_NOT_SET _HRESULT_TYPEDEF_(0x8004130F)
#define SCHED_E_ACCOUNT_NAME_NOT_FOUND _HRESULT_TYPEDEF_(0x80041310)
#define SCHED_E_ACCOUNT_DBASE_CORRUPT _HRESULT_TYPEDEF_(0x80041311)
#define SCHED_E_NO_SECURITY_SERVICES _HRESULT_TYPEDEF_(0x80041312)
#define SCHED_E_UNKNOWN_OBJECT_VERSION _HRESULT_TYPEDEF_(0x80041313)
#define SCHED_E_UNSUPPORTED_ACCOUNT_OPTION _HRESULT_TYPEDEF_(0x80041314)
#define SCHED_E_SERVICE_NOT_RUNNING _HRESULT_TYPEDEF_(0x80041315)
#define CO_E_CLASS_CREATE_FAILED _HRESULT_TYPEDEF_(0x80080001)
#define CO_E_SCM_ERROR _HRESULT_TYPEDEF_(0x80080002)
#define CO_E_SCM_RPC_FAILURE _HRESULT_TYPEDEF_(0x80080003)
#define CO_E_BAD_PATH _HRESULT_TYPEDEF_(0x80080004)
#define CO_E_SERVER_EXEC_FAILURE _HRESULT_TYPEDEF_(0x80080005)
#define CO_E_OBJSRV_RPC_FAILURE _HRESULT_TYPEDEF_(0x80080006)
#define MK_E_NO_NORMALIZED _HRESULT_TYPEDEF_(0x80080007)
#define CO_E_SERVER_STOPPING _HRESULT_TYPEDEF_(0x80080008)
#define MEM_E_INVALID_ROOT _HRESULT_TYPEDEF_(0x80080009)
#define MEM_E_INVALID_LINK _HRESULT_TYPEDEF_(0x80080010)
#define MEM_E_INVALID_SIZE _HRESULT_TYPEDEF_(0x80080011)
#define CO_S_NOTALLINTERFACES _HRESULT_TYPEDEF_(0x00080012)
#define CO_S_MACHINENAMENOTFOUND _HRESULT_TYPEDEF_(0x00080013)
#define DISP_E_UNKNOWNINTERFACE _HRESULT_TYPEDEF_(0x80020001)
#define DISP_E_MEMBERNOTFOUND _HRESULT_TYPEDEF_(0x80020003)
#define DISP_E_PARAMNOTFOUND _HRESULT_TYPEDEF_(0x80020004)
#define DISP_E_TYPEMISMATCH _HRESULT_TYPEDEF_(0x80020005)
#define DISP_E_UNKNOWNNAME _HRESULT_TYPEDEF_(0x80020006)
#define DISP_E_NONAMEDARGS _HRESULT_TYPEDEF_(0x80020007)
#define DISP_E_BADVARTYPE _HRESULT_TYPEDEF_(0x80020008)
#define DISP_E_EXCEPTION _HRESULT_TYPEDEF_(0x80020009)
#define DISP_E_OVERFLOW _HRESULT_TYPEDEF_(0x8002000A)
#define DISP_E_BADINDEX _HRESULT_TYPEDEF_(0x8002000B)
#define DISP_E_UNKNOWNLCID _HRESULT_TYPEDEF_(0x8002000C)
#define DISP_E_ARRAYISLOCKED _HRESULT_TYPEDEF_(0x8002000D)
#define DISP_E_BADPARAMCOUNT _HRESULT_TYPEDEF_(0x8002000E)
#define DISP_E_PARAMNOTOPTIONAL _HRESULT_TYPEDEF_(0x8002000F)
#define DISP_E_BADCALLEE _HRESULT_TYPEDEF_(0x80020010)
#define DISP_E_NOTACOLLECTION _HRESULT_TYPEDEF_(0x80020011)
#define DISP_E_DIVBYZERO _HRESULT_TYPEDEF_(0x80020012)
#define DISP_E_BUFFERTOOSMALL _HRESULT_TYPEDEF_(0x80020013)
#define TYPE_E_BUFFERTOOSMALL _HRESULT_TYPEDEF_(0x80028016)
#define TYPE_E_FIELDNOTFOUND _HRESULT_TYPEDEF_(0x80028017)
#define TYPE_E_INVDATAREAD _HRESULT_TYPEDEF_(0x80028018)
#define TYPE_E_UNSUPFORMAT _HRESULT_TYPEDEF_(0x80028019)
#define TYPE_E_REGISTRYACCESS _HRESULT_TYPEDEF_(0x8002801C)
#define TYPE_E_LIBNOTREGISTERED _HRESULT_TYPEDEF_(0x8002801D)
#define TYPE_E_UNDEFINEDTYPE _HRESULT_TYPEDEF_(0x80028027)
#define TYPE_E_QUALIFIEDNAMEDISALLOWED _HRESULT_TYPEDEF_(0x80028028)
#define TYPE_E_INVALIDSTATE _HRESULT_TYPEDEF_(0x80028029)
#define TYPE_E_WRONGTYPEKIND _HRESULT_TYPEDEF_(0x8002802A)
#define TYPE_E_ELEMENTNOTFOUND _HRESULT_TYPEDEF_(0x8002802B)
#define TYPE_E_AMBIGUOUSNAME _HRESULT_TYPEDEF_(0x8002802C)
#define TYPE_E_NAMECONFLICT _HRESULT_TYPEDEF_(0x8002802D)
#define TYPE_E_UNKNOWNLCID _HRESULT_TYPEDEF_(0x8002802E)
#define TYPE_E_DLLFUNCTIONNOTFOUND _HRESULT_TYPEDEF_(0x8002802F)
#define TYPE_E_BADMODULEKIND _HRESULT_TYPEDEF_(0x800288BD)
#define TYPE_E_SIZETOOBIG _HRESULT_TYPEDEF_(0x800288C5)
#define TYPE_E_DUPLICATEID _HRESULT_TYPEDEF_(0x800288C6)
#define TYPE_E_INVALIDID _HRESULT_TYPEDEF_(0x800288CF)
#define TYPE_E_TYPEMISMATCH _HRESULT_TYPEDEF_(0x80028CA0)
#define TYPE_E_OUTOFBOUNDS _HRESULT_TYPEDEF_(0x80028CA1)
#define TYPE_E_IOERROR _HRESULT_TYPEDEF_(0x80028CA2)
#define TYPE_E_CANTCREATETMPFILE _HRESULT_TYPEDEF_(0x80028CA3)
#define TYPE_E_CANTLOADLIBRARY _HRESULT_TYPEDEF_(0x80029C4A)
#define TYPE_E_INCONSISTENTPROPFUNCS _HRESULT_TYPEDEF_(0x80029C83)
#define TYPE_E_CIRCULARTYPE _HRESULT_TYPEDEF_(0x80029C84)
#define STG_E_INVALIDFUNCTION _HRESULT_TYPEDEF_(0x80030001)
#define STG_E_FILENOTFOUND _HRESULT_TYPEDEF_(0x80030002)
#define STG_E_PATHNOTFOUND _HRESULT_TYPEDEF_(0x80030003)
#define STG_E_TOOMANYOPENFILES _HRESULT_TYPEDEF_(0x80030004)
#define STG_E_ACCESSDENIED _HRESULT_TYPEDEF_(0x80030005)
#define STG_E_INVALIDHANDLE _HRESULT_TYPEDEF_(0x80030006)
#define STG_E_INSUFFICIENTMEMORY _HRESULT_TYPEDEF_(0x80030008)
#define STG_E_INVALIDPOINTER _HRESULT_TYPEDEF_(0x80030009)
#define STG_E_NOMOREFILES _HRESULT_TYPEDEF_(0x80030012)
#define STG_E_DISKISWRITEPROTECTED _HRESULT_TYPEDEF_(0x80030013)
#define STG_E_SEEKERROR _HRESULT_TYPEDEF_(0x80030019)
#define STG_E_WRITEFAULT _HRESULT_TYPEDEF_(0x8003001D)
#define STG_E_READFAULT _HRESULT_TYPEDEF_(0x8003001E)
#define STG_E_SHAREVIOLATION _HRESULT_TYPEDEF_(0x80030020)
#define STG_E_LOCKVIOLATION _HRESULT_TYPEDEF_(0x80030021)
#define STG_E_FILEALREADYEXISTS _HRESULT_TYPEDEF_(0x80030050)
#define STG_E_INVALIDPARAMETER _HRESULT_TYPEDEF_(0x80030057)
#define STG_E_MEDIUMFULL _HRESULT_TYPEDEF_(0x80030070)
#define STG_E_PROPSETMISMATCHED _HRESULT_TYPEDEF_(0x800300F0)
#define STG_E_ABNORMALAPIEXIT _HRESULT_TYPEDEF_(0x800300FA)
#define STG_E_INVALIDHEADER _HRESULT_TYPEDEF_(0x800300FB)
#define STG_E_INVALIDNAME _HRESULT_TYPEDEF_(0x800300FC)
#define STG_E_UNKNOWN _HRESULT_TYPEDEF_(0x800300FD)
#define STG_E_UNIMPLEMENTEDFUNCTION _HRESULT_TYPEDEF_(0x800300FE)
#define STG_E_INVALIDFLAG _HRESULT_TYPEDEF_(0x800300FF)
#define STG_E_INUSE _HRESULT_TYPEDEF_(0x80030100)
#define STG_E_NOTCURRENT _HRESULT_TYPEDEF_(0x80030101)
#define STG_E_REVERTED _HRESULT_TYPEDEF_(0x80030102)
#define STG_E_CANTSAVE _HRESULT_TYPEDEF_(0x80030103)
#define STG_E_OLDFORMAT _HRESULT_TYPEDEF_(0x80030104)
#define STG_E_OLDDLL _HRESULT_TYPEDEF_(0x80030105)
#define STG_E_SHAREREQUIRED _HRESULT_TYPEDEF_(0x80030106)
#define STG_E_NOTFILEBASEDSTORAGE _HRESULT_TYPEDEF_(0x80030107)
#define STG_E_EXTANTMARSHALLINGS _HRESULT_TYPEDEF_(0x80030108)
#define STG_E_DOCFILECORRUPT _HRESULT_TYPEDEF_(0x80030109)
#define STG_E_BADBASEADDRESS _HRESULT_TYPEDEF_(0x80030110)
#define STG_E_DOCFILETOOLARGE _HRESULT_TYPEDEF_(0x80030111)
#define STG_E_NOTSIMPLEFORMAT _HRESULT_TYPEDEF_(0x80030112)
#define STG_E_INCOMPLETE _HRESULT_TYPEDEF_(0x80030201)
#define STG_E_TERMINATED _HRESULT_TYPEDEF_(0x80030202)
#define STG_S_CONVERTED _HRESULT_TYPEDEF_(0x00030200)
#define STG_S_BLOCK _HRESULT_TYPEDEF_(0x00030201)
#define STG_S_RETRYNOW _HRESULT_TYPEDEF_(0x00030202)
#define STG_S_MONITORING _HRESULT_TYPEDEF_(0x00030203)
#define STG_S_MULTIPLEOPENS _HRESULT_TYPEDEF_(0x00030204)
#define STG_S_CONSOLIDATIONFAILED _HRESULT_TYPEDEF_(0x00030205)
#define STG_S_CANNOTCONSOLIDATE _HRESULT_TYPEDEF_(0x00030206)
#define STG_E_STATUS_COPY_PROTECTION_FAILURE _HRESULT_TYPEDEF_(0x80030305)
#define STG_E_CSS_AUTHENTICATION_FAILURE _HRESULT_TYPEDEF_(0x80030306)
#define STG_E_CSS_KEY_NOT_PRESENT _HRESULT_TYPEDEF_(0x80030307)
#define STG_E_CSS_KEY_NOT_ESTABLISHED _HRESULT_TYPEDEF_(0x80030308)
#define STG_E_CSS_SCRAMBLED_SECTOR _HRESULT_TYPEDEF_(0x80030309)
#define STG_E_CSS_REGION_MISMATCH _HRESULT_TYPEDEF_(0x8003030A)
#define STG_E_RESETS_EXHAUSTED _HRESULT_TYPEDEF_(0x8003030B)
#define RPC_E_CALL_REJECTED _HRESULT_TYPEDEF_(0x80010001)
#define RPC_E_CALL_CANCELED _HRESULT_TYPEDEF_(0x80010002)
#define RPC_E_CANTPOST_INSENDCALL _HRESULT_TYPEDEF_(0x80010003)
#define RPC_E_CANTCALLOUT_INASYNCCALL _HRESULT_TYPEDEF_(0x80010004)
#define RPC_E_CANTCALLOUT_INEXTERNALCALL _HRESULT_TYPEDEF_(0x80010005)
#define RPC_E_CONNECTION_TERMINATED _HRESULT_TYPEDEF_(0x80010006)
#define RPC_E_SERVER_DIED _HRESULT_TYPEDEF_(0x80010007)
#define RPC_E_CLIENT_DIED _HRESULT_TYPEDEF_(0x80010008)
#define RPC_E_INVALID_DATAPACKET _HRESULT_TYPEDEF_(0x80010009)
#define RPC_E_CANTTRANSMIT_CALL _HRESULT_TYPEDEF_(0x8001000A)
#define RPC_E_CLIENT_CANTMARSHAL_DATA _HRESULT_TYPEDEF_(0x8001000B)
#define RPC_E_CLIENT_CANTUNMARSHAL_DATA _HRESULT_TYPEDEF_(0x8001000C)
#define RPC_E_SERVER_CANTMARSHAL_DATA _HRESULT_TYPEDEF_(0x8001000D)
#define RPC_E_SERVER_CANTUNMARSHAL_DATA _HRESULT_TYPEDEF_(0x8001000E)
#define RPC_E_INVALID_DATA _HRESULT_TYPEDEF_(0x8001000F)
#define RPC_E_INVALID_PARAMETER _HRESULT_TYPEDEF_(0x80010010)
#define RPC_E_CANTCALLOUT_AGAIN _HRESULT_TYPEDEF_(0x80010011)
#define RPC_E_SERVER_DIED_DNE _HRESULT_TYPEDEF_(0x80010012)
#define RPC_E_SYS_CALL_FAILED _HRESULT_TYPEDEF_(0x80010100)
#define RPC_E_OUT_OF_RESOURCES _HRESULT_TYPEDEF_(0x80010101)
#define RPC_E_ATTEMPTED_MULTITHREAD _HRESULT_TYPEDEF_(0x80010102)
#define RPC_E_NOT_REGISTERED _HRESULT_TYPEDEF_(0x80010103)
#define RPC_E_FAULT _HRESULT_TYPEDEF_(0x80010104)
#define RPC_E_SERVERFAULT _HRESULT_TYPEDEF_(0x80010105)
#define RPC_E_CHANGED_MODE _HRESULT_TYPEDEF_(0x80010106)
#define RPC_E_INVALIDMETHOD _HRESULT_TYPEDEF_(0x80010107)
#define RPC_E_DISCONNECTED _HRESULT_TYPEDEF_(0x80010108)
#define RPC_E_RETRY _HRESULT_TYPEDEF_(0x80010109)
#define RPC_E_SERVERCALL_RETRYLATER _HRESULT_TYPEDEF_(0x8001010A)
#define RPC_E_SERVERCALL_REJECTED _HRESULT_TYPEDEF_(0x8001010B)
#define RPC_E_INVALID_CALLDATA _HRESULT_TYPEDEF_(0x8001010C)
#define RPC_E_CANTCALLOUT_ININPUTSYNCCALL _HRESULT_TYPEDEF_(0x8001010D)
#define RPC_E_WRONG_THREAD _HRESULT_TYPEDEF_(0x8001010E)
#define RPC_E_THREAD_NOT_INIT _HRESULT_TYPEDEF_(0x8001010F)
#define RPC_E_VERSION_MISMATCH _HRESULT_TYPEDEF_(0x80010110)
#define RPC_E_INVALID_HEADER _HRESULT_TYPEDEF_(0x80010111)
#define RPC_E_INVALID_EXTENSION _HRESULT_TYPEDEF_(0x80010112)
#define RPC_E_INVALID_IPID _HRESULT_TYPEDEF_(0x80010113)
#define RPC_E_INVALID_OBJECT _HRESULT_TYPEDEF_(0x80010114)
#define RPC_S_CALLPENDING _HRESULT_TYPEDEF_(0x80010115)
#define RPC_S_WAITONTIMER _HRESULT_TYPEDEF_(0x80010116)
#define RPC_E_CALL_COMPLETE _HRESULT_TYPEDEF_(0x80010117)
#define RPC_E_UNSECURE_CALL _HRESULT_TYPEDEF_(0x80010118)
#define RPC_E_TOO_LATE _HRESULT_TYPEDEF_(0x80010119)
#define RPC_E_NO_GOOD_SECURITY_PACKAGES _HRESULT_TYPEDEF_(0x8001011A)
#define RPC_E_ACCESS_DENIED _HRESULT_TYPEDEF_(0x8001011B)
#define RPC_E_REMOTE_DISABLED _HRESULT_TYPEDEF_(0x8001011C)
#define RPC_E_INVALID_OBJREF _HRESULT_TYPEDEF_(0x8001011D)
#define RPC_E_NO_CONTEXT _HRESULT_TYPEDEF_(0x8001011E)
#define RPC_E_TIMEOUT _HRESULT_TYPEDEF_(0x8001011F)
#define RPC_E_NO_SYNC _HRESULT_TYPEDEF_(0x80010120)
#define RPC_E_FULLSIC_REQUIRED _HRESULT_TYPEDEF_(0x80010121)
#define RPC_E_INVALID_STD_NAME _HRESULT_TYPEDEF_(0x80010122)
#define CO_E_FAILEDTOIMPERSONATE _HRESULT_TYPEDEF_(0x80010123)
#define CO_E_FAILEDTOGETSECCTX _HRESULT_TYPEDEF_(0x80010124)
#define CO_E_FAILEDTOOPENTHREADTOKEN _HRESULT_TYPEDEF_(0x80010125)
#define CO_E_FAILEDTOGETTOKENINFO _HRESULT_TYPEDEF_(0x80010126)
#define CO_E_TRUSTEEDOESNTMATCHCLIENT _HRESULT_TYPEDEF_(0x80010127)
#define CO_E_FAILEDTOQUERYCLIENTBLANKET _HRESULT_TYPEDEF_(0x80010128)
#define CO_E_FAILEDTOSETDACL _HRESULT_TYPEDEF_(0x80010129)
#define CO_E_ACCESSCHECKFAILED _HRESULT_TYPEDEF_(0x8001012A)
#define CO_E_NETACCESSAPIFAILED _HRESULT_TYPEDEF_(0x8001012B)
#define CO_E_WRONGTRUSTEENAMESYNTAX _HRESULT_TYPEDEF_(0x8001012C)
#define CO_E_INVALIDSID _HRESULT_TYPEDEF_(0x8001012D)
#define CO_E_CONVERSIONFAILED _HRESULT_TYPEDEF_(0x8001012E)
#define CO_E_NOMATCHINGSIDFOUND _HRESULT_TYPEDEF_(0x8001012F)
#define CO_E_LOOKUPACCSIDFAILED _HRESULT_TYPEDEF_(0x80010130)
#define CO_E_NOMATCHINGNAMEFOUND _HRESULT_TYPEDEF_(0x80010131)
#define CO_E_LOOKUPACCNAMEFAILED _HRESULT_TYPEDEF_(0x80010132)
#define CO_E_SETSERLHNDLFAILED _HRESULT_TYPEDEF_(0x80010133)
#define CO_E_FAILEDTOGETWINDIR _HRESULT_TYPEDEF_(0x80010134)
#define CO_E_PATHTOOLONG _HRESULT_TYPEDEF_(0x80010135)
#define CO_E_FAILEDTOGENUUID _HRESULT_TYPEDEF_(0x80010136)
#define CO_E_FAILEDTOCREATEFILE _HRESULT_TYPEDEF_(0x80010137)
#define CO_E_FAILEDTOCLOSEHANDLE _HRESULT_TYPEDEF_(0x80010138)
#define CO_E_EXCEEDSYSACLLIMIT _HRESULT_TYPEDEF_(0x80010139)
#define CO_E_ACESINWRONGORDER _HRESULT_TYPEDEF_(0x8001013A)
#define CO_E_INCOMPATIBLESTREAMVERSION _HRESULT_TYPEDEF_(0x8001013B)
#define CO_E_FAILEDTOOPENPROCESSTOKEN _HRESULT_TYPEDEF_(0x8001013C)
#define CO_E_DECODEFAILED _HRESULT_TYPEDEF_(0x8001013D)
#define CO_E_ACNOTINITIALIZED _HRESULT_TYPEDEF_(0x8001013F)
#define CO_E_CANCEL_DISABLED _HRESULT_TYPEDEF_(0x80010140)
#define RPC_E_UNEXPECTED _HRESULT_TYPEDEF_(0x8001FFFF)
#define ERROR_AUDITING_DISABLED _HRESULT_TYPEDEF_(0xC0090001)
#define ERROR_ALL_SIDS_FILTERED _HRESULT_TYPEDEF_(0xC0090002)
#define NTE_BAD_UID _HRESULT_TYPEDEF_(0x80090001)
#define NTE_BAD_HASH _HRESULT_TYPEDEF_(0x80090002)
#define NTE_BAD_KEY _HRESULT_TYPEDEF_(0x80090003)
#define NTE_BAD_LEN _HRESULT_TYPEDEF_(0x80090004)
#define NTE_BAD_DATA _HRESULT_TYPEDEF_(0x80090005)
#define NTE_BAD_SIGNATURE _HRESULT_TYPEDEF_(0x80090006)
#define NTE_BAD_VER _HRESULT_TYPEDEF_(0x80090007)
#define NTE_BAD_ALGID _HRESULT_TYPEDEF_(0x80090008)
#define NTE_BAD_FLAGS _HRESULT_TYPEDEF_(0x80090009)
#define NTE_BAD_TYPE _HRESULT_TYPEDEF_(0x8009000A)
#define NTE_BAD_KEY_STATE _HRESULT_TYPEDEF_(0x8009000B)
#define NTE_BAD_HASH_STATE _HRESULT_TYPEDEF_(0x8009000C)
#define NTE_NO_KEY _HRESULT_TYPEDEF_(0x8009000D)
#define NTE_NO_MEMORY _HRESULT_TYPEDEF_(0x8009000E)
#define NTE_EXISTS _HRESULT_TYPEDEF_(0x8009000F)
#define NTE_PERM _HRESULT_TYPEDEF_(0x80090010)
#define NTE_NOT_FOUND _HRESULT_TYPEDEF_(0x80090011)
#define NTE_DOUBLE_ENCRYPT _HRESULT_TYPEDEF_(0x80090012)
#define NTE_BAD_PROVIDER _HRESULT_TYPEDEF_(0x80090013)
#define NTE_BAD_PROV_TYPE _HRESULT_TYPEDEF_(0x80090014)
#define NTE_BAD_PUBLIC_KEY _HRESULT_TYPEDEF_(0x80090015)
#define NTE_BAD_KEYSET _HRESULT_TYPEDEF_(0x80090016)
#define NTE_PROV_TYPE_NOT_DEF _HRESULT_TYPEDEF_(0x80090017)
#define NTE_PROV_TYPE_ENTRY_BAD _HRESULT_TYPEDEF_(0x80090018)
#define NTE_KEYSET_NOT_DEF _HRESULT_TYPEDEF_(0x80090019)
#define NTE_KEYSET_ENTRY_BAD _HRESULT_TYPEDEF_(0x8009001A)
#define NTE_PROV_TYPE_NO_MATCH _HRESULT_TYPEDEF_(0x8009001B)
#define NTE_SIGNATURE_FILE_BAD _HRESULT_TYPEDEF_(0x8009001C)
#define NTE_PROVIDER_DLL_FAIL _HRESULT_TYPEDEF_(0x8009001D)
#define NTE_PROV_DLL_NOT_FOUND _HRESULT_TYPEDEF_(0x8009001E)
#define NTE_BAD_KEYSET_PARAM _HRESULT_TYPEDEF_(0x8009001F)
#define NTE_FAIL _HRESULT_TYPEDEF_(0x80090020)
#define NTE_SYS_ERR _HRESULT_TYPEDEF_(0x80090021)
#define NTE_SILENT_CONTEXT _HRESULT_TYPEDEF_(0x80090022)
#define NTE_TOKEN_KEYSET_STORAGE_FULL _HRESULT_TYPEDEF_(0x80090023)
#define NTE_TEMPORARY_PROFILE _HRESULT_TYPEDEF_(0x80090024)
#define NTE_FIXEDPARAMETER _HRESULT_TYPEDEF_(0x80090025)
#define SEC_E_INSUFFICIENT_MEMORY _HRESULT_TYPEDEF_(0x80090300)
#define SEC_E_INVALID_HANDLE _HRESULT_TYPEDEF_(0x80090301)
#define SEC_E_UNSUPPORTED_FUNCTION _HRESULT_TYPEDEF_(0x80090302)
#define SEC_E_TARGET_UNKNOWN _HRESULT_TYPEDEF_(0x80090303)
#define SEC_E_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x80090304)
#define SEC_E_SECPKG_NOT_FOUND _HRESULT_TYPEDEF_(0x80090305)
#define SEC_E_NOT_OWNER _HRESULT_TYPEDEF_(0x80090306)
#define SEC_E_CANNOT_INSTALL _HRESULT_TYPEDEF_(0x80090307)
#define SEC_E_INVALID_TOKEN _HRESULT_TYPEDEF_(0x80090308)
#define SEC_E_CANNOT_PACK _HRESULT_TYPEDEF_(0x80090309)
#define SEC_E_QOP_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8009030A)
#define SEC_E_NO_IMPERSONATION _HRESULT_TYPEDEF_(0x8009030B)
#define SEC_E_LOGON_DENIED _HRESULT_TYPEDEF_(0x8009030C)
#define SEC_E_UNKNOWN_CREDENTIALS _HRESULT_TYPEDEF_(0x8009030D)
#define SEC_E_NO_CREDENTIALS _HRESULT_TYPEDEF_(0x8009030E)
#define SEC_E_MESSAGE_ALTERED _HRESULT_TYPEDEF_(0x8009030F)
#define SEC_E_OUT_OF_SEQUENCE _HRESULT_TYPEDEF_(0x80090310)
#define SEC_E_NO_AUTHENTICATING_AUTHORITY _HRESULT_TYPEDEF_(0x80090311)
#define SEC_I_CONTINUE_NEEDED _HRESULT_TYPEDEF_(0x00090312)
#define SEC_I_COMPLETE_NEEDED _HRESULT_TYPEDEF_(0x00090313)
#define SEC_I_COMPLETE_AND_CONTINUE _HRESULT_TYPEDEF_(0x00090314)
#define SEC_I_LOCAL_LOGON _HRESULT_TYPEDEF_(0x00090315)
#define SEC_I_GENERIC_EXTENSION_RECEIVED _HRESULT_TYPEDEF_(0x00090316)
#define SEC_E_BAD_PKGID _HRESULT_TYPEDEF_(0x80090316)
#define SEC_E_CONTEXT_EXPIRED _HRESULT_TYPEDEF_(0x80090317)
#define SEC_I_CONTEXT_EXPIRED _HRESULT_TYPEDEF_(0x00090317)
#define SEC_E_INCOMPLETE_MESSAGE _HRESULT_TYPEDEF_(0x80090318)
#define SEC_E_INCOMPLETE_CREDENTIALS _HRESULT_TYPEDEF_(0x80090320)
#define SEC_E_BUFFER_TOO_SMALL _HRESULT_TYPEDEF_(0x80090321)
#define SEC_I_INCOMPLETE_CREDENTIALS _HRESULT_TYPEDEF_(0x00090320)
#define SEC_I_RENEGOTIATE _HRESULT_TYPEDEF_(0x00090321)
#define SEC_E_WRONG_PRINCIPAL _HRESULT_TYPEDEF_(0x80090322)
#define SEC_I_NO_LSA_CONTEXT _HRESULT_TYPEDEF_(0x00090323)
#define SEC_E_TIME_SKEW _HRESULT_TYPEDEF_(0x80090324)
#define SEC_E_UNTRUSTED_ROOT _HRESULT_TYPEDEF_(0x80090325)
#define SEC_E_ILLEGAL_MESSAGE _HRESULT_TYPEDEF_(0x80090326)
#define SEC_E_CERT_UNKNOWN _HRESULT_TYPEDEF_(0x80090327)
#define SEC_E_CERT_EXPIRED _HRESULT_TYPEDEF_(0x80090328)
#define SEC_E_ENCRYPT_FAILURE _HRESULT_TYPEDEF_(0x80090329)
#define SEC_E_DECRYPT_FAILURE _HRESULT_TYPEDEF_(0x80090330)
#define SEC_E_ALGORITHM_MISMATCH _HRESULT_TYPEDEF_(0x80090331)
#define SEC_E_SECURITY_QOS_FAILED _HRESULT_TYPEDEF_(0x80090332)
#define SEC_E_UNFINISHED_CONTEXT_DELETED _HRESULT_TYPEDEF_(0x80090333)
#define SEC_E_NO_TGT_REPLY _HRESULT_TYPEDEF_(0x80090334)
#define SEC_E_NO_IP_ADDRESSES _HRESULT_TYPEDEF_(0x80090335)
#define SEC_E_WRONG_CREDENTIAL_HANDLE _HRESULT_TYPEDEF_(0x80090336)
#define SEC_E_CRYPTO_SYSTEM_INVALID _HRESULT_TYPEDEF_(0x80090337)
#define SEC_E_MAX_REFERRALS_EXCEEDED _HRESULT_TYPEDEF_(0x80090338)
#define SEC_E_MUST_BE_KDC _HRESULT_TYPEDEF_(0x80090339)
#define SEC_E_STRONG_CRYPTO_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8009033A)
#define SEC_E_TOO_MANY_PRINCIPALS _HRESULT_TYPEDEF_(0x8009033B)
#define SEC_E_NO_PA_DATA _HRESULT_TYPEDEF_(0x8009033C)
#define SEC_E_PKINIT_NAME_MISMATCH _HRESULT_TYPEDEF_(0x8009033D)
#define SEC_E_SMARTCARD_LOGON_REQUIRED _HRESULT_TYPEDEF_(0x8009033E)
#define SEC_E_SHUTDOWN_IN_PROGRESS _HRESULT_TYPEDEF_(0x8009033F)
#define SEC_E_KDC_INVALID_REQUEST _HRESULT_TYPEDEF_(0x80090340)
#define SEC_E_KDC_UNABLE_TO_REFER _HRESULT_TYPEDEF_(0x80090341)
#define SEC_E_KDC_UNKNOWN_ETYPE _HRESULT_TYPEDEF_(0x80090342)
#define SEC_E_UNSUPPORTED_PREAUTH _HRESULT_TYPEDEF_(0x80090343)
#define SEC_E_DELEGATION_REQUIRED _HRESULT_TYPEDEF_(0x80090345)
#define SEC_E_BAD_BINDINGS _HRESULT_TYPEDEF_(0x80090346)
#define SEC_E_MULTIPLE_ACCOUNTS _HRESULT_TYPEDEF_(0x80090347)
#define SEC_E_NO_KERB_KEY _HRESULT_TYPEDEF_(0x80090348)
#define SEC_E_CERT_WRONG_USAGE _HRESULT_TYPEDEF_(0x80090349)
#define SEC_E_DOWNGRADE_DETECTED _HRESULT_TYPEDEF_(0x80090350)
#define SEC_E_SMARTCARD_CERT_REVOKED _HRESULT_TYPEDEF_(0x80090351)
#define SEC_E_ISSUING_CA_UNTRUSTED _HRESULT_TYPEDEF_(0x80090352)
#define SEC_E_REVOCATION_OFFLINE_C _HRESULT_TYPEDEF_(0x80090353)
#define SEC_E_PKINIT_CLIENT_FAILURE _HRESULT_TYPEDEF_(0x80090354)
#define SEC_E_SMARTCARD_CERT_EXPIRED _HRESULT_TYPEDEF_(0x80090355)
#define SEC_E_NO_S4U_PROT_SUPPORT _HRESULT_TYPEDEF_(0x80090356)
#define SEC_E_CROSSREALM_DELEGATION_FAILURE _HRESULT_TYPEDEF_(0x80090357)
#define SEC_E_REVOCATION_OFFLINE_KDC _HRESULT_TYPEDEF_(0x80090358)
#define SEC_E_ISSUING_CA_UNTRUSTED_KDC _HRESULT_TYPEDEF_(0x80090359)
#define SEC_E_KDC_CERT_EXPIRED _HRESULT_TYPEDEF_(0x8009035A)
#define SEC_E_KDC_CERT_REVOKED _HRESULT_TYPEDEF_(0x8009035B)
#define SEC_I_SIGNATURE_NEEDED _HRESULT_TYPEDEF_(0x0009035C)
#define SEC_E_INVALID_PARAMETER _HRESULT_TYPEDEF_(0x8009035D)
#define SEC_E_DELEGATION_POLICY _HRESULT_TYPEDEF_(0x8009035E)
#define SEC_E_POLICY_NLTM_ONLY _HRESULT_TYPEDEF_(0x8009035F)
#define SEC_I_NO_RENEGOTIATION _HRESULT_TYPEDEF_(0x00090360)
#define SEC_E_NO_CONTEXT _HRESULT_TYPEDEF_(0x80090361)
#define SEC_E_PKU2U_CERT_FAILURE _HRESULT_TYPEDEF_(0x80090362)
#define SEC_E_MUTUAL_AUTH_FAILED _HRESULT_TYPEDEF_(0x80090363)
#define SEC_I_MESSAGE_FRAGMENT _HRESULT_TYPEDEF_(0x00090364)
#define SEC_E_ONLY_HTTPS_ALLOWED _HRESULT_TYPEDEF_(0x80090365)
#define SEC_I_CONTINUE_NEEDED_MESSAGE_OK _HRESULT_TYPEDEF_(0x00090366)
#define SEC_E_APPLICATION_PROTOCOL_MISMATCH _HRESULT_TYPEDEF_(0x80090367)
#define SEC_I_ASYNC_CALL_PENDING _HRESULT_TYPEDEF_(0x00090368)
#define SEC_E_INVALID_UPN_NAME _HRESULT_TYPEDEF_(0x80090369)
#define SEC_E_EXT_BUFFER_TOO_SMALL _HRESULT_TYPEDEF_(0x8009036A)
#define SEC_E_INSUFFICIENT_BUFFERS _HRESULT_TYPEDEF_(0x8009036B)
#define SEC_E_NO_SPM SEC_E_INTERNAL_ERROR
#define SEC_E_NOT_SUPPORTED SEC_E_UNSUPPORTED_FUNCTION
#define CRYPT_E_MSG_ERROR _HRESULT_TYPEDEF_(0x80091001)
#define CRYPT_E_UNKNOWN_ALGO _HRESULT_TYPEDEF_(0x80091002)
#define CRYPT_E_OID_FORMAT _HRESULT_TYPEDEF_(0x80091003)
#define CRYPT_E_INVALID_MSG_TYPE _HRESULT_TYPEDEF_(0x80091004)
#define CRYPT_E_UNEXPECTED_ENCODING _HRESULT_TYPEDEF_(0x80091005)
#define CRYPT_E_AUTH_ATTR_MISSING _HRESULT_TYPEDEF_(0x80091006)
#define CRYPT_E_HASH_VALUE _HRESULT_TYPEDEF_(0x80091007)
#define CRYPT_E_INVALID_INDEX _HRESULT_TYPEDEF_(0x80091008)
#define CRYPT_E_ALREADY_DECRYPTED _HRESULT_TYPEDEF_(0x80091009)
#define CRYPT_E_NOT_DECRYPTED _HRESULT_TYPEDEF_(0x8009100A)
#define CRYPT_E_RECIPIENT_NOT_FOUND _HRESULT_TYPEDEF_(0x8009100B)
#define CRYPT_E_CONTROL_TYPE _HRESULT_TYPEDEF_(0x8009100C)
#define CRYPT_E_ISSUER_SERIALNUMBER _HRESULT_TYPEDEF_(0x8009100D)
#define CRYPT_E_SIGNER_NOT_FOUND _HRESULT_TYPEDEF_(0x8009100E)
#define CRYPT_E_ATTRIBUTES_MISSING _HRESULT_TYPEDEF_(0x8009100F)
#define CRYPT_E_STREAM_MSG_NOT_READY _HRESULT_TYPEDEF_(0x80091010)
#define CRYPT_E_STREAM_INSUFFICIENT_DATA _HRESULT_TYPEDEF_(0x80091011)
#define CRYPT_I_NEW_PROTECTION_REQUIRED _HRESULT_TYPEDEF_(0x00091012)
#define CRYPT_E_BAD_LEN _HRESULT_TYPEDEF_(0x80092001)
#define CRYPT_E_BAD_ENCODE _HRESULT_TYPEDEF_(0x80092002)
#define CRYPT_E_FILE_ERROR _HRESULT_TYPEDEF_(0x80092003)
#define CRYPT_E_NOT_FOUND _HRESULT_TYPEDEF_(0x80092004)
#define CRYPT_E_EXISTS _HRESULT_TYPEDEF_(0x80092005)
#define CRYPT_E_NO_PROVIDER _HRESULT_TYPEDEF_(0x80092006)
#define CRYPT_E_SELF_SIGNED _HRESULT_TYPEDEF_(0x80092007)
#define CRYPT_E_DELETED_PREV _HRESULT_TYPEDEF_(0x80092008)
#define CRYPT_E_NO_MATCH _HRESULT_TYPEDEF_(0x80092009)
#define CRYPT_E_UNEXPECTED_MSG_TYPE _HRESULT_TYPEDEF_(0x8009200A)
#define CRYPT_E_NO_KEY_PROPERTY _HRESULT_TYPEDEF_(0x8009200B)
#define CRYPT_E_NO_DECRYPT_CERT _HRESULT_TYPEDEF_(0x8009200C)
#define CRYPT_E_BAD_MSG _HRESULT_TYPEDEF_(0x8009200D)
#define CRYPT_E_NO_SIGNER _HRESULT_TYPEDEF_(0x8009200E)
#define CRYPT_E_PENDING_CLOSE _HRESULT_TYPEDEF_(0x8009200F)
#define CRYPT_E_REVOKED _HRESULT_TYPEDEF_(0x80092010)
#define CRYPT_E_NO_REVOCATION_DLL _HRESULT_TYPEDEF_(0x80092011)
#define CRYPT_E_NO_REVOCATION_CHECK _HRESULT_TYPEDEF_(0x80092012)
#define CRYPT_E_REVOCATION_OFFLINE _HRESULT_TYPEDEF_(0x80092013)
#define CRYPT_E_NOT_IN_REVOCATION_DATABASE _HRESULT_TYPEDEF_(0x80092014)
#define CRYPT_E_INVALID_NUMERIC_STRING _HRESULT_TYPEDEF_(0x80092020)
#define CRYPT_E_INVALID_PRINTABLE_STRING _HRESULT_TYPEDEF_(0x80092021)
#define CRYPT_E_INVALID_IA5_STRING _HRESULT_TYPEDEF_(0x80092022)
#define CRYPT_E_INVALID_X500_STRING _HRESULT_TYPEDEF_(0x80092023)
#define CRYPT_E_NOT_CHAR_STRING _HRESULT_TYPEDEF_(0x80092024)
#define CRYPT_E_FILERESIZED _HRESULT_TYPEDEF_(0x80092025)
#define CRYPT_E_SECURITY_SETTINGS _HRESULT_TYPEDEF_(0x80092026)
#define CRYPT_E_NO_VERIFY_USAGE_DLL _HRESULT_TYPEDEF_(0x80092027)
#define CRYPT_E_NO_VERIFY_USAGE_CHECK _HRESULT_TYPEDEF_(0x80092028)
#define CRYPT_E_VERIFY_USAGE_OFFLINE _HRESULT_TYPEDEF_(0x80092029)
#define CRYPT_E_NOT_IN_CTL _HRESULT_TYPEDEF_(0x8009202A)
#define CRYPT_E_NO_TRUSTED_SIGNER _HRESULT_TYPEDEF_(0x8009202B)
#define CRYPT_E_MISSING_PUBKEY_PARA _HRESULT_TYPEDEF_(0x8009202C)
#define CRYPT_E_OSS_ERROR _HRESULT_TYPEDEF_(0x80093000)
#define OSS_MORE_BUF _HRESULT_TYPEDEF_(0x80093001)
#define OSS_NEGATIVE_UINTEGER _HRESULT_TYPEDEF_(0x80093002)
#define OSS_PDU_RANGE _HRESULT_TYPEDEF_(0x80093003)
#define OSS_MORE_INPUT _HRESULT_TYPEDEF_(0x80093004)
#define OSS_DATA_ERROR _HRESULT_TYPEDEF_(0x80093005)
#define OSS_BAD_ARG _HRESULT_TYPEDEF_(0x80093006)
#define OSS_BAD_VERSION _HRESULT_TYPEDEF_(0x80093007)
#define OSS_OUT_MEMORY _HRESULT_TYPEDEF_(0x80093008)
#define OSS_PDU_MISMATCH _HRESULT_TYPEDEF_(0x80093009)
#define OSS_LIMITED _HRESULT_TYPEDEF_(0x8009300A)
#define OSS_BAD_PTR _HRESULT_TYPEDEF_(0x8009300B)
#define OSS_BAD_TIME _HRESULT_TYPEDEF_(0x8009300C)
#define OSS_INDEFINITE_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8009300D)
#define OSS_MEM_ERROR _HRESULT_TYPEDEF_(0x8009300E)
#define OSS_BAD_TABLE _HRESULT_TYPEDEF_(0x8009300F)
#define OSS_TOO_LONG _HRESULT_TYPEDEF_(0x80093010)
#define OSS_CONSTRAINT_VIOLATED _HRESULT_TYPEDEF_(0x80093011)
#define OSS_FATAL_ERROR _HRESULT_TYPEDEF_(0x80093012)
#define OSS_ACCESS_SERIALIZATION_ERROR _HRESULT_TYPEDEF_(0x80093013)
#define OSS_NULL_TBL _HRESULT_TYPEDEF_(0x80093014)
#define OSS_NULL_FCN _HRESULT_TYPEDEF_(0x80093015)
#define OSS_BAD_ENCRULES _HRESULT_TYPEDEF_(0x80093016)
#define OSS_UNAVAIL_ENCRULES _HRESULT_TYPEDEF_(0x80093017)
#define OSS_CANT_OPEN_TRACE_WINDOW _HRESULT_TYPEDEF_(0x80093018)
#define OSS_UNIMPLEMENTED _HRESULT_TYPEDEF_(0x80093019)
#define OSS_OID_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x8009301A)
#define OSS_CANT_OPEN_TRACE_FILE _HRESULT_TYPEDEF_(0x8009301B)
#define OSS_TRACE_FILE_ALREADY_OPEN _HRESULT_TYPEDEF_(0x8009301C)
#define OSS_TABLE_MISMATCH _HRESULT_TYPEDEF_(0x8009301D)
#define OSS_TYPE_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8009301E)
#define OSS_REAL_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x8009301F)
#define OSS_REAL_CODE_NOT_LINKED _HRESULT_TYPEDEF_(0x80093020)
#define OSS_OUT_OF_RANGE _HRESULT_TYPEDEF_(0x80093021)
#define OSS_COPIER_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x80093022)
#define OSS_CONSTRAINT_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x80093023)
#define OSS_COMPARATOR_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x80093024)
#define OSS_COMPARATOR_CODE_NOT_LINKED _HRESULT_TYPEDEF_(0x80093025)
#define OSS_MEM_MGR_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x80093026)
#define OSS_PDV_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x80093027)
#define OSS_PDV_CODE_NOT_LINKED _HRESULT_TYPEDEF_(0x80093028)
#define OSS_API_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x80093029)
#define OSS_BERDER_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x8009302A)
#define OSS_PER_DLL_NOT_LINKED _HRESULT_TYPEDEF_(0x8009302B)
#define OSS_OPEN_TYPE_ERROR _HRESULT_TYPEDEF_(0x8009302C)
#define OSS_MUTEX_NOT_CREATED _HRESULT_TYPEDEF_(0x8009302D)
#define OSS_CANT_CLOSE_TRACE_FILE _HRESULT_TYPEDEF_(0x8009302E)
#define CRYPT_E_ASN1_ERROR _HRESULT_TYPEDEF_(0x80093100)
#define CRYPT_E_ASN1_INTERNAL _HRESULT_TYPEDEF_(0x80093101)
#define CRYPT_E_ASN1_EOD _HRESULT_TYPEDEF_(0x80093102)
#define CRYPT_E_ASN1_CORRUPT _HRESULT_TYPEDEF_(0x80093103)
#define CRYPT_E_ASN1_LARGE _HRESULT_TYPEDEF_(0x80093104)
#define CRYPT_E_ASN1_CONSTRAINT _HRESULT_TYPEDEF_(0x80093105)
#define CRYPT_E_ASN1_MEMORY _HRESULT_TYPEDEF_(0x80093106)
#define CRYPT_E_ASN1_OVERFLOW _HRESULT_TYPEDEF_(0x80093107)
#define CRYPT_E_ASN1_BADPDU _HRESULT_TYPEDEF_(0x80093108)
#define CRYPT_E_ASN1_BADARGS _HRESULT_TYPEDEF_(0x80093109)
#define CRYPT_E_ASN1_BADREAL _HRESULT_TYPEDEF_(0x8009310A)
#define CRYPT_E_ASN1_BADTAG _HRESULT_TYPEDEF_(0x8009310B)
#define CRYPT_E_ASN1_CHOICE _HRESULT_TYPEDEF_(0x8009310C)
#define CRYPT_E_ASN1_RULE _HRESULT_TYPEDEF_(0x8009310D)
#define CRYPT_E_ASN1_UTF8 _HRESULT_TYPEDEF_(0x8009310E)
#define CRYPT_E_ASN1_PDU_TYPE _HRESULT_TYPEDEF_(0x80093133)
#define CRYPT_E_ASN1_NYI _HRESULT_TYPEDEF_(0x80093134)
#define CRYPT_E_ASN1_EXTENDED _HRESULT_TYPEDEF_(0x80093201)
#define CRYPT_E_ASN1_NOEOD _HRESULT_TYPEDEF_(0x80093202)
#define CERTSRV_E_BAD_REQUESTSUBJECT _HRESULT_TYPEDEF_(0x80094001)
#define CERTSRV_E_NO_REQUEST _HRESULT_TYPEDEF_(0x80094002)
#define CERTSRV_E_BAD_REQUESTSTATUS _HRESULT_TYPEDEF_(0x80094003)
#define CERTSRV_E_PROPERTY_EMPTY _HRESULT_TYPEDEF_(0x80094004)
#define CERTSRV_E_INVALID_CA_CERTIFICATE _HRESULT_TYPEDEF_(0x80094005)
#define CERTSRV_E_SERVER_SUSPENDED _HRESULT_TYPEDEF_(0x80094006)
#define CERTSRV_E_ENCODING_LENGTH _HRESULT_TYPEDEF_(0x80094007)
#define CERTSRV_E_ROLECONFLICT _HRESULT_TYPEDEF_(0x80094008)
#define CERTSRV_E_RESTRICTEDOFFICER _HRESULT_TYPEDEF_(0x80094009)
#define CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED _HRESULT_TYPEDEF_(0x8009400A)
#define CERTSRV_E_NO_VALID_KRA _HRESULT_TYPEDEF_(0x8009400B)
#define CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL _HRESULT_TYPEDEF_(0x8009400C)
#define CERTSRV_E_NO_CAADMIN_DEFINED _HRESULT_TYPEDEF_(0x8009400D)
#define CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE _HRESULT_TYPEDEF_(0x8009400E)
#define CERTSRV_E_NO_DB_SESSIONS _HRESULT_TYPEDEF_(0x8009400F)
#define CERTSRV_E_ALIGNMENT_FAULT _HRESULT_TYPEDEF_(0x80094010)
#define CERTSRV_E_ENROLL_DENIED _HRESULT_TYPEDEF_(0x80094011)
#define CERTSRV_E_TEMPLATE_DENIED _HRESULT_TYPEDEF_(0x80094012)
#define CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE _HRESULT_TYPEDEF_(0x80094013)
#define CERTSRV_E_UNSUPPORTED_CERT_TYPE _HRESULT_TYPEDEF_(0x80094800)
#define CERTSRV_E_NO_CERT_TYPE _HRESULT_TYPEDEF_(0x80094801)
#define CERTSRV_E_TEMPLATE_CONFLICT _HRESULT_TYPEDEF_(0x80094802)
#define CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED _HRESULT_TYPEDEF_(0x80094803)
#define CERTSRV_E_ARCHIVED_KEY_REQUIRED _HRESULT_TYPEDEF_(0x80094804)
#define CERTSRV_E_SMIME_REQUIRED _HRESULT_TYPEDEF_(0x80094805)
#define CERTSRV_E_BAD_RENEWAL_SUBJECT _HRESULT_TYPEDEF_(0x80094806)
#define CERTSRV_E_BAD_TEMPLATE_VERSION _HRESULT_TYPEDEF_(0x80094807)
#define CERTSRV_E_TEMPLATE_POLICY_REQUIRED _HRESULT_TYPEDEF_(0x80094808)
#define CERTSRV_E_SIGNATURE_POLICY_REQUIRED _HRESULT_TYPEDEF_(0x80094809)
#define CERTSRV_E_SIGNATURE_COUNT _HRESULT_TYPEDEF_(0x8009480A)
#define CERTSRV_E_SIGNATURE_REJECTED _HRESULT_TYPEDEF_(0x8009480B)
#define CERTSRV_E_ISSUANCE_POLICY_REQUIRED _HRESULT_TYPEDEF_(0x8009480C)
#define CERTSRV_E_SUBJECT_UPN_REQUIRED _HRESULT_TYPEDEF_(0x8009480D)
#define CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED _HRESULT_TYPEDEF_(0x8009480E)
#define CERTSRV_E_SUBJECT_DNS_REQUIRED _HRESULT_TYPEDEF_(0x8009480F)
#define CERTSRV_E_ARCHIVED_KEY_UNEXPECTED _HRESULT_TYPEDEF_(0x80094810)
#define CERTSRV_E_KEY_LENGTH _HRESULT_TYPEDEF_(0x80094811)
#define CERTSRV_E_SUBJECT_EMAIL_REQUIRED _HRESULT_TYPEDEF_(0x80094812)
#define CERTSRV_E_UNKNOWN_CERT_TYPE _HRESULT_TYPEDEF_(0x80094813)
#define CERTSRV_E_CERT_TYPE_OVERLAP _HRESULT_TYPEDEF_(0x80094814)
#define XENROLL_E_KEY_NOT_EXPORTABLE _HRESULT_TYPEDEF_(0x80095000)
#define XENROLL_E_CANNOT_ADD_ROOT_CERT _HRESULT_TYPEDEF_(0x80095001)
#define XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND _HRESULT_TYPEDEF_(0x80095002)
#define XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH _HRESULT_TYPEDEF_(0x80095003)
#define XENROLL_E_RESPONSE_KA_HASH_MISMATCH _HRESULT_TYPEDEF_(0x80095004)
#define XENROLL_E_KEYSPEC_SMIME_MISMATCH _HRESULT_TYPEDEF_(0x80095005)
#define TRUST_E_SYSTEM_ERROR _HRESULT_TYPEDEF_(0x80096001)
#define TRUST_E_NO_SIGNER_CERT _HRESULT_TYPEDEF_(0x80096002)
#define TRUST_E_COUNTER_SIGNER _HRESULT_TYPEDEF_(0x80096003)
#define TRUST_E_CERT_SIGNATURE _HRESULT_TYPEDEF_(0x80096004)
#define TRUST_E_TIME_STAMP _HRESULT_TYPEDEF_(0x80096005)
#define TRUST_E_BAD_DIGEST _HRESULT_TYPEDEF_(0x80096010)
#define TRUST_E_BASIC_CONSTRAINTS _HRESULT_TYPEDEF_(0x80096019)
#define TRUST_E_FINANCIAL_CRITERIA _HRESULT_TYPEDEF_(0x8009601E)
#define MSSIPOTF_E_OUTOFMEMRANGE _HRESULT_TYPEDEF_(0x80097001)
#define MSSIPOTF_E_CANTGETOBJECT _HRESULT_TYPEDEF_(0x80097002)
#define MSSIPOTF_E_NOHEADTABLE _HRESULT_TYPEDEF_(0x80097003)
#define MSSIPOTF_E_BAD_MAGICNUMBER _HRESULT_TYPEDEF_(0x80097004)
#define MSSIPOTF_E_BAD_OFFSET_TABLE _HRESULT_TYPEDEF_(0x80097005)
#define MSSIPOTF_E_TABLE_TAGORDER _HRESULT_TYPEDEF_(0x80097006)
#define MSSIPOTF_E_TABLE_LONGWORD _HRESULT_TYPEDEF_(0x80097007)
#define MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT _HRESULT_TYPEDEF_(0x80097008)
#define MSSIPOTF_E_TABLES_OVERLAP _HRESULT_TYPEDEF_(0x80097009)
#define MSSIPOTF_E_TABLE_PADBYTES _HRESULT_TYPEDEF_(0x8009700A)
#define MSSIPOTF_E_FILETOOSMALL _HRESULT_TYPEDEF_(0x8009700B)
#define MSSIPOTF_E_TABLE_CHECKSUM _HRESULT_TYPEDEF_(0x8009700C)
#define MSSIPOTF_E_FILE_CHECKSUM _HRESULT_TYPEDEF_(0x8009700D)
#define MSSIPOTF_E_FAILED_POLICY _HRESULT_TYPEDEF_(0x80097010)
#define MSSIPOTF_E_FAILED_HINTS_CHECK _HRESULT_TYPEDEF_(0x80097011)
#define MSSIPOTF_E_NOT_OPENTYPE _HRESULT_TYPEDEF_(0x80097012)
#define MSSIPOTF_E_FILE _HRESULT_TYPEDEF_(0x80097013)
#define MSSIPOTF_E_CRYPT _HRESULT_TYPEDEF_(0x80097014)
#define MSSIPOTF_E_BADVERSION _HRESULT_TYPEDEF_(0x80097015)
#define MSSIPOTF_E_DSIG_STRUCTURE _HRESULT_TYPEDEF_(0x80097016)
#define MSSIPOTF_E_PCONST_CHECK _HRESULT_TYPEDEF_(0x80097017)
#define MSSIPOTF_E_STRUCTURE _HRESULT_TYPEDEF_(0x80097018)
#define NTE_OP_OK 0
#define TRUST_E_PROVIDER_UNKNOWN _HRESULT_TYPEDEF_(0x800B0001)
#define TRUST_E_ACTION_UNKNOWN _HRESULT_TYPEDEF_(0x800B0002)
#define TRUST_E_SUBJECT_FORM_UNKNOWN _HRESULT_TYPEDEF_(0x800B0003)
#define TRUST_E_SUBJECT_NOT_TRUSTED _HRESULT_TYPEDEF_(0x800B0004)
#define DIGSIG_E_ENCODE _HRESULT_TYPEDEF_(0x800B0005)
#define DIGSIG_E_DECODE _HRESULT_TYPEDEF_(0x800B0006)
#define DIGSIG_E_EXTENSIBILITY _HRESULT_TYPEDEF_(0x800B0007)
#define DIGSIG_E_CRYPTO _HRESULT_TYPEDEF_(0x800B0008)
#define PERSIST_E_SIZEDEFINITE _HRESULT_TYPEDEF_(0x800B0009)
#define PERSIST_E_SIZEINDEFINITE _HRESULT_TYPEDEF_(0x800B000A)
#define PERSIST_E_NOTSELFSIZING _HRESULT_TYPEDEF_(0x800B000B)
#define TRUST_E_NOSIGNATURE _HRESULT_TYPEDEF_(0x800B0100)
#define CERT_E_EXPIRED _HRESULT_TYPEDEF_(0x800B0101)
#define CERT_E_VALIDITYPERIODNESTING _HRESULT_TYPEDEF_(0x800B0102)
#define CERT_E_ROLE _HRESULT_TYPEDEF_(0x800B0103)
#define CERT_E_PATHLENCONST _HRESULT_TYPEDEF_(0x800B0104)
#define CERT_E_CRITICAL _HRESULT_TYPEDEF_(0x800B0105)
#define CERT_E_PURPOSE _HRESULT_TYPEDEF_(0x800B0106)
#define CERT_E_ISSUERCHAINING _HRESULT_TYPEDEF_(0x800B0107)
#define CERT_E_MALFORMED _HRESULT_TYPEDEF_(0x800B0108)
#define CERT_E_UNTRUSTEDROOT _HRESULT_TYPEDEF_(0x800B0109)
#define CERT_E_CHAINING _HRESULT_TYPEDEF_(0x800B010A)
#define TRUST_E_FAIL _HRESULT_TYPEDEF_(0x800B010B)
#define CERT_E_REVOKED _HRESULT_TYPEDEF_(0x800B010C)
#define CERT_E_UNTRUSTEDTESTROOT _HRESULT_TYPEDEF_(0x800B010D)
#define CERT_E_REVOCATION_FAILURE _HRESULT_TYPEDEF_(0x800B010E)
#define CERT_E_CN_NO_MATCH _HRESULT_TYPEDEF_(0x800B010F)
#define CERT_E_WRONG_USAGE _HRESULT_TYPEDEF_(0x800B0110)
#define TRUST_E_EXPLICIT_DISTRUST _HRESULT_TYPEDEF_(0x800B0111)
#define CERT_E_UNTRUSTEDCA _HRESULT_TYPEDEF_(0x800B0112)
#define CERT_E_INVALID_POLICY _HRESULT_TYPEDEF_(0x800B0113)
#define CERT_E_INVALID_NAME _HRESULT_TYPEDEF_(0x800B0114)
#define HRESULT_FROM_SETUPAPI(x) ((((x) & (APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR))==(APPLICATION_ERROR_MASK|ERROR_SEVERITY_ERROR)) ? ((HRESULT) (((x) & 0x0000FFFF) | (FACILITY_SETUPAPI << 16) | 0x80000000)) : HRESULT_FROM_WIN32(x))
#define SPAPI_E_EXPECTED_SECTION_NAME _HRESULT_TYPEDEF_(0x800F0000)
#define SPAPI_E_BAD_SECTION_NAME_LINE _HRESULT_TYPEDEF_(0x800F0001)
#define SPAPI_E_SECTION_NAME_TOO_LONG _HRESULT_TYPEDEF_(0x800F0002)
#define SPAPI_E_GENERAL_SYNTAX _HRESULT_TYPEDEF_(0x800F0003)
#define SPAPI_E_WRONG_INF_STYLE _HRESULT_TYPEDEF_(0x800F0100)
#define SPAPI_E_SECTION_NOT_FOUND _HRESULT_TYPEDEF_(0x800F0101)
#define SPAPI_E_LINE_NOT_FOUND _HRESULT_TYPEDEF_(0x800F0102)
#define SPAPI_E_NO_BACKUP _HRESULT_TYPEDEF_(0x800F0103)
#define SPAPI_E_NO_ASSOCIATED_CLASS _HRESULT_TYPEDEF_(0x800F0200)
#define SPAPI_E_CLASS_MISMATCH _HRESULT_TYPEDEF_(0x800F0201)
#define SPAPI_E_DUPLICATE_FOUND _HRESULT_TYPEDEF_(0x800F0202)
#define SPAPI_E_NO_DRIVER_SELECTED _HRESULT_TYPEDEF_(0x800F0203)
#define SPAPI_E_KEY_DOES_NOT_EXIST _HRESULT_TYPEDEF_(0x800F0204)
#define SPAPI_E_INVALID_DEVINST_NAME _HRESULT_TYPEDEF_(0x800F0205)
#define SPAPI_E_INVALID_CLASS _HRESULT_TYPEDEF_(0x800F0206)
#define SPAPI_E_DEVINST_ALREADY_EXISTS _HRESULT_TYPEDEF_(0x800F0207)
#define SPAPI_E_DEVINFO_NOT_REGISTERED _HRESULT_TYPEDEF_(0x800F0208)
#define SPAPI_E_INVALID_REG_PROPERTY _HRESULT_TYPEDEF_(0x800F0209)
#define SPAPI_E_NO_INF _HRESULT_TYPEDEF_(0x800F020A)
#define SPAPI_E_NO_SUCH_DEVINST _HRESULT_TYPEDEF_(0x800F020B)
#define SPAPI_E_CANT_LOAD_CLASS_ICON _HRESULT_TYPEDEF_(0x800F020C)
#define SPAPI_E_INVALID_CLASS_INSTALLER _HRESULT_TYPEDEF_(0x800F020D)
#define SPAPI_E_DI_DO_DEFAULT _HRESULT_TYPEDEF_(0x800F020E)
#define SPAPI_E_DI_NOFILECOPY _HRESULT_TYPEDEF_(0x800F020F)
#define SPAPI_E_INVALID_HWPROFILE _HRESULT_TYPEDEF_(0x800F0210)
#define SPAPI_E_NO_DEVICE_SELECTED _HRESULT_TYPEDEF_(0x800F0211)
#define SPAPI_E_DEVINFO_LIST_LOCKED _HRESULT_TYPEDEF_(0x800F0212)
#define SPAPI_E_DEVINFO_DATA_LOCKED _HRESULT_TYPEDEF_(0x800F0213)
#define SPAPI_E_DI_BAD_PATH _HRESULT_TYPEDEF_(0x800F0214)
#define SPAPI_E_NO_CLASSINSTALL_PARAMS _HRESULT_TYPEDEF_(0x800F0215)
#define SPAPI_E_FILEQUEUE_LOCKED _HRESULT_TYPEDEF_(0x800F0216)
#define SPAPI_E_BAD_SERVICE_INSTALLSECT _HRESULT_TYPEDEF_(0x800F0217)
#define SPAPI_E_NO_CLASS_DRIVER_LIST _HRESULT_TYPEDEF_(0x800F0218)
#define SPAPI_E_NO_ASSOCIATED_SERVICE _HRESULT_TYPEDEF_(0x800F0219)
#define SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE _HRESULT_TYPEDEF_(0x800F021A)
#define SPAPI_E_DEVICE_INTERFACE_ACTIVE _HRESULT_TYPEDEF_(0x800F021B)
#define SPAPI_E_DEVICE_INTERFACE_REMOVED _HRESULT_TYPEDEF_(0x800F021C)
#define SPAPI_E_BAD_INTERFACE_INSTALLSECT _HRESULT_TYPEDEF_(0x800F021D)
#define SPAPI_E_NO_SUCH_INTERFACE_CLASS _HRESULT_TYPEDEF_(0x800F021E)
#define SPAPI_E_INVALID_REFERENCE_STRING _HRESULT_TYPEDEF_(0x800F021F)
#define SPAPI_E_INVALID_MACHINENAME _HRESULT_TYPEDEF_(0x800F0220)
#define SPAPI_E_REMOTE_COMM_FAILURE _HRESULT_TYPEDEF_(0x800F0221)
#define SPAPI_E_MACHINE_UNAVAILABLE _HRESULT_TYPEDEF_(0x800F0222)
#define SPAPI_E_NO_CONFIGMGR_SERVICES _HRESULT_TYPEDEF_(0x800F0223)
#define SPAPI_E_INVALID_PROPPAGE_PROVIDER _HRESULT_TYPEDEF_(0x800F0224)
#define SPAPI_E_NO_SUCH_DEVICE_INTERFACE _HRESULT_TYPEDEF_(0x800F0225)
#define SPAPI_E_DI_POSTPROCESSING_REQUIRED _HRESULT_TYPEDEF_(0x800F0226)
#define SPAPI_E_INVALID_COINSTALLER _HRESULT_TYPEDEF_(0x800F0227)
#define SPAPI_E_NO_COMPAT_DRIVERS _HRESULT_TYPEDEF_(0x800F0228)
#define SPAPI_E_NO_DEVICE_ICON _HRESULT_TYPEDEF_(0x800F0229)
#define SPAPI_E_INVALID_INF_LOGCONFIG _HRESULT_TYPEDEF_(0x800F022A)
#define SPAPI_E_DI_DONT_INSTALL _HRESULT_TYPEDEF_(0x800F022B)
#define SPAPI_E_INVALID_FILTER_DRIVER _HRESULT_TYPEDEF_(0x800F022C)
#define SPAPI_E_NON_WINDOWS_NT_DRIVER _HRESULT_TYPEDEF_(0x800F022D)
#define SPAPI_E_NON_WINDOWS_DRIVER _HRESULT_TYPEDEF_(0x800F022E)
#define SPAPI_E_NO_CATALOG_FOR_OEM_INF _HRESULT_TYPEDEF_(0x800F022F)
#define SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE _HRESULT_TYPEDEF_(0x800F0230)
#define SPAPI_E_NOT_DISABLEABLE _HRESULT_TYPEDEF_(0x800F0231)
#define SPAPI_E_CANT_REMOVE_DEVINST _HRESULT_TYPEDEF_(0x800F0232)
#define SPAPI_E_INVALID_TARGET _HRESULT_TYPEDEF_(0x800F0233)
#define SPAPI_E_DRIVER_NONNATIVE _HRESULT_TYPEDEF_(0x800F0234)
#define SPAPI_E_IN_WOW64 _HRESULT_TYPEDEF_(0x800F0235)
#define SPAPI_E_SET_SYSTEM_RESTORE_POINT _HRESULT_TYPEDEF_(0x800F0236)
#define SPAPI_E_INCORRECTLY_COPIED_INF _HRESULT_TYPEDEF_(0x800F0237)
#define SPAPI_E_SCE_DISABLED _HRESULT_TYPEDEF_(0x800F0238)
#define SPAPI_E_UNKNOWN_EXCEPTION _HRESULT_TYPEDEF_(0x800F0239)
#define SPAPI_E_PNP_REGISTRY_ERROR _HRESULT_TYPEDEF_(0x800F023A)
#define SPAPI_E_REMOTE_REQUEST_UNSUPPORTED _HRESULT_TYPEDEF_(0x800F023B)
#define SPAPI_E_NOT_AN_INSTALLED_OEM_INF _HRESULT_TYPEDEF_(0x800F023C)
#define SPAPI_E_INF_IN_USE_BY_DEVICES _HRESULT_TYPEDEF_(0x800F023D)
#define SPAPI_E_DI_FUNCTION_OBSOLETE _HRESULT_TYPEDEF_(0x800F023E)
#define SPAPI_E_NO_AUTHENTICODE_CATALOG _HRESULT_TYPEDEF_(0x800F023F)
#define SPAPI_E_AUTHENTICODE_DISALLOWED _HRESULT_TYPEDEF_(0x800F0240)
#define SPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER _HRESULT_TYPEDEF_(0x800F0241)
#define SPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED _HRESULT_TYPEDEF_(0x800F0242)
#define SPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED _HRESULT_TYPEDEF_(0x800F0243)
#define SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH _HRESULT_TYPEDEF_(0x800F0244)
#define SPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE _HRESULT_TYPEDEF_(0x800F0245)
#define SPAPI_E_UNRECOVERABLE_STACK_OVERFLOW _HRESULT_TYPEDEF_(0x800F0300)
#define SPAPI_E_ERROR_NOT_INSTALLED _HRESULT_TYPEDEF_(0x800F1000)
#define SCARD_S_SUCCESS NO_ERROR
#define SCARD_F_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x80100001)
#define SCARD_E_CANCELLED _HRESULT_TYPEDEF_(0x80100002)
#define SCARD_E_INVALID_HANDLE _HRESULT_TYPEDEF_(0x80100003)
#define SCARD_E_INVALID_PARAMETER _HRESULT_TYPEDEF_(0x80100004)
#define SCARD_E_INVALID_TARGET _HRESULT_TYPEDEF_(0x80100005)
#define SCARD_E_NO_MEMORY _HRESULT_TYPEDEF_(0x80100006)
#define SCARD_F_WAITED_TOO_LONG _HRESULT_TYPEDEF_(0x80100007)
#define SCARD_E_INSUFFICIENT_BUFFER _HRESULT_TYPEDEF_(0x80100008)
#define SCARD_E_UNKNOWN_READER _HRESULT_TYPEDEF_(0x80100009)
#define SCARD_E_TIMEOUT _HRESULT_TYPEDEF_(0x8010000A)
#define SCARD_E_SHARING_VIOLATION _HRESULT_TYPEDEF_(0x8010000B)
#define SCARD_E_NO_SMARTCARD _HRESULT_TYPEDEF_(0x8010000C)
#define SCARD_E_UNKNOWN_CARD _HRESULT_TYPEDEF_(0x8010000D)
#define SCARD_E_CANT_DISPOSE _HRESULT_TYPEDEF_(0x8010000E)
#define SCARD_E_PROTO_MISMATCH _HRESULT_TYPEDEF_(0x8010000F)
#define SCARD_E_NOT_READY _HRESULT_TYPEDEF_(0x80100010)
#define SCARD_E_INVALID_VALUE _HRESULT_TYPEDEF_(0x80100011)
#define SCARD_E_SYSTEM_CANCELLED _HRESULT_TYPEDEF_(0x80100012)
#define SCARD_F_COMM_ERROR _HRESULT_TYPEDEF_(0x80100013)
#define SCARD_F_UNKNOWN_ERROR _HRESULT_TYPEDEF_(0x80100014)
#define SCARD_E_INVALID_ATR _HRESULT_TYPEDEF_(0x80100015)
#define SCARD_E_NOT_TRANSACTED _HRESULT_TYPEDEF_(0x80100016)
#define SCARD_E_READER_UNAVAILABLE _HRESULT_TYPEDEF_(0x80100017)
#define SCARD_P_SHUTDOWN _HRESULT_TYPEDEF_(0x80100018)
#define SCARD_E_PCI_TOO_SMALL _HRESULT_TYPEDEF_(0x80100019)
#define SCARD_E_READER_UNSUPPORTED _HRESULT_TYPEDEF_(0x8010001A)
#define SCARD_E_DUPLICATE_READER _HRESULT_TYPEDEF_(0x8010001B)
#define SCARD_E_CARD_UNSUPPORTED _HRESULT_TYPEDEF_(0x8010001C)
#define SCARD_E_NO_SERVICE _HRESULT_TYPEDEF_(0x8010001D)
#define SCARD_E_SERVICE_STOPPED _HRESULT_TYPEDEF_(0x8010001E)
#define SCARD_E_UNEXPECTED _HRESULT_TYPEDEF_(0x8010001F)
#define SCARD_E_ICC_INSTALLATION _HRESULT_TYPEDEF_(0x80100020)
#define SCARD_E_ICC_CREATEORDER _HRESULT_TYPEDEF_(0x80100021)
#define SCARD_E_UNSUPPORTED_FEATURE _HRESULT_TYPEDEF_(0x80100022)
#define SCARD_E_DIR_NOT_FOUND _HRESULT_TYPEDEF_(0x80100023)
#define SCARD_E_FILE_NOT_FOUND _HRESULT_TYPEDEF_(0x80100024)
#define SCARD_E_NO_DIR _HRESULT_TYPEDEF_(0x80100025)
#define SCARD_E_NO_FILE _HRESULT_TYPEDEF_(0x80100026)
#define SCARD_E_NO_ACCESS _HRESULT_TYPEDEF_(0x80100027)
#define SCARD_E_WRITE_TOO_MANY _HRESULT_TYPEDEF_(0x80100028)
#define SCARD_E_BAD_SEEK _HRESULT_TYPEDEF_(0x80100029)
#define SCARD_E_INVALID_CHV _HRESULT_TYPEDEF_(0x8010002A)
#define SCARD_E_UNKNOWN_RES_MNG _HRESULT_TYPEDEF_(0x8010002B)
#define SCARD_E_NO_SUCH_CERTIFICATE _HRESULT_TYPEDEF_(0x8010002C)
#define SCARD_E_CERTIFICATE_UNAVAILABLE _HRESULT_TYPEDEF_(0x8010002D)
#define SCARD_E_NO_READERS_AVAILABLE _HRESULT_TYPEDEF_(0x8010002E)
#define SCARD_E_COMM_DATA_LOST _HRESULT_TYPEDEF_(0x8010002F)
#define SCARD_E_NO_KEY_CONTAINER _HRESULT_TYPEDEF_(0x80100030)
#define SCARD_E_SERVER_TOO_BUSY _HRESULT_TYPEDEF_(0x80100031)
#define SCARD_E_PIN_CACHE_EXPIRED _HRESULT_TYPEDEF_(0x80100032)
#define SCARD_E_NO_PIN_CACHE _HRESULT_TYPEDEF_(0x80100033)
#define SCARD_E_READ_ONLY_CARD _HRESULT_TYPEDEF_(0x80100034)
#define SCARD_W_UNSUPPORTED_CARD _HRESULT_TYPEDEF_(0x80100065)
#define SCARD_W_UNRESPONSIVE_CARD _HRESULT_TYPEDEF_(0x80100066)
#define SCARD_W_UNPOWERED_CARD _HRESULT_TYPEDEF_(0x80100067)
#define SCARD_W_RESET_CARD _HRESULT_TYPEDEF_(0x80100068)
#define SCARD_W_REMOVED_CARD _HRESULT_TYPEDEF_(0x80100069)
#define SCARD_W_SECURITY_VIOLATION _HRESULT_TYPEDEF_(0x8010006A)
#define SCARD_W_WRONG_CHV _HRESULT_TYPEDEF_(0x8010006B)
#define SCARD_W_CHV_BLOCKED _HRESULT_TYPEDEF_(0x8010006C)
#define SCARD_W_EOF _HRESULT_TYPEDEF_(0x8010006D)
#define SCARD_W_CANCELLED_BY_USER _HRESULT_TYPEDEF_(0x8010006E)
#define SCARD_W_CARD_NOT_AUTHENTICATED _HRESULT_TYPEDEF_(0x8010006F)
#define SCARD_W_CACHE_ITEM_NOT_FOUND _HRESULT_TYPEDEF_(0x80100070)
#define SCARD_W_CACHE_ITEM_STALE _HRESULT_TYPEDEF_(0x80100071)
#define SCARD_W_CACHE_ITEM_TOO_BIG _HRESULT_TYPEDEF_(0x80100072)
#define COMADMIN_E_OBJECTERRORS _HRESULT_TYPEDEF_(0x80110401)
#define COMADMIN_E_OBJECTINVALID _HRESULT_TYPEDEF_(0x80110402)
#define COMADMIN_E_KEYMISSING _HRESULT_TYPEDEF_(0x80110403)
#define COMADMIN_E_ALREADYINSTALLED _HRESULT_TYPEDEF_(0x80110404)
#define COMADMIN_E_APP_FILE_WRITEFAIL _HRESULT_TYPEDEF_(0x80110407)
#define COMADMIN_E_APP_FILE_READFAIL _HRESULT_TYPEDEF_(0x80110408)
#define COMADMIN_E_APP_FILE_VERSION _HRESULT_TYPEDEF_(0x80110409)
#define COMADMIN_E_BADPATH _HRESULT_TYPEDEF_(0x8011040A)
#define COMADMIN_E_APPLICATIONEXISTS _HRESULT_TYPEDEF_(0x8011040B)
#define COMADMIN_E_ROLEEXISTS _HRESULT_TYPEDEF_(0x8011040C)
#define COMADMIN_E_CANTCOPYFILE _HRESULT_TYPEDEF_(0x8011040D)
#define COMADMIN_E_NOUSER _HRESULT_TYPEDEF_(0x8011040F)
#define COMADMIN_E_INVALIDUSERIDS _HRESULT_TYPEDEF_(0x80110410)
#define COMADMIN_E_NOREGISTRYCLSID _HRESULT_TYPEDEF_(0x80110411)
#define COMADMIN_E_BADREGISTRYPROGID _HRESULT_TYPEDEF_(0x80110412)
#define COMADMIN_E_AUTHENTICATIONLEVEL _HRESULT_TYPEDEF_(0x80110413)
#define COMADMIN_E_USERPASSWDNOTVALID _HRESULT_TYPEDEF_(0x80110414)
#define COMADMIN_E_CLSIDORIIDMISMATCH _HRESULT_TYPEDEF_(0x80110418)
#define COMADMIN_E_REMOTEINTERFACE _HRESULT_TYPEDEF_(0x80110419)
#define COMADMIN_E_DLLREGISTERSERVER _HRESULT_TYPEDEF_(0x8011041A)
#define COMADMIN_E_NOSERVERSHARE _HRESULT_TYPEDEF_(0x8011041B)
#define COMADMIN_E_DLLLOADFAILED _HRESULT_TYPEDEF_(0x8011041D)
#define COMADMIN_E_BADREGISTRYLIBID _HRESULT_TYPEDEF_(0x8011041E)
#define COMADMIN_E_APPDIRNOTFOUND _HRESULT_TYPEDEF_(0x8011041F)
#define COMADMIN_E_REGISTRARFAILED _HRESULT_TYPEDEF_(0x80110423)
#define COMADMIN_E_COMPFILE_DOESNOTEXIST _HRESULT_TYPEDEF_(0x80110424)
#define COMADMIN_E_COMPFILE_LOADDLLFAIL _HRESULT_TYPEDEF_(0x80110425)
#define COMADMIN_E_COMPFILE_GETCLASSOBJ _HRESULT_TYPEDEF_(0x80110426)
#define COMADMIN_E_COMPFILE_CLASSNOTAVAIL _HRESULT_TYPEDEF_(0x80110427)
#define COMADMIN_E_COMPFILE_BADTLB _HRESULT_TYPEDEF_(0x80110428)
#define COMADMIN_E_COMPFILE_NOTINSTALLABLE _HRESULT_TYPEDEF_(0x80110429)
#define COMADMIN_E_NOTCHANGEABLE _HRESULT_TYPEDEF_(0x8011042A)
#define COMADMIN_E_NOTDELETEABLE _HRESULT_TYPEDEF_(0x8011042B)
#define COMADMIN_E_SESSION _HRESULT_TYPEDEF_(0x8011042C)
#define COMADMIN_E_COMP_MOVE_LOCKED _HRESULT_TYPEDEF_(0x8011042D)
#define COMADMIN_E_COMP_MOVE_BAD_DEST _HRESULT_TYPEDEF_(0x8011042E)
#define COMADMIN_E_REGISTERTLB _HRESULT_TYPEDEF_(0x80110430)
#define COMADMIN_E_SYSTEMAPP _HRESULT_TYPEDEF_(0x80110433)
#define COMADMIN_E_COMPFILE_NOREGISTRAR _HRESULT_TYPEDEF_(0x80110434)
#define COMADMIN_E_COREQCOMPINSTALLED _HRESULT_TYPEDEF_(0x80110435)
#define COMADMIN_E_SERVICENOTINSTALLED _HRESULT_TYPEDEF_(0x80110436)
#define COMADMIN_E_PROPERTYSAVEFAILED _HRESULT_TYPEDEF_(0x80110437)
#define COMADMIN_E_OBJECTEXISTS _HRESULT_TYPEDEF_(0x80110438)
#define COMADMIN_E_COMPONENTEXISTS _HRESULT_TYPEDEF_(0x80110439)
#define COMADMIN_E_REGFILE_CORRUPT _HRESULT_TYPEDEF_(0x8011043B)
#define COMADMIN_E_PROPERTY_OVERFLOW _HRESULT_TYPEDEF_(0x8011043C)
#define COMADMIN_E_NOTINREGISTRY _HRESULT_TYPEDEF_(0x8011043E)
#define COMADMIN_E_OBJECTNOTPOOLABLE _HRESULT_TYPEDEF_(0x8011043F)
#define COMADMIN_E_APPLID_MATCHES_CLSID _HRESULT_TYPEDEF_(0x80110446)
#define COMADMIN_E_ROLE_DOES_NOT_EXIST _HRESULT_TYPEDEF_(0x80110447)
#define COMADMIN_E_START_APP_NEEDS_COMPONENTS _HRESULT_TYPEDEF_(0x80110448)
#define COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM _HRESULT_TYPEDEF_(0x80110449)
#define COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY _HRESULT_TYPEDEF_(0x8011044A)
#define COMADMIN_E_CAN_NOT_START_APP _HRESULT_TYPEDEF_(0x8011044B)
#define COMADMIN_E_CAN_NOT_EXPORT_SYS_APP _HRESULT_TYPEDEF_(0x8011044C)
#define COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT _HRESULT_TYPEDEF_(0x8011044D)
#define COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER _HRESULT_TYPEDEF_(0x8011044E)
#define COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE _HRESULT_TYPEDEF_(0x8011044F)
#define COMADMIN_E_BASE_PARTITION_ONLY _HRESULT_TYPEDEF_(0x80110450)
#define COMADMIN_E_START_APP_DISABLED _HRESULT_TYPEDEF_(0x80110451)
#define COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME _HRESULT_TYPEDEF_(0x80110457)
#define COMADMIN_E_CAT_INVALID_PARTITION_NAME _HRESULT_TYPEDEF_(0x80110458)
#define COMADMIN_E_CAT_PARTITION_IN_USE _HRESULT_TYPEDEF_(0x80110459)
#define COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES _HRESULT_TYPEDEF_(0x8011045A)
#define COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED _HRESULT_TYPEDEF_(0x8011045B)
#define COMADMIN_E_AMBIGUOUS_APPLICATION_NAME _HRESULT_TYPEDEF_(0x8011045C)
#define COMADMIN_E_AMBIGUOUS_PARTITION_NAME _HRESULT_TYPEDEF_(0x8011045D)
#define COMADMIN_E_REGDB_NOTINITIALIZED _HRESULT_TYPEDEF_(0x80110472)
#define COMADMIN_E_REGDB_NOTOPEN _HRESULT_TYPEDEF_(0x80110473)
#define COMADMIN_E_REGDB_SYSTEMERR _HRESULT_TYPEDEF_(0x80110474)
#define COMADMIN_E_REGDB_ALREADYRUNNING _HRESULT_TYPEDEF_(0x80110475)
#define COMADMIN_E_MIG_VERSIONNOTSUPPORTED _HRESULT_TYPEDEF_(0x80110480)
#define COMADMIN_E_MIG_SCHEMANOTFOUND _HRESULT_TYPEDEF_(0x80110481)
#define COMADMIN_E_CAT_BITNESSMISMATCH _HRESULT_TYPEDEF_(0x80110482)
#define COMADMIN_E_CAT_UNACCEPTABLEBITNESS _HRESULT_TYPEDEF_(0x80110483)
#define COMADMIN_E_CAT_WRONGAPPBITNESS _HRESULT_TYPEDEF_(0x80110484)
#define COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80110485)
#define COMADMIN_E_CAT_SERVERFAULT _HRESULT_TYPEDEF_(0x80110486)
#define COMQC_E_APPLICATION_NOT_QUEUED _HRESULT_TYPEDEF_(0x80110600)
#define COMQC_E_NO_QUEUEABLE_INTERFACES _HRESULT_TYPEDEF_(0x80110601)
#define COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE _HRESULT_TYPEDEF_(0x80110602)
#define COMQC_E_NO_IPERSISTSTREAM _HRESULT_TYPEDEF_(0x80110603)
#define COMQC_E_BAD_MESSAGE _HRESULT_TYPEDEF_(0x80110604)
#define COMQC_E_UNAUTHENTICATED _HRESULT_TYPEDEF_(0x80110605)
#define COMQC_E_UNTRUSTED_ENQUEUER _HRESULT_TYPEDEF_(0x80110606)
#define MSDTC_E_DUPLICATE_RESOURCE _HRESULT_TYPEDEF_(0x80110701)
#define COMADMIN_E_OBJECT_PARENT_MISSING _HRESULT_TYPEDEF_(0x80110808)
#define COMADMIN_E_OBJECT_DOES_NOT_EXIST _HRESULT_TYPEDEF_(0x80110809)
#define COMADMIN_E_APP_NOT_RUNNING _HRESULT_TYPEDEF_(0x8011080A)
#define COMADMIN_E_INVALID_PARTITION _HRESULT_TYPEDEF_(0x8011080B)
#define COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE _HRESULT_TYPEDEF_(0x8011080D)
#define COMADMIN_E_USER_IN_SET _HRESULT_TYPEDEF_(0x8011080E)
#define COMADMIN_E_CANTRECYCLELIBRARYAPPS _HRESULT_TYPEDEF_(0x8011080F)
#define COMADMIN_E_CANTRECYCLESERVICEAPPS _HRESULT_TYPEDEF_(0x80110811)
#define COMADMIN_E_PROCESSALREADYRECYCLED _HRESULT_TYPEDEF_(0x80110812)
#define COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED _HRESULT_TYPEDEF_(0x80110813)
#define COMADMIN_E_CANTMAKEINPROCSERVICE _HRESULT_TYPEDEF_(0x80110814)
#define COMADMIN_E_PROGIDINUSEBYCLSID _HRESULT_TYPEDEF_(0x80110815)
#define COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET _HRESULT_TYPEDEF_(0x80110816)
#define COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED _HRESULT_TYPEDEF_(0x80110817)
#define COMADMIN_E_PARTITION_ACCESSDENIED _HRESULT_TYPEDEF_(0x80110818)
#define COMADMIN_E_PARTITION_MSI_ONLY _HRESULT_TYPEDEF_(0x80110819)
#define COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT _HRESULT_TYPEDEF_(0x8011081A)
#define COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS _HRESULT_TYPEDEF_(0x8011081B)
#define COMADMIN_E_COMP_MOVE_SOURCE _HRESULT_TYPEDEF_(0x8011081C)
#define COMADMIN_E_COMP_MOVE_DEST _HRESULT_TYPEDEF_(0x8011081D)
#define COMADMIN_E_COMP_MOVE_PRIVATE _HRESULT_TYPEDEF_(0x8011081E)
#define COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET _HRESULT_TYPEDEF_(0x8011081F)
#define COMADMIN_E_CANNOT_ALIAS_EVENTCLASS _HRESULT_TYPEDEF_(0x80110820)
#define COMADMIN_E_PRIVATE_ACCESSDENIED _HRESULT_TYPEDEF_(0x80110821)
#define COMADMIN_E_SAFERINVALID _HRESULT_TYPEDEF_(0x80110822)
#define COMADMIN_E_REGISTRY_ACCESSDENIED _HRESULT_TYPEDEF_(0x80110823)
#define COMADMIN_E_PARTITIONS_DISABLED _HRESULT_TYPEDEF_(0x80110824)
#define DXGI_STATUS_OCCLUDED _HRESULT_TYPEDEF_(0x087a0001)
#define DXGI_STATUS_CLIPPED _HRESULT_TYPEDEF_(0x087a0002)
#define DXGI_STATUS_NO_REDIRECTION _HRESULT_TYPEDEF_(0x087a0004)
#define DXGI_STATUS_NO_DESKTOP_ACCESS _HRESULT_TYPEDEF_(0x087a0005)
#define DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE _HRESULT_TYPEDEF_(0x087a0006)
#define DXGI_STATUS_MODE_CHANGED _HRESULT_TYPEDEF_(0x087a0007)
#define DXGI_STATUS_MODE_CHANGE_IN_PROGRESS _HRESULT_TYPEDEF_(0x087a0008)
#define DXGI_STATUS_UNOCCLUDED _HRESULT_TYPEDEF_(0x087a0009)
#define DXGI_STATUS_DDA_WAS_STILL_DRAWING _HRESULT_TYPEDEF_(0x087a000a)
#define DXGI_STATUS_PRESENT_REQUIRED _HRESULT_TYPEDEF_(0x087a002f)
#define DXGI_ERROR_INVALID_CALL _HRESULT_TYPEDEF_(0x887A0001)
#define DXGI_ERROR_NOT_FOUND _HRESULT_TYPEDEF_(0x887A0002)
#define DXGI_ERROR_MORE_DATA _HRESULT_TYPEDEF_(0x887A0003)
#define DXGI_ERROR_UNSUPPORTED _HRESULT_TYPEDEF_(0x887A0004)
#define DXGI_ERROR_DEVICE_REMOVED _HRESULT_TYPEDEF_(0x887A0005)
#define DXGI_ERROR_DEVICE_HUNG _HRESULT_TYPEDEF_(0x887A0006)
#define DXGI_ERROR_DEVICE_RESET _HRESULT_TYPEDEF_(0x887A0007)
#define DXGI_ERROR_WAS_STILL_DRAWING _HRESULT_TYPEDEF_(0x887A000A)
#define DXGI_ERROR_FRAME_STATISTICS_DISJOINT _HRESULT_TYPEDEF_(0x887A000B)
#define DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE _HRESULT_TYPEDEF_(0x887A000C)
#define DXGI_ERROR_DRIVER_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x887A0020)
#define DXGI_ERROR_NONEXCLUSIVE _HRESULT_TYPEDEF_(0x887A0021)
#define DXGI_ERROR_NOT_CURRENTLY_AVAILABLE _HRESULT_TYPEDEF_(0x887A0022)
#define DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED _HRESULT_TYPEDEF_(0x887A0023)
#define DXGI_ERROR_REMOTE_OUTOFMEMORY _HRESULT_TYPEDEF_(0x887A0024)
#define DXGI_ERROR_ACCESS_LOST _HRESULT_TYPEDEF_(0x887A0026)
#define DXGI_ERROR_WAIT_TIMEOUT _HRESULT_TYPEDEF_(0x887A0027)
#define DXGI_ERROR_SESSION_DISCONNECTED _HRESULT_TYPEDEF_(0x887A0028)
#define DXGI_ERROR_RESTRICT_TO_OUTPUT_STALE _HRESULT_TYPEDEF_(0x887A0029)
#define DXGI_ERROR_CANNOT_PROTECT_CONTENT _HRESULT_TYPEDEF_(0x887A002A)
#define DXGI_ERROR_ACCESS_DENIED _HRESULT_TYPEDEF_(0x887A002B)
#define DXGI_ERROR_NAME_ALREADY_EXISTS _HRESULT_TYPEDEF_(0x887A002C)
#define DXGI_ERROR_SDK_COMPONENT_MISSING _HRESULT_TYPEDEF_(0x887A002D)
#define DXGI_ERROR_NOT_CURRENT _HRESULT_TYPEDEF_(0x887A002E)
#define DXGI_ERROR_HW_PROTECTION_OUTOFMEMORY _HRESULT_TYPEDEF_(0x887A0030)
#define DXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION _HRESULT_TYPEDEF_(0x887A0031)
#define DXGI_ERROR_NON_COMPOSITED_UI _HRESULT_TYPEDEF_(0x887A0032)
#define DXGI_ERROR_MODE_CHANGE_IN_PROGRESS _HRESULT_TYPEDEF_(0x887A0025)
#define DXGI_ERROR_CACHE_CORRUPT _HRESULT_TYPEDEF_(0x887A0033)
#define DXGI_ERROR_CACHE_FULL _HRESULT_TYPEDEF_(0x887A0034)
#define DXGI_ERROR_CACHE_HASH_COLLISION _HRESULT_TYPEDEF_(0x887A0035)
#define DXGI_ERROR_ALREADY_EXISTS _HRESULT_TYPEDEF_(0x887A0036)
#define DXGI_DDI_ERR_WASSTILLDRAWING _HRESULT_TYPEDEF_(0x887B0001)
#define DXGI_DDI_ERR_UNSUPPORTED _HRESULT_TYPEDEF_(0x887B0002)
#define DXGI_DDI_ERR_NONEXCLUSIVE _HRESULT_TYPEDEF_(0x887B0003)
#define D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS _HRESULT_TYPEDEF_(0x88790001)
#define D3D10_ERROR_FILE_NOT_FOUND _HRESULT_TYPEDEF_(0x88790002)
#define D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS _HRESULT_TYPEDEF_(0x887C0001)
#define D3D11_ERROR_FILE_NOT_FOUND _HRESULT_TYPEDEF_(0x887C0002)
#define D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS _HRESULT_TYPEDEF_(0x887C0003)
#define D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD _HRESULT_TYPEDEF_(0x887C0004)
#define D3D12_ERROR_ADAPTER_NOT_FOUND _HRESULT_TYPEDEF_(0x887E0001)
#define D3D12_ERROR_DRIVER_VERSION_MISMATCH _HRESULT_TYPEDEF_(0x887E0002)
#define D2DERR_WRONG_STATE _HRESULT_TYPEDEF_(0x88990001)
#define D2DERR_NOT_INITIALIZED _HRESULT_TYPEDEF_(0x88990002)
#define D2DERR_UNSUPPORTED_OPERATION _HRESULT_TYPEDEF_(0x88990003)
#define D2DERR_SCANNER_FAILED _HRESULT_TYPEDEF_(0x88990004)
#define D2DERR_SCREEN_ACCESS_DENIED _HRESULT_TYPEDEF_(0x88990005)
#define D2DERR_DISPLAY_STATE_INVALID _HRESULT_TYPEDEF_(0x88990006)
#define D2DERR_ZERO_VECTOR _HRESULT_TYPEDEF_(0x88990007)
#define D2DERR_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x88990008)
#define D2DERR_DISPLAY_FORMAT_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x88990009)
#define D2DERR_INVALID_CALL _HRESULT_TYPEDEF_(0x8899000A)
#define D2DERR_NO_HARDWARE_DEVICE _HRESULT_TYPEDEF_(0x8899000B)
#define D2DERR_RECREATE_TARGET _HRESULT_TYPEDEF_(0x8899000C)
#define D2DERR_TOO_MANY_SHADER_ELEMENTS _HRESULT_TYPEDEF_(0x8899000D)
#define D2DERR_SHADER_COMPILE_FAILED _HRESULT_TYPEDEF_(0x8899000E)
#define D2DERR_MAX_TEXTURE_SIZE_EXCEEDED _HRESULT_TYPEDEF_(0x8899000F)
#define D2DERR_UNSUPPORTED_VERSION _HRESULT_TYPEDEF_(0x88990010)
#define D2DERR_BAD_NUMBER _HRESULT_TYPEDEF_(0x88990011)
#define D2DERR_WRONG_FACTORY _HRESULT_TYPEDEF_(0x88990012)
#define D2DERR_LAYER_ALREADY_IN_USE _HRESULT_TYPEDEF_(0x88990013)
#define D2DERR_POP_CALL_DID_NOT_MATCH_PUSH _HRESULT_TYPEDEF_(0x88990014)
#define D2DERR_WRONG_RESOURCE_DOMAIN _HRESULT_TYPEDEF_(0x88990015)
#define D2DERR_PUSH_POP_UNBALANCED _HRESULT_TYPEDEF_(0x88990016)
#define D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT _HRESULT_TYPEDEF_(0x88990017)
#define D2DERR_INCOMPATIBLE_BRUSH_TYPES _HRESULT_TYPEDEF_(0x88990018)
#define D2DERR_WIN32_ERROR _HRESULT_TYPEDEF_(0x88990019)
#define D2DERR_TARGET_NOT_GDI_COMPATIBLE _HRESULT_TYPEDEF_(0x8899001A)
#define D2DERR_TEXT_EFFECT_IS_WRONG_TYPE _HRESULT_TYPEDEF_(0x8899001B)
#define D2DERR_TEXT_RENDERER_NOT_RELEASED _HRESULT_TYPEDEF_(0x8899001C)
#define D2DERR_EXCEEDS_MAX_BITMAP_SIZE _HRESULT_TYPEDEF_(0x8899001D)
#define D2DERR_INVALID_GRAPH_CONFIGURATION _HRESULT_TYPEDEF_(0x8899001E)
#define D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION _HRESULT_TYPEDEF_(0x8899001F)
#define D2DERR_CYCLIC_GRAPH _HRESULT_TYPEDEF_(0x88990020)
#define D2DERR_BITMAP_CANNOT_DRAW _HRESULT_TYPEDEF_(0x88990021)
#define D2DERR_OUTSTANDING_BITMAP_REFERENCES _HRESULT_TYPEDEF_(0x88990022)
#define D2DERR_ORIGINAL_TARGET_NOT_BOUND _HRESULT_TYPEDEF_(0x88990023)
#define D2DERR_INVALID_TARGET _HRESULT_TYPEDEF_(0x88990024)
#define D2DERR_BITMAP_BOUND_AS_TARGET _HRESULT_TYPEDEF_(0x88990025)
#define D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES _HRESULT_TYPEDEF_(0x88990026)
#define D2DERR_INTERMEDIATE_TOO_LARGE _HRESULT_TYPEDEF_(0x88990027)
#define D2DERR_EFFECT_IS_NOT_REGISTERED _HRESULT_TYPEDEF_(0x88990028)
#define D2DERR_INVALID_PROPERTY _HRESULT_TYPEDEF_(0x88990029)
#define D2DERR_NO_SUBPROPERTIES _HRESULT_TYPEDEF_(0x8899002A)
#define D2DERR_PRINT_JOB_CLOSED _HRESULT_TYPEDEF_(0x8899002B)
#define D2DERR_PRINT_FORMAT_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x8899002C)
#define D2DERR_TOO_MANY_TRANSFORM_INPUTS _HRESULT_TYPEDEF_(0x8899002D)
#define D2DERR_INVALID_GLYPH_IMAGE _HRESULT_TYPEDEF_(0x8899002E)
#define TBS_SUCCESS 0U
#define TBS_E_INTERNAL_ERROR _HRESULT_TYPEDEF_(0x80284001)
#define TBS_E_BAD_PARAMETER _HRESULT_TYPEDEF_(0x80284002)
#define TBS_E_INVALID_OUTPUT_POINTER _HRESULT_TYPEDEF_(0x80284003)
#define TBS_E_INSUFFICIENT_BUFFER _HRESULT_TYPEDEF_(0x80284005)
#define TBS_E_IOERROR _HRESULT_TYPEDEF_(0x80284006)
#define TBS_E_INVALID_CONTEXT_PARAM _HRESULT_TYPEDEF_(0x80284007)
#define TBS_E_SERVICE_NOT_RUNNING _HRESULT_TYPEDEF_(0x80284008)
#define TBS_E_TOO_MANY_TBS_CONTEXTS _HRESULT_TYPEDEF_(0x80284009)
#define TBS_E_SERVICE_START_PENDING _HRESULT_TYPEDEF_(0x8028400B)
#define TBS_E_BUFFER_TOO_LARGE _HRESULT_TYPEDEF_(0x8028400E)
#define TBS_E_TPM_NOT_FOUND _HRESULT_TYPEDEF_(0x8028400F)
#define TBS_E_SERVICE_DISABLED _HRESULT_TYPEDEF_(0x80284010)
#define TBS_E_DEACTIVATED _HRESULT_TYPEDEF_(0x80284016)
#define FWP_E_CALLOUT_NOT_FOUND _HRESULT_TYPEDEF_(0x80320001)
#define FWP_E_CONDITION_NOT_FOUND _HRESULT_TYPEDEF_(0x80320002)
#define FWP_E_FILTER_NOT_FOUND _HRESULT_TYPEDEF_(0x80320003)
#define FWP_E_LAYER_NOT_FOUND _HRESULT_TYPEDEF_(0x80320004)
#define FWP_E_PROVIDER_NOT_FOUND _HRESULT_TYPEDEF_(0x80320005)
#define FWP_E_PROVIDER_CONTEXT_NOT_FOUND _HRESULT_TYPEDEF_(0x80320006)
#define FWP_E_SUBLAYER_NOT_FOUND _HRESULT_TYPEDEF_(0x80320007)
#define FWP_E_NOT_FOUND _HRESULT_TYPEDEF_(0x80320008)
#define FWP_E_ALREADY_EXISTS _HRESULT_TYPEDEF_(0x80320009)
#define FWP_E_IN_USE _HRESULT_TYPEDEF_(0x8032000A)
#define FWP_E_DYNAMIC_SESSION_IN_PROGRESS _HRESULT_TYPEDEF_(0x8032000B)
#define FWP_E_WRONG_SESSION _HRESULT_TYPEDEF_(0x8032000C)
#define FWP_E_NO_TXN_IN_PROGRESS _HRESULT_TYPEDEF_(0x8032000D)
#define FWP_E_TXN_IN_PROGRESS _HRESULT_TYPEDEF_(0x8032000E)
#define FWP_E_TXN_ABORTED _HRESULT_TYPEDEF_(0x8032000F)
#define FWP_E_SESSION_ABORTED _HRESULT_TYPEDEF_(0x80320010)
#define FWP_E_INCOMPATIBLE_TXN _HRESULT_TYPEDEF_(0x80320011)
#define FWP_E_TIMEOUT _HRESULT_TYPEDEF_(0x80320012)
#define FWP_E_NET_EVENTS_DISABLED _HRESULT_TYPEDEF_(0x80320013)
#define FWP_E_INCOMPATIBLE_LAYER _HRESULT_TYPEDEF_(0x80320014)
#define FWP_E_KM_CLIENTS_ONLY _HRESULT_TYPEDEF_(0x80320015)
#define FWP_E_LIFETIME_MISMATCH _HRESULT_TYPEDEF_(0x80320016)
#define FWP_E_BUILTIN_OBJECT _HRESULT_TYPEDEF_(0x80320017)
#define FWP_E_TOO_MANY_CALLOUTS _HRESULT_TYPEDEF_(0x80320018)
#define FWP_E_NOTIFICATION_DROPPED _HRESULT_TYPEDEF_(0x80320019)
#define FWP_E_TRAFFIC_MISMATCH _HRESULT_TYPEDEF_(0x8032001A)
#define FWP_E_INCOMPATIBLE_SA_STATE _HRESULT_TYPEDEF_(0x8032001B)
#define FWP_E_NULL_POINTER _HRESULT_TYPEDEF_(0x8032001C)
#define FWP_E_INVALID_ENUMERATOR _HRESULT_TYPEDEF_(0x8032001D)
#define FWP_E_INVALID_FLAGS _HRESULT_TYPEDEF_(0x8032001E)
#define FWP_E_INVALID_NET_MASK _HRESULT_TYPEDEF_(0x8032001F)
#define FWP_E_INVALID_RANGE _HRESULT_TYPEDEF_(0x80320020)
#define FWP_E_INVALID_INTERVAL _HRESULT_TYPEDEF_(0x80320021)
#define FWP_E_ZERO_LENGTH_ARRAY _HRESULT_TYPEDEF_(0x80320022)
#define FWP_E_NULL_DISPLAY_NAME _HRESULT_TYPEDEF_(0x80320023)
#define FWP_E_INVALID_ACTION_TYPE _HRESULT_TYPEDEF_(0x80320024)
#define FWP_E_INVALID_WEIGHT _HRESULT_TYPEDEF_(0x80320025)
#define FWP_E_MATCH_TYPE_MISMATCH _HRESULT_TYPEDEF_(0x80320026)
#define FWP_E_TYPE_MISMATCH _HRESULT_TYPEDEF_(0x80320027)
#define FWP_E_OUT_OF_BOUNDS _HRESULT_TYPEDEF_(0x80320028)
#define FWP_E_RESERVED _HRESULT_TYPEDEF_(0x80320029)
#define FWP_E_DUPLICATE_CONDITION _HRESULT_TYPEDEF_(0x8032002A)
#define FWP_E_DUPLICATE_KEYMOD _HRESULT_TYPEDEF_(0x8032002B)
#define FWP_E_ACTION_INCOMPATIBLE_WITH_LAYER _HRESULT_TYPEDEF_(0x8032002C)
#define FWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER _HRESULT_TYPEDEF_(0x8032002D)
#define FWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER _HRESULT_TYPEDEF_(0x8032002E)
#define FWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT _HRESULT_TYPEDEF_(0x8032002F)
#define FWP_E_INCOMPATIBLE_AUTH_METHOD _HRESULT_TYPEDEF_(0x80320030)
#define FWP_E_INCOMPATIBLE_DH_GROUP _HRESULT_TYPEDEF_(0x80320031)
#define FWP_E_EM_NOT_SUPPORTED _HRESULT_TYPEDEF_(0x80320032)
#define FWP_E_NEVER_MATCH _HRESULT_TYPEDEF_(0x80320033)
#define FWP_E_PROVIDER_CONTEXT_MISMATCH _HRESULT_TYPEDEF_(0x80320034)
#define FWP_E_INVALID_PARAMETER _HRESULT_TYPEDEF_(0x80320035)
#define FWP_E_TOO_MANY_SUBLAYERS _HRESULT_TYPEDEF_(0x80320036)
#define FWP_E_CALLOUT_NOTIFICATION_FAILED _HRESULT_TYPEDEF_(0x80320037)
#define FWP_E_INVALID_AUTH_TRANSFORM _HRESULT_TYPEDEF_(0x80320038)
#define FWP_E_INVALID_CIPHER_TRANSFORM _HRESULT_TYPEDEF_(0x80320039)
#define WINCODEC_ERR_WRONGSTATE _HRESULT_TYPEDEF_(0x88982f04)
#define WINCODEC_ERR_VALUEOUTOFRANGE _HRESULT_TYPEDEF_(0x88982f05)
#define WINCODEC_ERR_UNKNOWNIMAGEFORMAT _HRESULT_TYPEDEF_(0x88982f07)
#define WINCODEC_ERR_UNSUPPORTEDVERSION _HRESULT_TYPEDEF_(0x88982f0b)
#define WINCODEC_ERR_NOTINITIALIZED _HRESULT_TYPEDEF_(0x88982f0c)
#define WINCODEC_ERR_ALREADYLOCKED _HRESULT_TYPEDEF_(0x88982f0d)
#define WINCODEC_ERR_PROPERTYNOTFOUND _HRESULT_TYPEDEF_(0x88982f40)
#define WINCODEC_ERR_PROPERTYNOTSUPPORTED _HRESULT_TYPEDEF_(0x88982f41)
#define WINCODEC_ERR_PROPERTYSIZE _HRESULT_TYPEDEF_(0x88982f42)
#define WINCODEC_ERR_CODECPRESENT _HRESULT_TYPEDEF_(0x88982f43)
#define WINCODEC_ERR_CODECNOTHUMBNAIL _HRESULT_TYPEDEF_(0x88982f44)
#define WINCODEC_ERR_PALETTEUNAVAILABLE _HRESULT_TYPEDEF_(0x88982f45)
#define WINCODEC_ERR_CODECTOOMANYSCANLINES _HRESULT_TYPEDEF_(0x88982f46)
#define WINCODEC_ERR_INTERNALERROR _HRESULT_TYPEDEF_(0x88982f48)
#define WINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS _HRESULT_TYPEDEF_(0x88982f49)
#define WINCODEC_ERR_COMPONENTNOTFOUND _HRESULT_TYPEDEF_(0x88982f50)
#define WINCODEC_ERR_IMAGESIZEOUTOFRANGE _HRESULT_TYPEDEF_(0x88982f51)
#define WINCODEC_ERR_TOOMUCHMETADATA _HRESULT_TYPEDEF_(0x88982f52)
#define WINCODEC_ERR_BADIMAGE _HRESULT_TYPEDEF_(0x88982f60)
#define WINCODEC_ERR_BADHEADER _HRESULT_TYPEDEF_(0x88982f61)
#define WINCODEC_ERR_FRAMEMISSING _HRESULT_TYPEDEF_(0x88982f62)
#define WINCODEC_ERR_BADMETADATAHEADER _HRESULT_TYPEDEF_(0x88982f63)
#define WINCODEC_ERR_BADSTREAMDATA _HRESULT_TYPEDEF_(0x88982f70)
#define WINCODEC_ERR_STREAMWRITE _HRESULT_TYPEDEF_(0x88982f71)
#define WINCODEC_ERR_STREAMREAD _HRESULT_TYPEDEF_(0x88982f72)
#define WINCODEC_ERR_STREAMNOTAVAILABLE _HRESULT_TYPEDEF_(0x88982f73)
#define WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT _HRESULT_TYPEDEF_(0x88982f80)
#define WINCODEC_ERR_UNSUPPORTEDOPERATION _HRESULT_TYPEDEF_(0x88982f81)
#define WINCODEC_ERR_INVALIDREGISTRATION _HRESULT_TYPEDEF_(0x88982f8a)
#define WINCODEC_ERR_COMPONENTINITIALIZEFAILURE _HRESULT_TYPEDEF_(0x88982f8b)
#define WINCODEC_ERR_INSUFFICIENTBUFFER _HRESULT_TYPEDEF_(0x88982f8c)
#define WINCODEC_ERR_DUPLICATEMETADATAPRESENT _HRESULT_TYPEDEF_(0x88982f8d)
#define WINCODEC_ERR_PROPERTYUNEXPECTEDTYPE _HRESULT_TYPEDEF_(0x88982f8e)
#define WINCODEC_ERR_UNEXPECTEDSIZE _HRESULT_TYPEDEF_(0x88982f8f)
#define WINCODEC_ERR_INVALIDQUERYREQUEST _HRESULT_TYPEDEF_(0x88982f90)
#define WINCODEC_ERR_UNEXPECTEDMETADATATYPE _HRESULT_TYPEDEF_(0x88982f91)
#define WINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT _HRESULT_TYPEDEF_(0x88982f92)
#define WINCODEC_ERR_INVALIDQUERYCHARACTER _HRESULT_TYPEDEF_(0x88982f93)
#define WINCODEC_ERR_WIN32ERROR _HRESULT_TYPEDEF_(0x88982f94)
#define WINCODEC_ERR_INVALIDPROGRESSIVELEVEL _HRESULT_TYPEDEF_(0x88982f95)
#define WINCODEC_ERR_INVALIDJPEGSCANINDEX _HRESULT_TYPEDEF_(0x88982f96)
#define NAP_E_INVALID_PACKET _HRESULT_TYPEDEF_(0x80270001)
#define NAP_E_MISSING_SOH _HRESULT_TYPEDEF_(0x80270002)
#define NAP_E_CONFLICTING_ID _HRESULT_TYPEDEF_(0x80270003)
#define NAP_E_NO_CACHED_SOH _HRESULT_TYPEDEF_(0x80270004)
#define NAP_E_STILL_BOUND _HRESULT_TYPEDEF_(0x80270005)
#define NAP_E_NOT_REGISTERED _HRESULT_TYPEDEF_(0x80270006)
#define NAP_E_NOT_INITIALIZED _HRESULT_TYPEDEF_(0x80270007)
#define NAP_E_MISMATCHED_ID _HRESULT_TYPEDEF_(0x80270008)
#define NAP_E_NOT_PENDING _HRESULT_TYPEDEF_(0x80270009)
#define NAP_E_ID_NOT_FOUND _HRESULT_TYPEDEF_(0x8027000A)
#define NAP_E_MAXSIZE_TOO_SMALL _HRESULT_TYPEDEF_(0x8027000B)
#define NAP_E_SERVICE_NOT_RUNNING _HRESULT_TYPEDEF_(0x8027000C)
#define NAP_S_CERT_ALREADY_PRESENT _HRESULT_TYPEDEF_(0x0027000D)
#define NAP_E_ENTITY_DISABLED _HRESULT_TYPEDEF_(0x8027000E)
#define NAP_E_NETSH_GROUPPOLICY_ERROR _HRESULT_TYPEDEF_(0x8027000F)
#define NAP_E_TOO_MANY_CALLS _HRESULT_TYPEDEF_(0x80270010)
#define NAP_E_SHV_CONFIG_EXISTED _HRESULT_TYPEDEF_(0x80270011)
#define NAP_E_SHV_CONFIG_NOT_FOUND _HRESULT_TYPEDEF_(0x80270012)
#define NAP_E_SHV_TIMEOUT _HRESULT_TYPEDEF_(0x80270013)
#define DWRITE_E_FILEFORMAT _HRESULT_TYPEDEF_(0x88985000L)
#define DWRITE_E_UNEXPECTED _HRESULT_TYPEDEF_(0x88985001L)
#define DWRITE_E_NOFONT _HRESULT_TYPEDEF_(0x88985002L)
#define DWRITE_E_FILENOTFOUND _HRESULT_TYPEDEF_(0x88985003L)
#define DWRITE_E_FILEACCESS _HRESULT_TYPEDEF_(0x88985004L)
#define DWRITE_E_FONTCOLLECTIONOBSOLETE _HRESULT_TYPEDEF_(0x88985005L)
#define DWRITE_E_ALREADYREGISTERED _HRESULT_TYPEDEF_(0x88985006L)
#define DWRITE_E_CACHEFORMAT _HRESULT_TYPEDEF_(0x88985007L)
#define DWRITE_E_CACHEVERSION _HRESULT_TYPEDEF_(0x88985008L)
#define DWRITE_E_UNSUPPORTEDOPERATION _HRESULT_TYPEDEF_(0x88985009L)
#define DWRITE_E_TEXTRENDERERINCOMPATIBLE _HRESULT_TYPEDEF_(0x8898500AL)
#define DWRITE_E_FLOWDIRECTIONCONFLICTS _HRESULT_TYPEDEF_(0x8898500BL)
#define DWRITE_E_NOCOLOR _HRESULT_TYPEDEF_(0x8898500CL)
#define DWRITE_E_REMOTEFONT _HRESULT_TYPEDEF_(0x8898500DL)
#define DWRITE_E_DOWNLOADCANCELLED _HRESULT_TYPEDEF_(0x8898500EL)
#define DWRITE_E_DOWNLOADFAILED _HRESULT_TYPEDEF_(0x8898500FL)
#define DWRITE_E_TOOMANYDOWNLOADS _HRESULT_TYPEDEF_(0x88985010L)
#define _FLT_WINERROR_ 
#define FILTER_HRESULT_FROM_FLT_NTSTATUS(x) (NT_ASSERT((x & 0xfff0000) == 0x001c0000),(HRESULT) (((x) & 0x8000ffff) | (FACILITY_USERMODE_FILTER_MANAGER << 16)))
#define FACILITY_USERMODE_FILTER_MANAGER 0x1f
#define ERROR_FLT_IO_COMPLETE ((HRESULT)0x001f0001)
#define ERROR_FLT_NO_HANDLER_DEFINED ((HRESULT)0x801f0001)
#define ERROR_FLT_CONTEXT_ALREADY_DEFINED ((HRESULT)0x801f0002)
#define ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST ((HRESULT)0x801f0003)
#define ERROR_FLT_DISALLOW_FAST_IO ((HRESULT)0x801f0004)
#define ERROR_FLT_INVALID_NAME_REQUEST ((HRESULT)0x801f0005)
#define ERROR_FLT_NOT_SAFE_TO_POST_OPERATION ((HRESULT)0x801f0006)
#define ERROR_FLT_NOT_INITIALIZED ((HRESULT)0x801f0007)
#define ERROR_FLT_FILTER_NOT_READY ((HRESULT)0x801f0008)
#define ERROR_FLT_POST_OPERATION_CLEANUP ((HRESULT)0x801f0009)
#define ERROR_FLT_INTERNAL_ERROR ((HRESULT)0x801f000a)
#define ERROR_FLT_DELETING_OBJECT ((HRESULT)0x801f000b)
#define ERROR_FLT_MUST_BE_NONPAGED_POOL ((HRESULT)0x801f000c)
#define ERROR_FLT_DUPLICATE_ENTRY ((HRESULT)0x801f000d)
#define ERROR_FLT_CBDQ_DISABLED ((HRESULT)0x801f000e)
#define ERROR_FLT_DO_NOT_ATTACH ((HRESULT)0x801f000f)
#define ERROR_FLT_DO_NOT_DETACH ((HRESULT)0x801f0010)
#define ERROR_FLT_INSTANCE_ALTITUDE_COLLISION ((HRESULT)0x801f0011)
#define ERROR_FLT_INSTANCE_NAME_COLLISION ((HRESULT)0x801f0012)
#define ERROR_FLT_FILTER_NOT_FOUND ((HRESULT)0x801f0013)
#define ERROR_FLT_VOLUME_NOT_FOUND ((HRESULT)0x801f0014)
#define ERROR_FLT_INSTANCE_NOT_FOUND ((HRESULT)0x801f0015)
#define ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND ((HRESULT)0x801f0016)
#define ERROR_FLT_INVALID_CONTEXT_REGISTRATION ((HRESULT)0x801f0017)
#define ERROR_FLT_NAME_CACHE_MISS ((HRESULT)0x801f0018)
#define ERROR_FLT_NO_DEVICE_OBJECT ((HRESULT)0x801f0019)
#define ERROR_FLT_VOLUME_ALREADY_MOUNTED ((HRESULT)0x801f001a)
#define ERROR_FLT_ALREADY_ENLISTED ((HRESULT)0x801f001b)
#define ERROR_FLT_CONTEXT_ALREADY_LINKED ((HRESULT)0x801F001c)
#define ERROR_FLT_NO_WAITER_FOR_REPLY ((HRESULT)0x801f0020)
#define ERROR_FLT_REGISTRATION_BUSY ((HRESULT)0x801F0023)
#undef __IN__WINERROR_
#define _TIMEZONEAPI_H_ 
#define TIME_ZONE_ID_INVALID ((DWORD)0xffffffff)
  typedef struct _TIME_ZONE_INFORMATION {
    LONG Bias;
    WCHAR StandardName[32];
    SYSTEMTIME StandardDate;
    LONG StandardBias;
    WCHAR DaylightName[32];
    SYSTEMTIME DaylightDate;
    LONG DaylightBias;
  } TIME_ZONE_INFORMATION,*PTIME_ZONE_INFORMATION,*LPTIME_ZONE_INFORMATION;
  typedef struct _TIME_DYNAMIC_ZONE_INFORMATION {
    LONG Bias;
    WCHAR StandardName[32];
    SYSTEMTIME StandardDate;
    LONG StandardBias;
    WCHAR DaylightName[32];
    SYSTEMTIME DaylightDate;
    LONG DaylightBias;
    WCHAR TimeZoneKeyName[128];
    BOOLEAN DynamicDaylightTimeDisabled;
  } DYNAMIC_TIME_ZONE_INFORMATION,*PDYNAMIC_TIME_ZONE_INFORMATION;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SystemTimeToTzSpecificLocalTime (const TIME_ZONE_INFORMATION *lpTimeZoneInformation, const SYSTEMTIME *lpUniversalTime, LPSYSTEMTIME lpLocalTime);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TzSpecificLocalTimeToSystemTime (const TIME_ZONE_INFORMATION *lpTimeZoneInformation, const SYSTEMTIME *lpLocalTime, LPSYSTEMTIME lpUniversalTime);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FileTimeToSystemTime (const FILETIME *lpFileTime, LPSYSTEMTIME lpSystemTime);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SystemTimeToFileTime (const SYSTEMTIME *lpSystemTime, LPFILETIME lpFileTime);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetTimeZoneInformation (LPTIME_ZONE_INFORMATION lpTimeZoneInformation);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetDynamicTimeZoneInformation (PDYNAMIC_TIME_ZONE_INFORMATION pTimeZoneInformation);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetTimeZoneInformation (const TIME_ZONE_INFORMATION *lpTimeZoneInformation);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetDynamicTimeZoneInformation (const DYNAMIC_TIME_ZONE_INFORMATION *lpTimeZoneInformation);
#define TC_NORMAL 0
#define TC_HARDERR 1
#define TC_GP_TRAP 2
#define TC_SIGNAL 3
#define AC_LINE_OFFLINE 0x00
#define AC_LINE_ONLINE 0x01
#define AC_LINE_BACKUP_POWER 0x02
#define AC_LINE_UNKNOWN 0xff
#define BATTERY_FLAG_HIGH 0x01
#define BATTERY_FLAG_LOW 0x02
#define BATTERY_FLAG_CRITICAL 0x04
#define BATTERY_FLAG_CHARGING 0x08
#define BATTERY_FLAG_NO_BATTERY 0x80
#define BATTERY_FLAG_UNKNOWN 0xff
#define BATTERY_PERCENTAGE_UNKNOWN 0xff
#define SYSTEM_STATUS_FLAG_POWER_SAVING_ON 0x01
#define BATTERY_LIFE_UNKNOWN 0xffffffff
  typedef struct _SYSTEM_POWER_STATUS {
    BYTE ACLineStatus;
    BYTE BatteryFlag;
    BYTE BatteryLifePercent;
    BYTE Reserved1;
    DWORD BatteryLifeTime;
    DWORD BatteryFullLifeTime;
  } SYSTEM_POWER_STATUS,*LPSYSTEM_POWER_STATUS;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetSystemPowerStatus (LPSYSTEM_POWER_STATUS lpSystemPowerStatus);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetSystemPowerState (WINBOOL fSuspend, WINBOOL fForce);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AllocateUserPhysicalPages (HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FreeUserPhysicalPages (HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MapUserPhysicalPages (PVOID VirtualAddress, ULONG_PTR NumberOfPages, PULONG_PTR PageArray);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MapUserPhysicalPagesScatter (PVOID *VirtualAddresses, ULONG_PTR NumberOfPages, PULONG_PTR PageArray);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateJobObjectA (LPSECURITY_ATTRIBUTES lpJobAttributes, LPCSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateJobObjectW (LPSECURITY_ATTRIBUTES lpJobAttributes, LPCWSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenJobObjectA (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCSTR lpName);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenJobObjectW (DWORD dwDesiredAccess, WINBOOL bInheritHandle, LPCWSTR lpName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AssignProcessToJobObject (HANDLE hJob, HANDLE hProcess);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TerminateJobObject (HANDLE hJob, UINT uExitCode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryInformationJobObject (HANDLE hJob, JOBOBJECTINFOCLASS JobObjectInformationClass, LPVOID lpJobObjectInformation, DWORD cbJobObjectInformationLength, LPDWORD lpReturnLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetInformationJobObject (HANDLE hJob, JOBOBJECTINFOCLASS JobObjectInformationClass, LPVOID lpJobObjectInformation, DWORD cbJobObjectInformationLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateJobSet (ULONG NumJob, PJOB_SET_ARRAY UserJobSet, ULONG Flags);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstVolumeA (LPSTR lpszVolumeName, DWORD cchBufferLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindNextVolumeA (HANDLE hFindVolume, LPSTR lpszVolumeName, DWORD cchBufferLength);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstVolumeMountPointA (LPCSTR lpszRootPathName, LPSTR lpszVolumeMountPoint, DWORD cchBufferLength);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) FindFirstVolumeMountPointW (LPCWSTR lpszRootPathName, LPWSTR lpszVolumeMountPoint, DWORD cchBufferLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindNextVolumeMountPointA (HANDLE hFindVolumeMountPoint, LPSTR lpszVolumeMountPoint, DWORD cchBufferLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindNextVolumeMountPointW (HANDLE hFindVolumeMountPoint, LPWSTR lpszVolumeMountPoint, DWORD cchBufferLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindVolumeMountPointClose (HANDLE hFindVolumeMountPoint);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetVolumeMountPointA (LPCSTR lpszVolumeMountPoint, LPCSTR lpszVolumeName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetVolumeMountPointW (LPCWSTR lpszVolumeMountPoint, LPCWSTR lpszVolumeName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetVolumeNameForVolumeMountPointA (LPCSTR lpszVolumeMountPoint, LPSTR lpszVolumeName, DWORD cchBufferLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetVolumePathNameA (LPCSTR lpszFileName, LPSTR lpszVolumePathName, DWORD cchBufferLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetVolumePathNamesForVolumeNameA (LPCSTR lpszVolumeName, LPCH lpszVolumePathNames, DWORD cchBufferLength, PDWORD lpcchReturnLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AllocateUserPhysicalPagesNuma (HANDLE hProcess, PULONG_PTR NumberOfPages, PULONG_PTR PageArray, DWORD nndPreferred);
#define FindFirstVolume FindFirstVolumeA
#define FindNextVolume FindNextVolumeA
#define GetVolumeNameForVolumeMountPoint GetVolumeNameForVolumeMountPointA
#define GetVolumePathName GetVolumePathNameA
#define GetVolumePathNamesForVolumeName GetVolumePathNamesForVolumeNameA
#define CreateJobObject __MINGW_NAME_AW(CreateJobObject)
#define OpenJobObject __MINGW_NAME_AW(OpenJobObject)
#define FindFirstVolumeMountPoint __MINGW_NAME_AW(FindFirstVolumeMountPoint)
#define FindNextVolumeMountPoint __MINGW_NAME_AW(FindNextVolumeMountPoint)
#define SetVolumeMountPoint __MINGW_NAME_AW(SetVolumeMountPoint)
#define ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID (0x00000001)
#define ACTCTX_FLAG_LANGID_VALID (0x00000002)
#define ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID (0x00000004)
#define ACTCTX_FLAG_RESOURCE_NAME_VALID (0x00000008)
#define ACTCTX_FLAG_SET_PROCESS_DEFAULT (0x00000010)
#define ACTCTX_FLAG_APPLICATION_NAME_VALID (0x00000020)
#define ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF (0x00000040)
#define ACTCTX_FLAG_HMODULE_VALID (0x00000080)
  typedef struct tagACTCTXA {
    ULONG cbSize;
    DWORD dwFlags;
    LPCSTR lpSource;
    USHORT wProcessorArchitecture;
    LANGID wLangId;
    LPCSTR lpAssemblyDirectory;
    LPCSTR lpResourceName;
    LPCSTR lpApplicationName;
    HMODULE hModule;
  } ACTCTXA,*PACTCTXA;
  typedef struct tagACTCTXW {
    ULONG cbSize;
    DWORD dwFlags;
    LPCWSTR lpSource;
    USHORT wProcessorArchitecture;
    LANGID wLangId;
    LPCWSTR lpAssemblyDirectory;
    LPCWSTR lpResourceName;
    LPCWSTR lpApplicationName;
    HMODULE hModule;
  } ACTCTXW,*PACTCTXW;
  typedef ACTCTXA ACTCTX;
  typedef PACTCTXA PACTCTX;
  typedef const ACTCTXA *PCACTCTXA;
  typedef const ACTCTXW *PCACTCTXW;
  typedef PCACTCTXA PCACTCTX;
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateActCtxA (PCACTCTXA pActCtx);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateActCtxW (PCACTCTXW pActCtx);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) AddRefActCtx (HANDLE hActCtx);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) ReleaseActCtx (HANDLE hActCtx);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ZombifyActCtx (HANDLE hActCtx);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ActivateActCtx (HANDLE hActCtx, ULONG_PTR *lpCookie);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeactivateActCtx (DWORD dwFlags, ULONG_PTR ulCookie);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCurrentActCtx (HANDLE *lphActCtx);
#define CreateActCtx __MINGW_NAME_AW(CreateActCtx)
#define DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION (0x00000001)
  typedef struct tagACTCTX_SECTION_KEYED_DATA_2600 {
    ULONG cbSize;
    ULONG ulDataFormatVersion;
    PVOID lpData;
    ULONG ulLength;
    PVOID lpSectionGlobalData;
    ULONG ulSectionGlobalDataLength;
    PVOID lpSectionBase;
    ULONG ulSectionTotalLength;
    HANDLE hActCtx;
    ULONG ulAssemblyRosterIndex;
  } ACTCTX_SECTION_KEYED_DATA_2600,*PACTCTX_SECTION_KEYED_DATA_2600;
  typedef const ACTCTX_SECTION_KEYED_DATA_2600 *PCACTCTX_SECTION_KEYED_DATA_2600;
  typedef struct tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA {
    PVOID lpInformation;
    PVOID lpSectionBase;
    ULONG ulSectionLength;
    PVOID lpSectionGlobalDataBase;
    ULONG ulSectionGlobalDataLength;
  } ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA,*PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  typedef const ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA *PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  typedef struct tagACTCTX_SECTION_KEYED_DATA {
    ULONG cbSize;
    ULONG ulDataFormatVersion;
    PVOID lpData;
    ULONG ulLength;
    PVOID lpSectionGlobalData;
    ULONG ulSectionGlobalDataLength;
    PVOID lpSectionBase;
    ULONG ulSectionTotalLength;
    HANDLE hActCtx;
    ULONG ulAssemblyRosterIndex;
    ULONG ulFlags;
    ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA AssemblyMetadata;
  } ACTCTX_SECTION_KEYED_DATA,*PACTCTX_SECTION_KEYED_DATA;
  typedef const ACTCTX_SECTION_KEYED_DATA *PCACTCTX_SECTION_KEYED_DATA;
#define FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX (0x00000001)
#define FIND_ACTCTX_SECTION_KEY_RETURN_FLAGS (0x00000002)
#define FIND_ACTCTX_SECTION_KEY_RETURN_ASSEMBLY_METADATA (0x00000004)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindActCtxSectionStringA (DWORD dwFlags, const GUID *lpExtensionGuid, ULONG ulSectionId, LPCSTR lpStringToFind, PACTCTX_SECTION_KEYED_DATA ReturnedData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindActCtxSectionStringW (DWORD dwFlags, const GUID *lpExtensionGuid, ULONG ulSectionId, LPCWSTR lpStringToFind, PACTCTX_SECTION_KEYED_DATA ReturnedData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FindActCtxSectionGuid (DWORD dwFlags, const GUID *lpExtensionGuid, ULONG ulSectionId, const GUID *lpGuidToFind, PACTCTX_SECTION_KEYED_DATA ReturnedData);
#define FindActCtxSectionString __MINGW_NAME_AW(FindActCtxSectionString)
  typedef struct _ACTIVATION_CONTEXT_BASIC_INFORMATION {
    HANDLE hActCtx;
    DWORD dwFlags;
  } ACTIVATION_CONTEXT_BASIC_INFORMATION,*PACTIVATION_CONTEXT_BASIC_INFORMATION;
  typedef const struct _ACTIVATION_CONTEXT_BASIC_INFORMATION *PCACTIVATION_CONTEXT_BASIC_INFORMATION;
#define ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED 1
#define QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX (0x00000004)
#define QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE (0x00000008)
#define QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS (0x00000010)
#define QUERY_ACTCTX_FLAG_NO_ADDREF (0x80000000)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryActCtxW (DWORD dwFlags, HANDLE hActCtx, PVOID pvSubInstance, ULONG ulInfoClass, PVOID pvBuffer, SIZE_T cbBuffer, SIZE_T *pcbWrittenOrRequired);
  typedef WINBOOL (__attribute__((__stdcall__)) *PQUERYACTCTXW_FUNC) (DWORD dwFlags, HANDLE hActCtx, PVOID pvSubInstance, ULONG ulInfoClass, PVOID pvBuffer, SIZE_T cbBuffer, SIZE_T *pcbWrittenOrRequired);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) WTSGetActiveConsoleSessionId (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNumaProcessorNode (UCHAR Processor, PUCHAR NodeNumber);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNumaNodeProcessorMask (UCHAR Node, PULONGLONG ProcessorMask);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNumaAvailableMemoryNode (UCHAR Node, PULONGLONG AvailableBytes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNumaProximityNode (ULONG ProximityId, PUCHAR NodeNumber);
  typedef DWORD (__attribute__((__stdcall__)) *APPLICATION_RECOVERY_CALLBACK) (PVOID pvParameter);
#define RESTART_MAX_CMD_LINE 1024
#define RESTART_NO_CRASH 1
#define RESTART_NO_HANG 2
#define RESTART_NO_PATCH 4
#define RESTART_NO_REBOOT 8
#define RECOVERY_DEFAULT_PING_INTERVAL 5000
#define RECOVERY_MAX_PING_INTERVAL (5 *60 *1000)
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) RegisterApplicationRecoveryCallback (APPLICATION_RECOVERY_CALLBACK pRecoveyCallback, PVOID pvParameter, DWORD dwPingInterval, DWORD dwFlags);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) UnregisterApplicationRecoveryCallback (void);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) RegisterApplicationRestart (PCWSTR pwzCommandline, DWORD dwFlags);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) UnregisterApplicationRestart (void);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) GetApplicationRecoveryCallback (HANDLE hProcess, APPLICATION_RECOVERY_CALLBACK *pRecoveryCallback, PVOID *ppvParameter, PDWORD pdwPingInterval, PDWORD pdwFlags);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) GetApplicationRestartSettings (HANDLE hProcess, PWSTR pwzCommandline, PDWORD pcchSize, PDWORD pdwFlags);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) ApplicationRecoveryInProgress (PBOOL pbCancelled);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) ApplicationRecoveryFinished (WINBOOL bSuccess);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteVolumeMountPointA (LPCSTR lpszVolumeMountPoint);
#define DeleteVolumeMountPoint DeleteVolumeMountPointA
  typedef struct _FILE_BASIC_INFO {
    LARGE_INTEGER CreationTime;
    LARGE_INTEGER LastAccessTime;
    LARGE_INTEGER LastWriteTime;
    LARGE_INTEGER ChangeTime;
    DWORD FileAttributes;
  } FILE_BASIC_INFO,*PFILE_BASIC_INFO;
  typedef struct _FILE_STANDARD_INFO {
    LARGE_INTEGER AllocationSize;
    LARGE_INTEGER EndOfFile;
    DWORD NumberOfLinks;
    BOOLEAN DeletePending;
    BOOLEAN Directory;
  } FILE_STANDARD_INFO,*PFILE_STANDARD_INFO;
  typedef struct _FILE_NAME_INFO {
    DWORD FileNameLength;
    WCHAR FileName[1];
  } FILE_NAME_INFO,*PFILE_NAME_INFO;
  typedef struct _FILE_CASE_SENSITIVE_INFO {
    ULONG Flags;
  } FILE_CASE_SENSITIVE_INFO,*PFILE_CASE_SENSITIVE_INFO;
#define FILE_RENAME_FLAG_REPLACE_IF_EXISTS 0x00000001
#define FILE_RENAME_FLAG_POSIX_SEMANTICS 0x00000002
#define FILE_RENAME_FLAG_SUPPRESS_PIN_STATE_INHERITANCE 0x00000004
  typedef struct _FILE_RENAME_INFO {
    __extension__ union {
        BOOLEAN ReplaceIfExists;
        DWORD Flags;
    };
    HANDLE RootDirectory;
    DWORD FileNameLength;
    WCHAR FileName[1];
  } FILE_RENAME_INFO,*PFILE_RENAME_INFO;
  typedef struct _FILE_ALLOCATION_INFO {
    LARGE_INTEGER AllocationSize;
  } FILE_ALLOCATION_INFO,*PFILE_ALLOCATION_INFO;
  typedef struct _FILE_END_OF_FILE_INFO {
    LARGE_INTEGER EndOfFile;
  } FILE_END_OF_FILE_INFO,*PFILE_END_OF_FILE_INFO;
  typedef struct _FILE_STREAM_INFO {
    DWORD NextEntryOffset;
    DWORD StreamNameLength;
    LARGE_INTEGER StreamSize;
    LARGE_INTEGER StreamAllocationSize;
    WCHAR StreamName[1];
  } FILE_STREAM_INFO,*PFILE_STREAM_INFO;
  typedef struct _FILE_COMPRESSION_INFO {
    LARGE_INTEGER CompressedFileSize;
    WORD CompressionFormat;
    UCHAR CompressionUnitShift;
    UCHAR ChunkShift;
    UCHAR ClusterShift;
    UCHAR Reserved[3];
  } FILE_COMPRESSION_INFO,*PFILE_COMPRESSION_INFO;
  typedef struct _FILE_ATTRIBUTE_TAG_INFO {
    DWORD FileAttributes;
    DWORD ReparseTag;
  } FILE_ATTRIBUTE_TAG_INFO,*PFILE_ATTRIBUTE_TAG_INFO;
  typedef struct _FILE_DISPOSITION_INFO {
    BOOLEAN DeleteFileA;
  } FILE_DISPOSITION_INFO,*PFILE_DISPOSITION_INFO;
#define FILE_DISPOSITION_FLAG_DO_NOT_DELETE 0x00000000
#define FILE_DISPOSITION_FLAG_DELETE 0x00000001
#define FILE_DISPOSITION_FLAG_POSIX_SEMANTICS 0x00000002
#define FILE_DISPOSITION_FLAG_FORCE_IMAGE_SECTION_CHECK 0x00000004
#define FILE_DISPOSITION_FLAG_ON_CLOSE 0x00000008
#define FILE_DISPOSITION_FLAG_IGNORE_READONLY_ATTRIBUTE 0x00000010
  typedef struct _FILE_DISPOSITION_INFO_EX {
    DWORD Flags;
  } FILE_DISPOSITION_INFO_EX,*PFILE_DISPOSITION_INFO_EX;
  typedef struct _FILE_ID_BOTH_DIR_INFO {
    DWORD NextEntryOffset;
    DWORD FileIndex;
    LARGE_INTEGER CreationTime;
    LARGE_INTEGER LastAccessTime;
    LARGE_INTEGER LastWriteTime;
    LARGE_INTEGER ChangeTime;
    LARGE_INTEGER EndOfFile;
    LARGE_INTEGER AllocationSize;
    DWORD FileAttributes;
    DWORD FileNameLength;
    DWORD EaSize;
    CCHAR ShortNameLength;
    WCHAR ShortName[12];
    LARGE_INTEGER FileId;
    WCHAR FileName[1];
  } FILE_ID_BOTH_DIR_INFO,*PFILE_ID_BOTH_DIR_INFO;
  typedef struct _FILE_FULL_DIR_INFO {
    ULONG NextEntryOffset;
    ULONG FileIndex;
    LARGE_INTEGER CreationTime;
    LARGE_INTEGER LastAccessTime;
    LARGE_INTEGER LastWriteTime;
    LARGE_INTEGER ChangeTime;
    LARGE_INTEGER EndOfFile;
    LARGE_INTEGER AllocationSize;
    ULONG FileAttributes;
    ULONG FileNameLength;
    ULONG EaSize;
    WCHAR FileName[1];
  } FILE_FULL_DIR_INFO,*PFILE_FULL_DIR_INFO;
  typedef enum _PRIORITY_HINT {
    IoPriorityHintVeryLow = 0,
    IoPriorityHintLow,
    IoPriorityHintNormal,
    MaximumIoPriorityHintType
  } PRIORITY_HINT;
  typedef struct _FILE_IO_PRIORITY_HINT_INFO {
    PRIORITY_HINT PriorityHint;
  } FILE_IO_PRIORITY_HINT_INFO,*PFILE_IO_PRIORITY_HINT_INFO;
#define REMOTE_PROTOCOL_INFO_FLAG_LOOPBACK 0x00000001
#define REMOTE_PROTOCOL_INFO_FLAG_OFFLINE 0x00000002
  typedef struct _FILE_REMOTE_PROTOCOL_INFO {
    USHORT StructureVersion;
    USHORT StructureSize;
    ULONG Protocol;
    USHORT ProtocolMajorVersion;
    USHORT ProtocolMinorVersion;
    USHORT ProtocolRevision;
    USHORT Reserved;
    ULONG Flags;
    struct {
      ULONG Reserved[8];
    } GenericReserved;
    struct {
      ULONG Reserved[16];
    } ProtocolSpecificReserved;
  } FILE_REMOTE_PROTOCOL_INFO,*PFILE_REMOTE_PROTOCOL_INFO;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetFileInformationByHandleEx (HANDLE hFile, FILE_INFO_BY_HANDLE_CLASS FileInformationClass, LPVOID lpFileInformation, DWORD dwBufferSize);
  typedef enum _FILE_ID_TYPE {
    FileIdType,
    ObjectIdType,
    ExtendedFileIdType,
    MaximumFileIdType
  } FILE_ID_TYPE,*PFILE_ID_TYPE;
  typedef struct FILE_ID_DESCRIPTOR {
    DWORD dwSize;
    FILE_ID_TYPE Type;
    __extension__ union {
      LARGE_INTEGER FileId;
      GUID ObjectId;
    } ;
  } FILE_ID_DESCRIPTOR,*LPFILE_ID_DESCRIPTOR;
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OpenFileById (HANDLE hVolumeHint, LPFILE_ID_DESCRIPTOR lpFileId, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwFlagsAndAttributes);
#define SYMBOLIC_LINK_FLAG_DIRECTORY (0x1)
#define SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE (0x2)
#define VALID_SYMBOLIC_LINK_FLAGS SYMBOLIC_LINK_FLAG_DIRECTORY
  __attribute__((dllimport)) BOOLEAN __attribute__((__stdcall__)) CreateSymbolicLinkA (LPCSTR lpSymlinkFileName, LPCSTR lpTargetFileName, DWORD dwFlags);
  __attribute__((dllimport)) BOOLEAN __attribute__((__stdcall__)) CreateSymbolicLinkW (LPCWSTR lpSymlinkFileName, LPCWSTR lpTargetFileName, DWORD dwFlags);
  __attribute__((dllimport)) BOOLEAN __attribute__((__stdcall__)) CreateSymbolicLinkTransactedA (LPCSTR lpSymlinkFileName, LPCSTR lpTargetFileName, DWORD dwFlags, HANDLE hTransaction);
  __attribute__((dllimport)) BOOLEAN __attribute__((__stdcall__)) CreateSymbolicLinkTransactedW (LPCWSTR lpSymlinkFileName, LPCWSTR lpTargetFileName, DWORD dwFlags, HANDLE hTransaction);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryActCtxSettingsW (DWORD dwFlags, HANDLE hActCtx, PCWSTR settingsNameSpace, PCWSTR settingName, PWSTR pvBuffer, SIZE_T dwBuffer, SIZE_T *pdwWrittenOrRequired);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReplacePartitionUnit (PWSTR TargetPartition, PWSTR SparePartition, ULONG Flags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddSecureMemoryCacheCallback (PSECURE_MEMORY_CACHE_CALLBACK pfnCallBack);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RemoveSecureMemoryCacheCallback (PSECURE_MEMORY_CACHE_CALLBACK pfnCallBack);
#define CreateSymbolicLink __MINGW_NAME_AW(CreateSymbolicLink)
#define CreateSymbolicLinkTransacted __MINGW_NAME_AW(CreateSymbolicLinkTransacted)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CopyContext (PCONTEXT Destination, DWORD ContextFlags, PCONTEXT Source);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitializeContext (PVOID Buffer, DWORD ContextFlags, PCONTEXT *Context, PDWORD ContextLength);
  __attribute__((dllimport)) DWORD64 __attribute__((__stdcall__)) GetEnabledXStateFeatures (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetXStateFeaturesMask (PCONTEXT Context, PDWORD64 FeatureMask);
  __attribute__((dllimport)) PVOID __attribute__((__stdcall__)) LocateXStateFeature (PCONTEXT Context, DWORD FeatureId, PDWORD Length);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetXStateFeaturesMask (PCONTEXT Context, DWORD64 FeatureMask);
extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void InitializeThreadpoolEnvironment(PTP_CALLBACK_ENVIRON cbe) {
  TpInitializeCallbackEnviron(cbe);
}
extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void SetThreadpoolCallbackPool(PTP_CALLBACK_ENVIRON cbe, PTP_POOL pool) {
  TpSetCallbackThreadpool(cbe, pool);
}
extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void SetThreadpoolCallbackCleanupGroup(PTP_CALLBACK_ENVIRON cbe, PTP_CLEANUP_GROUP cleanup_group, PTP_CLEANUP_GROUP_CANCEL_CALLBACK cleanup_group_cb) {
  TpSetCallbackCleanupGroup(cbe, cleanup_group, cleanup_group_cb);
}
extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void SetThreadpoolCallbackRunsLong(PTP_CALLBACK_ENVIRON cbe) {
  TpSetCallbackLongFunction(cbe);
}
extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void SetThreadpoolCallbackLibrary(PTP_CALLBACK_ENVIRON cbe, PVOID h) {
  TpSetCallbackRaceWithDll(cbe, h);
}
extern __inline__ __attribute__((__always_inline__,__gnu_inline__)) void DestroyThreadpoolEnvironment(PTP_CALLBACK_ENVIRON cbe) {
  TpDestroyCallbackEnviron(cbe);
}
#define MICROSOFT_WINDOWS_WINBASE_INTERLOCKED_CPLUSPLUS_H_INCLUDED 
#define MICROSOFT_WINDOWS_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS 1
#undef MICROSOFT_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS
#define MICROSOFT_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS 0
#define _WINGDI_ 
#define WINGDIAPI DECLSPEC_IMPORT
#define WINSPOOLAPI DECLSPEC_IMPORT
#define R2_BLACK 1
#define R2_NOTMERGEPEN 2
#define R2_MASKNOTPEN 3
#define R2_NOTCOPYPEN 4
#define R2_MASKPENNOT 5
#define R2_NOT 6
#define R2_XORPEN 7
#define R2_NOTMASKPEN 8
#define R2_MASKPEN 9
#define R2_NOTXORPEN 10
#define R2_NOP 11
#define R2_MERGENOTPEN 12
#define R2_COPYPEN 13
#define R2_MERGEPENNOT 14
#define R2_MERGEPEN 15
#define R2_WHITE 16
#define R2_LAST 16
#define SRCCOPY (DWORD)0x00CC0020
#define SRCPAINT (DWORD)0x00EE0086
#define SRCAND (DWORD)0x008800C6
#define SRCINVERT (DWORD)0x00660046
#define SRCERASE (DWORD)0x00440328
#define NOTSRCCOPY (DWORD)0x00330008
#define NOTSRCERASE (DWORD)0x001100A6
#define MERGECOPY (DWORD)0x00C000CA
#define MERGEPAINT (DWORD)0x00BB0226
#define PATCOPY (DWORD)0x00F00021
#define PATPAINT (DWORD)0x00FB0A09
#define PATINVERT (DWORD)0x005A0049
#define DSTINVERT (DWORD)0x00550009
#define BLACKNESS (DWORD)0x00000042
#define WHITENESS (DWORD)0x00FF0062
#define NOMIRRORBITMAP (DWORD)0x80000000
#define CAPTUREBLT (DWORD)0x40000000
#define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore))
#define GDI_ERROR (__MSABI_LONG(0xFFFFFFFF))
#define HGDI_ERROR (LongToHandle(0xFFFFFFFF))
#define ERROR 0
#define NULLREGION 1
#define SIMPLEREGION 2
#define COMPLEXREGION 3
#define RGN_ERROR ERROR
#define RGN_AND 1
#define RGN_OR 2
#define RGN_XOR 3
#define RGN_DIFF 4
#define RGN_COPY 5
#define RGN_MIN RGN_AND
#define RGN_MAX RGN_COPY
#define BLACKONWHITE 1
#define WHITEONBLACK 2
#define COLORONCOLOR 3
#define HALFTONE 4
#define MAXSTRETCHBLTMODE 4
#define STRETCH_ANDSCANS BLACKONWHITE
#define STRETCH_ORSCANS WHITEONBLACK
#define STRETCH_DELETESCANS COLORONCOLOR
#define STRETCH_HALFTONE HALFTONE
#define ALTERNATE 1
#define WINDING 2
#define POLYFILL_LAST 2
#define LAYOUT_RTL 0x00000001
#define LAYOUT_BTT 0x00000002
#define LAYOUT_VBH 0x00000004
#define LAYOUT_ORIENTATIONMASK (LAYOUT_RTL | LAYOUT_BTT | LAYOUT_VBH)
#define LAYOUT_BITMAPORIENTATIONPRESERVED 0x00000008
#define TA_NOUPDATECP 0
#define TA_UPDATECP 1
#define TA_LEFT 0
#define TA_RIGHT 2
#define TA_CENTER 6
#define TA_TOP 0
#define TA_BOTTOM 8
#define TA_BASELINE 24
#define TA_RTLREADING 256
#define TA_MASK (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING)
#define VTA_BASELINE TA_BASELINE
#define VTA_LEFT TA_BOTTOM
#define VTA_RIGHT TA_TOP
#define VTA_CENTER TA_CENTER
#define VTA_BOTTOM TA_RIGHT
#define VTA_TOP TA_LEFT
#define ETO_OPAQUE 0x0002
#define ETO_CLIPPED 0x0004
#define ETO_GLYPH_INDEX 0x0010
#define ETO_RTLREADING 0x0080
#define ETO_NUMERICSLOCAL 0x0400
#define ETO_NUMERICSLATIN 0x0800
#define ETO_IGNORELANGUAGE 0x1000
#define ETO_PDY 0x2000
#define ETO_REVERSE_INDEX_MAP 0x10000
#define ASPECT_FILTERING 0x0001
#define DCB_RESET 0x0001
#define DCB_ACCUMULATE 0x0002
#define DCB_DIRTY DCB_ACCUMULATE
#define DCB_SET (DCB_RESET | DCB_ACCUMULATE)
#define DCB_ENABLE 0x0004
#define DCB_DISABLE 0x0008
#define META_SETBKCOLOR 0x0201
#define META_SETBKMODE 0x0102
#define META_SETMAPMODE 0x0103
#define META_SETROP2 0x0104
#define META_SETRELABS 0x0105
#define META_SETPOLYFILLMODE 0x0106
#define META_SETSTRETCHBLTMODE 0x0107
#define META_SETTEXTCHAREXTRA 0x0108
#define META_SETTEXTCOLOR 0x0209
#define META_SETTEXTJUSTIFICATION 0x020A
#define META_SETWINDOWORG 0x020B
#define META_SETWINDOWEXT 0x020C
#define META_SETVIEWPORTORG 0x020D
#define META_SETVIEWPORTEXT 0x020E
#define META_OFFSETWINDOWORG 0x020F
#define META_SCALEWINDOWEXT 0x0410
#define META_OFFSETVIEWPORTORG 0x0211
#define META_SCALEVIEWPORTEXT 0x0412
#define META_LINETO 0x0213
#define META_MOVETO 0x0214
#define META_EXCLUDECLIPRECT 0x0415
#define META_INTERSECTCLIPRECT 0x0416
#define META_ARC 0x0817
#define META_ELLIPSE 0x0418
#define META_FLOODFILL 0x0419
#define META_PIE 0x081A
#define META_RECTANGLE 0x041B
#define META_ROUNDRECT 0x061C
#define META_PATBLT 0x061D
#define META_SAVEDC 0x001E
#define META_SETPIXEL 0x041F
#define META_OFFSETCLIPRGN 0x0220
#define META_TEXTOUT 0x0521
#define META_BITBLT 0x0922
#define META_STRETCHBLT 0x0B23
#define META_POLYGON 0x0324
#define META_POLYLINE 0x0325
#define META_ESCAPE 0x0626
#define META_RESTOREDC 0x0127
#define META_FILLREGION 0x0228
#define META_FRAMEREGION 0x0429
#define META_INVERTREGION 0x012A
#define META_PAINTREGION 0x012B
#define META_SELECTCLIPREGION 0x012C
#define META_SELECTOBJECT 0x012D
#define META_SETTEXTALIGN 0x012E
#define META_CHORD 0x0830
#define META_SETMAPPERFLAGS 0x0231
#define META_EXTTEXTOUT 0x0a32
#define META_SETDIBTODEV 0x0d33
#define META_SELECTPALETTE 0x0234
#define META_REALIZEPALETTE 0x0035
#define META_ANIMATEPALETTE 0x0436
#define META_SETPALENTRIES 0x0037
#define META_POLYPOLYGON 0x0538
#define META_RESIZEPALETTE 0x0139
#define META_DIBBITBLT 0x0940
#define META_DIBSTRETCHBLT 0x0b41
#define META_DIBCREATEPATTERNBRUSH 0x0142
#define META_STRETCHDIB 0x0f43
#define META_EXTFLOODFILL 0x0548
#define META_SETLAYOUT 0x0149
#define META_DELETEOBJECT 0x01f0
#define META_CREATEPALETTE 0x00f7
#define META_CREATEPATTERNBRUSH 0x01F9
#define META_CREATEPENINDIRECT 0x02FA
#define META_CREATEFONTINDIRECT 0x02FB
#define META_CREATEBRUSHINDIRECT 0x02FC
#define META_CREATEREGION 0x06FF
  typedef struct _DRAWPATRECT {
    POINT ptPosition;
    POINT ptSize;
    WORD wStyle;
    WORD wPattern;
  } DRAWPATRECT,*PDRAWPATRECT;
#define NEWFRAME 1
#define ABORTDOC 2
#define NEXTBAND 3
#define SETCOLORTABLE 4
#define GETCOLORTABLE 5
#define FLUSHOUTPUT 6
#define DRAFTMODE 7
#define QUERYESCSUPPORT 8
#define SETABORTPROC 9
#define STARTDOC 10
#define ENDDOC 11
#define GETPHYSPAGESIZE 12
#define GETPRINTINGOFFSET 13
#define GETSCALINGFACTOR 14
#define MFCOMMENT 15
#define GETPENWIDTH 16
#define SETCOPYCOUNT 17
#define SELECTPAPERSOURCE 18
#define DEVICEDATA 19
#define PASSTHROUGH 19
#define GETTECHNOLGY 20
#define GETTECHNOLOGY 20
#define SETLINECAP 21
#define SETLINEJOIN 22
#define SETMITERLIMIT 23
#define BANDINFO 24
#define DRAWPATTERNRECT 25
#define GETVECTORPENSIZE 26
#define GETVECTORBRUSHSIZE 27
#define ENABLEDUPLEX 28
#define GETSETPAPERBINS 29
#define GETSETPRINTORIENT 30
#define ENUMPAPERBINS 31
#define SETDIBSCALING 32
#define EPSPRINTING 33
#define ENUMPAPERMETRICS 34
#define GETSETPAPERMETRICS 35
#define POSTSCRIPT_DATA 37
#define POSTSCRIPT_IGNORE 38
#define MOUSETRAILS 39
#define GETDEVICEUNITS 42
#define GETEXTENDEDTEXTMETRICS 256
#define GETEXTENTTABLE 257
#define GETPAIRKERNTABLE 258
#define GETTRACKKERNTABLE 259
#define EXTTEXTOUT 512
#define GETFACENAME 513
#define DOWNLOADFACE 514
#define ENABLERELATIVEWIDTHS 768
#define ENABLEPAIRKERNING 769
#define SETKERNTRACK 770
#define SETALLJUSTVALUES 771
#define SETCHARSET 772
#define STRETCHBLT 2048
#define METAFILE_DRIVER 2049
#define GETSETSCREENPARAMS 3072
#define QUERYDIBSUPPORT 3073
#define BEGIN_PATH 4096
#define CLIP_TO_PATH 4097
#define END_PATH 4098
#define EXT_DEVICE_CAPS 4099
#define RESTORE_CTM 4100
#define SAVE_CTM 4101
#define SET_ARC_DIRECTION 4102
#define SET_BACKGROUND_COLOR 4103
#define SET_POLY_MODE 4104
#define SET_SCREEN_ANGLE 4105
#define SET_SPREAD 4106
#define TRANSFORM_CTM 4107
#define SET_CLIP_BOX 4108
#define SET_BOUNDS 4109
#define SET_MIRROR_MODE 4110
#define OPENCHANNEL 4110
#define DOWNLOADHEADER 4111
#define CLOSECHANNEL 4112
#define POSTSCRIPT_PASSTHROUGH 4115
#define ENCAPSULATED_POSTSCRIPT 4116
#define POSTSCRIPT_IDENTIFY 4117
#define POSTSCRIPT_INJECTION 4118
#define CHECKJPEGFORMAT 4119
#define CHECKPNGFORMAT 4120
#define GET_PS_FEATURESETTING 4121
#define GDIPLUS_TS_QUERYVER 4122
#define GDIPLUS_TS_RECORD 4123
#define MILCORE_TS_QUERYVER_RESULT_FALSE 0x0
#define MILCORE_TS_QUERYVER_RESULT_TRUE 0x7FFFFFFF
#define SPCLPASSTHROUGH2 4568
#define PSIDENT_GDICENTRIC 0
#define PSIDENT_PSCENTRIC 1
  typedef struct _PSINJECTDATA {
    DWORD DataBytes;
    WORD InjectionPoint;
    WORD PageNumber;
  } PSINJECTDATA,*PPSINJECTDATA;
#define PSINJECT_BEGINSTREAM 1
#define PSINJECT_PSADOBE 2
#define PSINJECT_PAGESATEND 3
#define PSINJECT_PAGES 4
#define PSINJECT_DOCNEEDEDRES 5
#define PSINJECT_DOCSUPPLIEDRES 6
#define PSINJECT_PAGEORDER 7
#define PSINJECT_ORIENTATION 8
#define PSINJECT_BOUNDINGBOX 9
#define PSINJECT_DOCUMENTPROCESSCOLORS 10
#define PSINJECT_COMMENTS 11
#define PSINJECT_BEGINDEFAULTS 12
#define PSINJECT_ENDDEFAULTS 13
#define PSINJECT_BEGINPROLOG 14
#define PSINJECT_ENDPROLOG 15
#define PSINJECT_BEGINSETUP 16
#define PSINJECT_ENDSETUP 17
#define PSINJECT_TRAILER 18
#define PSINJECT_EOF 19
#define PSINJECT_ENDSTREAM 20
#define PSINJECT_DOCUMENTPROCESSCOLORSATEND 21
#define PSINJECT_PAGENUMBER 100
#define PSINJECT_BEGINPAGESETUP 101
#define PSINJECT_ENDPAGESETUP 102
#define PSINJECT_PAGETRAILER 103
#define PSINJECT_PLATECOLOR 104
#define PSINJECT_SHOWPAGE 105
#define PSINJECT_PAGEBBOX 106
#define PSINJECT_ENDPAGECOMMENTS 107
#define PSINJECT_VMSAVE 200
#define PSINJECT_VMRESTORE 201
#define PSINJECT_DLFONT 0xdddddddd
#define FEATURESETTING_NUP 0
#define FEATURESETTING_OUTPUT 1
#define FEATURESETTING_PSLEVEL 2
#define FEATURESETTING_CUSTPAPER 3
#define FEATURESETTING_MIRROR 4
#define FEATURESETTING_NEGATIVE 5
#define FEATURESETTING_PROTOCOL 6
#define FEATURESETTING_PRIVATE_BEGIN 0x1000
#define FEATURESETTING_PRIVATE_END 0x1FFF
  typedef struct _PSFEATURE_OUTPUT {
    WINBOOL bPageIndependent;
    WINBOOL bSetPageDevice;
  } PSFEATURE_OUTPUT,*PPSFEATURE_OUTPUT;
  typedef struct _PSFEATURE_CUSTPAPER {
    LONG lOrientation;
    LONG lWidth;
    LONG lHeight;
    LONG lWidthOffset;
    LONG lHeightOffset;
  } PSFEATURE_CUSTPAPER,*PPSFEATURE_CUSTPAPER;
#define PSPROTOCOL_ASCII 0
#define PSPROTOCOL_BCP 1
#define PSPROTOCOL_TBCP 2
#define PSPROTOCOL_BINARY 3
#define QDI_SETDIBITS 1
#define QDI_GETDIBITS 2
#define QDI_DIBTOSCREEN 4
#define QDI_STRETCHDIB 8
#define SP_NOTREPORTED 0x4000
#define SP_ERROR (-1)
#define SP_APPABORT (-2)
#define SP_USERABORT (-3)
#define SP_OUTOFDISK (-4)
#define SP_OUTOFMEMORY (-5)
#define PR_JOBSTATUS 0x0000
#define OBJ_PEN 1
#define OBJ_BRUSH 2
#define OBJ_DC 3
#define OBJ_METADC 4
#define OBJ_PAL 5
#define OBJ_FONT 6
#define OBJ_BITMAP 7
#define OBJ_REGION 8
#define OBJ_METAFILE 9
#define OBJ_MEMDC 10
#define OBJ_EXTPEN 11
#define OBJ_ENHMETADC 12
#define OBJ_ENHMETAFILE 13
#define OBJ_COLORSPACE 14
#define GDI_OBJ_LAST OBJ_COLORSPACE
#define MWT_IDENTITY 1
#define MWT_LEFTMULTIPLY 2
#define MWT_RIGHTMULTIPLY 3
#define MWT_MIN MWT_IDENTITY
#define MWT_MAX MWT_RIGHTMULTIPLY
#define _XFORM_ 
  typedef struct tagXFORM {
    FLOAT eM11;
    FLOAT eM12;
    FLOAT eM21;
    FLOAT eM22;
    FLOAT eDx;
    FLOAT eDy;
  } XFORM,*PXFORM,*LPXFORM;
  typedef struct tagBITMAP {
    LONG bmType;
    LONG bmWidth;
    LONG bmHeight;
    LONG bmWidthBytes;
    WORD bmPlanes;
    WORD bmBitsPixel;
    LPVOID bmBits;
  } BITMAP,*PBITMAP,*NPBITMAP,*LPBITMAP;
#pragma pack(push,1)
  typedef struct tagRGBTRIPLE {
    BYTE rgbtBlue;
    BYTE rgbtGreen;
    BYTE rgbtRed;
  } RGBTRIPLE,*PRGBTRIPLE,*NPRGBTRIPLE,*LPRGBTRIPLE;
#pragma pack(pop)
  typedef struct tagRGBQUAD {
    BYTE rgbBlue;
    BYTE rgbGreen;
    BYTE rgbRed;
    BYTE rgbReserved;
  } RGBQUAD;
  typedef RGBQUAD *LPRGBQUAD;
#define CS_ENABLE __MSABI_LONG(0x00000001)
#define CS_DISABLE __MSABI_LONG(0x00000002)
#define CS_DELETE_TRANSFORM __MSABI_LONG(0x00000003)
#define LCS_SIGNATURE 'PSOC'
#define LCS_sRGB 'sRGB'
#define LCS_WINDOWS_COLOR_SPACE 'Win '
  typedef LONG LCSCSTYPE;
#define LCS_CALIBRATED_RGB __MSABI_LONG(0x00000000)
  typedef LONG LCSGAMUTMATCH;
#define LCS_GM_BUSINESS __MSABI_LONG(0x00000001)
#define LCS_GM_GRAPHICS __MSABI_LONG(0x00000002)
#define LCS_GM_IMAGES __MSABI_LONG(0x00000004)
#define LCS_GM_ABS_COLORIMETRIC __MSABI_LONG(0x00000008)
#define CM_OUT_OF_GAMUT 255
#define CM_IN_GAMUT 0
#define ICM_ADDPROFILE 1
#define ICM_DELETEPROFILE 2
#define ICM_QUERYPROFILE 3
#define ICM_SETDEFAULTPROFILE 4
#define ICM_REGISTERICMATCHER 5
#define ICM_UNREGISTERICMATCHER 6
#define ICM_QUERYMATCH 7
#define GetKValue(cmyk) ((BYTE)(cmyk))
#define GetYValue(cmyk) ((BYTE)((cmyk)>> 8))
#define GetMValue(cmyk) ((BYTE)((cmyk)>>16))
#define GetCValue(cmyk) ((BYTE)((cmyk)>>24))
#define CMYK(c,m,y,k) ((COLORREF)((((BYTE)(k)|((WORD)((BYTE)(y))<<8))|(((DWORD)(BYTE)(m))<<16))|(((DWORD)(BYTE)(c))<<24)))
  typedef long FXPT16DOT16,*LPFXPT16DOT16;
  typedef long FXPT2DOT30,*LPFXPT2DOT30;
  typedef struct tagCIEXYZ {
    FXPT2DOT30 ciexyzX;
    FXPT2DOT30 ciexyzY;
    FXPT2DOT30 ciexyzZ;
  } CIEXYZ;
  typedef CIEXYZ *LPCIEXYZ;
  typedef struct tagICEXYZTRIPLE {
    CIEXYZ ciexyzRed;
    CIEXYZ ciexyzGreen;
    CIEXYZ ciexyzBlue;
  } CIEXYZTRIPLE;
  typedef CIEXYZTRIPLE *LPCIEXYZTRIPLE;
  typedef struct tagLOGCOLORSPACEA {
    DWORD lcsSignature;
    DWORD lcsVersion;
    DWORD lcsSize;
    LCSCSTYPE lcsCSType;
    LCSGAMUTMATCH lcsIntent;
    CIEXYZTRIPLE lcsEndpoints;
    DWORD lcsGammaRed;
    DWORD lcsGammaGreen;
    DWORD lcsGammaBlue;
    CHAR lcsFilename[260];
  } LOGCOLORSPACEA,*LPLOGCOLORSPACEA;
  typedef struct tagLOGCOLORSPACEW {
    DWORD lcsSignature;
    DWORD lcsVersion;
    DWORD lcsSize;
    LCSCSTYPE lcsCSType;
    LCSGAMUTMATCH lcsIntent;
    CIEXYZTRIPLE lcsEndpoints;
    DWORD lcsGammaRed;
    DWORD lcsGammaGreen;
    DWORD lcsGammaBlue;
    WCHAR lcsFilename[260];
  } LOGCOLORSPACEW,*LPLOGCOLORSPACEW;
  typedef LOGCOLORSPACEA LOGCOLORSPACE;
  typedef LPLOGCOLORSPACEA LPLOGCOLORSPACE;
  typedef struct tagBITMAPCOREHEADER {
    DWORD bcSize;
    WORD bcWidth;
    WORD bcHeight;
    WORD bcPlanes;
    WORD bcBitCount;
  } BITMAPCOREHEADER,*LPBITMAPCOREHEADER,*PBITMAPCOREHEADER;
  typedef struct tagBITMAPINFOHEADER {
    DWORD biSize;
    LONG biWidth;
    LONG biHeight;
    WORD biPlanes;
    WORD biBitCount;
    DWORD biCompression;
    DWORD biSizeImage;
    LONG biXPelsPerMeter;
    LONG biYPelsPerMeter;
    DWORD biClrUsed;
    DWORD biClrImportant;
  } BITMAPINFOHEADER,*LPBITMAPINFOHEADER,*PBITMAPINFOHEADER;
  typedef struct {
    DWORD bV4Size;
    LONG bV4Width;
    LONG bV4Height;
    WORD bV4Planes;
    WORD bV4BitCount;
    DWORD bV4V4Compression;
    DWORD bV4SizeImage;
    LONG bV4XPelsPerMeter;
    LONG bV4YPelsPerMeter;
    DWORD bV4ClrUsed;
    DWORD bV4ClrImportant;
    DWORD bV4RedMask;
    DWORD bV4GreenMask;
    DWORD bV4BlueMask;
    DWORD bV4AlphaMask;
    DWORD bV4CSType;
    CIEXYZTRIPLE bV4Endpoints;
    DWORD bV4GammaRed;
    DWORD bV4GammaGreen;
    DWORD bV4GammaBlue;
  } BITMAPV4HEADER,*LPBITMAPV4HEADER,*PBITMAPV4HEADER;
  typedef struct {
    DWORD bV5Size;
    LONG bV5Width;
    LONG bV5Height;
    WORD bV5Planes;
    WORD bV5BitCount;
    DWORD bV5Compression;
    DWORD bV5SizeImage;
    LONG bV5XPelsPerMeter;
    LONG bV5YPelsPerMeter;
    DWORD bV5ClrUsed;
    DWORD bV5ClrImportant;
    DWORD bV5RedMask;
    DWORD bV5GreenMask;
    DWORD bV5BlueMask;
    DWORD bV5AlphaMask;
    DWORD bV5CSType;
    CIEXYZTRIPLE bV5Endpoints;
    DWORD bV5GammaRed;
    DWORD bV5GammaGreen;
    DWORD bV5GammaBlue;
    DWORD bV5Intent;
    DWORD bV5ProfileData;
    DWORD bV5ProfileSize;
    DWORD bV5Reserved;
  } BITMAPV5HEADER,*LPBITMAPV5HEADER,*PBITMAPV5HEADER;
#define PROFILE_LINKED 'LINK'
#define PROFILE_EMBEDDED 'MBED'
#define BI_RGB __MSABI_LONG(0)
#define BI_RLE8 __MSABI_LONG(1)
#define BI_RLE4 __MSABI_LONG(2)
#define BI_BITFIELDS __MSABI_LONG(3)
#define BI_JPEG __MSABI_LONG(4)
#define BI_PNG __MSABI_LONG(5)
  typedef struct tagBITMAPINFO {
    BITMAPINFOHEADER bmiHeader;
    RGBQUAD bmiColors[1];
  } BITMAPINFO,*LPBITMAPINFO,*PBITMAPINFO;
  typedef struct tagBITMAPCOREINFO {
    BITMAPCOREHEADER bmciHeader;
    RGBTRIPLE bmciColors[1];
  } BITMAPCOREINFO,*LPBITMAPCOREINFO,*PBITMAPCOREINFO;
#pragma pack(push,2)
  typedef struct tagBITMAPFILEHEADER {
    WORD bfType;
    DWORD bfSize;
    WORD bfReserved1;
    WORD bfReserved2;
    DWORD bfOffBits;
  } BITMAPFILEHEADER,*LPBITMAPFILEHEADER,*PBITMAPFILEHEADER;
#pragma pack(pop)
#define MAKEPOINTS(l) (*((POINTS *)&(l)))
  typedef struct tagFONTSIGNATURE {
    DWORD fsUsb[4];
    DWORD fsCsb[2];
  } FONTSIGNATURE,*PFONTSIGNATURE,*LPFONTSIGNATURE;
  typedef struct tagCHARSETINFO {
    UINT ciCharset;
    UINT ciACP;
    FONTSIGNATURE fs;
  } CHARSETINFO,*PCHARSETINFO,*NPCHARSETINFO,*LPCHARSETINFO;
#define TCI_SRCCHARSET 1
#define TCI_SRCCODEPAGE 2
#define TCI_SRCFONTSIG 3
#define TCI_SRCLOCALE 0x1000
  typedef struct tagLOCALESIGNATURE {
    DWORD lsUsb[4];
    DWORD lsCsbDefault[2];
    DWORD lsCsbSupported[2];
  } LOCALESIGNATURE,*PLOCALESIGNATURE,*LPLOCALESIGNATURE;
  typedef struct tagHANDLETABLE {
    HGDIOBJ objectHandle[1];
  } HANDLETABLE,*PHANDLETABLE,*LPHANDLETABLE;
  typedef struct tagMETARECORD {
    DWORD rdSize;
    WORD rdFunction;
    WORD rdParm[1];
  } METARECORD;
  typedef struct tagMETARECORD *PMETARECORD;
  typedef struct tagMETARECORD *LPMETARECORD;
  typedef struct tagMETAFILEPICT {
    LONG mm;
    LONG xExt;
    LONG yExt;
    HMETAFILE hMF;
  } METAFILEPICT,*LPMETAFILEPICT;
#pragma pack(push,2)
  typedef struct tagMETAHEADER {
    WORD mtType;
    WORD mtHeaderSize;
    WORD mtVersion;
    DWORD mtSize;
    WORD mtNoObjects;
    DWORD mtMaxRecord;
    WORD mtNoParameters;
  } METAHEADER;
  typedef struct tagMETAHEADER *PMETAHEADER;
  typedef struct tagMETAHEADER *LPMETAHEADER;
#pragma pack(pop)
  typedef struct tagENHMETARECORD {
    DWORD iType;
    DWORD nSize;
    DWORD dParm[1];
  } ENHMETARECORD,*PENHMETARECORD,*LPENHMETARECORD;
  typedef struct tagENHMETAHEADER {
    DWORD iType;
    DWORD nSize;
    RECTL rclBounds;
    RECTL rclFrame;
    DWORD dSignature;
    DWORD nVersion;
    DWORD nBytes;
    DWORD nRecords;
    WORD nHandles;
    WORD sReserved;
    DWORD nDescription;
    DWORD offDescription;
    DWORD nPalEntries;
    SIZEL szlDevice;
    SIZEL szlMillimeters;
    DWORD cbPixelFormat;
    DWORD offPixelFormat;
    DWORD bOpenGL;
    SIZEL szlMicrometers;
  } ENHMETAHEADER,*PENHMETAHEADER,*LPENHMETAHEADER;
#define TMPF_FIXED_PITCH 0x01
#define TMPF_VECTOR 0x02
#define TMPF_DEVICE 0x08
#define TMPF_TRUETYPE 0x04
  typedef BYTE BCHAR;
#define _TEXTMETRIC_DEFINED 
#pragma pack(push,4)
  typedef struct tagTEXTMETRICA {
    LONG tmHeight;
    LONG tmAscent;
    LONG tmDescent;
    LONG tmInternalLeading;
    LONG tmExternalLeading;
    LONG tmAveCharWidth;
    LONG tmMaxCharWidth;
    LONG tmWeight;
    LONG tmOverhang;
    LONG tmDigitizedAspectX;
    LONG tmDigitizedAspectY;
    BYTE tmFirstChar;
    BYTE tmLastChar;
    BYTE tmDefaultChar;
    BYTE tmBreakChar;
    BYTE tmItalic;
    BYTE tmUnderlined;
    BYTE tmStruckOut;
    BYTE tmPitchAndFamily;
    BYTE tmCharSet;
  } TEXTMETRICA,*PTEXTMETRICA,*NPTEXTMETRICA,*LPTEXTMETRICA;
  typedef struct tagTEXTMETRICW {
    LONG tmHeight;
    LONG tmAscent;
    LONG tmDescent;
    LONG tmInternalLeading;
    LONG tmExternalLeading;
    LONG tmAveCharWidth;
    LONG tmMaxCharWidth;
    LONG tmWeight;
    LONG tmOverhang;
    LONG tmDigitizedAspectX;
    LONG tmDigitizedAspectY;
    WCHAR tmFirstChar;
    WCHAR tmLastChar;
    WCHAR tmDefaultChar;
    WCHAR tmBreakChar;
    BYTE tmItalic;
    BYTE tmUnderlined;
    BYTE tmStruckOut;
    BYTE tmPitchAndFamily;
    BYTE tmCharSet;
  } TEXTMETRICW,*PTEXTMETRICW,*NPTEXTMETRICW,*LPTEXTMETRICW;
  typedef TEXTMETRICA TEXTMETRIC;
  typedef PTEXTMETRICA PTEXTMETRIC;
  typedef NPTEXTMETRICA NPTEXTMETRIC;
  typedef LPTEXTMETRICA LPTEXTMETRIC;
#pragma pack(pop)
#define NTM_REGULAR __MSABI_LONG(0x00000040)
#define NTM_BOLD __MSABI_LONG(0x00000020)
#define NTM_ITALIC __MSABI_LONG(0x00000001)
#define NTM_NONNEGATIVE_AC 0x00010000
#define NTM_PS_OPENTYPE 0x00020000
#define NTM_TT_OPENTYPE 0x00040000
#define NTM_MULTIPLEMASTER 0x00080000
#define NTM_TYPE1 0x00100000
#define NTM_DSIG 0x00200000
#pragma pack(push,4)
  typedef struct tagNEWTEXTMETRICA {
    LONG tmHeight;
    LONG tmAscent;
    LONG tmDescent;
    LONG tmInternalLeading;
    LONG tmExternalLeading;
    LONG tmAveCharWidth;
    LONG tmMaxCharWidth;
    LONG tmWeight;
    LONG tmOverhang;
    LONG tmDigitizedAspectX;
    LONG tmDigitizedAspectY;
    BYTE tmFirstChar;
    BYTE tmLastChar;
    BYTE tmDefaultChar;
    BYTE tmBreakChar;
    BYTE tmItalic;
    BYTE tmUnderlined;
    BYTE tmStruckOut;
    BYTE tmPitchAndFamily;
    BYTE tmCharSet;
    DWORD ntmFlags;
    UINT ntmSizeEM;
    UINT ntmCellHeight;
    UINT ntmAvgWidth;
  } NEWTEXTMETRICA,*PNEWTEXTMETRICA,*NPNEWTEXTMETRICA,*LPNEWTEXTMETRICA;
  typedef struct tagNEWTEXTMETRICW {
    LONG tmHeight;
    LONG tmAscent;
    LONG tmDescent;
    LONG tmInternalLeading;
    LONG tmExternalLeading;
    LONG tmAveCharWidth;
    LONG tmMaxCharWidth;
    LONG tmWeight;
    LONG tmOverhang;
    LONG tmDigitizedAspectX;
    LONG tmDigitizedAspectY;
    WCHAR tmFirstChar;
    WCHAR tmLastChar;
    WCHAR tmDefaultChar;
    WCHAR tmBreakChar;
    BYTE tmItalic;
    BYTE tmUnderlined;
    BYTE tmStruckOut;
    BYTE tmPitchAndFamily;
    BYTE tmCharSet;
    DWORD ntmFlags;
    UINT ntmSizeEM;
    UINT ntmCellHeight;
    UINT ntmAvgWidth;
  } NEWTEXTMETRICW,*PNEWTEXTMETRICW,*NPNEWTEXTMETRICW,*LPNEWTEXTMETRICW;
  typedef NEWTEXTMETRICA NEWTEXTMETRIC;
  typedef PNEWTEXTMETRICA PNEWTEXTMETRIC;
  typedef NPNEWTEXTMETRICA NPNEWTEXTMETRIC;
  typedef LPNEWTEXTMETRICA LPNEWTEXTMETRIC;
#pragma pack(pop)
  typedef struct tagNEWTEXTMETRICEXA {
    NEWTEXTMETRICA ntmTm;
    FONTSIGNATURE ntmFontSig;
  } NEWTEXTMETRICEXA;
  typedef struct tagNEWTEXTMETRICEXW {
    NEWTEXTMETRICW ntmTm;
    FONTSIGNATURE ntmFontSig;
  } NEWTEXTMETRICEXW;
  typedef NEWTEXTMETRICEXA NEWTEXTMETRICEX;
  typedef struct tagPELARRAY {
    LONG paXCount;
    LONG paYCount;
    LONG paXExt;
    LONG paYExt;
    BYTE paRGBs;
  } PELARRAY,*PPELARRAY,*NPPELARRAY,*LPPELARRAY;
  typedef struct tagLOGBRUSH {
    UINT lbStyle;
    COLORREF lbColor;
    ULONG_PTR lbHatch;
  } LOGBRUSH,*PLOGBRUSH,*NPLOGBRUSH,*LPLOGBRUSH;
  typedef struct tagLOGBRUSH32 {
    UINT lbStyle;
    COLORREF lbColor;
    ULONG lbHatch;
  } LOGBRUSH32,*PLOGBRUSH32,*NPLOGBRUSH32,*LPLOGBRUSH32;
  typedef LOGBRUSH PATTERN;
  typedef PATTERN *PPATTERN;
  typedef PATTERN *NPPATTERN;
  typedef PATTERN *LPPATTERN;
  typedef struct tagLOGPEN {
    UINT lopnStyle;
    POINT lopnWidth;
    COLORREF lopnColor;
  } LOGPEN,*PLOGPEN,*NPLOGPEN,*LPLOGPEN;
  typedef struct tagEXTLOGPEN {
    DWORD elpPenStyle;
    DWORD elpWidth;
    UINT elpBrushStyle;
    COLORREF elpColor;
    ULONG_PTR elpHatch;
    DWORD elpNumEntries;
    DWORD elpStyleEntry[1];
  } EXTLOGPEN,*PEXTLOGPEN,*NPEXTLOGPEN,*LPEXTLOGPEN;
  typedef struct tagEXTLOGPEN32 {
    DWORD elpPenStyle;
    DWORD elpWidth;
    UINT elpBrushStyle;
    COLORREF elpColor;
    ULONG elpHatch;
    DWORD elpNumEntries;
    DWORD elpStyleEntry[1];
  } EXTLOGPEN32, *PEXTLOGPEN32, *NPEXTLOGPEN32, *LPEXTLOGPEN32;
#define _PALETTEENTRY_DEFINED 
  typedef struct tagPALETTEENTRY {
    BYTE peRed;
    BYTE peGreen;
    BYTE peBlue;
    BYTE peFlags;
  } PALETTEENTRY,*PPALETTEENTRY,*LPPALETTEENTRY;
#define _LOGPALETTE_DEFINED 
  typedef struct tagLOGPALETTE {
    WORD palVersion;
    WORD palNumEntries;
    PALETTEENTRY palPalEntry[1];
  } LOGPALETTE,*PLOGPALETTE,*NPLOGPALETTE,*LPLOGPALETTE;
#define LF_FACESIZE 32
  typedef struct tagLOGFONTA {
    LONG lfHeight;
    LONG lfWidth;
    LONG lfEscapement;
    LONG lfOrientation;
    LONG lfWeight;
    BYTE lfItalic;
    BYTE lfUnderline;
    BYTE lfStrikeOut;
    BYTE lfCharSet;
    BYTE lfOutPrecision;
    BYTE lfClipPrecision;
    BYTE lfQuality;
    BYTE lfPitchAndFamily;
    CHAR lfFaceName[32];
  } LOGFONTA,*PLOGFONTA,*NPLOGFONTA,*LPLOGFONTA;
  typedef struct tagLOGFONTW {
    LONG lfHeight;
    LONG lfWidth;
    LONG lfEscapement;
    LONG lfOrientation;
    LONG lfWeight;
    BYTE lfItalic;
    BYTE lfUnderline;
    BYTE lfStrikeOut;
    BYTE lfCharSet;
    BYTE lfOutPrecision;
    BYTE lfClipPrecision;
    BYTE lfQuality;
    BYTE lfPitchAndFamily;
    WCHAR lfFaceName[32];
  } LOGFONTW,*PLOGFONTW,*NPLOGFONTW,*LPLOGFONTW;
  typedef LOGFONTA LOGFONT;
  typedef PLOGFONTA PLOGFONT;
  typedef NPLOGFONTA NPLOGFONT;
  typedef LPLOGFONTA LPLOGFONT;
#define LF_FULLFACESIZE 64
  typedef struct tagENUMLOGFONTA {
    LOGFONTA elfLogFont;
    BYTE elfFullName[64];
    BYTE elfStyle[32];
  } ENUMLOGFONTA,*LPENUMLOGFONTA;
  typedef struct tagENUMLOGFONTW {
    LOGFONTW elfLogFont;
    WCHAR elfFullName[64];
    WCHAR elfStyle[32];
  } ENUMLOGFONTW,*LPENUMLOGFONTW;
  typedef ENUMLOGFONTA ENUMLOGFONT;
  typedef LPENUMLOGFONTA LPENUMLOGFONT;
  typedef struct tagENUMLOGFONTEXA {
    LOGFONTA elfLogFont;
    BYTE elfFullName[64];
    BYTE elfStyle[32];
    BYTE elfScript[32];
  } ENUMLOGFONTEXA,*LPENUMLOGFONTEXA;
  typedef struct tagENUMLOGFONTEXW {
    LOGFONTW elfLogFont;
    WCHAR elfFullName[64];
    WCHAR elfStyle[32];
    WCHAR elfScript[32];
  } ENUMLOGFONTEXW,*LPENUMLOGFONTEXW;
  typedef ENUMLOGFONTEXA ENUMLOGFONTEX;
  typedef LPENUMLOGFONTEXA LPENUMLOGFONTEX;
#define OUT_DEFAULT_PRECIS 0
#define OUT_STRING_PRECIS 1
#define OUT_CHARACTER_PRECIS 2
#define OUT_STROKE_PRECIS 3
#define OUT_TT_PRECIS 4
#define OUT_DEVICE_PRECIS 5
#define OUT_RASTER_PRECIS 6
#define OUT_TT_ONLY_PRECIS 7
#define OUT_OUTLINE_PRECIS 8
#define OUT_SCREEN_OUTLINE_PRECIS 9
#define OUT_PS_ONLY_PRECIS 10
#define CLIP_DEFAULT_PRECIS 0
#define CLIP_CHARACTER_PRECIS 1
#define CLIP_STROKE_PRECIS 2
#define CLIP_MASK 0xf
#define CLIP_LH_ANGLES (1<<4)
#define CLIP_TT_ALWAYS (2<<4)
#define CLIP_DFA_DISABLE (4<<4)
#define CLIP_EMBEDDED (8<<4)
#define DEFAULT_QUALITY 0
#define DRAFT_QUALITY 1
#define PROOF_QUALITY 2
#define NONANTIALIASED_QUALITY 3
#define ANTIALIASED_QUALITY 4
#define CLEARTYPE_QUALITY 5
#define CLEARTYPE_NATURAL_QUALITY 6
#define DEFAULT_PITCH 0
#define FIXED_PITCH 1
#define VARIABLE_PITCH 2
#define MONO_FONT 8
#define ANSI_CHARSET 0
#define DEFAULT_CHARSET 1
#define SYMBOL_CHARSET 2
#define SHIFTJIS_CHARSET 128
#define HANGEUL_CHARSET 129
#define HANGUL_CHARSET 129
#define GB2312_CHARSET 134
#define CHINESEBIG5_CHARSET 136
#define OEM_CHARSET 255
#define JOHAB_CHARSET 130
#define HEBREW_CHARSET 177
#define ARABIC_CHARSET 178
#define GREEK_CHARSET 161
#define TURKISH_CHARSET 162
#define VIETNAMESE_CHARSET 163
#define THAI_CHARSET 222
#define EASTEUROPE_CHARSET 238
#define RUSSIAN_CHARSET 204
#define MAC_CHARSET 77
#define BALTIC_CHARSET 186
#define FS_LATIN1 __MSABI_LONG(0x00000001)
#define FS_LATIN2 __MSABI_LONG(0x00000002)
#define FS_CYRILLIC __MSABI_LONG(0x00000004)
#define FS_GREEK __MSABI_LONG(0x00000008)
#define FS_TURKISH __MSABI_LONG(0x00000010)
#define FS_HEBREW __MSABI_LONG(0x00000020)
#define FS_ARABIC __MSABI_LONG(0x00000040)
#define FS_BALTIC __MSABI_LONG(0x00000080)
#define FS_VIETNAMESE __MSABI_LONG(0x00000100)
#define FS_THAI __MSABI_LONG(0x00010000)
#define FS_JISJAPAN __MSABI_LONG(0x00020000)
#define FS_CHINESESIMP __MSABI_LONG(0x00040000)
#define FS_WANSUNG __MSABI_LONG(0x00080000)
#define FS_CHINESETRAD __MSABI_LONG(0x00100000)
#define FS_JOHAB __MSABI_LONG(0x00200000)
#define FS_SYMBOL __MSABI_LONG(0x80000000)
#define FF_DONTCARE (0<<4)
#define FF_ROMAN (1<<4)
#define FF_SWISS (2<<4)
#define FF_MODERN (3<<4)
#define FF_SCRIPT (4<<4)
#define FF_DECORATIVE (5<<4)
#define FW_DONTCARE 0
#define FW_THIN 100
#define FW_EXTRALIGHT 200
#define FW_LIGHT 300
#define FW_NORMAL 400
#define FW_MEDIUM 500
#define FW_SEMIBOLD 600
#define FW_BOLD 700
#define FW_EXTRABOLD 800
#define FW_HEAVY 900
#define FW_ULTRALIGHT FW_EXTRALIGHT
#define FW_REGULAR FW_NORMAL
#define FW_DEMIBOLD FW_SEMIBOLD
#define FW_ULTRABOLD FW_EXTRABOLD
#define FW_BLACK FW_HEAVY
#define PANOSE_COUNT 10
#define PAN_FAMILYTYPE_INDEX 0
#define PAN_SERIFSTYLE_INDEX 1
#define PAN_WEIGHT_INDEX 2
#define PAN_PROPORTION_INDEX 3
#define PAN_CONTRAST_INDEX 4
#define PAN_STROKEVARIATION_INDEX 5
#define PAN_ARMSTYLE_INDEX 6
#define PAN_LETTERFORM_INDEX 7
#define PAN_MIDLINE_INDEX 8
#define PAN_XHEIGHT_INDEX 9
#define PAN_CULTURE_LATIN 0
  typedef struct tagPANOSE {
    BYTE bFamilyType;
    BYTE bSerifStyle;
    BYTE bWeight;
    BYTE bProportion;
    BYTE bContrast;
    BYTE bStrokeVariation;
    BYTE bArmStyle;
    BYTE bLetterform;
    BYTE bMidline;
    BYTE bXHeight;
  } PANOSE,*LPPANOSE;
#define PAN_ANY 0
#define PAN_NO_FIT 1
#define PAN_FAMILY_TEXT_DISPLAY 2
#define PAN_FAMILY_SCRIPT 3
#define PAN_FAMILY_DECORATIVE 4
#define PAN_FAMILY_PICTORIAL 5
#define PAN_SERIF_COVE 2
#define PAN_SERIF_OBTUSE_COVE 3
#define PAN_SERIF_SQUARE_COVE 4
#define PAN_SERIF_OBTUSE_SQUARE_COVE 5
#define PAN_SERIF_SQUARE 6
#define PAN_SERIF_THIN 7
#define PAN_SERIF_BONE 8
#define PAN_SERIF_EXAGGERATED 9
#define PAN_SERIF_TRIANGLE 10
#define PAN_SERIF_NORMAL_SANS 11
#define PAN_SERIF_OBTUSE_SANS 12
#define PAN_SERIF_PERP_SANS 13
#define PAN_SERIF_FLARED 14
#define PAN_SERIF_ROUNDED 15
#define PAN_WEIGHT_VERY_LIGHT 2
#define PAN_WEIGHT_LIGHT 3
#define PAN_WEIGHT_THIN 4
#define PAN_WEIGHT_BOOK 5
#define PAN_WEIGHT_MEDIUM 6
#define PAN_WEIGHT_DEMI 7
#define PAN_WEIGHT_BOLD 8
#define PAN_WEIGHT_HEAVY 9
#define PAN_WEIGHT_BLACK 10
#define PAN_WEIGHT_NORD 11
#define PAN_PROP_OLD_STYLE 2
#define PAN_PROP_MODERN 3
#define PAN_PROP_EVEN_WIDTH 4
#define PAN_PROP_EXPANDED 5
#define PAN_PROP_CONDENSED 6
#define PAN_PROP_VERY_EXPANDED 7
#define PAN_PROP_VERY_CONDENSED 8
#define PAN_PROP_MONOSPACED 9
#define PAN_CONTRAST_NONE 2
#define PAN_CONTRAST_VERY_LOW 3
#define PAN_CONTRAST_LOW 4
#define PAN_CONTRAST_MEDIUM_LOW 5
#define PAN_CONTRAST_MEDIUM 6
#define PAN_CONTRAST_MEDIUM_HIGH 7
#define PAN_CONTRAST_HIGH 8
#define PAN_CONTRAST_VERY_HIGH 9
#define PAN_STROKE_GRADUAL_DIAG 2
#define PAN_STROKE_GRADUAL_TRAN 3
#define PAN_STROKE_GRADUAL_VERT 4
#define PAN_STROKE_GRADUAL_HORZ 5
#define PAN_STROKE_RAPID_VERT 6
#define PAN_STROKE_RAPID_HORZ 7
#define PAN_STROKE_INSTANT_VERT 8
#define PAN_STRAIGHT_ARMS_HORZ 2
#define PAN_STRAIGHT_ARMS_WEDGE 3
#define PAN_STRAIGHT_ARMS_VERT 4
#define PAN_STRAIGHT_ARMS_SINGLE_SERIF 5
#define PAN_STRAIGHT_ARMS_DOUBLE_SERIF 6
#define PAN_BENT_ARMS_HORZ 7
#define PAN_BENT_ARMS_WEDGE 8
#define PAN_BENT_ARMS_VERT 9
#define PAN_BENT_ARMS_SINGLE_SERIF 10
#define PAN_BENT_ARMS_DOUBLE_SERIF 11
#define PAN_LETT_NORMAL_CONTACT 2
#define PAN_LETT_NORMAL_WEIGHTED 3
#define PAN_LETT_NORMAL_BOXED 4
#define PAN_LETT_NORMAL_FLATTENED 5
#define PAN_LETT_NORMAL_ROUNDED 6
#define PAN_LETT_NORMAL_OFF_CENTER 7
#define PAN_LETT_NORMAL_SQUARE 8
#define PAN_LETT_OBLIQUE_CONTACT 9
#define PAN_LETT_OBLIQUE_WEIGHTED 10
#define PAN_LETT_OBLIQUE_BOXED 11
#define PAN_LETT_OBLIQUE_FLATTENED 12
#define PAN_LETT_OBLIQUE_ROUNDED 13
#define PAN_LETT_OBLIQUE_OFF_CENTER 14
#define PAN_LETT_OBLIQUE_SQUARE 15
#define PAN_MIDLINE_STANDARD_TRIMMED 2
#define PAN_MIDLINE_STANDARD_POINTED 3
#define PAN_MIDLINE_STANDARD_SERIFED 4
#define PAN_MIDLINE_HIGH_TRIMMED 5
#define PAN_MIDLINE_HIGH_POINTED 6
#define PAN_MIDLINE_HIGH_SERIFED 7
#define PAN_MIDLINE_CONSTANT_TRIMMED 8
#define PAN_MIDLINE_CONSTANT_POINTED 9
#define PAN_MIDLINE_CONSTANT_SERIFED 10
#define PAN_MIDLINE_LOW_TRIMMED 11
#define PAN_MIDLINE_LOW_POINTED 12
#define PAN_MIDLINE_LOW_SERIFED 13
#define PAN_XHEIGHT_CONSTANT_SMALL 2
#define PAN_XHEIGHT_CONSTANT_STD 3
#define PAN_XHEIGHT_CONSTANT_LARGE 4
#define PAN_XHEIGHT_DUCKING_SMALL 5
#define PAN_XHEIGHT_DUCKING_STD 6
#define PAN_XHEIGHT_DUCKING_LARGE 7
#define ELF_VENDOR_SIZE 4
  typedef struct tagEXTLOGFONTA {
    LOGFONTA elfLogFont;
    BYTE elfFullName[64];
    BYTE elfStyle[32];
    DWORD elfVersion;
    DWORD elfStyleSize;
    DWORD elfMatch;
    DWORD elfReserved;
    BYTE elfVendorId[4];
    DWORD elfCulture;
    PANOSE elfPanose;
  } EXTLOGFONTA,*PEXTLOGFONTA,*NPEXTLOGFONTA,*LPEXTLOGFONTA;
  typedef struct tagEXTLOGFONTW {
    LOGFONTW elfLogFont;
    WCHAR elfFullName[64];
    WCHAR elfStyle[32];
    DWORD elfVersion;
    DWORD elfStyleSize;
    DWORD elfMatch;
    DWORD elfReserved;
    BYTE elfVendorId[4];
    DWORD elfCulture;
    PANOSE elfPanose;
  } EXTLOGFONTW,*PEXTLOGFONTW,*NPEXTLOGFONTW,*LPEXTLOGFONTW;
  typedef EXTLOGFONTA EXTLOGFONT;
  typedef PEXTLOGFONTA PEXTLOGFONT;
  typedef NPEXTLOGFONTA NPEXTLOGFONT;
  typedef LPEXTLOGFONTA LPEXTLOGFONT;
#define ELF_VERSION 0
#define ELF_CULTURE_LATIN 0
#define RASTER_FONTTYPE 0x0001
#define DEVICE_FONTTYPE 0x002
#define TRUETYPE_FONTTYPE 0x004
#define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
#define PALETTERGB(r,g,b) (0x02000000 | RGB(r,g,b))
#define PALETTEINDEX(i) ((COLORREF)(0x01000000 | (DWORD)(WORD)(i)))
#define PC_RESERVED 0x01
#define PC_EXPLICIT 0x02
#define PC_NOCOLLAPSE 0x04
#define GetRValue(rgb) (LOBYTE(rgb))
#define GetGValue(rgb) (LOBYTE(((WORD)(rgb)) >> 8))
#define GetBValue(rgb) (LOBYTE((rgb)>>16))
#define TRANSPARENT 1
#define OPAQUE 2
#define BKMODE_LAST 2
#define GM_COMPATIBLE 1
#define GM_ADVANCED 2
#define GM_LAST 2
#define PT_CLOSEFIGURE 0x01
#define PT_LINETO 0x02
#define PT_BEZIERTO 0x04
#define PT_MOVETO 0x06
#define MM_TEXT 1
#define MM_LOMETRIC 2
#define MM_HIMETRIC 3
#define MM_LOENGLISH 4
#define MM_HIENGLISH 5
#define MM_TWIPS 6
#define MM_ISOTROPIC 7
#define MM_ANISOTROPIC 8
#define MM_MIN MM_TEXT
#define MM_MAX MM_ANISOTROPIC
#define MM_MAX_FIXEDSCALE MM_TWIPS
#define ABSOLUTE 1
#define RELATIVE 2
#define WHITE_BRUSH 0
#define LTGRAY_BRUSH 1
#define GRAY_BRUSH 2
#define DKGRAY_BRUSH 3
#define BLACK_BRUSH 4
#define NULL_BRUSH 5
#define HOLLOW_BRUSH NULL_BRUSH
#define WHITE_PEN 6
#define BLACK_PEN 7
#define NULL_PEN 8
#define OEM_FIXED_FONT 10
#define ANSI_FIXED_FONT 11
#define ANSI_VAR_FONT 12
#define SYSTEM_FONT 13
#define DEVICE_DEFAULT_FONT 14
#define DEFAULT_PALETTE 15
#define SYSTEM_FIXED_FONT 16
#define DEFAULT_GUI_FONT 17
#define DC_BRUSH 18
#define DC_PEN 19
#define STOCK_LAST 19
#define CLR_INVALID 0xFFFFFFFF
#define BS_SOLID 0
#define BS_NULL 1
#define BS_HOLLOW BS_NULL
#define BS_HATCHED 2
#define BS_PATTERN 3
#define BS_INDEXED 4
#define BS_DIBPATTERN 5
#define BS_DIBPATTERNPT 6
#define BS_PATTERN8X8 7
#define BS_DIBPATTERN8X8 8
#define BS_MONOPATTERN 9
#define HS_HORIZONTAL 0
#define HS_VERTICAL 1
#define HS_FDIAGONAL 2
#define HS_BDIAGONAL 3
#define HS_CROSS 4
#define HS_DIAGCROSS 5
#define HS_API_MAX 12
#define PS_SOLID 0
#define PS_DASH 1
#define PS_DOT 2
#define PS_DASHDOT 3
#define PS_DASHDOTDOT 4
#define PS_NULL 5
#define PS_INSIDEFRAME 6
#define PS_USERSTYLE 7
#define PS_ALTERNATE 8
#define PS_STYLE_MASK 0x0000000F
#define PS_ENDCAP_ROUND 0x00000000
#define PS_ENDCAP_SQUARE 0x00000100
#define PS_ENDCAP_FLAT 0x00000200
#define PS_ENDCAP_MASK 0x00000F00
#define PS_JOIN_ROUND 0x00000000
#define PS_JOIN_BEVEL 0x00001000
#define PS_JOIN_MITER 0x00002000
#define PS_JOIN_MASK 0x0000F000
#define PS_COSMETIC 0x00000000
#define PS_GEOMETRIC 0x00010000
#define PS_TYPE_MASK 0x000F0000
#define AD_COUNTERCLOCKWISE 1
#define AD_CLOCKWISE 2
#define DRIVERVERSION 0
#define TECHNOLOGY 2
#define HORZSIZE 4
#define VERTSIZE 6
#define HORZRES 8
#define VERTRES 10
#define BITSPIXEL 12
#define PLANES 14
#define NUMBRUSHES 16
#define NUMPENS 18
#define NUMMARKERS 20
#define NUMFONTS 22
#define NUMCOLORS 24
#define PDEVICESIZE 26
#define CURVECAPS 28
#define LINECAPS 30
#define POLYGONALCAPS 32
#define TEXTCAPS 34
#define CLIPCAPS 36
#define RASTERCAPS 38
#define ASPECTX 40
#define ASPECTY 42
#define ASPECTXY 44
#define LOGPIXELSX 88
#define LOGPIXELSY 90
#define SIZEPALETTE 104
#define NUMRESERVED 106
#define COLORRES 108
#define PHYSICALWIDTH 110
#define PHYSICALHEIGHT 111
#define PHYSICALOFFSETX 112
#define PHYSICALOFFSETY 113
#define SCALINGFACTORX 114
#define SCALINGFACTORY 115
#define VREFRESH 116
#define DESKTOPVERTRES 117
#define DESKTOPHORZRES 118
#define BLTALIGNMENT 119
#define SHADEBLENDCAPS 120
#define COLORMGMTCAPS 121
#define DT_PLOTTER 0
#define DT_RASDISPLAY 1
#define DT_RASPRINTER 2
#define DT_RASCAMERA 3
#define DT_CHARSTREAM 4
#define DT_METAFILE 5
#define DT_DISPFILE 6
#define CC_NONE 0
#define CC_CIRCLES 1
#define CC_PIE 2
#define CC_CHORD 4
#define CC_ELLIPSES 8
#define CC_WIDE 16
#define CC_STYLED 32
#define CC_WIDESTYLED 64
#define CC_INTERIORS 128
#define CC_ROUNDRECT 256
#define LC_NONE 0
#define LC_POLYLINE 2
#define LC_MARKER 4
#define LC_POLYMARKER 8
#define LC_WIDE 16
#define LC_STYLED 32
#define LC_WIDESTYLED 64
#define LC_INTERIORS 128
#define PC_NONE 0
#define PC_POLYGON 1
#define PC_RECTANGLE 2
#define PC_WINDPOLYGON 4
#define PC_TRAPEZOID 4
#define PC_SCANLINE 8
#define PC_WIDE 16
#define PC_STYLED 32
#define PC_WIDESTYLED 64
#define PC_INTERIORS 128
#define PC_POLYPOLYGON 256
#define PC_PATHS 512
#define CP_NONE 0
#define CP_RECTANGLE 1
#define CP_REGION 2
#define TC_OP_CHARACTER 0x00000001
#define TC_OP_STROKE 0x00000002
#define TC_CP_STROKE 0x00000004
#define TC_CR_90 0x00000008
#define TC_CR_ANY 0x00000010
#define TC_SF_X_YINDEP 0x00000020
#define TC_SA_DOUBLE 0x00000040
#define TC_SA_INTEGER 0x00000080
#define TC_SA_CONTIN 0x00000100
#define TC_EA_DOUBLE 0x00000200
#define TC_IA_ABLE 0x00000400
#define TC_UA_ABLE 0x00000800
#define TC_SO_ABLE 0x00001000
#define TC_RA_ABLE 0x00002000
#define TC_VA_ABLE 0x00004000
#define TC_RESERVED 0x00008000
#define TC_SCROLLBLT 0x00010000
#define RC_NONE 
#define RC_BITBLT 1
#define RC_BANDING 2
#define RC_SCALING 4
#define RC_BITMAP64 8
#define RC_GDI20_OUTPUT 0x0010
#define RC_GDI20_STATE 0x0020
#define RC_SAVEBITMAP 0x0040
#define RC_DI_BITMAP 0x0080
#define RC_PALETTE 0x0100
#define RC_DIBTODEV 0x0200
#define RC_BIGFONT 0x0400
#define RC_STRETCHBLT 0x0800
#define RC_FLOODFILL 0x1000
#define RC_STRETCHDIB 0x2000
#define RC_OP_DX_OUTPUT 0x4000
#define RC_DEVBITS 0x8000
#define SB_NONE 0x00000000
#define SB_CONST_ALPHA 0x00000001
#define SB_PIXEL_ALPHA 0x00000002
#define SB_PREMULT_ALPHA 0x00000004
#define SB_GRAD_RECT 0x00000010
#define SB_GRAD_TRI 0x00000020
#define CM_NONE 0x00000000
#define CM_DEVICE_ICM 0x00000001
#define CM_GAMMA_RAMP 0x00000002
#define CM_CMYK_COLOR 0x00000004
#define DIB_RGB_COLORS 0
#define DIB_PAL_COLORS 1
#define SYSPAL_ERROR 0
#define SYSPAL_STATIC 1
#define SYSPAL_NOSTATIC 2
#define SYSPAL_NOSTATIC256 3
#define CBM_INIT __MSABI_LONG(0x04)
#define FLOODFILLBORDER 0
#define FLOODFILLSURFACE 1
#define CCHDEVICENAME 32
#define CCHFORMNAME 32
  typedef struct _devicemodeA {
    BYTE dmDeviceName[32];
    WORD dmSpecVersion;
    WORD dmDriverVersion;
    WORD dmSize;
    WORD dmDriverExtra;
    DWORD dmFields;
    __extension__ union {
      __extension__ struct {
 short dmOrientation;
 short dmPaperSize;
 short dmPaperLength;
 short dmPaperWidth;
 short dmScale;
 short dmCopies;
 short dmDefaultSource;
 short dmPrintQuality;
      };
      struct {
 POINTL dmPosition;
 DWORD dmDisplayOrientation;
 DWORD dmDisplayFixedOutput;
      };
    };
    short dmColor;
    short dmDuplex;
    short dmYResolution;
    short dmTTOption;
    short dmCollate;
    BYTE dmFormName[32];
    WORD dmLogPixels;
    DWORD dmBitsPerPel;
    DWORD dmPelsWidth;
    DWORD dmPelsHeight;
    __extension__ union {
      DWORD dmDisplayFlags;
      DWORD dmNup;
    };
    DWORD dmDisplayFrequency;
    DWORD dmICMMethod;
    DWORD dmICMIntent;
    DWORD dmMediaType;
    DWORD dmDitherType;
    DWORD dmReserved1;
    DWORD dmReserved2;
    DWORD dmPanningWidth;
    DWORD dmPanningHeight;
  } DEVMODEA,*PDEVMODEA,*NPDEVMODEA,*LPDEVMODEA;
  typedef struct _devicemodeW {
    WCHAR dmDeviceName[32];
    WORD dmSpecVersion;
    WORD dmDriverVersion;
    WORD dmSize;
    WORD dmDriverExtra;
    DWORD dmFields;
    __extension__ union {
      __extension__ struct {
 short dmOrientation;
 short dmPaperSize;
 short dmPaperLength;
 short dmPaperWidth;
 short dmScale;
 short dmCopies;
 short dmDefaultSource;
 short dmPrintQuality;
      };
      __extension__ struct {
 POINTL dmPosition;
 DWORD dmDisplayOrientation;
 DWORD dmDisplayFixedOutput;
      };
    };
    short dmColor;
    short dmDuplex;
    short dmYResolution;
    short dmTTOption;
    short dmCollate;
    WCHAR dmFormName[32];
    WORD dmLogPixels;
    DWORD dmBitsPerPel;
    DWORD dmPelsWidth;
    DWORD dmPelsHeight;
    __extension__ union {
      DWORD dmDisplayFlags;
      DWORD dmNup;
    };
    DWORD dmDisplayFrequency;
    DWORD dmICMMethod;
    DWORD dmICMIntent;
    DWORD dmMediaType;
    DWORD dmDitherType;
    DWORD dmReserved1;
    DWORD dmReserved2;
    DWORD dmPanningWidth;
    DWORD dmPanningHeight;
  } DEVMODEW,*PDEVMODEW,*NPDEVMODEW,*LPDEVMODEW;
  typedef DEVMODEA DEVMODE;
  typedef PDEVMODEA PDEVMODE;
  typedef NPDEVMODEA NPDEVMODE;
  typedef LPDEVMODEA LPDEVMODE;
#define DM_SPECVERSION 0x0401
#define DM_ORIENTATION __MSABI_LONG(0x00000001)
#define DM_PAPERSIZE __MSABI_LONG(0x00000002)
#define DM_PAPERLENGTH __MSABI_LONG(0x00000004)
#define DM_PAPERWIDTH __MSABI_LONG(0x00000008)
#define DM_SCALE __MSABI_LONG(0x00000010)
#define DM_POSITION __MSABI_LONG(0x00000020)
#define DM_NUP __MSABI_LONG(0x00000040)
#define DM_DISPLAYORIENTATION __MSABI_LONG(0x00000080)
#define DM_COPIES __MSABI_LONG(0x00000100)
#define DM_DEFAULTSOURCE __MSABI_LONG(0x00000200)
#define DM_PRINTQUALITY __MSABI_LONG(0x00000400)
#define DM_COLOR __MSABI_LONG(0x00000800)
#define DM_DUPLEX __MSABI_LONG(0x00001000)
#define DM_YRESOLUTION __MSABI_LONG(0x00002000)
#define DM_TTOPTION __MSABI_LONG(0x00004000)
#define DM_COLLATE __MSABI_LONG(0x00008000)
#define DM_FORMNAME __MSABI_LONG(0x00010000)
#define DM_LOGPIXELS __MSABI_LONG(0x00020000)
#define DM_BITSPERPEL __MSABI_LONG(0x00040000)
#define DM_PELSWIDTH __MSABI_LONG(0x00080000)
#define DM_PELSHEIGHT __MSABI_LONG(0x00100000)
#define DM_DISPLAYFLAGS __MSABI_LONG(0x00200000)
#define DM_DISPLAYFREQUENCY __MSABI_LONG(0x00400000)
#define DM_ICMMETHOD __MSABI_LONG(0x00800000)
#define DM_ICMINTENT __MSABI_LONG(0x01000000)
#define DM_MEDIATYPE __MSABI_LONG(0x02000000)
#define DM_DITHERTYPE __MSABI_LONG(0x04000000)
#define DM_PANNINGWIDTH __MSABI_LONG(0x08000000)
#define DM_PANNINGHEIGHT __MSABI_LONG(0x10000000)
#define DM_DISPLAYFIXEDOUTPUT __MSABI_LONG(0x20000000)
#define DMORIENT_PORTRAIT 1
#define DMORIENT_LANDSCAPE 2
#define DMPAPER_FIRST DMPAPER_LETTER
#define DMPAPER_LETTER 1
#define DMPAPER_LETTERSMALL 2
#define DMPAPER_TABLOID 3
#define DMPAPER_LEDGER 4
#define DMPAPER_LEGAL 5
#define DMPAPER_STATEMENT 6
#define DMPAPER_EXECUTIVE 7
#define DMPAPER_A3 8
#define DMPAPER_A4 9
#define DMPAPER_A4SMALL 10
#define DMPAPER_A5 11
#define DMPAPER_B4 12
#define DMPAPER_B5 13
#define DMPAPER_FOLIO 14
#define DMPAPER_QUARTO 15
#define DMPAPER_10X14 16
#define DMPAPER_11X17 17
#define DMPAPER_NOTE 18
#define DMPAPER_ENV_9 19
#define DMPAPER_ENV_10 20
#define DMPAPER_ENV_11 21
#define DMPAPER_ENV_12 22
#define DMPAPER_ENV_14 23
#define DMPAPER_CSHEET 24
#define DMPAPER_DSHEET 25
#define DMPAPER_ESHEET 26
#define DMPAPER_ENV_DL 27
#define DMPAPER_ENV_C5 28
#define DMPAPER_ENV_C3 29
#define DMPAPER_ENV_C4 30
#define DMPAPER_ENV_C6 31
#define DMPAPER_ENV_C65 32
#define DMPAPER_ENV_B4 33
#define DMPAPER_ENV_B5 34
#define DMPAPER_ENV_B6 35
#define DMPAPER_ENV_ITALY 36
#define DMPAPER_ENV_MONARCH 37
#define DMPAPER_ENV_PERSONAL 38
#define DMPAPER_FANFOLD_US 39
#define DMPAPER_FANFOLD_STD_GERMAN 40
#define DMPAPER_FANFOLD_LGL_GERMAN 41
#define DMPAPER_ISO_B4 42
#define DMPAPER_JAPANESE_POSTCARD 43
#define DMPAPER_9X11 44
#define DMPAPER_10X11 45
#define DMPAPER_15X11 46
#define DMPAPER_ENV_INVITE 47
#define DMPAPER_RESERVED_48 48
#define DMPAPER_RESERVED_49 49
#define DMPAPER_LETTER_EXTRA 50
#define DMPAPER_LEGAL_EXTRA 51
#define DMPAPER_TABLOID_EXTRA 52
#define DMPAPER_A4_EXTRA 53
#define DMPAPER_LETTER_TRANSVERSE 54
#define DMPAPER_A4_TRANSVERSE 55
#define DMPAPER_LETTER_EXTRA_TRANSVERSE 56
#define DMPAPER_A_PLUS 57
#define DMPAPER_B_PLUS 58
#define DMPAPER_LETTER_PLUS 59
#define DMPAPER_A4_PLUS 60
#define DMPAPER_A5_TRANSVERSE 61
#define DMPAPER_B5_TRANSVERSE 62
#define DMPAPER_A3_EXTRA 63
#define DMPAPER_A5_EXTRA 64
#define DMPAPER_B5_EXTRA 65
#define DMPAPER_A2 66
#define DMPAPER_A3_TRANSVERSE 67
#define DMPAPER_A3_EXTRA_TRANSVERSE 68
#define DMPAPER_DBL_JAPANESE_POSTCARD 69
#define DMPAPER_A6 70
#define DMPAPER_JENV_KAKU2 71
#define DMPAPER_JENV_KAKU3 72
#define DMPAPER_JENV_CHOU3 73
#define DMPAPER_JENV_CHOU4 74
#define DMPAPER_LETTER_ROTATED 75
#define DMPAPER_A3_ROTATED 76
#define DMPAPER_A4_ROTATED 77
#define DMPAPER_A5_ROTATED 78
#define DMPAPER_B4_JIS_ROTATED 79
#define DMPAPER_B5_JIS_ROTATED 80
#define DMPAPER_JAPANESE_POSTCARD_ROTATED 81
#define DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED 82
#define DMPAPER_A6_ROTATED 83
#define DMPAPER_JENV_KAKU2_ROTATED 84
#define DMPAPER_JENV_KAKU3_ROTATED 85
#define DMPAPER_JENV_CHOU3_ROTATED 86
#define DMPAPER_JENV_CHOU4_ROTATED 87
#define DMPAPER_B6_JIS 88
#define DMPAPER_B6_JIS_ROTATED 89
#define DMPAPER_12X11 90
#define DMPAPER_JENV_YOU4 91
#define DMPAPER_JENV_YOU4_ROTATED 92
#define DMPAPER_P16K 93
#define DMPAPER_P32K 94
#define DMPAPER_P32KBIG 95
#define DMPAPER_PENV_1 96
#define DMPAPER_PENV_2 97
#define DMPAPER_PENV_3 98
#define DMPAPER_PENV_4 99
#define DMPAPER_PENV_5 100
#define DMPAPER_PENV_6 101
#define DMPAPER_PENV_7 102
#define DMPAPER_PENV_8 103
#define DMPAPER_PENV_9 104
#define DMPAPER_PENV_10 105
#define DMPAPER_P16K_ROTATED 106
#define DMPAPER_P32K_ROTATED 107
#define DMPAPER_P32KBIG_ROTATED 108
#define DMPAPER_PENV_1_ROTATED 109
#define DMPAPER_PENV_2_ROTATED 110
#define DMPAPER_PENV_3_ROTATED 111
#define DMPAPER_PENV_4_ROTATED 112
#define DMPAPER_PENV_5_ROTATED 113
#define DMPAPER_PENV_6_ROTATED 114
#define DMPAPER_PENV_7_ROTATED 115
#define DMPAPER_PENV_8_ROTATED 116
#define DMPAPER_PENV_9_ROTATED 117
#define DMPAPER_PENV_10_ROTATED 118
#define DMPAPER_LAST DMPAPER_PENV_10_ROTATED
#define DMPAPER_USER 256
#define DMBIN_FIRST DMBIN_UPPER
#define DMBIN_UPPER 1
#define DMBIN_ONLYONE 1
#define DMBIN_LOWER 2
#define DMBIN_MIDDLE 3
#define DMBIN_MANUAL 4
#define DMBIN_ENVELOPE 5
#define DMBIN_ENVMANUAL 6
#define DMBIN_AUTO 7
#define DMBIN_TRACTOR 8
#define DMBIN_SMALLFMT 9
#define DMBIN_LARGEFMT 10
#define DMBIN_LARGECAPACITY 11
#define DMBIN_CASSETTE 14
#define DMBIN_FORMSOURCE 15
#define DMBIN_LAST DMBIN_FORMSOURCE
#define DMBIN_USER 256
#define DMRES_DRAFT (-1)
#define DMRES_LOW (-2)
#define DMRES_MEDIUM (-3)
#define DMRES_HIGH (-4)
#define DMCOLOR_MONOCHROME 1
#define DMCOLOR_COLOR 2
#define DMDUP_SIMPLEX 1
#define DMDUP_VERTICAL 2
#define DMDUP_HORIZONTAL 3
#define DMTT_BITMAP 1
#define DMTT_DOWNLOAD 2
#define DMTT_SUBDEV 3
#define DMTT_DOWNLOAD_OUTLINE 4
#define DMCOLLATE_FALSE 0
#define DMCOLLATE_TRUE 1
#define DMDO_DEFAULT 0
#define DMDO_90 1
#define DMDO_180 2
#define DMDO_270 3
#define DMDFO_DEFAULT 0
#define DMDFO_STRETCH 1
#define DMDFO_CENTER 2
#define DM_INTERLACED 0x00000002
#define DMDISPLAYFLAGS_TEXTMODE 0x00000004
#define DMNUP_SYSTEM 1
#define DMNUP_ONEUP 2
#define DMICMMETHOD_NONE 1
#define DMICMMETHOD_SYSTEM 2
#define DMICMMETHOD_DRIVER 3
#define DMICMMETHOD_DEVICE 4
#define DMICMMETHOD_USER 256
#define DMICM_SATURATE 1
#define DMICM_CONTRAST 2
#define DMICM_COLORIMETRIC 3
#define DMICM_ABS_COLORIMETRIC 4
#define DMICM_USER 256
#define DMMEDIA_STANDARD 1
#define DMMEDIA_TRANSPARENCY 2
#define DMMEDIA_GLOSSY 3
#define DMMEDIA_USER 256
#define DMDITHER_NONE 1
#define DMDITHER_COARSE 2
#define DMDITHER_FINE 3
#define DMDITHER_LINEART 4
#define DMDITHER_ERRORDIFFUSION 5
#define DMDITHER_RESERVED6 6
#define DMDITHER_RESERVED7 7
#define DMDITHER_RESERVED8 8
#define DMDITHER_RESERVED9 9
#define DMDITHER_GRAYSCALE 10
#define DMDITHER_USER 256
  typedef struct _DISPLAY_DEVICEA {
    DWORD cb;
    CHAR DeviceName[32];
    CHAR DeviceString[128];
    DWORD StateFlags;
    CHAR DeviceID[128];
    CHAR DeviceKey[128];
  } DISPLAY_DEVICEA,*PDISPLAY_DEVICEA,*LPDISPLAY_DEVICEA;
  typedef struct _DISPLAY_DEVICEW {
    DWORD cb;
    WCHAR DeviceName[32];
    WCHAR DeviceString[128];
    DWORD StateFlags;
    WCHAR DeviceID[128];
    WCHAR DeviceKey[128];
  } DISPLAY_DEVICEW,*PDISPLAY_DEVICEW,*LPDISPLAY_DEVICEW;
  typedef DISPLAY_DEVICEA DISPLAY_DEVICE;
  typedef PDISPLAY_DEVICEA PDISPLAY_DEVICE;
  typedef LPDISPLAY_DEVICEA LPDISPLAY_DEVICE;
#define DISPLAY_DEVICE_ATTACHED_TO_DESKTOP 0x00000001
#define DISPLAY_DEVICE_MULTI_DRIVER 0x00000002
#define DISPLAY_DEVICE_PRIMARY_DEVICE 0x00000004
#define DISPLAY_DEVICE_MIRRORING_DRIVER 0x00000008
#define DISPLAY_DEVICE_VGA_COMPATIBLE 0x00000010
#define DISPLAY_DEVICE_REMOVABLE 0x00000020
#define DISPLAY_DEVICE_TS_COMPATIBLE 0x00200000
#define DISPLAY_DEVICE_UNSAFE_MODES_ON 0x00080000
#define DISPLAY_DEVICE_MODESPRUNED 0x08000000
#define DISPLAY_DEVICE_RDPUDD 0x01000000
#define DISPLAY_DEVICE_REMOTE 0x04000000
#define DISPLAY_DEVICE_DISCONNECT 0x02000000
#define DISPLAY_DEVICE_ACTIVE 0x00000001
#define DISPLAY_DEVICE_ATTACHED 0x00000002
#define RDH_RECTANGLES 1
  typedef struct _RGNDATAHEADER {
    DWORD dwSize;
    DWORD iType;
    DWORD nCount;
    DWORD nRgnSize;
    RECT rcBound;
  } RGNDATAHEADER,*PRGNDATAHEADER;
  typedef struct _RGNDATA {
    RGNDATAHEADER rdh;
    char Buffer[1];
  } RGNDATA,*PRGNDATA,*NPRGNDATA,*LPRGNDATA;
#define SYSRGN 4
  typedef struct _ABC {
    int abcA;
    UINT abcB;
    int abcC;
  } ABC,*PABC,*NPABC,*LPABC;
  typedef struct _ABCFLOAT {
    FLOAT abcfA;
    FLOAT abcfB;
    FLOAT abcfC;
  } ABCFLOAT,*PABCFLOAT,*NPABCFLOAT,*LPABCFLOAT;
  typedef struct _OUTLINETEXTMETRICA {
    UINT otmSize;
    TEXTMETRICA otmTextMetrics;
    BYTE otmFiller;
    PANOSE otmPanoseNumber;
    UINT otmfsSelection;
    UINT otmfsType;
    int otmsCharSlopeRise;
    int otmsCharSlopeRun;
    int otmItalicAngle;
    UINT otmEMSquare;
    int otmAscent;
    int otmDescent;
    UINT otmLineGap;
    UINT otmsCapEmHeight;
    UINT otmsXHeight;
    RECT otmrcFontBox;
    int otmMacAscent;
    int otmMacDescent;
    UINT otmMacLineGap;
    UINT otmusMinimumPPEM;
    POINT otmptSubscriptSize;
    POINT otmptSubscriptOffset;
    POINT otmptSuperscriptSize;
    POINT otmptSuperscriptOffset;
    UINT otmsStrikeoutSize;
    int otmsStrikeoutPosition;
    int otmsUnderscoreSize;
    int otmsUnderscorePosition;
    PSTR otmpFamilyName;
    PSTR otmpFaceName;
    PSTR otmpStyleName;
    PSTR otmpFullName;
  } OUTLINETEXTMETRICA,*POUTLINETEXTMETRICA,*NPOUTLINETEXTMETRICA,*LPOUTLINETEXTMETRICA;
  typedef struct _OUTLINETEXTMETRICW {
    UINT otmSize;
    TEXTMETRICW otmTextMetrics;
    BYTE otmFiller;
    PANOSE otmPanoseNumber;
    UINT otmfsSelection;
    UINT otmfsType;
    int otmsCharSlopeRise;
    int otmsCharSlopeRun;
    int otmItalicAngle;
    UINT otmEMSquare;
    int otmAscent;
    int otmDescent;
    UINT otmLineGap;
    UINT otmsCapEmHeight;
    UINT otmsXHeight;
    RECT otmrcFontBox;
    int otmMacAscent;
    int otmMacDescent;
    UINT otmMacLineGap;
    UINT otmusMinimumPPEM;
    POINT otmptSubscriptSize;
    POINT otmptSubscriptOffset;
    POINT otmptSuperscriptSize;
    POINT otmptSuperscriptOffset;
    UINT otmsStrikeoutSize;
    int otmsStrikeoutPosition;
    int otmsUnderscoreSize;
    int otmsUnderscorePosition;
    PSTR otmpFamilyName;
    PSTR otmpFaceName;
    PSTR otmpStyleName;
    PSTR otmpFullName;
  } OUTLINETEXTMETRICW,*POUTLINETEXTMETRICW,*NPOUTLINETEXTMETRICW,*LPOUTLINETEXTMETRICW;
  typedef OUTLINETEXTMETRICA OUTLINETEXTMETRIC;
  typedef POUTLINETEXTMETRICA POUTLINETEXTMETRIC;
  typedef NPOUTLINETEXTMETRICA NPOUTLINETEXTMETRIC;
  typedef LPOUTLINETEXTMETRICA LPOUTLINETEXTMETRIC;
  typedef struct tagPOLYTEXTA {
    int x;
    int y;
    UINT n;
    LPCSTR lpstr;
    UINT uiFlags;
    RECT rcl;
    int *pdx;
  } POLYTEXTA,*PPOLYTEXTA,*NPPOLYTEXTA,*LPPOLYTEXTA;
  typedef struct tagPOLYTEXTW {
    int x;
    int y;
    UINT n;
    LPCWSTR lpstr;
    UINT uiFlags;
    RECT rcl;
    int *pdx;
  } POLYTEXTW,*PPOLYTEXTW,*NPPOLYTEXTW,*LPPOLYTEXTW;
  typedef POLYTEXTA POLYTEXT;
  typedef PPOLYTEXTA PPOLYTEXT;
  typedef NPPOLYTEXTA NPPOLYTEXT;
  typedef LPPOLYTEXTA LPPOLYTEXT;
  typedef struct _FIXED {
    WORD fract;
    short value;
  } FIXED;
  typedef struct _MAT2 {
    FIXED eM11;
    FIXED eM12;
    FIXED eM21;
    FIXED eM22;
  } MAT2,*LPMAT2;
  typedef struct _GLYPHMETRICS {
    UINT gmBlackBoxX;
    UINT gmBlackBoxY;
    POINT gmptGlyphOrigin;
    short gmCellIncX;
    short gmCellIncY;
  } GLYPHMETRICS,*LPGLYPHMETRICS;
#define GGO_METRICS 0
#define GGO_BITMAP 1
#define GGO_NATIVE 2
#define GGO_BEZIER 3
#define GGO_GRAY2_BITMAP 4
#define GGO_GRAY4_BITMAP 5
#define GGO_GRAY8_BITMAP 6
#define GGO_GLYPH_INDEX 0x0080
#define GGO_UNHINTED 0x0100
#define TT_POLYGON_TYPE 24
#define TT_PRIM_LINE 1
#define TT_PRIM_QSPLINE 2
#define TT_PRIM_CSPLINE 3
  typedef struct tagPOINTFX {
    FIXED x;
    FIXED y;
  } POINTFX,*LPPOINTFX;
  typedef struct tagTTPOLYCURVE {
    WORD wType;
    WORD cpfx;
    POINTFX apfx[1];
  } TTPOLYCURVE,*LPTTPOLYCURVE;
  typedef struct tagTTPOLYGONHEADER {
    DWORD cb;
    DWORD dwType;
    POINTFX pfxStart;
  } TTPOLYGONHEADER,*LPTTPOLYGONHEADER;
#define GCP_DBCS 0x0001
#define GCP_REORDER 0x0002
#define GCP_USEKERNING 0x0008
#define GCP_GLYPHSHAPE 0x0010
#define GCP_LIGATE 0x0020
#define GCP_DIACRITIC 0x0100
#define GCP_KASHIDA 0x0400
#define GCP_ERROR 0x8000
#define FLI_MASK 0x103B
#define GCP_JUSTIFY __MSABI_LONG(0x00010000)
#define FLI_GLYPHS __MSABI_LONG(0x00040000)
#define GCP_CLASSIN __MSABI_LONG(0x00080000)
#define GCP_MAXEXTENT __MSABI_LONG(0x00100000)
#define GCP_JUSTIFYIN __MSABI_LONG(0x00200000)
#define GCP_DISPLAYZWG __MSABI_LONG(0x00400000)
#define GCP_SYMSWAPOFF __MSABI_LONG(0x00800000)
#define GCP_NUMERICOVERRIDE __MSABI_LONG(0x01000000)
#define GCP_NEUTRALOVERRIDE __MSABI_LONG(0x02000000)
#define GCP_NUMERICSLATIN __MSABI_LONG(0x04000000)
#define GCP_NUMERICSLOCAL __MSABI_LONG(0x08000000)
#define GCPCLASS_LATIN 1
#define GCPCLASS_HEBREW 2
#define GCPCLASS_ARABIC 2
#define GCPCLASS_NEUTRAL 3
#define GCPCLASS_LOCALNUMBER 4
#define GCPCLASS_LATINNUMBER 5
#define GCPCLASS_LATINNUMERICTERMINATOR 6
#define GCPCLASS_LATINNUMERICSEPARATOR 7
#define GCPCLASS_NUMERICSEPARATOR 8
#define GCPCLASS_PREBOUNDLTR 0x80
#define GCPCLASS_PREBOUNDRTL 0x40
#define GCPCLASS_POSTBOUNDLTR 0x20
#define GCPCLASS_POSTBOUNDRTL 0x10
#define GCPGLYPH_LINKBEFORE 0x8000
#define GCPGLYPH_LINKAFTER 0x4000
  typedef struct tagGCP_RESULTSA {
    DWORD lStructSize;
    LPSTR lpOutString;
    UINT *lpOrder;
    int *lpDx;
    int *lpCaretPos;
    LPSTR lpClass;
    LPWSTR lpGlyphs;
    UINT nGlyphs;
    int nMaxFit;
  } GCP_RESULTSA,*LPGCP_RESULTSA;
  typedef struct tagGCP_RESULTSW {
    DWORD lStructSize;
    LPWSTR lpOutString;
    UINT *lpOrder;
    int *lpDx;
    int *lpCaretPos;
    LPSTR lpClass;
    LPWSTR lpGlyphs;
    UINT nGlyphs;
    int nMaxFit;
  } GCP_RESULTSW,*LPGCP_RESULTSW;
  typedef GCP_RESULTSA GCP_RESULTS;
  typedef LPGCP_RESULTSA LPGCP_RESULTS;
  typedef struct _RASTERIZER_STATUS {
    short nSize;
    short wFlags;
    short nLanguageID;
  } RASTERIZER_STATUS,*LPRASTERIZER_STATUS;
#define TT_AVAILABLE 0x0001
#define TT_ENABLED 0x0002
  typedef struct tagPIXELFORMATDESCRIPTOR {
    WORD nSize;
    WORD nVersion;
    DWORD dwFlags;
    BYTE 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;
    DWORD dwLayerMask;
    DWORD dwVisibleMask;
    DWORD dwDamageMask;
  } PIXELFORMATDESCRIPTOR,*PPIXELFORMATDESCRIPTOR,*LPPIXELFORMATDESCRIPTOR;
#define PFD_TYPE_RGBA 0
#define PFD_TYPE_COLORINDEX 1
#define PFD_MAIN_PLANE 0
#define PFD_OVERLAY_PLANE 1
#define PFD_UNDERLAY_PLANE (-1)
#define PFD_DOUBLEBUFFER 0x00000001
#define PFD_STEREO 0x00000002
#define PFD_DRAW_TO_WINDOW 0x00000004
#define PFD_DRAW_TO_BITMAP 0x00000008
#define PFD_SUPPORT_GDI 0x00000010
#define PFD_SUPPORT_OPENGL 0x00000020
#define PFD_GENERIC_FORMAT 0x00000040
#define PFD_NEED_PALETTE 0x00000080
#define PFD_NEED_SYSTEM_PALETTE 0x00000100
#define PFD_SWAP_EXCHANGE 0x00000200
#define PFD_SWAP_COPY 0x00000400
#define PFD_SWAP_LAYER_BUFFERS 0x00000800
#define PFD_GENERIC_ACCELERATED 0x00001000
#define PFD_SUPPORT_DIRECTDRAW 0x00002000
#define PFD_DIRECT3D_ACCELERATED 0x00004000
#define PFD_SUPPORT_COMPOSITION 0x00008000
#define PFD_DEPTH_DONTCARE 0x20000000
#define PFD_DOUBLEBUFFER_DONTCARE 0x40000000
#define PFD_STEREO_DONTCARE 0x80000000
  typedef int (__attribute__((__stdcall__)) *OLDFONTENUMPROCA)(const LOGFONTA *,const TEXTMETRICA *,DWORD,LPARAM);
  typedef int (__attribute__((__stdcall__)) *OLDFONTENUMPROCW)(const LOGFONTW *,const TEXTMETRICW *,DWORD,LPARAM);
#define OLDFONTENUMPROC __MINGW_NAME_AW(OLDFONTENUMPROC)
  typedef OLDFONTENUMPROCA FONTENUMPROCA;
  typedef OLDFONTENUMPROCW FONTENUMPROCW;
  typedef FONTENUMPROCA FONTENUMPROC;
  typedef int (__attribute__((__stdcall__)) *GOBJENUMPROC)(LPVOID,LPARAM);
  typedef void (__attribute__((__stdcall__)) *LINEDDAPROC)(int,int,LPARAM);
#define AddFontResource __MINGW_NAME_AW(AddFontResource)
#define CopyMetaFile __MINGW_NAME_AW(CopyMetaFile)
#define CreateDC __MINGW_NAME_AW(CreateDC)
#define CreateFontIndirect __MINGW_NAME_AW(CreateFontIndirect)
#define CreateFont __MINGW_NAME_AW(CreateFont)
#define CreateIC __MINGW_NAME_AW(CreateIC)
#define CreateMetaFile __MINGW_NAME_AW(CreateMetaFile)
#define CreateScalableFontResource __MINGW_NAME_AW(CreateScalableFontResource)
  __attribute__((dllimport)) int __attribute__((__stdcall__)) AddFontResourceA(LPCSTR);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) AddFontResourceW(LPCWSTR);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AnimatePalette(HPALETTE hPal,UINT iStartIndex,UINT cEntries,const PALETTEENTRY *ppe);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Arc(HDC hdc,int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) BitBlt(HDC hdc,int x,int y,int cx,int cy,HDC hdcSrc,int x1,int y1,DWORD rop);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CancelDC(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Chord(HDC hdc,int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) ChoosePixelFormat(HDC hdc,const PIXELFORMATDESCRIPTOR *ppfd);
  __attribute__((dllimport)) HMETAFILE __attribute__((__stdcall__)) CloseMetaFile(HDC hdc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) CombineRgn(HRGN hrgnDst,HRGN hrgnSrc1,HRGN hrgnSrc2,int iMode);
  __attribute__((dllimport)) HMETAFILE __attribute__((__stdcall__)) CopyMetaFileA(HMETAFILE,LPCSTR);
  __attribute__((dllimport)) HMETAFILE __attribute__((__stdcall__)) CopyMetaFileW(HMETAFILE,LPCWSTR);
  __attribute__((dllimport)) HBITMAP __attribute__((__stdcall__)) CreateBitmap(int nWidth,int nHeight,UINT nPlanes,UINT nBitCount,const void *lpBits);
  __attribute__((dllimport)) HBITMAP __attribute__((__stdcall__)) CreateBitmapIndirect(const BITMAP *pbm);
  __attribute__((dllimport)) HBRUSH __attribute__((__stdcall__)) CreateBrushIndirect(const LOGBRUSH *plbrush);
  __attribute__((dllimport)) HBITMAP __attribute__((__stdcall__)) CreateCompatibleBitmap(HDC hdc,int cx,int cy);
  __attribute__((dllimport)) HBITMAP __attribute__((__stdcall__)) CreateDiscardableBitmap(HDC hdc,int cx,int cy);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) CreateCompatibleDC(HDC hdc);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) CreateDCA(LPCSTR pwszDriver,LPCSTR pwszDevice,LPCSTR pszPort,const DEVMODEA *pdm);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) CreateDCW(LPCWSTR pwszDriver,LPCWSTR pwszDevice,LPCWSTR pszPort,const DEVMODEW *pdm);
  __attribute__((dllimport)) HBITMAP __attribute__((__stdcall__)) CreateDIBitmap(HDC hdc,const BITMAPINFOHEADER *pbmih,DWORD flInit,const void *pjBits,const BITMAPINFO *pbmi,UINT iUsage);
  __attribute__((dllimport)) HBRUSH __attribute__((__stdcall__)) CreateDIBPatternBrush(HGLOBAL h,UINT iUsage);
  __attribute__((dllimport)) HBRUSH __attribute__((__stdcall__)) CreateDIBPatternBrushPt(const void *lpPackedDIB,UINT iUsage);
  __attribute__((dllimport)) HRGN __attribute__((__stdcall__)) CreateEllipticRgn(int x1,int y1,int x2,int y2);
  __attribute__((dllimport)) HRGN __attribute__((__stdcall__)) CreateEllipticRgnIndirect(const RECT *lprect);
  __attribute__((dllimport)) HFONT __attribute__((__stdcall__)) CreateFontIndirectA(const LOGFONTA *lplf);
  __attribute__((dllimport)) HFONT __attribute__((__stdcall__)) CreateFontIndirectW(const LOGFONTW *lplf);
  __attribute__((dllimport)) HFONT __attribute__((__stdcall__)) CreateFontA(int cHeight,int cWidth,int cEscapement,int cOrientation,int cWeight,DWORD bItalic,DWORD bUnderline,DWORD bStrikeOut,DWORD iCharSet,DWORD iOutPrecision,DWORD iClipPrecision,DWORD iQuality,DWORD iPitchAndFamily,LPCSTR pszFaceName);
  __attribute__((dllimport)) HFONT __attribute__((__stdcall__)) CreateFontW(int cHeight,int cWidth,int cEscapement,int cOrientation,int cWeight,DWORD bItalic,DWORD bUnderline,DWORD bStrikeOut,DWORD iCharSet,DWORD iOutPrecision,DWORD iClipPrecision,DWORD iQuality,DWORD iPitchAndFamily,LPCWSTR pszFaceName);
  __attribute__((dllimport)) HBRUSH __attribute__((__stdcall__)) CreateHatchBrush(int iHatch,COLORREF color);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) CreateICA(LPCSTR pszDriver,LPCSTR pszDevice,LPCSTR pszPort,const DEVMODEA *pdm);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) CreateICW(LPCWSTR pszDriver,LPCWSTR pszDevice,LPCWSTR pszPort,const DEVMODEW *pdm);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) CreateMetaFileA(LPCSTR pszFile);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) CreateMetaFileW(LPCWSTR pszFile);
  __attribute__((dllimport)) HPALETTE __attribute__((__stdcall__)) CreatePalette(const LOGPALETTE *plpal);
  __attribute__((dllimport)) HPEN __attribute__((__stdcall__)) CreatePen(int iStyle,int cWidth,COLORREF color);
  __attribute__((dllimport)) HPEN __attribute__((__stdcall__)) CreatePenIndirect(const LOGPEN *plpen);
  __attribute__((dllimport)) HRGN __attribute__((__stdcall__)) CreatePolyPolygonRgn(const POINT *pptl,const INT *pc,int cPoly,int iMode);
  __attribute__((dllimport)) HBRUSH __attribute__((__stdcall__)) CreatePatternBrush(HBITMAP hbm);
  __attribute__((dllimport)) HRGN __attribute__((__stdcall__)) CreateRectRgn(int x1,int y1,int x2,int y2);
  __attribute__((dllimport)) HRGN __attribute__((__stdcall__)) CreateRectRgnIndirect(const RECT *lprect);
  __attribute__((dllimport)) HRGN __attribute__((__stdcall__)) CreateRoundRectRgn(int x1,int y1,int x2,int y2,int w,int h);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateScalableFontResourceA(DWORD fdwHidden,LPCSTR lpszFont,LPCSTR lpszFile,LPCSTR lpszPath);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateScalableFontResourceW(DWORD fdwHidden,LPCWSTR lpszFont,LPCWSTR lpszFile,LPCWSTR lpszPath);
  __attribute__((dllimport)) HBRUSH __attribute__((__stdcall__)) CreateSolidBrush(COLORREF color);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteDC(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteMetaFile(HMETAFILE hmf);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteObject(HGDIOBJ ho);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) DescribePixelFormat(HDC hdc,int iPixelFormat,UINT nBytes,LPPIXELFORMATDESCRIPTOR ppfd);
  typedef UINT (__attribute__((__stdcall__)) *LPFNDEVMODE)(HWND,HMODULE,LPDEVMODE,LPSTR,LPSTR,LPDEVMODE,LPSTR,UINT);
  typedef DWORD (__attribute__((__stdcall__)) *LPFNDEVCAPS)(LPSTR,LPSTR,UINT,LPSTR,LPDEVMODE);
#define DM_UPDATE 1
#define DM_COPY 2
#define DM_PROMPT 4
#define DM_MODIFY 8
#define DM_IN_BUFFER DM_MODIFY
#define DM_IN_PROMPT DM_PROMPT
#define DM_OUT_BUFFER DM_COPY
#define DM_OUT_DEFAULT DM_UPDATE
#define DC_FIELDS 1
#define DC_PAPERS 2
#define DC_PAPERSIZE 3
#define DC_MINEXTENT 4
#define DC_MAXEXTENT 5
#define DC_BINS 6
#define DC_DUPLEX 7
#define DC_SIZE 8
#define DC_EXTRA 9
#define DC_VERSION 10
#define DC_DRIVER 11
#define DC_BINNAMES 12
#define DC_ENUMRESOLUTIONS 13
#define DC_FILEDEPENDENCIES 14
#define DC_TRUETYPE 15
#define DC_PAPERNAMES 16
#define DC_ORIENTATION 17
#define DC_COPIES 18
#define DC_BINADJUST 19
#define DC_EMF_COMPLIANT 20
#define DC_DATATYPE_PRODUCED 21
#define DC_COLLATE 22
#define DC_MANUFACTURER 23
#define DC_MODEL 24
#define DC_PERSONALITY 25
#define DC_PRINTRATE 26
#define DC_PRINTRATEUNIT 27
#define PRINTRATEUNIT_PPM 1
#define PRINTRATEUNIT_CPS 2
#define PRINTRATEUNIT_LPM 3
#define PRINTRATEUNIT_IPM 4
#define DC_PRINTERMEM 28
#define DC_MEDIAREADY 29
#define DC_STAPLE 30
#define DC_PRINTRATEPPM 31
#define DC_COLORDEVICE 32
#define DC_NUP 33
#define DC_MEDIATYPENAMES 34
#define DC_MEDIATYPES 35
#define DCTT_BITMAP __MSABI_LONG(0x0000001)
#define DCTT_DOWNLOAD __MSABI_LONG(0x0000002)
#define DCTT_SUBDEV __MSABI_LONG(0x0000004)
#define DCTT_DOWNLOAD_OUTLINE __MSABI_LONG(0x0000008)
#define DCBA_FACEUPNONE 0x0000
#define DCBA_FACEUPCENTER 0x0001
#define DCBA_FACEUPLEFT 0x0002
#define DCBA_FACEUPRIGHT 0x0003
#define DCBA_FACEDOWNNONE 0x0100
#define DCBA_FACEDOWNCENTER 0x0101
#define DCBA_FACEDOWNLEFT 0x0102
#define DCBA_FACEDOWNRIGHT 0x0103
#define DeviceCapabilities __MINGW_NAME_AW(DeviceCapabilities)
#define EnumFontFamiliesEx __MINGW_NAME_AW(EnumFontFamiliesEx)
#define EnumFontFamilies __MINGW_NAME_AW(EnumFontFamilies)
#define EnumFonts __MINGW_NAME_AW(EnumFonts)
#define GetCharWidth __MINGW_NAME_AW(GetCharWidth)
#define GetCharWidth32 __MINGW_NAME_AW(GetCharWidth32)
#define GetCharWidthFloat __MINGW_NAME_AW(GetCharWidthFloat)
#define GetCharABCWidths __MINGW_NAME_AW(GetCharABCWidths)
#define GetCharABCWidthsFloat __MINGW_NAME_AW(GetCharABCWidthsFloat)
#define GetGlyphOutline __MINGW_NAME_AW(GetGlyphOutline)
#define GetMetaFile __MINGW_NAME_AW(GetMetaFile)
  __attribute__((dllimport)) int __attribute__((__stdcall__)) DeviceCapabilitiesA(LPCSTR pDevice,LPCSTR pPort,WORD fwCapability,LPSTR pOutput,const DEVMODEA *pDevMode);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) DeviceCapabilitiesW(LPCWSTR pDevice,LPCWSTR pPort,WORD fwCapability,LPWSTR pOutput,const DEVMODEW *pDevMode);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) DrawEscape(HDC hdc,int iEscape,int cjIn,LPCSTR lpIn);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Ellipse(HDC hdc,int left,int top,int right,int bottom);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EnumFontFamiliesExA(HDC hdc,LPLOGFONTA lpLogfont,FONTENUMPROCA lpProc,LPARAM lParam,DWORD dwFlags);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EnumFontFamiliesExW(HDC hdc,LPLOGFONTW lpLogfont,FONTENUMPROCW lpProc,LPARAM lParam,DWORD dwFlags);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EnumFontFamiliesA(HDC hdc,LPCSTR lpLogfont,FONTENUMPROCA lpProc,LPARAM lParam);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EnumFontFamiliesW(HDC hdc,LPCWSTR lpLogfont,FONTENUMPROCW lpProc,LPARAM lParam);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EnumFontsA(HDC hdc,LPCSTR lpLogfont,FONTENUMPROCA lpProc,LPARAM lParam);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EnumFontsW(HDC hdc,LPCWSTR lpLogfont,FONTENUMPROCW lpProc,LPARAM lParam);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EnumObjects(HDC hdc,int nType,GOBJENUMPROC lpFunc,LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EqualRgn(HRGN hrgn1,HRGN hrgn2);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) Escape(HDC hdc,int iEscape,int cjIn,LPCSTR pvIn,LPVOID pvOut);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) ExtEscape(HDC hdc,int iEscape,int cjInput,LPCSTR lpInData,int cjOutput,LPSTR lpOutData);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) ExcludeClipRect(HDC hdc,int left,int top,int right,int bottom);
  __attribute__((dllimport)) HRGN __attribute__((__stdcall__)) ExtCreateRegion(const XFORM *lpx,DWORD nCount,const RGNDATA *lpData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ExtFloodFill(HDC hdc,int x,int y,COLORREF color,UINT type);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FillRgn(HDC hdc,HRGN hrgn,HBRUSH hbr);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FloodFill(HDC hdc,int x,int y,COLORREF color);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FrameRgn(HDC hdc,HRGN hrgn,HBRUSH hbr,int w,int h);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetROP2(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetAspectRatioFilterEx(HDC hdc,LPSIZE lpsize);
  __attribute__((dllimport)) COLORREF __attribute__((__stdcall__)) GetBkColor(HDC hdc);
  __attribute__((dllimport)) COLORREF __attribute__((__stdcall__)) GetDCBrushColor(HDC hdc);
  __attribute__((dllimport)) COLORREF __attribute__((__stdcall__)) GetDCPenColor(HDC hdc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetBkMode(HDC hdc);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) GetBitmapBits(HBITMAP hbit,LONG cb,LPVOID lpvBits);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetBitmapDimensionEx(HBITMAP hbit,LPSIZE lpsize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetBoundsRect(HDC hdc,LPRECT lprect,UINT flags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetBrushOrgEx(HDC hdc,LPPOINT lppt);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCharWidthA(HDC hdc,UINT iFirst,UINT iLast,LPINT lpBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCharWidthW(HDC hdc,UINT iFirst,UINT iLast,LPINT lpBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCharWidth32A(HDC hdc,UINT iFirst,UINT iLast,LPINT lpBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCharWidth32W(HDC hdc,UINT iFirst,UINT iLast,LPINT lpBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCharWidthFloatA(HDC hdc,UINT iFirst,UINT iLast,PFLOAT lpBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCharWidthFloatW(HDC hdc,UINT iFirst,UINT iLast,PFLOAT lpBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCharABCWidthsA(HDC hdc,UINT wFirst,UINT wLast,LPABC lpABC);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCharABCWidthsW(HDC hdc,UINT wFirst,UINT wLast,LPABC lpABC);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCharABCWidthsFloatA(HDC hdc,UINT iFirst,UINT iLast,LPABCFLOAT lpABC);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCharABCWidthsFloatW(HDC hdc,UINT iFirst,UINT iLast,LPABCFLOAT lpABC);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetClipBox(HDC hdc,LPRECT lprect);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetClipRgn(HDC hdc,HRGN hrgn);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetMetaRgn(HDC hdc,HRGN hrgn);
  __attribute__((dllimport)) HGDIOBJ __attribute__((__stdcall__)) GetCurrentObject(HDC hdc,UINT type);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCurrentPositionEx(HDC hdc,LPPOINT lppt);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetDeviceCaps(HDC hdc,int index);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetDIBits(HDC hdc,HBITMAP hbm,UINT start,UINT cLines,LPVOID lpvBits,LPBITMAPINFO lpbmi,UINT usage);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFontData (HDC hdc,DWORD dwTable,DWORD dwOffset,PVOID pvBuffer,DWORD cjBuffer);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetGlyphOutlineA(HDC hdc,UINT uChar,UINT fuFormat,LPGLYPHMETRICS lpgm,DWORD cjBuffer,LPVOID pvBuffer,const MAT2 *lpmat2);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetGlyphOutlineW(HDC hdc,UINT uChar,UINT fuFormat,LPGLYPHMETRICS lpgm,DWORD cjBuffer,LPVOID pvBuffer,const MAT2 *lpmat2);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetGraphicsMode(HDC hdc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetMapMode(HDC hdc);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetMetaFileBitsEx(HMETAFILE hMF,UINT cbBuffer,LPVOID lpData);
  __attribute__((dllimport)) HMETAFILE __attribute__((__stdcall__)) GetMetaFileA(LPCSTR lpName);
  __attribute__((dllimport)) HMETAFILE __attribute__((__stdcall__)) GetMetaFileW(LPCWSTR lpName);
  __attribute__((dllimport)) COLORREF __attribute__((__stdcall__)) GetNearestColor(HDC hdc,COLORREF color);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetNearestPaletteIndex(HPALETTE h,COLORREF color);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetObjectType(HGDIOBJ h);
#define GetOutlineTextMetrics __MINGW_NAME_AW(GetOutlineTextMetrics)
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetOutlineTextMetricsA(HDC hdc,UINT cjCopy,LPOUTLINETEXTMETRICA potm);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetOutlineTextMetricsW(HDC hdc,UINT cjCopy,LPOUTLINETEXTMETRICW potm);
#define GetTextExtentPoint __MINGW_NAME_AW(GetTextExtentPoint)
#define GetTextExtentPoint32 __MINGW_NAME_AW(GetTextExtentPoint32)
#define GetTextExtentExPoint __MINGW_NAME_AW(GetTextExtentExPoint)
#define GetCharacterPlacement __MINGW_NAME_AW(GetCharacterPlacement)
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetPaletteEntries(HPALETTE hpal,UINT iStart,UINT cEntries,LPPALETTEENTRY pPalEntries);
  __attribute__((dllimport)) COLORREF __attribute__((__stdcall__)) GetPixel(HDC hdc,int x,int y);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetPixelFormat(HDC hdc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetPolyFillMode(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetRasterizerCaps(LPRASTERIZER_STATUS lpraststat,UINT cjBytes);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetRandomRgn (HDC hdc,HRGN hrgn,INT i);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetRegionData(HRGN hrgn,DWORD nCount,LPRGNDATA lpRgnData);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetRgnBox(HRGN hrgn,LPRECT lprc);
  __attribute__((dllimport)) HGDIOBJ __attribute__((__stdcall__)) GetStockObject(int i);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetStretchBltMode(HDC hdc);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetSystemPaletteEntries(HDC hdc,UINT iStart,UINT cEntries,LPPALETTEENTRY pPalEntries);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetSystemPaletteUse(HDC hdc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetTextCharacterExtra(HDC hdc);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetTextAlign(HDC hdc);
  __attribute__((dllimport)) COLORREF __attribute__((__stdcall__)) GetTextColor(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetTextExtentPointA(HDC hdc,LPCSTR lpString,int c,LPSIZE lpsz);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetTextExtentPointW(HDC hdc,LPCWSTR lpString,int c,LPSIZE lpsz);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetTextExtentPoint32A(HDC hdc,LPCSTR lpString,int c,LPSIZE psizl);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetTextExtentPoint32W(HDC hdc,LPCWSTR lpString,int c,LPSIZE psizl);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetTextExtentExPointA(HDC hdc,LPCSTR lpszString,int cchString,int nMaxExtent,LPINT lpnFit,LPINT lpnDx,LPSIZE lpSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetTextExtentExPointW(HDC hdc,LPCWSTR lpszString,int cchString,int nMaxExtent,LPINT lpnFit,LPINT lpnDx,LPSIZE lpSize);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetTextCharset(HDC hdc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetTextCharsetInfo(HDC hdc,LPFONTSIGNATURE lpSig,DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TranslateCharsetInfo(DWORD *lpSrc,LPCHARSETINFO lpCs,DWORD dwFlags);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFontLanguageInfo(HDC hdc);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetCharacterPlacementA(HDC hdc,LPCSTR lpString,int nCount,int nMexExtent,LPGCP_RESULTSA lpResults,DWORD dwFlags);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetCharacterPlacementW(HDC hdc,LPCWSTR lpString,int nCount,int nMexExtent,LPGCP_RESULTSW lpResults,DWORD dwFlags);
  typedef struct tagWCRANGE {
    WCHAR wcLow;
    USHORT cGlyphs;
  } WCRANGE,*PWCRANGE,*LPWCRANGE;
  typedef struct tagGLYPHSET {
    DWORD cbThis;
    DWORD flAccel;
    DWORD cGlyphsSupported;
    DWORD cRanges;
    WCRANGE ranges[1];
  } GLYPHSET,*PGLYPHSET,*LPGLYPHSET;
#define GS_8BIT_INDICES 0x00000001
#define GGI_MARK_NONEXISTING_GLYPHS 0X0001
#define GetGlyphIndices __MINGW_NAME_AW(GetGlyphIndices)
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetFontUnicodeRanges(HDC hdc,LPGLYPHSET lpgs);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetGlyphIndicesA(HDC hdc,LPCSTR lpstr,int c,LPWORD pgi,DWORD fl);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetGlyphIndicesW(HDC hdc,LPCWSTR lpstr,int c,LPWORD pgi,DWORD fl);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetTextExtentPointI(HDC hdc,LPWORD pgiIn,int cgi,LPSIZE psize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetTextExtentExPointI (HDC hdc,LPWORD lpwszString,int cwchString,int nMaxExtent,LPINT lpnFit,LPINT lpnDx,LPSIZE lpSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCharWidthI(HDC hdc,UINT giFirst,UINT cgi,LPWORD pgi,LPINT piWidths);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCharABCWidthsI(HDC hdc,UINT giFirst,UINT cgi,LPWORD pgi,LPABC pabc);
#define STAMP_DESIGNVECTOR (0x8000000 + 'd' + ('v' << 8))
#define STAMP_AXESLIST (0x8000000 + 'a' + ('l' << 8))
#define STAMP_TRUETYPE_VARIATION (0x8000000 + 't' + ('v' << 8))
#define STAMP_CFF2 (0x8000000 + 'c' + ('v' << 8))
#define MM_MAX_NUMAXES 16
  typedef struct tagDESIGNVECTOR {
    DWORD dvReserved;
    DWORD dvNumAxes;
    LONG dvValues[16];
  } DESIGNVECTOR,*PDESIGNVECTOR,*LPDESIGNVECTOR;
#define AddFontResourceEx __MINGW_NAME_AW(AddFontResourceEx)
#define RemoveFontResourceEx __MINGW_NAME_AW(RemoveFontResourceEx)
  __attribute__((dllimport)) int __attribute__((__stdcall__)) AddFontResourceExA(LPCSTR name,DWORD fl,PVOID res);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) AddFontResourceExW(LPCWSTR name,DWORD fl,PVOID res);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RemoveFontResourceExA(LPCSTR name,DWORD fl,PVOID pdv);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RemoveFontResourceExW(LPCWSTR name,DWORD fl,PVOID pdv);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) AddFontMemResourceEx(PVOID pFileView,DWORD cjSize,PVOID pvResrved,DWORD *pNumFonts);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RemoveFontMemResourceEx(HANDLE h);
#define FR_PRIVATE 0x10
#define FR_NOT_ENUM 0x20
#define MM_MAX_AXES_NAMELEN 16
  typedef struct tagAXISINFOA {
    LONG axMinValue;
    LONG axMaxValue;
    BYTE axAxisName[16];
  } AXISINFOA,*PAXISINFOA,*LPAXISINFOA;
  typedef struct tagAXISINFOW {
    LONG axMinValue;
    LONG axMaxValue;
    WCHAR axAxisName[16];
  } AXISINFOW,*PAXISINFOW,*LPAXISINFOW;
  typedef AXISINFOA AXISINFO;
  typedef PAXISINFOA PAXISINFO;
  typedef LPAXISINFOA LPAXISINFO;
  typedef struct tagAXESLISTA {
    DWORD axlReserved;
    DWORD axlNumAxes;
    AXISINFOA axlAxisInfo[16];
  } AXESLISTA,*PAXESLISTA,*LPAXESLISTA;
  typedef struct tagAXESLISTW {
    DWORD axlReserved;
    DWORD axlNumAxes;
    AXISINFOW axlAxisInfo[16];
  } AXESLISTW,*PAXESLISTW,*LPAXESLISTW;
  typedef AXESLISTA AXESLIST;
  typedef PAXESLISTA PAXESLIST;
  typedef LPAXESLISTA LPAXESLIST;
  typedef struct tagENUMLOGFONTEXDVA {
    ENUMLOGFONTEXA elfEnumLogfontEx;
    DESIGNVECTOR elfDesignVector;
  } ENUMLOGFONTEXDVA,*PENUMLOGFONTEXDVA,*LPENUMLOGFONTEXDVA;
  typedef struct tagENUMLOGFONTEXDVW {
    ENUMLOGFONTEXW elfEnumLogfontEx;
    DESIGNVECTOR elfDesignVector;
  } ENUMLOGFONTEXDVW,*PENUMLOGFONTEXDVW,*LPENUMLOGFONTEXDVW;
  typedef ENUMLOGFONTEXDVA ENUMLOGFONTEXDV;
  typedef PENUMLOGFONTEXDVA PENUMLOGFONTEXDV;
  typedef LPENUMLOGFONTEXDVA LPENUMLOGFONTEXDV;
#define CreateFontIndirectEx __MINGW_NAME_AW(CreateFontIndirectEx)
  __attribute__((dllimport)) HFONT __attribute__((__stdcall__)) CreateFontIndirectExA(const ENUMLOGFONTEXDVA *);
  __attribute__((dllimport)) HFONT __attribute__((__stdcall__)) CreateFontIndirectExW(const ENUMLOGFONTEXDVW *);
  typedef struct tagENUMTEXTMETRICA {
    NEWTEXTMETRICEXA etmNewTextMetricEx;
    AXESLISTA etmAxesList;
  } ENUMTEXTMETRICA,*PENUMTEXTMETRICA,*LPENUMTEXTMETRICA;
  typedef struct tagENUMTEXTMETRICW
  {
    NEWTEXTMETRICEXW etmNewTextMetricEx;
    AXESLISTW etmAxesList;
  } ENUMTEXTMETRICW,*PENUMTEXTMETRICW,*LPENUMTEXTMETRICW;
  typedef ENUMTEXTMETRICA ENUMTEXTMETRIC;
  typedef PENUMTEXTMETRICA PENUMTEXTMETRIC;
  typedef LPENUMTEXTMETRICA LPENUMTEXTMETRIC;
#define ResetDC __MINGW_NAME_AW(ResetDC)
#define RemoveFontResource __MINGW_NAME_AW(RemoveFontResource)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetViewportExtEx(HDC hdc,LPSIZE lpsize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetViewportOrgEx(HDC hdc,LPPOINT lppoint);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetWindowExtEx(HDC hdc,LPSIZE lpsize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetWindowOrgEx(HDC hdc,LPPOINT lppoint);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) IntersectClipRect(HDC hdc,int left,int top,int right,int bottom);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InvertRgn(HDC hdc,HRGN hrgn);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LineDDA(int xStart,int yStart,int xEnd,int yEnd,LINEDDAPROC lpProc,LPARAM data);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LineTo(HDC hdc,int x,int y);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MaskBlt(HDC hdcDest,int xDest,int yDest,int width,int height,HDC hdcSrc,int xSrc,int ySrc,HBITMAP hbmMask,int xMask,int yMask,DWORD rop);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PlgBlt(HDC hdcDest,const POINT *lpPoint,HDC hdcSrc,int xSrc,int ySrc,int width,int height,HBITMAP hbmMask,int xMask,int yMask);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) OffsetClipRgn(HDC hdc,int x,int y);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) OffsetRgn(HRGN hrgn,int x,int y);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PatBlt(HDC hdc,int x,int y,int w,int h,DWORD rop);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Pie(HDC hdc,int left,int top,int right,int bottom,int xr1,int yr1,int xr2,int yr2);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PlayMetaFile(HDC hdc,HMETAFILE hmf);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PaintRgn(HDC hdc,HRGN hrgn);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PolyPolygon(HDC hdc,const POINT *apt,const INT *asz,int csz);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PtInRegion(HRGN hrgn,int x,int y);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PtVisible(HDC hdc,int x,int y);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RectInRegion(HRGN hrgn,const RECT *lprect);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RectVisible(HDC hdc,const RECT *lprect);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Rectangle(HDC hdc,int left,int top,int right,int bottom);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RestoreDC(HDC hdc,int nSavedDC);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) ResetDCA(HDC hdc,const DEVMODEA *lpdm);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) ResetDCW(HDC hdc,const DEVMODEW *lpdm);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) RealizePalette(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RemoveFontResourceA(LPCSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RemoveFontResourceW(LPCWSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RoundRect(HDC hdc,int left,int top,int right,int bottom,int width,int height);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ResizePalette(HPALETTE hpal,UINT n);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SaveDC(HDC hdc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SelectClipRgn(HDC hdc,HRGN hrgn);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) ExtSelectClipRgn(HDC hdc,HRGN hrgn,int mode);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetMetaRgn(HDC hdc);
  __attribute__((dllimport)) HGDIOBJ __attribute__((__stdcall__)) SelectObject(HDC hdc,HGDIOBJ h);
  __attribute__((dllimport)) HPALETTE __attribute__((__stdcall__)) SelectPalette(HDC hdc,HPALETTE hPal,WINBOOL bForceBkgd);
  __attribute__((dllimport)) COLORREF __attribute__((__stdcall__)) SetBkColor(HDC hdc,COLORREF color);
  __attribute__((dllimport)) COLORREF __attribute__((__stdcall__)) SetDCBrushColor(HDC hdc,COLORREF color);
  __attribute__((dllimport)) COLORREF __attribute__((__stdcall__)) SetDCPenColor(HDC hdc,COLORREF color);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetBkMode(HDC hdc,int mode);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) SetBitmapBits(HBITMAP hbm,DWORD cb,const void *pvBits);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) SetBoundsRect(HDC hdc,const RECT *lprect,UINT flags);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetDIBits(HDC hdc,HBITMAP hbm,UINT start,UINT cLines,const void *lpBits,const BITMAPINFO *lpbmi,UINT ColorUse);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetDIBitsToDevice(HDC hdc,int xDest,int yDest,DWORD w,DWORD h,int xSrc,int ySrc,UINT StartScan,UINT cLines,const void *lpvBits,const BITMAPINFO *lpbmi,UINT ColorUse);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SetMapperFlags(HDC hdc,DWORD flags);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetGraphicsMode(HDC hdc,int iMode);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetMapMode(HDC hdc,int iMode);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SetLayout(HDC hdc,DWORD l);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetLayout(HDC hdc);
  __attribute__((dllimport)) HMETAFILE __attribute__((__stdcall__)) SetMetaFileBitsEx(UINT cbBuffer,const BYTE *lpData);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) SetPaletteEntries(HPALETTE hpal,UINT iStart,UINT cEntries,const PALETTEENTRY *pPalEntries);
  __attribute__((dllimport)) COLORREF __attribute__((__stdcall__)) SetPixel(HDC hdc,int x,int y,COLORREF color);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetPixelV(HDC hdc,int x,int y,COLORREF color);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetPixelFormat(HDC hdc,int format,const PIXELFORMATDESCRIPTOR *ppfd);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetPolyFillMode(HDC hdc,int mode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) StretchBlt(HDC hdcDest,int xDest,int yDest,int wDest,int hDest,HDC hdcSrc,int xSrc,int ySrc,int wSrc,int hSrc,DWORD rop);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetRectRgn(HRGN hrgn,int left,int top,int right,int bottom);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) StretchDIBits(HDC hdc,int xDest,int yDest,int DestWidth,int DestHeight,int xSrc,int ySrc,int SrcWidth,int SrcHeight,const void *lpBits,const BITMAPINFO *lpbmi,UINT iUsage,DWORD rop);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetROP2(HDC hdc,int rop2);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetStretchBltMode(HDC hdc,int mode);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) SetSystemPaletteUse(HDC hdc,UINT use);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetTextCharacterExtra(HDC hdc,int extra);
  __attribute__((dllimport)) COLORREF __attribute__((__stdcall__)) SetTextColor(HDC hdc,COLORREF color);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) SetTextAlign(HDC hdc,UINT align);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetTextJustification(HDC hdc,int extra,int count);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UpdateColors(HDC hdc);
  typedef USHORT COLOR16;
  typedef struct _TRIVERTEX {
    LONG x;
    LONG y;
    COLOR16 Red;
    COLOR16 Green;
    COLOR16 Blue;
    COLOR16 Alpha;
  } TRIVERTEX,*PTRIVERTEX,*LPTRIVERTEX;
  typedef struct _GRADIENT_TRIANGLE {
    ULONG Vertex1;
    ULONG Vertex2;
    ULONG Vertex3;
  } GRADIENT_TRIANGLE,*PGRADIENT_TRIANGLE,*LPGRADIENT_TRIANGLE;
  typedef struct _GRADIENT_RECT {
    ULONG UpperLeft;
    ULONG LowerRight;
  } GRADIENT_RECT,*PGRADIENT_RECT,*LPGRADIENT_RECT;
  typedef struct _BLENDFUNCTION {
    BYTE BlendOp;
    BYTE BlendFlags;
    BYTE SourceConstantAlpha;
    BYTE AlphaFormat;
  } BLENDFUNCTION,*PBLENDFUNCTION;
#define AC_SRC_OVER 0x00
#define AC_SRC_ALPHA 0x01
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AlphaBlend(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,BLENDFUNCTION ftn);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GdiAlphaBlend(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,BLENDFUNCTION ftn);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TransparentBlt(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,UINT crTransparent);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GdiTransparentBlt(HDC hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,HDC hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,UINT crTransparent);
#define GRADIENT_FILL_RECT_H 0x00000000
#define GRADIENT_FILL_RECT_V 0x00000001
#define GRADIENT_FILL_TRIANGLE 0x00000002
#define GRADIENT_FILL_OP_FLAG 0x000000ff
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GradientFill(HDC hdc,PTRIVERTEX pVertex,ULONG nVertex,PVOID pMesh,ULONG nMesh,ULONG ulMode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GdiGradientFill(HDC hdc,PTRIVERTEX pVertex,ULONG nVertex,PVOID pMesh,ULONG nMesh,ULONG ulMode);
#define CopyEnhMetaFile __MINGW_NAME_AW(CopyEnhMetaFile)
#define CreateEnhMetaFile __MINGW_NAME_AW(CreateEnhMetaFile)
#define GetEnhMetaFile __MINGW_NAME_AW(GetEnhMetaFile)
#define GetEnhMetaFileDescription __MINGW_NAME_AW(GetEnhMetaFileDescription)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PlayMetaFileRecord(HDC hdc,LPHANDLETABLE lpHandleTable,LPMETARECORD lpMR,UINT noObjs);
  typedef int (__attribute__((__stdcall__)) *MFENUMPROC)(HDC hdc,HANDLETABLE *lpht,METARECORD *lpMR,int nObj,LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumMetaFile(HDC hdc,HMETAFILE hmf,MFENUMPROC lpProc,LPARAM lParam);
  typedef int (__attribute__((__stdcall__)) *ENHMFENUMPROC)(HDC hdc,HANDLETABLE *lpht,const ENHMETARECORD *lpmr,int hHandles,LPARAM data);
  __attribute__((dllimport)) HENHMETAFILE __attribute__((__stdcall__)) CloseEnhMetaFile(HDC hdc);
  __attribute__((dllimport)) HENHMETAFILE __attribute__((__stdcall__)) CopyEnhMetaFileA(HENHMETAFILE hEnh,LPCSTR lpFileName);
  __attribute__((dllimport)) HENHMETAFILE __attribute__((__stdcall__)) CopyEnhMetaFileW(HENHMETAFILE hEnh,LPCWSTR lpFileName);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) CreateEnhMetaFileA(HDC hdc,LPCSTR lpFilename,const RECT *lprc,LPCSTR lpDesc);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) CreateEnhMetaFileW(HDC hdc,LPCWSTR lpFilename,const RECT *lprc,LPCWSTR lpDesc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteEnhMetaFile(HENHMETAFILE hmf);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumEnhMetaFile(HDC hdc,HENHMETAFILE hmf,ENHMFENUMPROC lpProc,LPVOID lpParam,const RECT *lpRect);
  __attribute__((dllimport)) HENHMETAFILE __attribute__((__stdcall__)) GetEnhMetaFileA(LPCSTR lpName);
  __attribute__((dllimport)) HENHMETAFILE __attribute__((__stdcall__)) GetEnhMetaFileW(LPCWSTR lpName);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetEnhMetaFileBits(HENHMETAFILE hEMF,UINT nSize,LPBYTE lpData);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetEnhMetaFileDescriptionA(HENHMETAFILE hemf,UINT cchBuffer,LPSTR lpDescription);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetEnhMetaFileDescriptionW(HENHMETAFILE hemf,UINT cchBuffer,LPWSTR lpDescription);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetEnhMetaFileHeader(HENHMETAFILE hemf,UINT nSize,LPENHMETAHEADER lpEnhMetaHeader);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetEnhMetaFilePaletteEntries(HENHMETAFILE hemf,UINT nNumEntries,LPPALETTEENTRY lpPaletteEntries);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetEnhMetaFilePixelFormat(HENHMETAFILE hemf,UINT cbBuffer,PIXELFORMATDESCRIPTOR *ppfd);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetWinMetaFileBits(HENHMETAFILE hemf,UINT cbData16,LPBYTE pData16,INT iMapMode,HDC hdcRef);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PlayEnhMetaFile(HDC hdc,HENHMETAFILE hmf,const RECT *lprect);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PlayEnhMetaFileRecord(HDC hdc,LPHANDLETABLE pht,const ENHMETARECORD *pmr,UINT cht);
  __attribute__((dllimport)) HENHMETAFILE __attribute__((__stdcall__)) SetEnhMetaFileBits(UINT nSize,const BYTE *pb);
  __attribute__((dllimport)) HENHMETAFILE __attribute__((__stdcall__)) SetWinMetaFileBits(UINT nSize,const BYTE *lpMeta16Data,HDC hdcRef,const METAFILEPICT *lpMFP);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GdiComment(HDC hdc,UINT nSize,const BYTE *lpData);
#define GetTextMetrics __MINGW_NAME_AW(GetTextMetrics)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetTextMetricsA(HDC hdc,LPTEXTMETRICA lptm);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetTextMetricsW(HDC hdc,LPTEXTMETRICW lptm);
  typedef struct tagDIBSECTION {
    BITMAP dsBm;
    BITMAPINFOHEADER dsBmih;
    DWORD dsBitfields[3];
    HANDLE dshSection;
    DWORD dsOffset;
  } DIBSECTION,*LPDIBSECTION,*PDIBSECTION;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AngleArc(HDC hdc,int x,int y,DWORD r,FLOAT StartAngle,FLOAT SweepAngle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PolyPolyline(HDC hdc,const POINT *apt,const DWORD *asz,DWORD csz);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetWorldTransform(HDC hdc,LPXFORM lpxf);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetWorldTransform(HDC hdc,const XFORM *lpxf);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ModifyWorldTransform(HDC hdc,const XFORM *lpxf,DWORD mode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CombineTransform(LPXFORM lpxfOut,const XFORM *lpxf1,const XFORM *lpxf2);
  __attribute__((dllimport)) HBITMAP __attribute__((__stdcall__)) CreateDIBSection(HDC hdc,const BITMAPINFO *lpbmi,UINT usage,void **ppvBits,HANDLE hSection,DWORD offset);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetDIBColorTable(HDC hdc,UINT iStart,UINT cEntries,RGBQUAD *prgbq);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) SetDIBColorTable(HDC hdc,UINT iStart,UINT cEntries,const RGBQUAD *prgbq);
#define GDI_WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8)
#define GDI_DIBWIDTHBYTES(bi) (DWORD)GDI_WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount)
#define GDI__DIBSIZE(bi) (GDI_DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight)
#define GDI_DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(GDI__DIBSIZE(bi)) : GDI__DIBSIZE(bi))
#define CA_NEGATIVE 0x0001
#define CA_LOG_FILTER 0x0002
#define ILLUMINANT_DEVICE_DEFAULT 0
#define ILLUMINANT_A 1
#define ILLUMINANT_B 2
#define ILLUMINANT_C 3
#define ILLUMINANT_D50 4
#define ILLUMINANT_D55 5
#define ILLUMINANT_D65 6
#define ILLUMINANT_D75 7
#define ILLUMINANT_F2 8
#define ILLUMINANT_MAX_INDEX ILLUMINANT_F2
#define ILLUMINANT_TUNGSTEN ILLUMINANT_A
#define ILLUMINANT_DAYLIGHT ILLUMINANT_C
#define ILLUMINANT_FLUORESCENT ILLUMINANT_F2
#define ILLUMINANT_NTSC ILLUMINANT_C
#define RGB_GAMMA_MIN (WORD)02500
#define RGB_GAMMA_MAX (WORD)65000
#define REFERENCE_WHITE_MIN (WORD)6000
#define REFERENCE_WHITE_MAX (WORD)10000
#define REFERENCE_BLACK_MIN (WORD)0
#define REFERENCE_BLACK_MAX (WORD)4000
#define COLOR_ADJ_MIN (SHORT)-100
#define COLOR_ADJ_MAX (SHORT)100
  typedef struct tagCOLORADJUSTMENT {
    WORD caSize;
    WORD caFlags;
    WORD caIlluminantIndex;
    WORD caRedGamma;
    WORD caGreenGamma;
    WORD caBlueGamma;
    WORD caReferenceBlack;
    WORD caReferenceWhite;
    SHORT caContrast;
    SHORT caBrightness;
    SHORT caColorfulness;
    SHORT caRedGreenTint;
  } COLORADJUSTMENT,*PCOLORADJUSTMENT,*LPCOLORADJUSTMENT;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetColorAdjustment(HDC hdc,const COLORADJUSTMENT *lpca);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetColorAdjustment(HDC hdc,LPCOLORADJUSTMENT lpca);
  __attribute__((dllimport)) HPALETTE __attribute__((__stdcall__)) CreateHalftonePalette(HDC hdc);
  typedef WINBOOL (__attribute__((__stdcall__)) *ABORTPROC)(HDC,int);
  typedef struct _DOCINFOA {
    int cbSize;
    LPCSTR lpszDocName;
    LPCSTR lpszOutput;
    LPCSTR lpszDatatype;
    DWORD fwType;
  } DOCINFOA,*LPDOCINFOA;
  typedef struct _DOCINFOW {
    int cbSize;
    LPCWSTR lpszDocName;
    LPCWSTR lpszOutput;
    LPCWSTR lpszDatatype;
    DWORD fwType;
  } DOCINFOW,*LPDOCINFOW;
  typedef DOCINFOA DOCINFO;
  typedef LPDOCINFOA LPDOCINFO;
#define DI_APPBANDING 0x00000001
#define DI_ROPS_READ_DESTINATION 0x00000002
#define StartDoc __MINGW_NAME_AW(StartDoc)
#define GetObject __MINGW_NAME_AW(GetObject)
#define TextOut __MINGW_NAME_AW(TextOut)
#define ExtTextOut __MINGW_NAME_AW(ExtTextOut)
#define PolyTextOut __MINGW_NAME_AW(PolyTextOut)
#define GetTextFace __MINGW_NAME_AW(GetTextFace)
  __attribute__((dllimport)) int __attribute__((__stdcall__)) StartDocA(HDC hdc,const DOCINFOA *lpdi);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) StartDocW(HDC hdc,const DOCINFOW *lpdi);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EndDoc(HDC hdc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) StartPage(HDC hdc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EndPage(HDC hdc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) AbortDoc(HDC hdc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetAbortProc(HDC hdc,ABORTPROC lpProc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AbortPath(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ArcTo(HDC hdc,int left,int top,int right,int bottom,int xr1,int yr1,int xr2,int yr2);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) BeginPath(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CloseFigure(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EndPath(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FillPath(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FlattenPath(HDC hdc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetPath(HDC hdc,LPPOINT apt,LPBYTE aj,int cpt);
  __attribute__((dllimport)) HRGN __attribute__((__stdcall__)) PathToRegion(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PolyDraw(HDC hdc,const POINT *apt,const BYTE *aj,int cpt);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SelectClipPath(HDC hdc,int mode);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetArcDirection(HDC hdc,int dir);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetMiterLimit(HDC hdc,FLOAT limit,PFLOAT old);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) StrokeAndFillPath(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) StrokePath(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WidenPath(HDC hdc);
  __attribute__((dllimport)) HPEN __attribute__((__stdcall__)) ExtCreatePen(DWORD iPenStyle,DWORD cWidth,const LOGBRUSH *plbrush,DWORD cStyle,const DWORD *pstyle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetMiterLimit(HDC hdc,PFLOAT plimit);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetArcDirection(HDC hdc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetObjectA(HANDLE h,int c,LPVOID pv);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetObjectW(HANDLE h,int c,LPVOID pv);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MoveToEx(HDC hdc,int x,int y,LPPOINT lppt);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TextOutA(HDC hdc,int x,int y,LPCSTR lpString,int c);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TextOutW(HDC hdc,int x,int y,LPCWSTR lpString,int c);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ExtTextOutA(HDC hdc,int x,int y,UINT options,const RECT *lprect,LPCSTR lpString,UINT c,const INT *lpDx);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ExtTextOutW(HDC hdc,int x,int y,UINT options,const RECT *lprect,LPCWSTR lpString,UINT c,const INT *lpDx);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PolyTextOutA(HDC hdc,const POLYTEXTA *ppt,int nstrings);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PolyTextOutW(HDC hdc,const POLYTEXTW *ppt,int nstrings);
  __attribute__((dllimport)) HRGN __attribute__((__stdcall__)) CreatePolygonRgn(const POINT *pptl,int cPoint,int iMode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DPtoLP(HDC hdc,LPPOINT lppt,int c);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LPtoDP(HDC hdc,LPPOINT lppt,int c);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Polygon(HDC hdc,const POINT *apt,int cpt);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Polyline(HDC hdc,const POINT *apt,int cpt);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PolyBezier(HDC hdc,const POINT *apt,DWORD cpt);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PolyBezierTo(HDC hdc,const POINT *apt,DWORD cpt);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PolylineTo(HDC hdc,const POINT *apt,DWORD cpt);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetViewportExtEx(HDC hdc,int x,int y,LPSIZE lpsz);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetViewportOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetWindowExtEx(HDC hdc,int x,int y,LPSIZE lpsz);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetWindowOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) OffsetViewportOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) OffsetWindowOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ScaleViewportExtEx(HDC hdc,int xn,int dx,int yn,int yd,LPSIZE lpsz);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ScaleWindowExtEx(HDC hdc,int xn,int xd,int yn,int yd,LPSIZE lpsz);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetBitmapDimensionEx(HBITMAP hbm,int w,int h,LPSIZE lpsz);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetBrushOrgEx(HDC hdc,int x,int y,LPPOINT lppt);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetTextFaceA(HDC hdc,int c,LPSTR lpName);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetTextFaceW(HDC hdc,int c,LPWSTR lpName);
#define FONTMAPPER_MAX 10
  typedef struct tagKERNINGPAIR {
    WORD wFirst;
    WORD wSecond;
    int iKernAmount;
  } KERNINGPAIR,*LPKERNINGPAIR;
#define GetKerningPairs __MINGW_NAME_AW(GetKerningPairs)
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetKerningPairsA(HDC hdc,DWORD nPairs,LPKERNINGPAIR lpKernPair);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetKerningPairsW(HDC hdc,DWORD nPairs,LPKERNINGPAIR lpKernPair);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetDCOrgEx(HDC hdc,LPPOINT lppt);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FixBrushOrgEx(HDC hdc,int x,int y,LPPOINT ptl);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnrealizeObject(HGDIOBJ h);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GdiFlush(void);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GdiSetBatchLimit(DWORD dw);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GdiGetBatchLimit(void);
#define ICM_OFF 1
#define ICM_ON 2
#define ICM_QUERY 3
#define ICM_DONE_OUTSIDEDC 4
  typedef int (__attribute__((__stdcall__)) *ICMENUMPROCA)(LPSTR,LPARAM);
  typedef int (__attribute__((__stdcall__)) *ICMENUMPROCW)(LPWSTR,LPARAM);
#define ICMENUMPROC __MINGW_NAME_AW(ICMENUMPROC)
#define EnumICMProfiles __MINGW_NAME_AW(EnumICMProfiles)
#define UpdateICMRegKey __MINGW_NAME_AW(UpdateICMRegKey)
#define GetLogColorSpace __MINGW_NAME_AW(GetLogColorSpace)
#define CreateColorSpace __MINGW_NAME_AW(CreateColorSpace)
#define GetICMProfile __MINGW_NAME_AW(GetICMProfile)
#define SetICMProfile __MINGW_NAME_AW(SetICMProfile)
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetICMMode(HDC hdc,int mode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CheckColorsInGamut(HDC hdc,LPVOID lpRGBTriple,LPVOID dlpBuffer,DWORD nCount);
  __attribute__((dllimport)) HCOLORSPACE __attribute__((__stdcall__)) GetColorSpace(HDC hdc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetLogColorSpaceA(HCOLORSPACE hColorSpace,LPLOGCOLORSPACEA lpBuffer,DWORD nSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetLogColorSpaceW(HCOLORSPACE hColorSpace,LPLOGCOLORSPACEW lpBuffer,DWORD nSize);
  __attribute__((dllimport)) HCOLORSPACE __attribute__((__stdcall__)) CreateColorSpaceA(LPLOGCOLORSPACEA lplcs);
  __attribute__((dllimport)) HCOLORSPACE __attribute__((__stdcall__)) CreateColorSpaceW(LPLOGCOLORSPACEW lplcs);
  __attribute__((dllimport)) HCOLORSPACE __attribute__((__stdcall__)) SetColorSpace(HDC hdc,HCOLORSPACE hcs);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteColorSpace(HCOLORSPACE hcs);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetICMProfileA(HDC hdc,LPDWORD pBufSize,LPSTR pszFilename);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetICMProfileW(HDC hdc,LPDWORD pBufSize,LPWSTR pszFilename);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetICMProfileA(HDC hdc,LPSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetICMProfileW(HDC hdc,LPWSTR lpFileName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetDeviceGammaRamp(HDC hdc,LPVOID lpRamp);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetDeviceGammaRamp(HDC hdc,LPVOID lpRamp);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ColorMatchToTarget(HDC hdc,HDC hdcTarget,DWORD action);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EnumICMProfilesA(HDC hdc,ICMENUMPROCA lpProc,LPARAM lParam);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EnumICMProfilesW(HDC hdc,ICMENUMPROCW lpProc,LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UpdateICMRegKeyA(DWORD reserved,LPSTR lpszCMID,LPSTR lpszFileName,UINT command);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UpdateICMRegKeyW(DWORD reserved,LPWSTR lpszCMID,LPWSTR lpszFileName,UINT command);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ColorCorrectPalette(HDC hdc,HPALETTE hPal,DWORD deFirst,DWORD num);
#define ENHMETA_SIGNATURE 0x464D4520
#define ENHMETA_STOCK_OBJECT 0x80000000
#define EMR_HEADER 1
#define EMR_POLYBEZIER 2
#define EMR_POLYGON 3
#define EMR_POLYLINE 4
#define EMR_POLYBEZIERTO 5
#define EMR_POLYLINETO 6
#define EMR_POLYPOLYLINE 7
#define EMR_POLYPOLYGON 8
#define EMR_SETWINDOWEXTEX 9
#define EMR_SETWINDOWORGEX 10
#define EMR_SETVIEWPORTEXTEX 11
#define EMR_SETVIEWPORTORGEX 12
#define EMR_SETBRUSHORGEX 13
#define EMR_EOF 14
#define EMR_SETPIXELV 15
#define EMR_SETMAPPERFLAGS 16
#define EMR_SETMAPMODE 17
#define EMR_SETBKMODE 18
#define EMR_SETPOLYFILLMODE 19
#define EMR_SETROP2 20
#define EMR_SETSTRETCHBLTMODE 21
#define EMR_SETTEXTALIGN 22
#define EMR_SETCOLORADJUSTMENT 23
#define EMR_SETTEXTCOLOR 24
#define EMR_SETBKCOLOR 25
#define EMR_OFFSETCLIPRGN 26
#define EMR_MOVETOEX 27
#define EMR_SETMETARGN 28
#define EMR_EXCLUDECLIPRECT 29
#define EMR_INTERSECTCLIPRECT 30
#define EMR_SCALEVIEWPORTEXTEX 31
#define EMR_SCALEWINDOWEXTEX 32
#define EMR_SAVEDC 33
#define EMR_RESTOREDC 34
#define EMR_SETWORLDTRANSFORM 35
#define EMR_MODIFYWORLDTRANSFORM 36
#define EMR_SELECTOBJECT 37
#define EMR_CREATEPEN 38
#define EMR_CREATEBRUSHINDIRECT 39
#define EMR_DELETEOBJECT 40
#define EMR_ANGLEARC 41
#define EMR_ELLIPSE 42
#define EMR_RECTANGLE 43
#define EMR_ROUNDRECT 44
#define EMR_ARC 45
#define EMR_CHORD 46
#define EMR_PIE 47
#define EMR_SELECTPALETTE 48
#define EMR_CREATEPALETTE 49
#define EMR_SETPALETTEENTRIES 50
#define EMR_RESIZEPALETTE 51
#define EMR_REALIZEPALETTE 52
#define EMR_EXTFLOODFILL 53
#define EMR_LINETO 54
#define EMR_ARCTO 55
#define EMR_POLYDRAW 56
#define EMR_SETARCDIRECTION 57
#define EMR_SETMITERLIMIT 58
#define EMR_BEGINPATH 59
#define EMR_ENDPATH 60
#define EMR_CLOSEFIGURE 61
#define EMR_FILLPATH 62
#define EMR_STROKEANDFILLPATH 63
#define EMR_STROKEPATH 64
#define EMR_FLATTENPATH 65
#define EMR_WIDENPATH 66
#define EMR_SELECTCLIPPATH 67
#define EMR_ABORTPATH 68
#define EMR_GDICOMMENT 70
#define EMR_FILLRGN 71
#define EMR_FRAMERGN 72
#define EMR_INVERTRGN 73
#define EMR_PAINTRGN 74
#define EMR_EXTSELECTCLIPRGN 75
#define EMR_BITBLT 76
#define EMR_STRETCHBLT 77
#define EMR_MASKBLT 78
#define EMR_PLGBLT 79
#define EMR_SETDIBITSTODEVICE 80
#define EMR_STRETCHDIBITS 81
#define EMR_EXTCREATEFONTINDIRECTW 82
#define EMR_EXTTEXTOUTA 83
#define EMR_EXTTEXTOUTW 84
#define EMR_POLYBEZIER16 85
#define EMR_POLYGON16 86
#define EMR_POLYLINE16 87
#define EMR_POLYBEZIERTO16 88
#define EMR_POLYLINETO16 89
#define EMR_POLYPOLYLINE16 90
#define EMR_POLYPOLYGON16 91
#define EMR_POLYDRAW16 92
#define EMR_CREATEMONOBRUSH 93
#define EMR_CREATEDIBPATTERNBRUSHPT 94
#define EMR_EXTCREATEPEN 95
#define EMR_POLYTEXTOUTA 96
#define EMR_POLYTEXTOUTW 97
#define EMR_SETICMMODE 98
#define EMR_CREATECOLORSPACE 99
#define EMR_SETCOLORSPACE 100
#define EMR_DELETECOLORSPACE 101
#define EMR_GLSRECORD 102
#define EMR_GLSBOUNDEDRECORD 103
#define EMR_PIXELFORMAT 104
#define EMR_RESERVED_105 105
#define EMR_RESERVED_106 106
#define EMR_RESERVED_107 107
#define EMR_RESERVED_108 108
#define EMR_RESERVED_109 109
#define EMR_RESERVED_110 110
#define EMR_COLORCORRECTPALETTE 111
#define EMR_SETICMPROFILEA 112
#define EMR_SETICMPROFILEW 113
#define EMR_ALPHABLEND 114
#define EMR_SETLAYOUT 115
#define EMR_TRANSPARENTBLT 116
#define EMR_RESERVED_117 117
#define EMR_GRADIENTFILL 118
#define EMR_RESERVED_119 119
#define EMR_RESERVED_120 120
#define EMR_COLORMATCHTOTARGETW 121
#define EMR_CREATECOLORSPACEW 122
#define EMR_MIN 1
#define EMR_MAX 122
  typedef struct tagEMR {
    DWORD iType;
    DWORD nSize;
  } EMR,*PEMR;
  typedef struct tagEMRTEXT {
    POINTL ptlReference;
    DWORD nChars;
    DWORD offString;
    DWORD fOptions;
    RECTL rcl;
    DWORD offDx;
  } EMRTEXT,*PEMRTEXT;
  typedef struct tagABORTPATH {
    EMR emr;
  } EMRABORTPATH,*PEMRABORTPATH,EMRBEGINPATH,*PEMRBEGINPATH,EMRENDPATH,*PEMRENDPATH,EMRCLOSEFIGURE,*PEMRCLOSEFIGURE,EMRFLATTENPATH,*PEMRFLATTENPATH,EMRWIDENPATH,*PEMRWIDENPATH,EMRSETMETARGN,*PEMRSETMETARGN,EMRSAVEDC,*PEMRSAVEDC,EMRREALIZEPALETTE,*PEMRREALIZEPALETTE;
  typedef struct tagEMRSELECTCLIPPATH {
    EMR emr;
    DWORD iMode;
  } EMRSELECTCLIPPATH,*PEMRSELECTCLIPPATH,EMRSETBKMODE,*PEMRSETBKMODE,EMRSETMAPMODE,*PEMRSETMAPMODE,EMRSETLAYOUT,*PEMRSETLAYOUT,
    EMRSETPOLYFILLMODE,*PEMRSETPOLYFILLMODE,EMRSETROP2,*PEMRSETROP2,EMRSETSTRETCHBLTMODE,*PEMRSETSTRETCHBLTMODE,EMRSETICMMODE,
    *PEMRSETICMMODE,EMRSETTEXTALIGN,*PEMRSETTEXTALIGN;
  typedef struct tagEMRSETMITERLIMIT {
    EMR emr;
    FLOAT eMiterLimit;
  } EMRSETMITERLIMIT,*PEMRSETMITERLIMIT;
  typedef struct tagEMRRESTOREDC {
    EMR emr;
    LONG iRelative;
  } EMRRESTOREDC,*PEMRRESTOREDC;
  typedef struct tagEMRSETARCDIRECTION {
    EMR emr;
    DWORD iArcDirection;
  } EMRSETARCDIRECTION,*PEMRSETARCDIRECTION;
  typedef struct tagEMRSETMAPPERFLAGS {
    EMR emr;
    DWORD dwFlags;
  } EMRSETMAPPERFLAGS,*PEMRSETMAPPERFLAGS;
  typedef struct tagEMRSETTEXTCOLOR {
    EMR emr;
    COLORREF crColor;
  } EMRSETBKCOLOR,*PEMRSETBKCOLOR,EMRSETTEXTCOLOR,*PEMRSETTEXTCOLOR;
  typedef struct tagEMRSELECTOBJECT {
    EMR emr;
    DWORD ihObject;
  } EMRSELECTOBJECT,*PEMRSELECTOBJECT,EMRDELETEOBJECT,*PEMRDELETEOBJECT;
  typedef struct tagEMRSELECTPALETTE {
    EMR emr;
    DWORD ihPal;
  } EMRSELECTPALETTE,*PEMRSELECTPALETTE;
  typedef struct tagEMRRESIZEPALETTE {
    EMR emr;
    DWORD ihPal;
    DWORD cEntries;
  } EMRRESIZEPALETTE,*PEMRRESIZEPALETTE;
  typedef struct tagEMRSETPALETTEENTRIES {
    EMR emr;
    DWORD ihPal;
    DWORD iStart;
    DWORD cEntries;
    PALETTEENTRY aPalEntries[1];
  } EMRSETPALETTEENTRIES,*PEMRSETPALETTEENTRIES;
  typedef struct tagEMRSETCOLORADJUSTMENT {
    EMR emr;
    COLORADJUSTMENT ColorAdjustment;
  } EMRSETCOLORADJUSTMENT,*PEMRSETCOLORADJUSTMENT;
  typedef struct tagEMRGDICOMMENT {
    EMR emr;
    DWORD cbData;
    BYTE Data[1];
  } EMRGDICOMMENT,*PEMRGDICOMMENT;
  typedef struct tagEMREOF {
    EMR emr;
    DWORD nPalEntries;
    DWORD offPalEntries;
    DWORD nSizeLast;
  } EMREOF,*PEMREOF;
  typedef struct tagEMRLINETO {
    EMR emr;
    POINTL ptl;
  } EMRLINETO,*PEMRLINETO,EMRMOVETOEX,*PEMRMOVETOEX;
  typedef struct tagEMROFFSETCLIPRGN {
    EMR emr;
    POINTL ptlOffset;
  } EMROFFSETCLIPRGN,*PEMROFFSETCLIPRGN;
  typedef struct tagEMRFILLPATH {
    EMR emr;
    RECTL rclBounds;
  } EMRFILLPATH,*PEMRFILLPATH,EMRSTROKEANDFILLPATH,*PEMRSTROKEANDFILLPATH,EMRSTROKEPATH,*PEMRSTROKEPATH;
  typedef struct tagEMREXCLUDECLIPRECT {
    EMR emr;
    RECTL rclClip;
  } EMREXCLUDECLIPRECT,*PEMREXCLUDECLIPRECT,EMRINTERSECTCLIPRECT,*PEMRINTERSECTCLIPRECT;
  typedef struct tagEMRSETVIEWPORTORGEX {
    EMR emr;
    POINTL ptlOrigin;
  } EMRSETVIEWPORTORGEX,*PEMRSETVIEWPORTORGEX,EMRSETWINDOWORGEX,*PEMRSETWINDOWORGEX,EMRSETBRUSHORGEX,*PEMRSETBRUSHORGEX;
  typedef struct tagEMRSETVIEWPORTEXTEX {
    EMR emr;
    SIZEL szlExtent;
  } EMRSETVIEWPORTEXTEX,*PEMRSETVIEWPORTEXTEX,EMRSETWINDOWEXTEX,*PEMRSETWINDOWEXTEX;
  typedef struct tagEMRSCALEVIEWPORTEXTEX {
    EMR emr;
    LONG xNum;
    LONG xDenom;
    LONG yNum;
    LONG yDenom;
  } EMRSCALEVIEWPORTEXTEX,*PEMRSCALEVIEWPORTEXTEX,EMRSCALEWINDOWEXTEX,*PEMRSCALEWINDOWEXTEX;
  typedef struct tagEMRSETWORLDTRANSFORM {
    EMR emr;
    XFORM xform;
  } EMRSETWORLDTRANSFORM,*PEMRSETWORLDTRANSFORM;
  typedef struct tagEMRMODIFYWORLDTRANSFORM {
    EMR emr;
    XFORM xform;
    DWORD iMode;
  } EMRMODIFYWORLDTRANSFORM,*PEMRMODIFYWORLDTRANSFORM;
  typedef struct tagEMRSETPIXELV {
    EMR emr;
    POINTL ptlPixel;
    COLORREF crColor;
  } EMRSETPIXELV,*PEMRSETPIXELV;
  typedef struct tagEMREXTFLOODFILL {
    EMR emr;
    POINTL ptlStart;
    COLORREF crColor;
    DWORD iMode;
  } EMREXTFLOODFILL,*PEMREXTFLOODFILL;
  typedef struct tagEMRELLIPSE {
    EMR emr;
    RECTL rclBox;
  } EMRELLIPSE,*PEMRELLIPSE,EMRRECTANGLE,*PEMRRECTANGLE;
  typedef struct tagEMRROUNDRECT {
    EMR emr;
    RECTL rclBox;
    SIZEL szlCorner;
  } EMRROUNDRECT,*PEMRROUNDRECT;
  typedef struct tagEMRARC {
    EMR emr;
    RECTL rclBox;
    POINTL ptlStart;
    POINTL ptlEnd;
  } EMRARC,*PEMRARC,EMRARCTO,*PEMRARCTO,EMRCHORD,*PEMRCHORD,EMRPIE,*PEMRPIE;
  typedef struct tagEMRANGLEARC {
    EMR emr;
    POINTL ptlCenter;
    DWORD nRadius;
    FLOAT eStartAngle;
    FLOAT eSweepAngle;
  } EMRANGLEARC,*PEMRANGLEARC;
  typedef struct tagEMRPOLYLINE {
    EMR emr;
    RECTL rclBounds;
    DWORD cptl;
    POINTL aptl[1];
  } EMRPOLYLINE,*PEMRPOLYLINE,EMRPOLYBEZIER,*PEMRPOLYBEZIER,EMRPOLYGON,*PEMRPOLYGON,EMRPOLYBEZIERTO,*PEMRPOLYBEZIERTO,EMRPOLYLINETO,*PEMRPOLYLINETO;
  typedef struct tagEMRPOLYLINE16 {
    EMR emr;
    RECTL rclBounds;
    DWORD cpts;
    POINTS apts[1];
  } EMRPOLYLINE16,*PEMRPOLYLINE16,EMRPOLYBEZIER16,*PEMRPOLYBEZIER16,EMRPOLYGON16,*PEMRPOLYGON16,EMRPOLYBEZIERTO16,*PEMRPOLYBEZIERTO16,EMRPOLYLINETO16,*PEMRPOLYLINETO16;
  typedef struct tagEMRPOLYDRAW {
    EMR emr;
    RECTL rclBounds;
    DWORD cptl;
    POINTL aptl[1];
    BYTE abTypes[1];
  } EMRPOLYDRAW,*PEMRPOLYDRAW;
  typedef struct tagEMRPOLYDRAW16 {
    EMR emr;
    RECTL rclBounds;
    DWORD cpts;
    POINTS apts[1];
    BYTE abTypes[1];
  } EMRPOLYDRAW16,*PEMRPOLYDRAW16;
  typedef struct tagEMRPOLYPOLYLINE {
    EMR emr;
    RECTL rclBounds;
    DWORD nPolys;
    DWORD cptl;
    DWORD aPolyCounts[1];
    POINTL aptl[1];
  } EMRPOLYPOLYLINE,*PEMRPOLYPOLYLINE,EMRPOLYPOLYGON,*PEMRPOLYPOLYGON;
  typedef struct tagEMRPOLYPOLYLINE16 {
    EMR emr;
    RECTL rclBounds;
    DWORD nPolys;
    DWORD cpts;
    DWORD aPolyCounts[1];
    POINTS apts[1];
  } EMRPOLYPOLYLINE16,*PEMRPOLYPOLYLINE16,EMRPOLYPOLYGON16,*PEMRPOLYPOLYGON16;
  typedef struct tagEMRINVERTRGN {
    EMR emr;
    RECTL rclBounds;
    DWORD cbRgnData;
    BYTE RgnData[1];
  } EMRINVERTRGN,*PEMRINVERTRGN,EMRPAINTRGN,*PEMRPAINTRGN;
  typedef struct tagEMRFILLRGN {
    EMR emr;
    RECTL rclBounds;
    DWORD cbRgnData;
    DWORD ihBrush;
    BYTE RgnData[1];
  } EMRFILLRGN,*PEMRFILLRGN;
  typedef struct tagEMRFRAMERGN {
    EMR emr;
    RECTL rclBounds;
    DWORD cbRgnData;
    DWORD ihBrush;
    SIZEL szlStroke;
    BYTE RgnData[1];
  } EMRFRAMERGN,*PEMRFRAMERGN;
  typedef struct tagEMREXTSELECTCLIPRGN {
    EMR emr;
    DWORD cbRgnData;
    DWORD iMode;
    BYTE RgnData[1];
  } EMREXTSELECTCLIPRGN,*PEMREXTSELECTCLIPRGN;
  typedef struct tagEMREXTTEXTOUTA {
    EMR emr;
    RECTL rclBounds;
    DWORD iGraphicsMode;
    FLOAT exScale;
    FLOAT eyScale;
    EMRTEXT emrtext;
  } EMREXTTEXTOUTA,*PEMREXTTEXTOUTA,EMREXTTEXTOUTW,*PEMREXTTEXTOUTW;
  typedef struct tagEMRPOLYTEXTOUTA {
    EMR emr;
    RECTL rclBounds;
    DWORD iGraphicsMode;
    FLOAT exScale;
    FLOAT eyScale;
    LONG cStrings;
    EMRTEXT aemrtext[1];
  } EMRPOLYTEXTOUTA,*PEMRPOLYTEXTOUTA,EMRPOLYTEXTOUTW,*PEMRPOLYTEXTOUTW;
  typedef struct tagEMRBITBLT {
    EMR emr;
    RECTL rclBounds;
    LONG xDest;
    LONG yDest;
    LONG cxDest;
    LONG cyDest;
    DWORD dwRop;
    LONG xSrc;
    LONG ySrc;
    XFORM xformSrc;
    COLORREF crBkColorSrc;
    DWORD iUsageSrc;
    DWORD offBmiSrc;
    DWORD cbBmiSrc;
    DWORD offBitsSrc;
    DWORD cbBitsSrc;
  } EMRBITBLT,*PEMRBITBLT;
  typedef struct tagEMRSTRETCHBLT {
    EMR emr;
    RECTL rclBounds;
    LONG xDest;
    LONG yDest;
    LONG cxDest;
    LONG cyDest;
    DWORD dwRop;
    LONG xSrc;
    LONG ySrc;
    XFORM xformSrc;
    COLORREF crBkColorSrc;
    DWORD iUsageSrc;
    DWORD offBmiSrc;
    DWORD cbBmiSrc;
    DWORD offBitsSrc;
    DWORD cbBitsSrc;
    LONG cxSrc;
    LONG cySrc;
  } EMRSTRETCHBLT,*PEMRSTRETCHBLT;
  typedef struct tagEMRMASKBLT {
    EMR emr;
    RECTL rclBounds;
    LONG xDest;
    LONG yDest;
    LONG cxDest;
    LONG cyDest;
    DWORD dwRop;
    LONG xSrc;
    LONG ySrc;
    XFORM xformSrc;
    COLORREF crBkColorSrc;
    DWORD iUsageSrc;
    DWORD offBmiSrc;
    DWORD cbBmiSrc;
    DWORD offBitsSrc;
    DWORD cbBitsSrc;
    LONG xMask;
    LONG yMask;
    DWORD iUsageMask;
    DWORD offBmiMask;
    DWORD cbBmiMask;
    DWORD offBitsMask;
    DWORD cbBitsMask;
  } EMRMASKBLT,*PEMRMASKBLT;
  typedef struct tagEMRPLGBLT {
    EMR emr;
    RECTL rclBounds;
    POINTL aptlDest[3];
    LONG xSrc;
    LONG ySrc;
    LONG cxSrc;
    LONG cySrc;
    XFORM xformSrc;
    COLORREF crBkColorSrc;
    DWORD iUsageSrc;
    DWORD offBmiSrc;
    DWORD cbBmiSrc;
    DWORD offBitsSrc;
    DWORD cbBitsSrc;
    LONG xMask;
    LONG yMask;
    DWORD iUsageMask;
    DWORD offBmiMask;
    DWORD cbBmiMask;
    DWORD offBitsMask;
    DWORD cbBitsMask;
  } EMRPLGBLT,*PEMRPLGBLT;
  typedef struct tagEMRSETDIBITSTODEVICE {
    EMR emr;
    RECTL rclBounds;
    LONG xDest;
    LONG yDest;
    LONG xSrc;
    LONG ySrc;
    LONG cxSrc;
    LONG cySrc;
    DWORD offBmiSrc;
    DWORD cbBmiSrc;
    DWORD offBitsSrc;
    DWORD cbBitsSrc;
    DWORD iUsageSrc;
    DWORD iStartScan;
    DWORD cScans;
  } EMRSETDIBITSTODEVICE,*PEMRSETDIBITSTODEVICE;
  typedef struct tagEMRSTRETCHDIBITS {
    EMR emr;
    RECTL rclBounds;
    LONG xDest;
    LONG yDest;
    LONG xSrc;
    LONG ySrc;
    LONG cxSrc;
    LONG cySrc;
    DWORD offBmiSrc;
    DWORD cbBmiSrc;
    DWORD offBitsSrc;
    DWORD cbBitsSrc;
    DWORD iUsageSrc;
    DWORD dwRop;
    LONG cxDest;
    LONG cyDest;
  } EMRSTRETCHDIBITS,*PEMRSTRETCHDIBITS;
  typedef struct tagEMREXTCREATEFONTINDIRECTW {
    EMR emr;
    DWORD ihFont;
    EXTLOGFONTW elfw;
  } EMREXTCREATEFONTINDIRECTW,*PEMREXTCREATEFONTINDIRECTW;
  typedef struct tagEMRCREATEPALETTE {
    EMR emr;
    DWORD ihPal;
    LOGPALETTE lgpl;
  } EMRCREATEPALETTE,*PEMRCREATEPALETTE;
  typedef struct tagEMRCREATEPEN {
    EMR emr;
    DWORD ihPen;
    LOGPEN lopn;
  } EMRCREATEPEN,*PEMRCREATEPEN;
  typedef struct tagEMREXTCREATEPEN {
    EMR emr;
    DWORD ihPen;
    DWORD offBmi;
    DWORD cbBmi;
    DWORD offBits;
    DWORD cbBits;
    EXTLOGPEN elp;
  } EMREXTCREATEPEN,*PEMREXTCREATEPEN;
  typedef struct tagEMRCREATEBRUSHINDIRECT {
    EMR emr;
    DWORD ihBrush;
    LOGBRUSH32 lb;
  } EMRCREATEBRUSHINDIRECT,*PEMRCREATEBRUSHINDIRECT;
  typedef struct tagEMRCREATEMONOBRUSH {
    EMR emr;
    DWORD ihBrush;
    DWORD iUsage;
    DWORD offBmi;
    DWORD cbBmi;
    DWORD offBits;
    DWORD cbBits;
  } EMRCREATEMONOBRUSH,*PEMRCREATEMONOBRUSH;
  typedef struct tagEMRCREATEDIBPATTERNBRUSHPT {
    EMR emr;
    DWORD ihBrush;
    DWORD iUsage;
    DWORD offBmi;
    DWORD cbBmi;
    DWORD offBits;
    DWORD cbBits;
  } EMRCREATEDIBPATTERNBRUSHPT,*PEMRCREATEDIBPATTERNBRUSHPT;
  typedef struct tagEMRFORMAT {
    DWORD dSignature;
    DWORD nVersion;
    DWORD cbData;
    DWORD offData;
  } EMRFORMAT,*PEMRFORMAT;
  typedef struct tagEMRGLSRECORD {
    EMR emr;
    DWORD cbData;
    BYTE Data[1];
  } EMRGLSRECORD,*PEMRGLSRECORD;
  typedef struct tagEMRGLSBOUNDEDRECORD {
    EMR emr;
    RECTL rclBounds;
    DWORD cbData;
    BYTE Data[1];
  } EMRGLSBOUNDEDRECORD,*PEMRGLSBOUNDEDRECORD;
  typedef struct tagEMRPIXELFORMAT {
    EMR emr;
    PIXELFORMATDESCRIPTOR pfd;
  } EMRPIXELFORMAT,*PEMRPIXELFORMAT;
  typedef struct tagEMRCREATECOLORSPACE {
    EMR emr;
    DWORD ihCS;
    LOGCOLORSPACEA lcs;
  } EMRCREATECOLORSPACE,*PEMRCREATECOLORSPACE;
  typedef struct tagEMRSETCOLORSPACE {
    EMR emr;
    DWORD ihCS;
  } EMRSETCOLORSPACE,*PEMRSETCOLORSPACE,EMRSELECTCOLORSPACE,*PEMRSELECTCOLORSPACE,EMRDELETECOLORSPACE,*PEMRDELETECOLORSPACE;
  typedef struct tagEMREXTESCAPE {
    EMR emr;
    INT iEscape;
    INT cbEscData;
    BYTE EscData[1];
  } EMREXTESCAPE,*PEMREXTESCAPE,EMRDRAWESCAPE,*PEMRDRAWESCAPE;
  typedef struct tagEMRNAMEDESCAPE {
    EMR emr;
    INT iEscape;
    INT cbDriver;
    INT cbEscData;
    BYTE EscData[1];
  } EMRNAMEDESCAPE,*PEMRNAMEDESCAPE;
#define SETICMPROFILE_EMBEDED 0x00000001
  typedef struct tagEMRSETICMPROFILE {
    EMR emr;
    DWORD dwFlags;
    DWORD cbName;
    DWORD cbData;
    BYTE Data[1];
  } EMRSETICMPROFILE,*PEMRSETICMPROFILE,EMRSETICMPROFILEA,*PEMRSETICMPROFILEA,EMRSETICMPROFILEW,*PEMRSETICMPROFILEW;
#define CREATECOLORSPACE_EMBEDED 0x00000001
  typedef struct tagEMRCREATECOLORSPACEW {
    EMR emr;
    DWORD ihCS;
    LOGCOLORSPACEW lcs;
    DWORD dwFlags;
    DWORD cbData;
    BYTE Data[1];
  } EMRCREATECOLORSPACEW,*PEMRCREATECOLORSPACEW;
#define COLORMATCHTOTARGET_EMBEDED 0x00000001
  typedef struct tagCOLORMATCHTOTARGET {
    EMR emr;
    DWORD dwAction;
    DWORD dwFlags;
    DWORD cbName;
    DWORD cbData;
    BYTE Data[1];
  } EMRCOLORMATCHTOTARGET,*PEMRCOLORMATCHTOTARGET;
  typedef struct tagCOLORCORRECTPALETTE {
    EMR emr;
    DWORD ihPalette;
    DWORD nFirstEntry;
    DWORD nPalEntries;
    DWORD nReserved;
  } EMRCOLORCORRECTPALETTE,*PEMRCOLORCORRECTPALETTE;
  typedef struct tagEMRALPHABLEND {
    EMR emr;
    RECTL rclBounds;
    LONG xDest;
    LONG yDest;
    LONG cxDest;
    LONG cyDest;
    DWORD dwRop;
    LONG xSrc;
    LONG ySrc;
    XFORM xformSrc;
    COLORREF crBkColorSrc;
    DWORD iUsageSrc;
    DWORD offBmiSrc;
    DWORD cbBmiSrc;
    DWORD offBitsSrc;
    DWORD cbBitsSrc;
    LONG cxSrc;
    LONG cySrc;
  } EMRALPHABLEND,*PEMRALPHABLEND;
  typedef struct tagEMRGRADIENTFILL {
    EMR emr;
    RECTL rclBounds;
    DWORD nVer;
    DWORD nTri;
    ULONG ulMode;
    TRIVERTEX Ver[1];
  } EMRGRADIENTFILL,*PEMRGRADIENTFILL;
  typedef struct tagEMRTRANSPARENTBLT {
    EMR emr;
    RECTL rclBounds;
    LONG xDest;
    LONG yDest;
    LONG cxDest;
    LONG cyDest;
    DWORD dwRop;
    LONG xSrc;
    LONG ySrc;
    XFORM xformSrc;
    COLORREF crBkColorSrc;
    DWORD iUsageSrc;
    DWORD offBmiSrc;
    DWORD cbBmiSrc;
    DWORD offBitsSrc;
    DWORD cbBitsSrc;
    LONG cxSrc;
    LONG cySrc;
  } EMRTRANSPARENTBLT,*PEMRTRANSPARENTBLT;
#define GDICOMMENT_IDENTIFIER 0x43494447
#define GDICOMMENT_WINDOWS_METAFILE 0x80000001
#define GDICOMMENT_BEGINGROUP 0x00000002
#define GDICOMMENT_ENDGROUP 0x00000003
#define GDICOMMENT_MULTIFORMATS 0x40000004
#define EPS_SIGNATURE 0x46535045
#define GDICOMMENT_UNICODE_STRING 0x00000040
#define GDICOMMENT_UNICODE_END 0x00000080
#define wglUseFontBitmaps __MINGW_NAME_AW(wglUseFontBitmaps)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) wglCopyContext(HGLRC,HGLRC,UINT);
  __attribute__((dllimport)) HGLRC __attribute__((__stdcall__)) wglCreateContext(HDC);
  __attribute__((dllimport)) HGLRC __attribute__((__stdcall__)) wglCreateLayerContext(HDC,int);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) wglDeleteContext(HGLRC);
  __attribute__((dllimport)) HGLRC __attribute__((__stdcall__)) wglGetCurrentContext(void);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) wglGetCurrentDC(void);
  __attribute__((dllimport)) PROC __attribute__((__stdcall__)) wglGetProcAddress(LPCSTR);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) wglMakeCurrent(HDC,HGLRC);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) wglShareLists(HGLRC,HGLRC);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) wglUseFontBitmapsA(HDC,DWORD,DWORD,DWORD);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) wglUseFontBitmapsW(HDC,DWORD,DWORD,DWORD);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SwapBuffers(HDC);
  typedef struct _POINTFLOAT {
    FLOAT x;
    FLOAT y;
  } POINTFLOAT,*PPOINTFLOAT;
  typedef struct _GLYPHMETRICSFLOAT {
    FLOAT gmfBlackBoxX;
    FLOAT gmfBlackBoxY;
    POINTFLOAT gmfptGlyphOrigin;
    FLOAT gmfCellIncX;
    FLOAT gmfCellIncY;
  } GLYPHMETRICSFLOAT,*PGLYPHMETRICSFLOAT,*LPGLYPHMETRICSFLOAT;
#define WGL_FONT_LINES 0
#define WGL_FONT_POLYGONS 1
#define wglUseFontOutlines __MINGW_NAME_AW(wglUseFontOutlines)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) wglUseFontOutlinesA(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) wglUseFontOutlinesW(HDC,DWORD,DWORD,DWORD,FLOAT,FLOAT,int,LPGLYPHMETRICSFLOAT);
  typedef struct tagLAYERPLANEDESCRIPTOR {
    WORD nSize;
    WORD nVersion;
    DWORD dwFlags;
    BYTE 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;
    COLORREF crTransparent;
  } LAYERPLANEDESCRIPTOR,*PLAYERPLANEDESCRIPTOR,*LPLAYERPLANEDESCRIPTOR;
#define LPD_DOUBLEBUFFER 0x00000001
#define LPD_STEREO 0x00000002
#define LPD_SUPPORT_GDI 0x00000010
#define LPD_SUPPORT_OPENGL 0x00000020
#define LPD_SHARE_DEPTH 0x00000040
#define LPD_SHARE_STENCIL 0x00000080
#define LPD_SHARE_ACCUM 0x00000100
#define LPD_SWAP_EXCHANGE 0x00000200
#define LPD_SWAP_COPY 0x00000400
#define LPD_TRANSPARENT 0x00001000
#define LPD_TYPE_RGBA 0
#define LPD_TYPE_COLORINDEX 1
#define WGL_SWAP_MAIN_PLANE 0x00000001
#define WGL_SWAP_OVERLAY1 0x00000002
#define WGL_SWAP_OVERLAY2 0x00000004
#define WGL_SWAP_OVERLAY3 0x00000008
#define WGL_SWAP_OVERLAY4 0x00000010
#define WGL_SWAP_OVERLAY5 0x00000020
#define WGL_SWAP_OVERLAY6 0x00000040
#define WGL_SWAP_OVERLAY7 0x00000080
#define WGL_SWAP_OVERLAY8 0x00000100
#define WGL_SWAP_OVERLAY9 0x00000200
#define WGL_SWAP_OVERLAY10 0x00000400
#define WGL_SWAP_OVERLAY11 0x00000800
#define WGL_SWAP_OVERLAY12 0x00001000
#define WGL_SWAP_OVERLAY13 0x00002000
#define WGL_SWAP_OVERLAY14 0x00004000
#define WGL_SWAP_OVERLAY15 0x00008000
#define WGL_SWAP_UNDERLAY1 0x00010000
#define WGL_SWAP_UNDERLAY2 0x00020000
#define WGL_SWAP_UNDERLAY3 0x00040000
#define WGL_SWAP_UNDERLAY4 0x00080000
#define WGL_SWAP_UNDERLAY5 0x00100000
#define WGL_SWAP_UNDERLAY6 0x00200000
#define WGL_SWAP_UNDERLAY7 0x00400000
#define WGL_SWAP_UNDERLAY8 0x00800000
#define WGL_SWAP_UNDERLAY9 0x01000000
#define WGL_SWAP_UNDERLAY10 0x02000000
#define WGL_SWAP_UNDERLAY11 0x04000000
#define WGL_SWAP_UNDERLAY12 0x08000000
#define WGL_SWAP_UNDERLAY13 0x10000000
#define WGL_SWAP_UNDERLAY14 0x20000000
#define WGL_SWAP_UNDERLAY15 0x40000000
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) wglDescribeLayerPlane(HDC,int,int,UINT,LPLAYERPLANEDESCRIPTOR);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) wglSetLayerPaletteEntries(HDC,int,int,int,const COLORREF *);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) wglGetLayerPaletteEntries(HDC,int,int,int,COLORREF *);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) wglRealizeLayerPalette(HDC,int,WINBOOL);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) wglSwapLayerBuffers(HDC,UINT);
  typedef struct _WGLSWAP {
    HDC hdc;
    UINT uiFlags;
  } WGLSWAP,*PWGLSWAP,*LPWGLSWAP;
#define WGL_SWAPMULTIPLE_MAX 16
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) wglSwapMultipleBuffers(UINT,const WGLSWAP *);
#define _WINUSER_ 
#undef DEFINE_GUID
#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name
#define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46)
  typedef HANDLE HDWP;
  typedef void MENUTEMPLATEA;
  typedef void MENUTEMPLATEW;
  typedef PVOID LPMENUTEMPLATEA;
  typedef PVOID LPMENUTEMPLATEW;
  typedef MENUTEMPLATEA MENUTEMPLATE;
  typedef LPMENUTEMPLATEA LPMENUTEMPLATE;
  typedef LRESULT (__attribute__((__stdcall__)) *WNDPROC)(HWND,UINT,WPARAM,LPARAM);
  typedef INT_PTR (__attribute__((__stdcall__)) *DLGPROC) (HWND, UINT, WPARAM, LPARAM);
  typedef void (__attribute__((__stdcall__)) *TIMERPROC) (HWND, UINT, UINT_PTR, DWORD);
  typedef WINBOOL (__attribute__((__stdcall__)) *GRAYSTRINGPROC) (HDC, LPARAM, int);
  typedef WINBOOL (__attribute__((__stdcall__)) *WNDENUMPROC) (HWND, LPARAM);
  typedef LRESULT (__attribute__((__stdcall__)) *HOOKPROC) (int code, WPARAM wParam, LPARAM lParam);
  typedef void (__attribute__((__stdcall__)) *SENDASYNCPROC) (HWND, UINT, ULONG_PTR, LRESULT);
  typedef WINBOOL (__attribute__((__stdcall__)) *PROPENUMPROCA) (HWND, LPCSTR, HANDLE);
  typedef WINBOOL (__attribute__((__stdcall__)) *PROPENUMPROCW) (HWND, LPCWSTR, HANDLE);
  typedef WINBOOL (__attribute__((__stdcall__)) *PROPENUMPROCEXA) (HWND, LPSTR, HANDLE, ULONG_PTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *PROPENUMPROCEXW) (HWND, LPWSTR, HANDLE, ULONG_PTR);
  typedef int (__attribute__((__stdcall__)) *EDITWORDBREAKPROCA) (LPSTR lpch, int ichCurrent, int cch, int code);
  typedef int (__attribute__((__stdcall__)) *EDITWORDBREAKPROCW) (LPWSTR lpch, int ichCurrent, int cch, int code);
  typedef WINBOOL (__attribute__((__stdcall__)) *DRAWSTATEPROC) (HDC hdc, LPARAM lData, WPARAM wData, int cx, int cy);
  typedef PROPENUMPROCA PROPENUMPROC;
  typedef PROPENUMPROCEXA PROPENUMPROCEX;
  typedef EDITWORDBREAKPROCA EDITWORDBREAKPROC;
  typedef WINBOOL (__attribute__((__stdcall__)) *NAMEENUMPROCA) (LPSTR, LPARAM);
  typedef WINBOOL (__attribute__((__stdcall__)) *NAMEENUMPROCW) (LPWSTR, LPARAM);
  typedef NAMEENUMPROCA WINSTAENUMPROCA;
  typedef NAMEENUMPROCW WINSTAENUMPROCW;
  typedef NAMEENUMPROCA DESKTOPENUMPROCA;
  typedef NAMEENUMPROCW DESKTOPENUMPROCW;
  typedef WINSTAENUMPROCA WINSTAENUMPROC;
  typedef DESKTOPENUMPROCA DESKTOPENUMPROC;
#define IS_INTRESOURCE(_r) ((((ULONG_PTR)(_r)) >> 16)==0)
#define MAKEINTRESOURCEA(i) ((LPSTR)((ULONG_PTR)((WORD)(i))))
#define MAKEINTRESOURCEW(i) ((LPWSTR)((ULONG_PTR)((WORD)(i))))
#define MAKEINTRESOURCE __MINGW_NAME_AW(MAKEINTRESOURCE)
#define RT_CURSOR MAKEINTRESOURCE(1)
#define RT_BITMAP MAKEINTRESOURCE(2)
#define RT_ICON MAKEINTRESOURCE(3)
#define RT_MENU MAKEINTRESOURCE(4)
#define RT_DIALOG MAKEINTRESOURCE(5)
#define RT_STRING MAKEINTRESOURCE(6)
#define RT_FONTDIR MAKEINTRESOURCE(7)
#define RT_FONT MAKEINTRESOURCE(8)
#define RT_ACCELERATOR MAKEINTRESOURCE(9)
#define RT_RCDATA MAKEINTRESOURCE(10)
#define RT_MESSAGETABLE MAKEINTRESOURCE(11)
#define DIFFERENCE 11
#define RT_GROUP_CURSOR MAKEINTRESOURCE ((ULONG_PTR) (RT_CURSOR) + DIFFERENCE)
#define RT_GROUP_ICON MAKEINTRESOURCE ((ULONG_PTR) (RT_ICON) + DIFFERENCE)
#define RT_VERSION MAKEINTRESOURCE(16)
#define RT_DLGINCLUDE MAKEINTRESOURCE(17)
#define RT_PLUGPLAY MAKEINTRESOURCE(19)
#define RT_VXD MAKEINTRESOURCE(20)
#define RT_ANICURSOR MAKEINTRESOURCE(21)
#define RT_ANIICON MAKEINTRESOURCE(22)
#define RT_HTML MAKEINTRESOURCE(23)
#define RT_MANIFEST MAKEINTRESOURCE(24)
#define CREATEPROCESS_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1)
#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(2)
#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(3)
#define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1)
#define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(16)
#define wvsprintf __MINGW_NAME_AW(wvsprintf)
#define wsprintf __MINGW_NAME_AW(wsprintf)
  __attribute__((dllimport)) int __attribute__((__stdcall__)) wvsprintfA(LPSTR,LPCSTR,va_list arglist);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) wvsprintfW(LPWSTR,LPCWSTR,va_list arglist);
  __attribute__((dllimport)) int __attribute__((__cdecl__)) wsprintfA(LPSTR,LPCSTR,...);
  __attribute__((dllimport)) int __attribute__((__cdecl__)) wsprintfW(LPWSTR,LPCWSTR,...);
#define SETWALLPAPER_DEFAULT ((LPWSTR)-1)
#define SB_HORZ 0
#define SB_VERT 1
#define SB_CTL 2
#define SB_BOTH 3
#define SB_LINEUP 0
#define SB_LINELEFT 0
#define SB_LINEDOWN 1
#define SB_LINERIGHT 1
#define SB_PAGEUP 2
#define SB_PAGELEFT 2
#define SB_PAGEDOWN 3
#define SB_PAGERIGHT 3
#define SB_THUMBPOSITION 4
#define SB_THUMBTRACK 5
#define SB_TOP 6
#define SB_LEFT 6
#define SB_BOTTOM 7
#define SB_RIGHT 7
#define SB_ENDSCROLL 8
#define SW_HIDE 0
#define SW_SHOWNORMAL 1
#define SW_NORMAL 1
#define SW_SHOWMINIMIZED 2
#define SW_SHOWMAXIMIZED 3
#define SW_MAXIMIZE 3
#define SW_SHOWNOACTIVATE 4
#define SW_SHOW 5
#define SW_MINIMIZE 6
#define SW_SHOWMINNOACTIVE 7
#define SW_SHOWNA 8
#define SW_RESTORE 9
#define SW_SHOWDEFAULT 10
#define SW_FORCEMINIMIZE 11
#define SW_MAX 11
#define HIDE_WINDOW 0
#define SHOW_OPENWINDOW 1
#define SHOW_ICONWINDOW 2
#define SHOW_FULLSCREEN 3
#define SHOW_OPENNOACTIVATE 4
#define SW_PARENTCLOSING 1
#define SW_OTHERZOOM 2
#define SW_PARENTOPENING 3
#define SW_OTHERUNZOOM 4
#define AW_HOR_POSITIVE 0x00000001
#define AW_HOR_NEGATIVE 0x00000002
#define AW_VER_POSITIVE 0x00000004
#define AW_VER_NEGATIVE 0x00000008
#define AW_CENTER 0x00000010
#define AW_HIDE 0x00010000
#define AW_ACTIVATE 0x00020000
#define AW_SLIDE 0x00040000
#define AW_BLEND 0x00080000
#define KF_EXTENDED 0x0100
#define KF_DLGMODE 0x0800
#define KF_MENUMODE 0x1000
#define KF_ALTDOWN 0x2000
#define KF_REPEAT 0x4000
#define KF_UP 0x8000
#define VK_LBUTTON 0x01
#define VK_RBUTTON 0x02
#define VK_CANCEL 0x03
#define VK_MBUTTON 0x04
#define VK_XBUTTON1 0x05
#define VK_XBUTTON2 0x06
#define VK_BACK 0x08
#define VK_TAB 0x09
#define VK_CLEAR 0x0C
#define VK_RETURN 0x0D
#define VK_SHIFT 0x10
#define VK_CONTROL 0x11
#define VK_MENU 0x12
#define VK_PAUSE 0x13
#define VK_CAPITAL 0x14
#define VK_KANA 0x15
#define VK_HANGEUL 0x15
#define VK_HANGUL 0x15
#define VK_IME_ON 0x16
#define VK_JUNJA 0x17
#define VK_FINAL 0x18
#define VK_HANJA 0x19
#define VK_KANJI 0x19
#define VK_IME_OFF 0x1A
#define VK_ESCAPE 0x1B
#define VK_CONVERT 0x1C
#define VK_NONCONVERT 0x1D
#define VK_ACCEPT 0x1E
#define VK_MODECHANGE 0x1F
#define VK_SPACE 0x20
#define VK_PRIOR 0x21
#define VK_NEXT 0x22
#define VK_END 0x23
#define VK_HOME 0x24
#define VK_LEFT 0x25
#define VK_UP 0x26
#define VK_RIGHT 0x27
#define VK_DOWN 0x28
#define VK_SELECT 0x29
#define VK_PRINT 0x2A
#define VK_EXECUTE 0x2B
#define VK_SNAPSHOT 0x2C
#define VK_INSERT 0x2D
#define VK_DELETE 0x2E
#define VK_HELP 0x2F
#define VK_LWIN 0x5B
#define VK_RWIN 0x5C
#define VK_APPS 0x5D
#define VK_SLEEP 0x5F
#define VK_NUMPAD0 0x60
#define VK_NUMPAD1 0x61
#define VK_NUMPAD2 0x62
#define VK_NUMPAD3 0x63
#define VK_NUMPAD4 0x64
#define VK_NUMPAD5 0x65
#define VK_NUMPAD6 0x66
#define VK_NUMPAD7 0x67
#define VK_NUMPAD8 0x68
#define VK_NUMPAD9 0x69
#define VK_MULTIPLY 0x6A
#define VK_ADD 0x6B
#define VK_SEPARATOR 0x6C
#define VK_SUBTRACT 0x6D
#define VK_DECIMAL 0x6E
#define VK_DIVIDE 0x6F
#define VK_F1 0x70
#define VK_F2 0x71
#define VK_F3 0x72
#define VK_F4 0x73
#define VK_F5 0x74
#define VK_F6 0x75
#define VK_F7 0x76
#define VK_F8 0x77
#define VK_F9 0x78
#define VK_F10 0x79
#define VK_F11 0x7A
#define VK_F12 0x7B
#define VK_F13 0x7C
#define VK_F14 0x7D
#define VK_F15 0x7E
#define VK_F16 0x7F
#define VK_F17 0x80
#define VK_F18 0x81
#define VK_F19 0x82
#define VK_F20 0x83
#define VK_F21 0x84
#define VK_F22 0x85
#define VK_F23 0x86
#define VK_F24 0x87
#define VK_NUMLOCK 0x90
#define VK_SCROLL 0x91
#define VK_OEM_NEC_EQUAL 0x92
#define VK_OEM_FJ_JISHO 0x92
#define VK_OEM_FJ_MASSHOU 0x93
#define VK_OEM_FJ_TOUROKU 0x94
#define VK_OEM_FJ_LOYA 0x95
#define VK_OEM_FJ_ROYA 0x96
#define VK_LSHIFT 0xA0
#define VK_RSHIFT 0xA1
#define VK_LCONTROL 0xA2
#define VK_RCONTROL 0xA3
#define VK_LMENU 0xA4
#define VK_RMENU 0xA5
#define VK_BROWSER_BACK 0xA6
#define VK_BROWSER_FORWARD 0xA7
#define VK_BROWSER_REFRESH 0xA8
#define VK_BROWSER_STOP 0xA9
#define VK_BROWSER_SEARCH 0xAA
#define VK_BROWSER_FAVORITES 0xAB
#define VK_BROWSER_HOME 0xAC
#define VK_VOLUME_MUTE 0xAD
#define VK_VOLUME_DOWN 0xAE
#define VK_VOLUME_UP 0xAF
#define VK_MEDIA_NEXT_TRACK 0xB0
#define VK_MEDIA_PREV_TRACK 0xB1
#define VK_MEDIA_STOP 0xB2
#define VK_MEDIA_PLAY_PAUSE 0xB3
#define VK_LAUNCH_MAIL 0xB4
#define VK_LAUNCH_MEDIA_SELECT 0xB5
#define VK_LAUNCH_APP1 0xB6
#define VK_LAUNCH_APP2 0xB7
#define VK_OEM_1 0xBA
#define VK_OEM_PLUS 0xBB
#define VK_OEM_COMMA 0xBC
#define VK_OEM_MINUS 0xBD
#define VK_OEM_PERIOD 0xBE
#define VK_OEM_2 0xBF
#define VK_OEM_3 0xC0
#define VK_OEM_4 0xDB
#define VK_OEM_5 0xDC
#define VK_OEM_6 0xDD
#define VK_OEM_7 0xDE
#define VK_OEM_8 0xDF
#define VK_OEM_AX 0xE1
#define VK_OEM_102 0xE2
#define VK_ICO_HELP 0xE3
#define VK_ICO_00 0xE4
#define VK_PROCESSKEY 0xE5
#define VK_ICO_CLEAR 0xE6
#define VK_PACKET 0xE7
#define VK_OEM_RESET 0xE9
#define VK_OEM_JUMP 0xEA
#define VK_OEM_PA1 0xEB
#define VK_OEM_PA2 0xEC
#define VK_OEM_PA3 0xED
#define VK_OEM_WSCTRL 0xEE
#define VK_OEM_CUSEL 0xEF
#define VK_OEM_ATTN 0xF0
#define VK_OEM_FINISH 0xF1
#define VK_OEM_COPY 0xF2
#define VK_OEM_AUTO 0xF3
#define VK_OEM_ENLW 0xF4
#define VK_OEM_BACKTAB 0xF5
#define VK_ATTN 0xF6
#define VK_CRSEL 0xF7
#define VK_EXSEL 0xF8
#define VK_EREOF 0xF9
#define VK_PLAY 0xFA
#define VK_ZOOM 0xFB
#define VK_NONAME 0xFC
#define VK_PA1 0xFD
#define VK_OEM_CLEAR 0xFE
#define WH_MIN (-1)
#define WH_MSGFILTER (-1)
#define WH_JOURNALRECORD 0
#define WH_JOURNALPLAYBACK 1
#define WH_KEYBOARD 2
#define WH_GETMESSAGE 3
#define WH_CALLWNDPROC 4
#define WH_CBT 5
#define WH_SYSMSGFILTER 6
#define WH_MOUSE 7
#define WH_HARDWARE 8
#define WH_DEBUG 9
#define WH_SHELL 10
#define WH_FOREGROUNDIDLE 11
#define WH_CALLWNDPROCRET 12
#define WH_KEYBOARD_LL 13
#define WH_MOUSE_LL 14
#define WH_MAX 14
#define WH_MINHOOK WH_MIN
#define WH_MAXHOOK WH_MAX
#define HC_ACTION 0
#define HC_GETNEXT 1
#define HC_SKIP 2
#define HC_NOREMOVE 3
#define HC_NOREM HC_NOREMOVE
#define HC_SYSMODALON 4
#define HC_SYSMODALOFF 5
#define HCBT_MOVESIZE 0
#define HCBT_MINMAX 1
#define HCBT_QS 2
#define HCBT_CREATEWND 3
#define HCBT_DESTROYWND 4
#define HCBT_ACTIVATE 5
#define HCBT_CLICKSKIPPED 6
#define HCBT_KEYSKIPPED 7
#define HCBT_SYSCOMMAND 8
#define HCBT_SETFOCUS 9
  typedef struct tagCBT_CREATEWNDA {
    struct tagCREATESTRUCTA *lpcs;
    HWND hwndInsertAfter;
  } CBT_CREATEWNDA,*LPCBT_CREATEWNDA;
  typedef struct tagCBT_CREATEWNDW {
    struct tagCREATESTRUCTW *lpcs;
    HWND hwndInsertAfter;
  } CBT_CREATEWNDW,*LPCBT_CREATEWNDW;
  typedef CBT_CREATEWNDA CBT_CREATEWND;
  typedef LPCBT_CREATEWNDA LPCBT_CREATEWND;
  typedef struct tagCBTACTIVATESTRUCT {
    WINBOOL fMouse;
    HWND hWndActive;
  } CBTACTIVATESTRUCT,*LPCBTACTIVATESTRUCT;
  typedef struct tagWTSSESSION_NOTIFICATION {
    DWORD cbSize;
    DWORD dwSessionId;
  } WTSSESSION_NOTIFICATION,*PWTSSESSION_NOTIFICATION;
#define WTS_CONSOLE_CONNECT 0x1
#define WTS_CONSOLE_DISCONNECT 0x2
#define WTS_REMOTE_CONNECT 0x3
#define WTS_REMOTE_DISCONNECT 0x4
#define WTS_SESSION_LOGON 0x5
#define WTS_SESSION_LOGOFF 0x6
#define WTS_SESSION_LOCK 0x7
#define WTS_SESSION_UNLOCK 0x8
#define WTS_SESSION_REMOTE_CONTROL 0x9
#define WTS_SESSION_CREATE 0xa
#define WTS_SESSION_TERMINATE 0xb
#define MSGF_DIALOGBOX 0
#define MSGF_MESSAGEBOX 1
#define MSGF_MENU 2
#define MSGF_SCROLLBAR 5
#define MSGF_NEXTWINDOW 6
#define MSGF_MAX 8
#define MSGF_USER 4096
#define HSHELL_WINDOWCREATED 1
#define HSHELL_WINDOWDESTROYED 2
#define HSHELL_ACTIVATESHELLWINDOW 3
#define HSHELL_WINDOWACTIVATED 4
#define HSHELL_GETMINRECT 5
#define HSHELL_REDRAW 6
#define HSHELL_TASKMAN 7
#define HSHELL_LANGUAGE 8
#define HSHELL_SYSMENU 9
#define HSHELL_ENDTASK 10
#define HSHELL_ACCESSIBILITYSTATE 11
#define HSHELL_APPCOMMAND 12
#define HSHELL_WINDOWREPLACED 13
#define HSHELL_WINDOWREPLACING 14
#define HSHELL_HIGHBIT 0x8000
#define HSHELL_FLASH (HSHELL_REDRAW|HSHELL_HIGHBIT)
#define HSHELL_RUDEAPPACTIVATED (HSHELL_WINDOWACTIVATED|HSHELL_HIGHBIT)
#define ACCESS_STICKYKEYS 0x0001
#define ACCESS_FILTERKEYS 0x0002
#define ACCESS_MOUSEKEYS 0x0003
#define APPCOMMAND_BROWSER_BACKWARD 1
#define APPCOMMAND_BROWSER_FORWARD 2
#define APPCOMMAND_BROWSER_REFRESH 3
#define APPCOMMAND_BROWSER_STOP 4
#define APPCOMMAND_BROWSER_SEARCH 5
#define APPCOMMAND_BROWSER_FAVORITES 6
#define APPCOMMAND_BROWSER_HOME 7
#define APPCOMMAND_VOLUME_MUTE 8
#define APPCOMMAND_VOLUME_DOWN 9
#define APPCOMMAND_VOLUME_UP 10
#define APPCOMMAND_MEDIA_NEXTTRACK 11
#define APPCOMMAND_MEDIA_PREVIOUSTRACK 12
#define APPCOMMAND_MEDIA_STOP 13
#define APPCOMMAND_MEDIA_PLAY_PAUSE 14
#define APPCOMMAND_LAUNCH_MAIL 15
#define APPCOMMAND_LAUNCH_MEDIA_SELECT 16
#define APPCOMMAND_LAUNCH_APP1 17
#define APPCOMMAND_LAUNCH_APP2 18
#define APPCOMMAND_BASS_DOWN 19
#define APPCOMMAND_BASS_BOOST 20
#define APPCOMMAND_BASS_UP 21
#define APPCOMMAND_TREBLE_DOWN 22
#define APPCOMMAND_TREBLE_UP 23
#define APPCOMMAND_MICROPHONE_VOLUME_MUTE 24
#define APPCOMMAND_MICROPHONE_VOLUME_DOWN 25
#define APPCOMMAND_MICROPHONE_VOLUME_UP 26
#define APPCOMMAND_HELP 27
#define APPCOMMAND_FIND 28
#define APPCOMMAND_NEW 29
#define APPCOMMAND_OPEN 30
#define APPCOMMAND_CLOSE 31
#define APPCOMMAND_SAVE 32
#define APPCOMMAND_PRINT 33
#define APPCOMMAND_UNDO 34
#define APPCOMMAND_REDO 35
#define APPCOMMAND_COPY 36
#define APPCOMMAND_CUT 37
#define APPCOMMAND_PASTE 38
#define APPCOMMAND_REPLY_TO_MAIL 39
#define APPCOMMAND_FORWARD_MAIL 40
#define APPCOMMAND_SEND_MAIL 41
#define APPCOMMAND_SPELL_CHECK 42
#define APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE 43
#define APPCOMMAND_MIC_ON_OFF_TOGGLE 44
#define APPCOMMAND_CORRECTION_LIST 45
#define APPCOMMAND_MEDIA_PLAY 46
#define APPCOMMAND_MEDIA_PAUSE 47
#define APPCOMMAND_MEDIA_RECORD 48
#define APPCOMMAND_MEDIA_FAST_FORWARD 49
#define APPCOMMAND_MEDIA_REWIND 50
#define APPCOMMAND_MEDIA_CHANNEL_UP 51
#define APPCOMMAND_MEDIA_CHANNEL_DOWN 52
#define APPCOMMAND_DELETE 53
#define APPCOMMAND_DWM_FLIP3D 54
#define FAPPCOMMAND_MOUSE 0x8000
#define FAPPCOMMAND_KEY 0
#define FAPPCOMMAND_OEM 0x1000
#define FAPPCOMMAND_MASK 0xF000
#define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
#define GET_DEVICE_LPARAM(lParam) ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK))
#define GET_MOUSEORKEY_LPARAM GET_DEVICE_LPARAM
#define GET_FLAGS_LPARAM(lParam) (LOWORD(lParam))
#define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam)
  typedef struct {
    HWND hwnd;
    RECT rc;
  } SHELLHOOKINFO,*LPSHELLHOOKINFO;
  typedef struct tagEVENTMSG {
    UINT message;
    UINT paramL;
    UINT paramH;
    DWORD time;
    HWND hwnd;
  } EVENTMSG,*PEVENTMSGMSG,*NPEVENTMSGMSG,*LPEVENTMSGMSG;
  typedef struct tagEVENTMSG *PEVENTMSG,*NPEVENTMSG,*LPEVENTMSG;
  typedef struct tagCWPSTRUCT {
    LPARAM lParam;
    WPARAM wParam;
    UINT message;
    HWND hwnd;
  } CWPSTRUCT,*PCWPSTRUCT,*NPCWPSTRUCT,*LPCWPSTRUCT;
  typedef struct tagCWPRETSTRUCT {
    LRESULT lResult;
    LPARAM lParam;
    WPARAM wParam;
    UINT message;
    HWND hwnd;
  } CWPRETSTRUCT,*PCWPRETSTRUCT,*NPCWPRETSTRUCT,*LPCWPRETSTRUCT;
#define LLKHF_EXTENDED (KF_EXTENDED >> 8)
#define LLKHF_INJECTED 0x00000010
#define LLKHF_ALTDOWN (KF_ALTDOWN >> 8)
#define LLKHF_UP (KF_UP >> 8)
#define LLKHF_LOWER_IL_INJECTED 0x00000002
#define LLMHF_INJECTED 0x00000001
#define LLMHF_LOWER_IL_INJECTED 0x00000002
  typedef struct tagKBDLLHOOKSTRUCT {
    DWORD vkCode;
    DWORD scanCode;
    DWORD flags;
    DWORD time;
    ULONG_PTR dwExtraInfo;
  } KBDLLHOOKSTRUCT,*LPKBDLLHOOKSTRUCT,*PKBDLLHOOKSTRUCT;
  typedef struct tagMSLLHOOKSTRUCT {
    POINT pt;
    DWORD mouseData;
    DWORD flags;
    DWORD time;
    ULONG_PTR dwExtraInfo;
  } MSLLHOOKSTRUCT,*LPMSLLHOOKSTRUCT,*PMSLLHOOKSTRUCT;
  typedef struct tagDEBUGHOOKINFO {
    DWORD idThread;
    DWORD idThreadInstaller;
    LPARAM lParam;
    WPARAM wParam;
    int code;
  } DEBUGHOOKINFO,*PDEBUGHOOKINFO,*NPDEBUGHOOKINFO,*LPDEBUGHOOKINFO;
  typedef struct tagMOUSEHOOKSTRUCT {
    POINT pt;
    HWND hwnd;
    UINT wHitTestCode;
    ULONG_PTR dwExtraInfo;
  } MOUSEHOOKSTRUCT,*LPMOUSEHOOKSTRUCT,*PMOUSEHOOKSTRUCT;
  typedef struct tagMOUSEHOOKSTRUCTEX {
    MOUSEHOOKSTRUCT __unnamed;
    DWORD mouseData;
  } MOUSEHOOKSTRUCTEX,*LPMOUSEHOOKSTRUCTEX,*PMOUSEHOOKSTRUCTEX;
  typedef struct tagHARDWAREHOOKSTRUCT {
    HWND hwnd;
    UINT message;
    WPARAM wParam;
    LPARAM lParam;
  } HARDWAREHOOKSTRUCT,*LPHARDWAREHOOKSTRUCT,*PHARDWAREHOOKSTRUCT;
#define HKL_PREV 0
#define HKL_NEXT 1
#define KLF_ACTIVATE 0x00000001
#define KLF_SUBSTITUTE_OK 0x00000002
#define KLF_REORDER 0x00000008
#define KLF_REPLACELANG 0x00000010
#define KLF_NOTELLSHELL 0x00000080
#define KLF_SETFORPROCESS 0x00000100
#define KLF_SHIFTLOCK 0x00010000
#define KLF_RESET 0x40000000
#define INPUTLANGCHANGE_SYSCHARSET 0x0001
#define INPUTLANGCHANGE_FORWARD 0x0002
#define INPUTLANGCHANGE_BACKWARD 0x0004
#define KL_NAMELENGTH 9
#define LoadKeyboardLayout __MINGW_NAME_AW(LoadKeyboardLayout)
#define GetKeyboardLayoutName __MINGW_NAME_AW(GetKeyboardLayoutName)
  __attribute__((dllimport)) HKL __attribute__((__stdcall__)) LoadKeyboardLayoutA(LPCSTR pwszKLID,UINT Flags);
  __attribute__((dllimport)) HKL __attribute__((__stdcall__)) LoadKeyboardLayoutW(LPCWSTR pwszKLID,UINT Flags);
  __attribute__((dllimport)) HKL __attribute__((__stdcall__)) ActivateKeyboardLayout(HKL hkl,UINT Flags);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) ToUnicodeEx(UINT wVirtKey,UINT wScanCode,const BYTE *lpKeyState,LPWSTR pwszBuff,int cchBuff,UINT wFlags,HKL dwhkl);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnloadKeyboardLayout(HKL hkl);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetKeyboardLayoutNameA(LPSTR pwszKLID);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetKeyboardLayoutNameW(LPWSTR pwszKLID);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetKeyboardLayoutList(int nBuff,HKL *lpList);
  __attribute__((dllimport)) HKL __attribute__((__stdcall__)) GetKeyboardLayout(DWORD idThread);
  typedef struct tagMOUSEMOVEPOINT {
    int x;
    int y;
    DWORD time;
    ULONG_PTR dwExtraInfo;
  } MOUSEMOVEPOINT,*PMOUSEMOVEPOINT,*LPMOUSEMOVEPOINT;
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetMouseMovePointsEx(UINT cbSize,LPMOUSEMOVEPOINT lppt,LPMOUSEMOVEPOINT lpptBuf,int nBufPoints,DWORD resolution);
#define GMMP_USE_DISPLAY_POINTS 1
#define GMMP_USE_HIGH_RESOLUTION_POINTS 2
#define DESKTOP_READOBJECTS __MSABI_LONG(0x0001)
#define DESKTOP_CREATEWINDOW __MSABI_LONG(0x0002)
#define DESKTOP_CREATEMENU __MSABI_LONG(0x0004)
#define DESKTOP_HOOKCONTROL __MSABI_LONG(0x0008)
#define DESKTOP_JOURNALRECORD __MSABI_LONG(0x0010)
#define DESKTOP_JOURNALPLAYBACK __MSABI_LONG(0x0020)
#define DESKTOP_ENUMERATE __MSABI_LONG(0x0040)
#define DESKTOP_WRITEOBJECTS __MSABI_LONG(0x0080)
#define DESKTOP_SWITCHDESKTOP __MSABI_LONG(0x0100)
#define DF_ALLOWOTHERACCOUNTHOOK __MSABI_LONG(0x0001)
#define CreateDesktop __MINGW_NAME_AW(CreateDesktop)
#define CreateDesktopEx __MINGW_NAME_AW(CreateDesktopEx)
  __attribute__((dllimport)) HDESK __attribute__((__stdcall__)) CreateDesktopA(LPCSTR lpszDesktop,LPCSTR lpszDevice,LPDEVMODEA pDevmode,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);
  __attribute__((dllimport)) HDESK __attribute__((__stdcall__)) CreateDesktopW(LPCWSTR lpszDesktop,LPCWSTR lpszDevice,LPDEVMODEW pDevmode,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);
  __attribute__((dllimport)) HDESK __attribute__((__stdcall__)) CreateDesktopExA (LPCSTR lpszDesktop, LPCSTR lpszDevice, DEVMODEA *pDevmode, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa, ULONG ulHeapSize, PVOID pvoid);
  __attribute__((dllimport)) HDESK __attribute__((__stdcall__)) CreateDesktopExW (LPCWSTR lpszDesktop, LPCWSTR lpszDevice, DEVMODEW *pDevmode, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa, ULONG ulHeapSize, PVOID pvoid);
#define OpenDesktop __MINGW_NAME_AW(OpenDesktop)
#define EnumDesktops __MINGW_NAME_AW(EnumDesktops)
  __attribute__((dllimport)) HDESK __attribute__((__stdcall__)) OpenDesktopA(LPCSTR lpszDesktop,DWORD dwFlags,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
  __attribute__((dllimport)) HDESK __attribute__((__stdcall__)) OpenDesktopW(LPCWSTR lpszDesktop,DWORD dwFlags,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
  __attribute__((dllimport)) HDESK __attribute__((__stdcall__)) OpenInputDesktop(DWORD dwFlags,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDesktopsA(HWINSTA hwinsta,DESKTOPENUMPROCA lpEnumFunc,LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDesktopsW(HWINSTA hwinsta,DESKTOPENUMPROCW lpEnumFunc,LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDesktopWindows(HDESK hDesktop,WNDENUMPROC lpfn,LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SwitchDesktop(HDESK hDesktop);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetThreadDesktop(HDESK hDesktop);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CloseDesktop(HDESK hDesktop);
  __attribute__((dllimport)) HDESK __attribute__((__stdcall__)) GetThreadDesktop(DWORD dwThreadId);
#define WINSTA_ENUMDESKTOPS __MSABI_LONG(0x0001)
#define WINSTA_READATTRIBUTES __MSABI_LONG(0x0002)
#define WINSTA_ACCESSCLIPBOARD __MSABI_LONG(0x0004)
#define WINSTA_CREATEDESKTOP __MSABI_LONG(0x0008)
#define WINSTA_WRITEATTRIBUTES __MSABI_LONG(0x0010)
#define WINSTA_ACCESSGLOBALATOMS __MSABI_LONG(0x0020)
#define WINSTA_EXITWINDOWS __MSABI_LONG(0x0040)
#define WINSTA_ENUMERATE __MSABI_LONG(0x0100)
#define WINSTA_READSCREEN __MSABI_LONG(0x0200)
#define WINSTA_ALL_ACCESS (WINSTA_ENUMDESKTOPS | WINSTA_READATTRIBUTES | WINSTA_ACCESSCLIPBOARD | WINSTA_CREATEDESKTOP | WINSTA_WRITEATTRIBUTES | WINSTA_ACCESSGLOBALATOMS | WINSTA_EXITWINDOWS | WINSTA_ENUMERATE | WINSTA_READSCREEN)
#define CWF_CREATE_ONLY 0x00000001
#define WSF_VISIBLE __MSABI_LONG(0x0001)
#define CreateWindowStation __MINGW_NAME_AW(CreateWindowStation)
#define OpenWindowStation __MINGW_NAME_AW(OpenWindowStation)
#define EnumWindowStations __MINGW_NAME_AW(EnumWindowStations)
  __attribute__((dllimport)) HWINSTA __attribute__((__stdcall__)) CreateWindowStationA(LPCSTR lpwinsta,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);
  __attribute__((dllimport)) HWINSTA __attribute__((__stdcall__)) CreateWindowStationW(LPCWSTR lpwinsta,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);
  __attribute__((dllimport)) HWINSTA __attribute__((__stdcall__)) OpenWindowStationA(LPCSTR lpszWinSta,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
  __attribute__((dllimport)) HWINSTA __attribute__((__stdcall__)) OpenWindowStationW(LPCWSTR lpszWinSta,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumWindowStationsA(WINSTAENUMPROCA lpEnumFunc,LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumWindowStationsW(WINSTAENUMPROCW lpEnumFunc,LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CloseWindowStation(HWINSTA hWinSta);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetProcessWindowStation(HWINSTA hWinSta);
  __attribute__((dllimport)) HWINSTA __attribute__((__stdcall__)) GetProcessWindowStation(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetUserObjectSecurity(HANDLE hObj,PSECURITY_INFORMATION pSIRequested,PSECURITY_DESCRIPTOR pSID);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetUserObjectSecurity(HANDLE hObj,PSECURITY_INFORMATION pSIRequested,PSECURITY_DESCRIPTOR pSID,DWORD nLength,LPDWORD lpnLengthNeeded);
#define UOI_FLAGS 1
#define UOI_NAME 2
#define UOI_TYPE 3
#define UOI_USER_SID 4
#define UOI_HEAPSIZE 5
#define UOI_IO 6
#define UOI_TIMERPROC_EXCEPTION_SUPPRESSION 7
  typedef struct tagUSEROBJECTFLAGS {
    WINBOOL fInherit;
    WINBOOL fReserved;
    DWORD dwFlags;
  } USEROBJECTFLAGS,*PUSEROBJECTFLAGS;
#define GetUserObjectInformation __MINGW_NAME_AW(GetUserObjectInformation)
#define SetUserObjectInformation __MINGW_NAME_AW(SetUserObjectInformation)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetUserObjectInformationA(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength,LPDWORD lpnLengthNeeded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetUserObjectInformationW(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength,LPDWORD lpnLengthNeeded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetUserObjectInformationA(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetUserObjectInformationW(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength);
  typedef struct tagWNDCLASSEXA {
    UINT cbSize;
    UINT style;
    WNDPROC lpfnWndProc;
    int cbClsExtra;
    int cbWndExtra;
    HINSTANCE hInstance;
    HICON hIcon;
    HCURSOR hCursor;
    HBRUSH hbrBackground;
    LPCSTR lpszMenuName;
    LPCSTR lpszClassName;
    HICON hIconSm;
  } WNDCLASSEXA,*PWNDCLASSEXA,*NPWNDCLASSEXA,*LPWNDCLASSEXA;
  typedef struct tagWNDCLASSEXW {
    UINT cbSize;
    UINT style;
    WNDPROC lpfnWndProc;
    int cbClsExtra;
    int cbWndExtra;
    HINSTANCE hInstance;
    HICON hIcon;
    HCURSOR hCursor;
    HBRUSH hbrBackground;
    LPCWSTR lpszMenuName;
    LPCWSTR lpszClassName;
    HICON hIconSm;
  } WNDCLASSEXW,*PWNDCLASSEXW,*NPWNDCLASSEXW,*LPWNDCLASSEXW;
  typedef WNDCLASSEXA WNDCLASSEX;
  typedef PWNDCLASSEXA PWNDCLASSEX;
  typedef NPWNDCLASSEXA NPWNDCLASSEX;
  typedef LPWNDCLASSEXA LPWNDCLASSEX;
  typedef struct tagWNDCLASSA {
    UINT style;
    WNDPROC lpfnWndProc;
    int cbClsExtra;
    int cbWndExtra;
    HINSTANCE hInstance;
    HICON hIcon;
    HCURSOR hCursor;
    HBRUSH hbrBackground;
    LPCSTR lpszMenuName;
    LPCSTR lpszClassName;
  } WNDCLASSA,*PWNDCLASSA,*NPWNDCLASSA,*LPWNDCLASSA;
  typedef struct tagWNDCLASSW {
    UINT style;
    WNDPROC lpfnWndProc;
    int cbClsExtra;
    int cbWndExtra;
    HINSTANCE hInstance;
    HICON hIcon;
    HCURSOR hCursor;
    HBRUSH hbrBackground;
    LPCWSTR lpszMenuName;
    LPCWSTR lpszClassName;
  } WNDCLASSW,*PWNDCLASSW,*NPWNDCLASSW,*LPWNDCLASSW;
  typedef WNDCLASSA WNDCLASS;
  typedef PWNDCLASSA PWNDCLASS;
  typedef NPWNDCLASSA NPWNDCLASS;
  typedef LPWNDCLASSA LPWNDCLASS;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsHungAppWindow(HWND hwnd);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) DisableProcessWindowsGhosting(void);
  typedef struct tagMSG {
    HWND hwnd;
    UINT message;
    WPARAM wParam;
    LPARAM lParam;
    DWORD time;
    POINT pt;
  } MSG,*PMSG,*NPMSG,*LPMSG;
#define POINTSTOPOINT(pt,pts) { (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts); (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); }
#define POINTTOPOINTS(pt) (MAKELONG((short)((pt).x),(short)((pt).y)))
#define MAKEWPARAM(l,h) ((WPARAM)(DWORD)MAKELONG(l,h))
#define MAKELPARAM(l,h) ((LPARAM)(DWORD)MAKELONG(l,h))
#define MAKELRESULT(l,h) ((LRESULT)(DWORD)MAKELONG(l,h))
#define GWL_WNDPROC (-4)
#define GWL_HINSTANCE (-6)
#define GWL_HWNDPARENT (-8)
#define GWL_STYLE (-16)
#define GWL_EXSTYLE (-20)
#define GWL_USERDATA (-21)
#define GWL_ID (-12)
#define GWLP_WNDPROC (-4)
#define GWLP_HINSTANCE (-6)
#define GWLP_HWNDPARENT (-8)
#define GWLP_USERDATA (-21)
#define GWLP_ID (-12)
#define GCL_MENUNAME (-8)
#define GCL_HBRBACKGROUND (-10)
#define GCL_HCURSOR (-12)
#define GCL_HICON (-14)
#define GCL_HMODULE (-16)
#define GCL_CBWNDEXTRA (-18)
#define GCL_CBCLSEXTRA (-20)
#define GCL_WNDPROC (-24)
#define GCL_STYLE (-26)
#define GCW_ATOM (-32)
#define GCL_HICONSM (-34)
#define GCLP_MENUNAME (-8)
#define GCLP_HBRBACKGROUND (-10)
#define GCLP_HCURSOR (-12)
#define GCLP_HICON (-14)
#define GCLP_HMODULE (-16)
#define GCLP_WNDPROC (-24)
#define GCLP_HICONSM (-34)
#define WM_NULL 0x0000
#define WM_CREATE 0x0001
#define WM_DESTROY 0x0002
#define WM_MOVE 0x0003
#define WM_SIZE 0x0005
#define WM_ACTIVATE 0x0006
#define WA_INACTIVE 0
#define WA_ACTIVE 1
#define WA_CLICKACTIVE 2
#define WM_SETFOCUS 0x0007
#define WM_KILLFOCUS 0x0008
#define WM_ENABLE 0x000A
#define WM_SETREDRAW 0x000B
#define WM_SETTEXT 0x000C
#define WM_GETTEXT 0x000D
#define WM_GETTEXTLENGTH 0x000E
#define WM_PAINT 0x000F
#define WM_CLOSE 0x0010
#define WM_QUERYENDSESSION 0x0011
#define WM_QUERYOPEN 0x0013
#define WM_ENDSESSION 0x0016
#define WM_QUIT 0x0012
#define WM_ERASEBKGND 0x0014
#define WM_SYSCOLORCHANGE 0x0015
#define WM_SHOWWINDOW 0x0018
#define WM_WININICHANGE 0x001A
#define WM_SETTINGCHANGE WM_WININICHANGE
#define WM_DEVMODECHANGE 0x001B
#define WM_ACTIVATEAPP 0x001C
#define WM_FONTCHANGE 0x001D
#define WM_TIMECHANGE 0x001E
#define WM_CANCELMODE 0x001F
#define WM_SETCURSOR 0x0020
#define WM_MOUSEACTIVATE 0x0021
#define WM_CHILDACTIVATE 0x0022
#define WM_QUEUESYNC 0x0023
#define WM_GETMINMAXINFO 0x0024
  typedef struct tagMINMAXINFO {
    POINT ptReserved;
    POINT ptMaxSize;
    POINT ptMaxPosition;
    POINT ptMinTrackSize;
    POINT ptMaxTrackSize;
  } MINMAXINFO,*PMINMAXINFO,*LPMINMAXINFO;
#define WM_PAINTICON 0x0026
#define WM_ICONERASEBKGND 0x0027
#define WM_NEXTDLGCTL 0x0028
#define WM_SPOOLERSTATUS 0x002A
#define WM_DRAWITEM 0x002B
#define WM_MEASUREITEM 0x002C
#define WM_DELETEITEM 0x002D
#define WM_VKEYTOITEM 0x002E
#define WM_CHARTOITEM 0x002F
#define WM_SETFONT 0x0030
#define WM_GETFONT 0x0031
#define WM_SETHOTKEY 0x0032
#define WM_GETHOTKEY 0x0033
#define WM_QUERYDRAGICON 0x0037
#define WM_COMPAREITEM 0x0039
#define WM_GETOBJECT 0x003D
#define WM_COMPACTING 0x0041
#define WM_COMMNOTIFY 0x0044
#define WM_WINDOWPOSCHANGING 0x0046
#define WM_WINDOWPOSCHANGED 0x0047
#define WM_POWER 0x0048
#define PWR_OK 1
#define PWR_FAIL (-1)
#define PWR_SUSPENDREQUEST 1
#define PWR_SUSPENDRESUME 2
#define PWR_CRITICALRESUME 3
#define WM_COPYDATA 0x004A
#define WM_CANCELJOURNAL 0x004B
  typedef struct tagCOPYDATASTRUCT {
    ULONG_PTR dwData;
    DWORD cbData;
    PVOID lpData;
  } COPYDATASTRUCT,*PCOPYDATASTRUCT;
  typedef struct tagMDINEXTMENU {
    HMENU hmenuIn;
    HMENU hmenuNext;
    HWND hwndNext;
  } MDINEXTMENU,*PMDINEXTMENU,*LPMDINEXTMENU;
#define WM_NOTIFY 0x004E
#define WM_INPUTLANGCHANGEREQUEST 0x0050
#define WM_INPUTLANGCHANGE 0x0051
#define WM_TCARD 0x0052
#define WM_HELP 0x0053
#define WM_USERCHANGED 0x0054
#define WM_NOTIFYFORMAT 0x0055
#define NFR_ANSI 1
#define NFR_UNICODE 2
#define NF_QUERY 3
#define NF_REQUERY 4
#define WM_CONTEXTMENU 0x007B
#define WM_STYLECHANGING 0x007C
#define WM_STYLECHANGED 0x007D
#define WM_DISPLAYCHANGE 0x007E
#define WM_GETICON 0x007F
#define WM_SETICON 0x0080
#define WM_NCCREATE 0x0081
#define WM_NCDESTROY 0x0082
#define WM_NCCALCSIZE 0x0083
#define WM_NCHITTEST 0x0084
#define WM_NCPAINT 0x0085
#define WM_NCACTIVATE 0x0086
#define WM_GETDLGCODE 0x0087
#define WM_SYNCPAINT 0x0088
#define WM_NCMOUSEMOVE 0x00A0
#define WM_NCLBUTTONDOWN 0x00A1
#define WM_NCLBUTTONUP 0x00A2
#define WM_NCLBUTTONDBLCLK 0x00A3
#define WM_NCRBUTTONDOWN 0x00A4
#define WM_NCRBUTTONUP 0x00A5
#define WM_NCRBUTTONDBLCLK 0x00A6
#define WM_NCMBUTTONDOWN 0x00A7
#define WM_NCMBUTTONUP 0x00A8
#define WM_NCMBUTTONDBLCLK 0x00A9
#define WM_NCXBUTTONDOWN 0x00AB
#define WM_NCXBUTTONUP 0x00AC
#define WM_NCXBUTTONDBLCLK 0x00AD
#define WM_INPUT_DEVICE_CHANGE 0x00fe
#define WM_INPUT 0x00FF
#define WM_KEYFIRST 0x0100
#define WM_KEYDOWN 0x0100
#define WM_KEYUP 0x0101
#define WM_CHAR 0x0102
#define WM_DEADCHAR 0x0103
#define WM_SYSKEYDOWN 0x0104
#define WM_SYSKEYUP 0x0105
#define WM_SYSCHAR 0x0106
#define WM_SYSDEADCHAR 0x0107
#define WM_UNICHAR 0x0109
#define WM_KEYLAST 0x0109
#define UNICODE_NOCHAR 0xFFFF
#define WM_IME_STARTCOMPOSITION 0x010D
#define WM_IME_ENDCOMPOSITION 0x010E
#define WM_IME_COMPOSITION 0x010F
#define WM_IME_KEYLAST 0x010F
#define WM_INITDIALOG 0x0110
#define WM_COMMAND 0x0111
#define WM_SYSCOMMAND 0x0112
#define WM_TIMER 0x0113
#define WM_HSCROLL 0x0114
#define WM_VSCROLL 0x0115
#define WM_INITMENU 0x0116
#define WM_INITMENUPOPUP 0x0117
#define WM_MENUSELECT 0x011F
#define WM_MENUCHAR 0x0120
#define WM_ENTERIDLE 0x0121
#define WM_MENURBUTTONUP 0x0122
#define WM_MENUDRAG 0x0123
#define WM_MENUGETOBJECT 0x0124
#define WM_UNINITMENUPOPUP 0x0125
#define WM_MENUCOMMAND 0x0126
#define WM_CHANGEUISTATE 0x0127
#define WM_UPDATEUISTATE 0x0128
#define WM_QUERYUISTATE 0x0129
#define UIS_SET 1
#define UIS_CLEAR 2
#define UIS_INITIALIZE 3
#define UISF_HIDEFOCUS 0x1
#define UISF_HIDEACCEL 0x2
#define UISF_ACTIVE 0x4
#define WM_CTLCOLORMSGBOX 0x0132
#define WM_CTLCOLOREDIT 0x0133
#define WM_CTLCOLORLISTBOX 0x0134
#define WM_CTLCOLORBTN 0x0135
#define WM_CTLCOLORDLG 0x0136
#define WM_CTLCOLORSCROLLBAR 0x0137
#define WM_CTLCOLORSTATIC 0x0138
#define MN_GETHMENU 0x01E1
#define WM_MOUSEFIRST 0x0200
#define WM_MOUSEMOVE 0x0200
#define WM_LBUTTONDOWN 0x0201
#define WM_LBUTTONUP 0x0202
#define WM_LBUTTONDBLCLK 0x0203
#define WM_RBUTTONDOWN 0x0204
#define WM_RBUTTONUP 0x0205
#define WM_RBUTTONDBLCLK 0x0206
#define WM_MBUTTONDOWN 0x0207
#define WM_MBUTTONUP 0x0208
#define WM_MBUTTONDBLCLK 0x0209
#define WM_MOUSEWHEEL 0x020A
#define WM_XBUTTONDOWN 0x020B
#define WM_XBUTTONUP 0x020C
#define WM_XBUTTONDBLCLK 0x020D
#define WM_MOUSEHWHEEL 0x020e
#define WM_MOUSELAST 0x020e
#define WHEEL_DELTA 120
#define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam))
#define WHEEL_PAGESCROLL (UINT_MAX)
#define GET_KEYSTATE_WPARAM(wParam) (LOWORD(wParam))
#define GET_NCHITTEST_WPARAM(wParam) ((short)LOWORD(wParam))
#define GET_XBUTTON_WPARAM(wParam) (HIWORD(wParam))
#define XBUTTON1 0x0001
#define XBUTTON2 0x0002
#define WM_PARENTNOTIFY 0x0210
#define WM_ENTERMENULOOP 0x0211
#define WM_EXITMENULOOP 0x0212
#define WM_NEXTMENU 0x0213
#define WM_SIZING 0x0214
#define WM_CAPTURECHANGED 0x0215
#define WM_MOVING 0x0216
#define WM_POWERBROADCAST 0x0218
#define PBT_APMQUERYSUSPEND 0x0000
#define PBT_APMQUERYSTANDBY 0x0001
#define PBT_APMQUERYSUSPENDFAILED 0x0002
#define PBT_APMQUERYSTANDBYFAILED 0x0003
#define PBT_APMSUSPEND 0x0004
#define PBT_APMSTANDBY 0x0005
#define PBT_APMRESUMECRITICAL 0x0006
#define PBT_APMRESUMESUSPEND 0x0007
#define PBT_APMRESUMESTANDBY 0x0008
#define PBTF_APMRESUMEFROMFAILURE 0x00000001
#define PBT_APMBATTERYLOW 0x0009
#define PBT_APMPOWERSTATUSCHANGE 0x000A
#define PBT_APMOEMEVENT 0x000B
#define PBT_APMRESUMEAUTOMATIC 0x0012
#define PBT_POWERSETTINGCHANGE 32787
  typedef struct {
    GUID PowerSetting;
    DWORD DataLength;
    UCHAR Data[1];
  } POWERBROADCAST_SETTING,*PPOWERBROADCAST_SETTING;
#define WM_DEVICECHANGE 0x0219
#define WM_MDICREATE 0x0220
#define WM_MDIDESTROY 0x0221
#define WM_MDIACTIVATE 0x0222
#define WM_MDIRESTORE 0x0223
#define WM_MDINEXT 0x0224
#define WM_MDIMAXIMIZE 0x0225
#define WM_MDITILE 0x0226
#define WM_MDICASCADE 0x0227
#define WM_MDIICONARRANGE 0x0228
#define WM_MDIGETACTIVE 0x0229
#define WM_MDISETMENU 0x0230
#define WM_ENTERSIZEMOVE 0x0231
#define WM_EXITSIZEMOVE 0x0232
#define WM_DROPFILES 0x0233
#define WM_MDIREFRESHMENU 0x0234
#define WM_IME_SETCONTEXT 0x0281
#define WM_IME_NOTIFY 0x0282
#define WM_IME_CONTROL 0x0283
#define WM_IME_COMPOSITIONFULL 0x0284
#define WM_IME_SELECT 0x0285
#define WM_IME_CHAR 0x0286
#define WM_IME_REQUEST 0x0288
#define WM_IME_KEYDOWN 0x0290
#define WM_IME_KEYUP 0x0291
#define WM_MOUSEHOVER 0x02A1
#define WM_MOUSELEAVE 0x02A3
#define WM_NCMOUSEHOVER 0x02A0
#define WM_NCMOUSELEAVE 0x02A2
#define WM_WTSSESSION_CHANGE 0x02B1
#define WM_TABLET_FIRST 0x02c0
#define WM_TABLET_LAST 0x02df
#define WM_CUT 0x0300
#define WM_COPY 0x0301
#define WM_PASTE 0x0302
#define WM_CLEAR 0x0303
#define WM_UNDO 0x0304
#define WM_RENDERFORMAT 0x0305
#define WM_RENDERALLFORMATS 0x0306
#define WM_DESTROYCLIPBOARD 0x0307
#define WM_DRAWCLIPBOARD 0x0308
#define WM_PAINTCLIPBOARD 0x0309
#define WM_VSCROLLCLIPBOARD 0x030A
#define WM_SIZECLIPBOARD 0x030B
#define WM_ASKCBFORMATNAME 0x030C
#define WM_CHANGECBCHAIN 0x030D
#define WM_HSCROLLCLIPBOARD 0x030E
#define WM_QUERYNEWPALETTE 0x030F
#define WM_PALETTEISCHANGING 0x0310
#define WM_PALETTECHANGED 0x0311
#define WM_HOTKEY 0x0312
#define WM_PRINT 0x0317
#define WM_PRINTCLIENT 0x0318
#define WM_APPCOMMAND 0x0319
#define WM_THEMECHANGED 0x031A
#define WM_CLIPBOARDUPDATE 0x031d
#define WM_DWMCOMPOSITIONCHANGED 0x031e
#define WM_DWMNCRENDERINGCHANGED 0x031f
#define WM_DWMCOLORIZATIONCOLORCHANGED 0x0320
#define WM_DWMWINDOWMAXIMIZEDCHANGE 0x0321
#define WM_GETTITLEBARINFOEX 0x033f
#define WM_HANDHELDFIRST 0x0358
#define WM_HANDHELDLAST 0x035F
#define WM_AFXFIRST 0x0360
#define WM_AFXLAST 0x037F
#define WM_PENWINFIRST 0x0380
#define WM_PENWINLAST 0x038F
#define WM_APP 0x8000
#define WM_USER 0x0400
#define WMSZ_LEFT 1
#define WMSZ_RIGHT 2
#define WMSZ_TOP 3
#define WMSZ_TOPLEFT 4
#define WMSZ_TOPRIGHT 5
#define WMSZ_BOTTOM 6
#define WMSZ_BOTTOMLEFT 7
#define WMSZ_BOTTOMRIGHT 8
#define HTERROR (-2)
#define HTTRANSPARENT (-1)
#define HTNOWHERE 0
#define HTCLIENT 1
#define HTCAPTION 2
#define HTSYSMENU 3
#define HTGROWBOX 4
#define HTSIZE HTGROWBOX
#define HTMENU 5
#define HTHSCROLL 6
#define HTVSCROLL 7
#define HTMINBUTTON 8
#define HTMAXBUTTON 9
#define HTLEFT 10
#define HTRIGHT 11
#define HTTOP 12
#define HTTOPLEFT 13
#define HTTOPRIGHT 14
#define HTBOTTOM 15
#define HTBOTTOMLEFT 16
#define HTBOTTOMRIGHT 17
#define HTBORDER 18
#define HTREDUCE HTMINBUTTON
#define HTZOOM HTMAXBUTTON
#define HTSIZEFIRST HTLEFT
#define HTSIZELAST HTBOTTOMRIGHT
#define HTOBJECT 19
#define HTCLOSE 20
#define HTHELP 21
#define SMTO_NORMAL 0x0000
#define SMTO_BLOCK 0x0001
#define SMTO_ABORTIFHUNG 0x0002
#define SMTO_NOTIMEOUTIFNOTHUNG 0x0008
#define SMTO_ERRORONEXIT 0x0020
#define MA_ACTIVATE 1
#define MA_ACTIVATEANDEAT 2
#define MA_NOACTIVATE 3
#define MA_NOACTIVATEANDEAT 4
#define ICON_SMALL 0
#define ICON_BIG 1
#define ICON_SMALL2 2
#define RegisterWindowMessage __MINGW_NAME_AW(RegisterWindowMessage)
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) RegisterWindowMessageA(LPCSTR lpString);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) RegisterWindowMessageW(LPCWSTR lpString);
#define SIZE_RESTORED 0
#define SIZE_MINIMIZED 1
#define SIZE_MAXIMIZED 2
#define SIZE_MAXSHOW 3
#define SIZE_MAXHIDE 4
#define SIZENORMAL SIZE_RESTORED
#define SIZEICONIC SIZE_MINIMIZED
#define SIZEFULLSCREEN SIZE_MAXIMIZED
#define SIZEZOOMSHOW SIZE_MAXSHOW
#define SIZEZOOMHIDE SIZE_MAXHIDE
  typedef struct tagWINDOWPOS {
    HWND hwnd;
    HWND hwndInsertAfter;
    int x;
    int y;
    int cx;
    int cy;
    UINT flags;
  } WINDOWPOS,*LPWINDOWPOS,*PWINDOWPOS;
  typedef struct tagNCCALCSIZE_PARAMS {
    RECT rgrc[3];
    PWINDOWPOS lppos;
  } NCCALCSIZE_PARAMS,*LPNCCALCSIZE_PARAMS;
#define WVR_ALIGNTOP 0x0010
#define WVR_ALIGNLEFT 0x0020
#define WVR_ALIGNBOTTOM 0x0040
#define WVR_ALIGNRIGHT 0x0080
#define WVR_HREDRAW 0x0100
#define WVR_VREDRAW 0x0200
#define WVR_REDRAW (WVR_HREDRAW | WVR_VREDRAW)
#define WVR_VALIDRECTS 0x0400
#define MK_LBUTTON 0x0001
#define MK_RBUTTON 0x0002
#define MK_SHIFT 0x0004
#define MK_CONTROL 0x0008
#define MK_MBUTTON 0x0010
#define MK_XBUTTON1 0x0020
#define MK_XBUTTON2 0x0040
#define TME_HOVER 0x00000001
#define TME_LEAVE 0x00000002
#define TME_NONCLIENT 0x00000010
#define TME_QUERY 0x40000000
#define TME_CANCEL 0x80000000
#define HOVER_DEFAULT 0xFFFFFFFF
  typedef struct tagTRACKMOUSEEVENT {
    DWORD cbSize;
    DWORD dwFlags;
    HWND hwndTrack;
    DWORD dwHoverTime;
  } TRACKMOUSEEVENT,*LPTRACKMOUSEEVENT;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);
#define WS_OVERLAPPED __MSABI_LONG(0x00000000)
#define WS_POPUP __MSABI_LONG(0x80000000)
#define WS_CHILD __MSABI_LONG(0x40000000)
#define WS_MINIMIZE __MSABI_LONG(0x20000000)
#define WS_VISIBLE __MSABI_LONG(0x10000000)
#define WS_DISABLED __MSABI_LONG(0x08000000)
#define WS_CLIPSIBLINGS __MSABI_LONG(0x04000000)
#define WS_CLIPCHILDREN __MSABI_LONG(0x02000000)
#define WS_MAXIMIZE __MSABI_LONG(0x01000000)
#define WS_CAPTION __MSABI_LONG(0x00C00000)
#define WS_BORDER __MSABI_LONG(0x00800000)
#define WS_DLGFRAME __MSABI_LONG(0x00400000)
#define WS_VSCROLL __MSABI_LONG(0x00200000)
#define WS_HSCROLL __MSABI_LONG(0x00100000)
#define WS_SYSMENU __MSABI_LONG(0x00080000)
#define WS_THICKFRAME __MSABI_LONG(0x00040000)
#define WS_GROUP __MSABI_LONG(0x00020000)
#define WS_TABSTOP __MSABI_LONG(0x00010000)
#define WS_MINIMIZEBOX __MSABI_LONG(0x00020000)
#define WS_MAXIMIZEBOX __MSABI_LONG(0x00010000)
#define WS_TILED WS_OVERLAPPED
#define WS_ICONIC WS_MINIMIZE
#define WS_SIZEBOX WS_THICKFRAME
#define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW
#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
#define WS_POPUPWINDOW (WS_POPUP | WS_BORDER | WS_SYSMENU)
#define WS_CHILDWINDOW (WS_CHILD)
#define WS_EX_DLGMODALFRAME __MSABI_LONG(0x00000001)
#define WS_EX_NOPARENTNOTIFY __MSABI_LONG(0x00000004)
#define WS_EX_TOPMOST __MSABI_LONG(0x00000008)
#define WS_EX_ACCEPTFILES __MSABI_LONG(0x00000010)
#define WS_EX_TRANSPARENT __MSABI_LONG(0x00000020)
#define WS_EX_MDICHILD __MSABI_LONG(0x00000040)
#define WS_EX_TOOLWINDOW __MSABI_LONG(0x00000080)
#define WS_EX_WINDOWEDGE __MSABI_LONG(0x00000100)
#define WS_EX_CLIENTEDGE __MSABI_LONG(0x00000200)
#define WS_EX_CONTEXTHELP __MSABI_LONG(0x00000400)
#define WS_EX_RIGHT __MSABI_LONG(0x00001000)
#define WS_EX_LEFT __MSABI_LONG(0x00000000)
#define WS_EX_RTLREADING __MSABI_LONG(0x00002000)
#define WS_EX_LTRREADING __MSABI_LONG(0x00000000)
#define WS_EX_LEFTSCROLLBAR __MSABI_LONG(0x00004000)
#define WS_EX_RIGHTSCROLLBAR __MSABI_LONG(0x00000000)
#define WS_EX_CONTROLPARENT __MSABI_LONG(0x00010000)
#define WS_EX_STATICEDGE __MSABI_LONG(0x00020000)
#define WS_EX_APPWINDOW __MSABI_LONG(0x00040000)
#define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE)
#define WS_EX_PALETTEWINDOW (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
#define WS_EX_LAYERED 0x00080000
#define WS_EX_NOINHERITLAYOUT __MSABI_LONG(0x00100000)
#define WS_EX_LAYOUTRTL __MSABI_LONG(0x00400000)
#define WS_EX_COMPOSITED __MSABI_LONG(0x02000000)
#define WS_EX_NOACTIVATE __MSABI_LONG(0x08000000)
#define CS_VREDRAW 0x0001
#define CS_HREDRAW 0x0002
#define CS_DBLCLKS 0x0008
#define CS_OWNDC 0x0020
#define CS_CLASSDC 0x0040
#define CS_PARENTDC 0x0080
#define CS_NOCLOSE 0x0200
#define CS_SAVEBITS 0x0800
#define CS_BYTEALIGNCLIENT 0x1000
#define CS_BYTEALIGNWINDOW 0x2000
#define CS_GLOBALCLASS 0x4000
#define CS_IME 0x00010000
#define CS_DROPSHADOW 0x00020000
#define PRF_CHECKVISIBLE __MSABI_LONG(0x00000001)
#define PRF_NONCLIENT __MSABI_LONG(0x00000002)
#define PRF_CLIENT __MSABI_LONG(0x00000004)
#define PRF_ERASEBKGND __MSABI_LONG(0x00000008)
#define PRF_CHILDREN __MSABI_LONG(0x00000010)
#define PRF_OWNED __MSABI_LONG(0x00000020)
#define BDR_RAISEDOUTER 0x0001
#define BDR_SUNKENOUTER 0x0002
#define BDR_RAISEDINNER 0x0004
#define BDR_SUNKENINNER 0x0008
#define BDR_OUTER (BDR_RAISEDOUTER | BDR_SUNKENOUTER)
#define BDR_INNER (BDR_RAISEDINNER | BDR_SUNKENINNER)
#define BDR_RAISED (BDR_RAISEDOUTER | BDR_RAISEDINNER)
#define BDR_SUNKEN (BDR_SUNKENOUTER | BDR_SUNKENINNER)
#define EDGE_RAISED (BDR_RAISEDOUTER | BDR_RAISEDINNER)
#define EDGE_SUNKEN (BDR_SUNKENOUTER | BDR_SUNKENINNER)
#define EDGE_ETCHED (BDR_SUNKENOUTER | BDR_RAISEDINNER)
#define EDGE_BUMP (BDR_RAISEDOUTER | BDR_SUNKENINNER)
#define BF_LEFT 0x0001
#define BF_TOP 0x0002
#define BF_RIGHT 0x0004
#define BF_BOTTOM 0x0008
#define BF_TOPLEFT (BF_TOP | BF_LEFT)
#define BF_TOPRIGHT (BF_TOP | BF_RIGHT)
#define BF_BOTTOMLEFT (BF_BOTTOM | BF_LEFT)
#define BF_BOTTOMRIGHT (BF_BOTTOM | BF_RIGHT)
#define BF_RECT (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM)
#define BF_DIAGONAL 0x0010
#define BF_DIAGONAL_ENDTOPRIGHT (BF_DIAGONAL | BF_TOP | BF_RIGHT)
#define BF_DIAGONAL_ENDTOPLEFT (BF_DIAGONAL | BF_TOP | BF_LEFT)
#define BF_DIAGONAL_ENDBOTTOMLEFT (BF_DIAGONAL | BF_BOTTOM | BF_LEFT)
#define BF_DIAGONAL_ENDBOTTOMRIGHT (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT)
#define BF_MIDDLE 0x0800
#define BF_SOFT 0x1000
#define BF_ADJUST 0x2000
#define BF_FLAT 0x4000
#define BF_MONO 0x8000
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DrawEdge(HDC hdc,LPRECT qrc,UINT edge,UINT grfFlags);
#define DFC_CAPTION 1
#define DFC_MENU 2
#define DFC_SCROLL 3
#define DFC_BUTTON 4
#define DFC_POPUPMENU 5
#define DFCS_CAPTIONCLOSE 0x0000
#define DFCS_CAPTIONMIN 0x0001
#define DFCS_CAPTIONMAX 0x0002
#define DFCS_CAPTIONRESTORE 0x0003
#define DFCS_CAPTIONHELP 0x0004
#define DFCS_MENUARROW 0x0000
#define DFCS_MENUCHECK 0x0001
#define DFCS_MENUBULLET 0x0002
#define DFCS_MENUARROWRIGHT 0x0004
#define DFCS_SCROLLUP 0x0000
#define DFCS_SCROLLDOWN 0x0001
#define DFCS_SCROLLLEFT 0x0002
#define DFCS_SCROLLRIGHT 0x0003
#define DFCS_SCROLLCOMBOBOX 0x0005
#define DFCS_SCROLLSIZEGRIP 0x0008
#define DFCS_SCROLLSIZEGRIPRIGHT 0x0010
#define DFCS_BUTTONCHECK 0x0000
#define DFCS_BUTTONRADIOIMAGE 0x0001
#define DFCS_BUTTONRADIOMASK 0x0002
#define DFCS_BUTTONRADIO 0x0004
#define DFCS_BUTTON3STATE 0x0008
#define DFCS_BUTTONPUSH 0x0010
#define DFCS_INACTIVE 0x0100
#define DFCS_PUSHED 0x0200
#define DFCS_CHECKED 0x0400
#define DFCS_TRANSPARENT 0x0800
#define DFCS_HOT 0x1000
#define DFCS_ADJUSTRECT 0x2000
#define DFCS_FLAT 0x4000
#define DFCS_MONO 0x8000
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DrawFrameControl(HDC,LPRECT,UINT,UINT);
#define DC_ACTIVE 0x0001
#define DC_SMALLCAP 0x0002
#define DC_ICON 0x0004
#define DC_TEXT 0x0008
#define DC_INBUTTON 0x0010
#define DC_GRADIENT 0x0020
#define DC_BUTTONS 0x1000
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DrawCaption(HWND hwnd,HDC hdc,const RECT *lprect,UINT flags);
#define IDANI_OPEN 1
#define IDANI_CAPTION 3
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DrawAnimatedRects(HWND hwnd,int idAni,const RECT *lprcFrom,const RECT *lprcTo);
#define CF_TEXT 1
#define CF_BITMAP 2
#define CF_METAFILEPICT 3
#define CF_SYLK 4
#define CF_DIF 5
#define CF_TIFF 6
#define CF_OEMTEXT 7
#define CF_DIB 8
#define CF_PALETTE 9
#define CF_PENDATA 10
#define CF_RIFF 11
#define CF_WAVE 12
#define CF_UNICODETEXT 13
#define CF_ENHMETAFILE 14
#define CF_HDROP 15
#define CF_LOCALE 16
#define CF_DIBV5 17
#define CF_MAX 18
#define CF_OWNERDISPLAY 0x0080
#define CF_DSPTEXT 0x0081
#define CF_DSPBITMAP 0x0082
#define CF_DSPMETAFILEPICT 0x0083
#define CF_DSPENHMETAFILE 0x008E
#define CF_PRIVATEFIRST 0x0200
#define CF_PRIVATELAST 0x02FF
#define CF_GDIOBJFIRST 0x0300
#define CF_GDIOBJLAST 0x03FF
#define FVIRTKEY TRUE
#define FNOINVERT 0x02
#define FSHIFT 0x04
#define FCONTROL 0x08
#define FALT 0x10
  typedef struct tagACCEL {
    BYTE fVirt;
    WORD key;
    WORD cmd;
  } ACCEL,*LPACCEL;
  typedef struct tagPAINTSTRUCT {
    HDC hdc;
    WINBOOL fErase;
    RECT rcPaint;
    WINBOOL fRestore;
    WINBOOL fIncUpdate;
    BYTE rgbReserved[32];
  } PAINTSTRUCT,*PPAINTSTRUCT,*NPPAINTSTRUCT,*LPPAINTSTRUCT;
  typedef struct tagCREATESTRUCTA {
    LPVOID lpCreateParams;
    HINSTANCE hInstance;
    HMENU hMenu;
    HWND hwndParent;
    int cy;
    int cx;
    int y;
    int x;
    LONG style;
    LPCSTR lpszName;
    LPCSTR lpszClass;
    DWORD dwExStyle;
  } CREATESTRUCTA,*LPCREATESTRUCTA;
  typedef struct tagCREATESTRUCTW {
    LPVOID lpCreateParams;
    HINSTANCE hInstance;
    HMENU hMenu;
    HWND hwndParent;
    int cy;
    int cx;
    int y;
    int x;
    LONG style;
    LPCWSTR lpszName;
    LPCWSTR lpszClass;
    DWORD dwExStyle;
  } CREATESTRUCTW,*LPCREATESTRUCTW;
  typedef CREATESTRUCTA CREATESTRUCT;
  typedef LPCREATESTRUCTA LPCREATESTRUCT;
  typedef struct tagWINDOWPLACEMENT {
    UINT length;
    UINT flags;
    UINT showCmd;
    POINT ptMinPosition;
    POINT ptMaxPosition;
    RECT rcNormalPosition;
  } WINDOWPLACEMENT;
  typedef WINDOWPLACEMENT *PWINDOWPLACEMENT,*LPWINDOWPLACEMENT;
#define WPF_SETMINPOSITION 0x0001
#define WPF_RESTORETOMAXIMIZED 0x0002
#define WPF_ASYNCWINDOWPLACEMENT 0x0004
  typedef struct tagNMHDR {
    HWND hwndFrom;
    UINT_PTR idFrom;
    UINT code;
  } NMHDR;
  typedef NMHDR *LPNMHDR;
  typedef struct tagSTYLESTRUCT {
    DWORD styleOld;
    DWORD styleNew;
  } STYLESTRUCT,*LPSTYLESTRUCT;
#define ODT_MENU 1
#define ODT_LISTBOX 2
#define ODT_COMBOBOX 3
#define ODT_BUTTON 4
#define ODT_STATIC 5
#define ODA_DRAWENTIRE 0x0001
#define ODA_SELECT 0x0002
#define ODA_FOCUS 0x0004
#define ODS_SELECTED 0x0001
#define ODS_GRAYED 0x0002
#define ODS_DISABLED 0x0004
#define ODS_CHECKED 0x0008
#define ODS_FOCUS 0x0010
#define ODS_DEFAULT 0x0020
#define ODS_COMBOBOXEDIT 0x1000
#define ODS_HOTLIGHT 0x0040
#define ODS_INACTIVE 0x0080
#define ODS_NOACCEL 0x0100
#define ODS_NOFOCUSRECT 0x0200
  typedef struct tagMEASUREITEMSTRUCT {
    UINT CtlType;
    UINT CtlID;
    UINT itemID;
    UINT itemWidth;
    UINT itemHeight;
    ULONG_PTR itemData;
  } MEASUREITEMSTRUCT,*PMEASUREITEMSTRUCT,*LPMEASUREITEMSTRUCT;
  typedef struct tagDRAWITEMSTRUCT {
    UINT CtlType;
    UINT CtlID;
    UINT itemID;
    UINT itemAction;
    UINT itemState;
    HWND hwndItem;
    HDC hDC;
    RECT rcItem;
    ULONG_PTR itemData;
  } DRAWITEMSTRUCT,*PDRAWITEMSTRUCT,*LPDRAWITEMSTRUCT;
  typedef struct tagDELETEITEMSTRUCT {
    UINT CtlType;
    UINT CtlID;
    UINT itemID;
    HWND hwndItem;
    ULONG_PTR itemData;
  } DELETEITEMSTRUCT,*PDELETEITEMSTRUCT,*LPDELETEITEMSTRUCT;
  typedef struct tagCOMPAREITEMSTRUCT {
    UINT CtlType;
    UINT CtlID;
    HWND hwndItem;
    UINT itemID1;
    ULONG_PTR itemData1;
    UINT itemID2;
    ULONG_PTR itemData2;
    DWORD dwLocaleId;
  } COMPAREITEMSTRUCT,*PCOMPAREITEMSTRUCT,*LPCOMPAREITEMSTRUCT;
#define GetMessage __MINGW_NAME_AW(GetMessage)
#define DispatchMessage __MINGW_NAME_AW(DispatchMessage)
#define PeekMessage __MINGW_NAME_AW(PeekMessage)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetMessageA(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetMessageW(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TranslateMessage(const MSG *lpMsg);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) DispatchMessageA(const MSG *lpMsg);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) DispatchMessageW(const MSG *lpMsg);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetMessageQueue(int cMessagesMax);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PeekMessageA(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PeekMessageW(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg);
#define PM_NOREMOVE 0x0000
#define PM_REMOVE 0x0001
#define PM_NOYIELD 0x0002
#define PM_QS_INPUT (QS_INPUT << 16)
#define PM_QS_POSTMESSAGE ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16)
#define PM_QS_PAINT (QS_PAINT << 16)
#define PM_QS_SENDMESSAGE (QS_SENDMESSAGE << 16)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RegisterHotKey(HWND hWnd,int id,UINT fsModifiers,UINT vk);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnregisterHotKey(HWND hWnd,int id);
#define MOD_ALT 0x0001
#define MOD_CONTROL 0x0002
#define MOD_SHIFT 0x0004
#define MOD_WIN 0x0008
#define IDHOT_SNAPWINDOW (-1)
#define IDHOT_SNAPDESKTOP (-2)
#define ENDSESSION_CLOSEAPP 0x00000001
#define ENDSESSION_CRITICAL 0x40000000
#define ENDSESSION_LOGOFF 0x80000000
#define EWX_LOGOFF 0x00000000
#define EWX_SHUTDOWN 0x00000001
#define EWX_REBOOT 0x00000002
#define EWX_FORCE 0x00000004
#define EWX_POWEROFF 0x00000008
#define EWX_FORCEIFHUNG 0x00000010
#define EWX_QUICKRESOLVE 0x00000020
#define EWX_RESTARTAPPS 0x00000040
#define EWX_HYBRID_SHUTDOWN 0x00400000
#define EWX_BOOTOPTIONS 0x01000000
#define EWX_ARSO 0x04000000
#define EWX_CHECK_SAFE_FOR_SERVER 0x08000000
#define ExitWindows(dwReserved,Code) ExitWindowsEx(EWX_LOGOFF,0xFFFFFFFF)
#define SendMessage __MINGW_NAME_AW(SendMessage)
#define SendMessageTimeout __MINGW_NAME_AW(SendMessageTimeout)
#define SendNotifyMessage __MINGW_NAME_AW(SendNotifyMessage)
#define SendMessageCallback __MINGW_NAME_AW(SendMessageCallback)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ExitWindowsEx(UINT uFlags,DWORD dwReason);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SwapMouseButton(WINBOOL fSwap);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetMessagePos(void);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) GetMessageTime(void);
  __attribute__((dllimport)) LPARAM __attribute__((__stdcall__)) GetMessageExtraInfo(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsWow64Message(void);
  __attribute__((dllimport)) LPARAM __attribute__((__stdcall__)) SetMessageExtraInfo(LPARAM lParam);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) SendMessageA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) SendMessageW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) SendMessageTimeoutA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,UINT fuFlags,UINT uTimeout,PDWORD_PTR lpdwResult);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) SendMessageTimeoutW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,UINT fuFlags,UINT uTimeout,PDWORD_PTR lpdwResult);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SendNotifyMessageA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SendNotifyMessageW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SendMessageCallbackA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,SENDASYNCPROC lpResultCallBack,ULONG_PTR dwData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SendMessageCallbackW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,SENDASYNCPROC lpResultCallBack,ULONG_PTR dwData);
  typedef struct {
    UINT cbSize;
    HDESK hdesk;
    HWND hwnd;
    LUID luid;
  } BSMINFO,*PBSMINFO;
#define BroadcastSystemMessageEx __MINGW_NAME_AW(BroadcastSystemMessageEx)
#define BroadcastSystemMessage __MINGW_NAME_AW(BroadcastSystemMessage)
  __attribute__((dllimport)) long __attribute__((__stdcall__)) BroadcastSystemMessageExA(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam,PBSMINFO pbsmInfo);
  __attribute__((dllimport)) long __attribute__((__stdcall__)) BroadcastSystemMessageExW(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam,PBSMINFO pbsmInfo);
  __attribute__((dllimport)) long __attribute__((__stdcall__)) BroadcastSystemMessageA(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam);
  __attribute__((dllimport)) long __attribute__((__stdcall__)) BroadcastSystemMessageW(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam);
#define BSM_ALLCOMPONENTS 0x00000000
#define BSM_VXDS 0x00000001
#define BSM_NETDRIVER 0x00000002
#define BSM_INSTALLABLEDRIVERS 0x00000004
#define BSM_APPLICATIONS 0x00000008
#define BSM_ALLDESKTOPS 0x00000010
#define BSF_QUERY 0x00000001
#define BSF_IGNORECURRENTTASK 0x00000002
#define BSF_FLUSHDISK 0x00000004
#define BSF_NOHANG 0x00000008
#define BSF_POSTMESSAGE 0x00000010
#define BSF_FORCEIFHUNG 0x00000020
#define BSF_NOTIMEOUTIFNOTHUNG 0x00000040
#define BSF_ALLOWSFW 0x00000080
#define BSF_SENDNOTIFYMESSAGE 0x00000100
#define BSF_RETURNHDESK 0x00000200
#define BSF_LUID 0x00000400
#define BROADCAST_QUERY_DENY 0x424D5144
  typedef PVOID HDEVNOTIFY;
  typedef HDEVNOTIFY *PHDEVNOTIFY;
#define DEVICE_NOTIFY_WINDOW_HANDLE 0x00000000
#define DEVICE_NOTIFY_SERVICE_HANDLE 0x00000001
#define DEVICE_NOTIFY_ALL_INTERFACE_CLASSES 0x00000004
#define RegisterDeviceNotification __MINGW_NAME_AW(RegisterDeviceNotification)
#define PostMessage __MINGW_NAME_AW(PostMessage)
#define PostThreadMessage __MINGW_NAME_AW(PostThreadMessage)
#define PostAppMessage __MINGW_NAME_AW(PostAppMessage)
#define DefWindowProc __MINGW_NAME_AW(DefWindowProc)
#define CallWindowProc __MINGW_NAME_AW(CallWindowProc)
#define RegisterClass __MINGW_NAME_AW(RegisterClass)
#define UnregisterClass __MINGW_NAME_AW(UnregisterClass)
#define GetClassInfo __MINGW_NAME_AW(GetClassInfo)
#define RegisterClassEx __MINGW_NAME_AW(RegisterClassEx)
#define GetClassInfoEx __MINGW_NAME_AW(GetClassInfoEx)
#define _HPOWERNOTIFY_DEF_ 
  typedef HANDLE HPOWERNOTIFY;
  typedef HPOWERNOTIFY *PHPOWERNOTIFY;
  __attribute__((dllimport)) HPOWERNOTIFY __attribute__((__stdcall__)) RegisterPowerSettingNotification (HANDLE hRecipient, LPCGUID PowerSettingGuid, DWORD Flags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnregisterPowerSettingNotification (HPOWERNOTIFY Handle);
  __attribute__((dllimport)) HPOWERNOTIFY __attribute__((__stdcall__)) RegisterSuspendResumeNotification (HANDLE hRecipient, DWORD Flags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnregisterSuspendResumeNotification (HPOWERNOTIFY Handle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PostMessageA (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PostMessageW (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PostThreadMessageA (DWORD idThread, UINT Msg, WPARAM wParam, LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PostThreadMessageW (DWORD idThread, UINT Msg, WPARAM wParam, LPARAM lParam);
#define PostAppMessageA(idThread,wMsg,wParam,lParam) PostThreadMessageA ((DWORD)idThread, wMsg, wParam, lParam)
#define PostAppMessageW(idThread,wMsg,wParam,lParam) PostThreadMessageW ((DWORD)idThread, wMsg, wParam, lParam)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AttachThreadInput (DWORD idAttach, DWORD idAttachTo, WINBOOL fAttach);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReplyMessage (LRESULT lResult);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WaitMessage (void);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) WaitForInputIdle (HANDLE hProcess, DWORD dwMilliseconds);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) DefWindowProcA (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) DefWindowProcW (HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) PostQuitMessage (int nExitCode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InSendMessage (void);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) InSendMessageEx (LPVOID lpReserved);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetDoubleClickTime (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetDoubleClickTime (UINT);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) RegisterClassA (const WNDCLASSA *lpWndClass);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) RegisterClassW (const WNDCLASSW *lpWndClass);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnregisterClassA (LPCSTR lpClassName, HINSTANCE hInstance);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnregisterClassW (LPCWSTR lpClassName, HINSTANCE hInstance);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetClassInfoA (HINSTANCE hInstance, LPCSTR lpClassName, LPWNDCLASSA lpWndClass);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetClassInfoW (HINSTANCE hInstance, LPCWSTR lpClassName, LPWNDCLASSW lpWndClass);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) RegisterClassExA (const WNDCLASSEXA *);
  __attribute__((dllimport)) ATOM __attribute__((__stdcall__)) RegisterClassExW (const WNDCLASSEXW *);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetClassInfoExA (HINSTANCE hInstance, LPCSTR lpszClass, LPWNDCLASSEXA lpwcx);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetClassInfoExW (HINSTANCE hInstance, LPCWSTR lpszClass, LPWNDCLASSEXW lpwcx);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) CallWindowProcA (WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) CallWindowProcW (WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
#define CW_USEDEFAULT ((int)0x80000000)
#define HWND_BROADCAST ((HWND)0xffff)
#define HWND_MESSAGE ((HWND)-3)
#define HWND_DESKTOP ((HWND)0)
#define ISMEX_NOSEND 0x00000000
#define ISMEX_SEND 0x00000001
#define ISMEX_NOTIFY 0x00000002
#define ISMEX_CALLBACK 0x00000004
#define ISMEX_REPLIED 0x00000008
  extern const GUID GUID_POWERSCHEME_PERSONALITY;
  extern const GUID GUID_MIN_POWER_SAVINGS;
  extern const GUID GUID_MAX_POWER_SAVINGS;
  extern const GUID GUID_TYPICAL_POWER_SAVINGS;
  extern const GUID GUID_ACDC_POWER_SOURCE;
  extern const GUID GUID_BATTERY_PERCENTAGE_REMAINING;
  extern const GUID GUID_IDLE_BACKGROUND_TASK;
  extern const GUID GUID_SYSTEM_AWAYMODE;
  extern const GUID GUID_MONITOR_POWER_ON;
  __attribute__((dllimport)) HDEVNOTIFY __attribute__((__stdcall__)) RegisterDeviceNotificationA(HANDLE hRecipient,LPVOID NotificationFilter,DWORD Flags);
  __attribute__((dllimport)) HDEVNOTIFY __attribute__((__stdcall__)) RegisterDeviceNotificationW(HANDLE hRecipient,LPVOID NotificationFilter,DWORD Flags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnregisterDeviceNotification(HDEVNOTIFY Handle);
  typedef BOOLEAN (__attribute__((__stdcall__)) *PREGISTERCLASSNAMEW)(LPCWSTR);
#define CreateWindowEx __MINGW_NAME_AW(CreateWindowEx)
#define CreateWindow __MINGW_NAME_AW(CreateWindow)
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) CreateWindowExA(DWORD dwExStyle,LPCSTR lpClassName,LPCSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) CreateWindowExW(DWORD dwExStyle,LPCWSTR lpClassName,LPCWSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam);
#define CreateWindowA(lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam) CreateWindowExA((DWORD)0,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam)
#define CreateWindowW(lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam) CreateWindowExW((DWORD)0,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsWindow(HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsMenu(HMENU hMenu);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsChild(HWND hWndParent,HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DestroyWindow(HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ShowWindow(HWND hWnd,int nCmdShow);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AnimateWindow(HWND hWnd,DWORD dwTime,DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UpdateLayeredWindow (HWND hWnd, HDC hdcDst, POINT *pptDst, SIZE *psize, HDC hdcSrc, POINT *pptSrc, COLORREF crKey, BLENDFUNCTION *pblend, DWORD dwFlags);
  typedef struct tagUPDATELAYEREDWINDOWINFO {
    DWORD cbSize;
    HDC hdcDst;
    const POINT *pptDst;
    const SIZE *psize;
    HDC hdcSrc;
    const POINT *pptSrc;
    COLORREF crKey;
    const BLENDFUNCTION *pblend;
    DWORD dwFlags;
    const RECT *prcDirty;
  } UPDATELAYEREDWINDOWINFO,*PUPDATELAYEREDWINDOWINFO;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UpdateLayeredWindowIndirect (HWND hWnd, const UPDATELAYEREDWINDOWINFO *pULWInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetLayeredWindowAttributes (HWND hwnd, COLORREF *pcrKey, BYTE *pbAlpha, DWORD *pdwFlags);
#define PW_CLIENTONLY 0x00000001
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PrintWindow (HWND hwnd, HDC hdcBlt, UINT nFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetLayeredWindowAttributes (HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
#define LWA_COLORKEY 0x00000001
#define LWA_ALPHA 0x00000002
#define ULW_COLORKEY 0x00000001
#define ULW_ALPHA 0x00000002
#define ULW_OPAQUE 0x00000004
#define ULW_EX_NORESIZE 0x00000008
#define FLASHW_STOP 0
#define FLASHW_CAPTION 0x00000001
#define FLASHW_TRAY 0x00000002
#define FLASHW_ALL (FLASHW_CAPTION | FLASHW_TRAY)
#define FLASHW_TIMER 0x00000004
#define FLASHW_TIMERNOFG 0x0000000c
  typedef struct {
    UINT cbSize;
    HWND hwnd;
    DWORD dwFlags;
    UINT uCount;
    DWORD dwTimeout;
  } FLASHWINFO,*PFLASHWINFO;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ShowWindowAsync (HWND hWnd, int nCmdShow);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FlashWindow (HWND hWnd, WINBOOL bInvert);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FlashWindowEx (PFLASHWINFO pfwi);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ShowOwnedPopups (HWND hWnd, WINBOOL fShow);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) OpenIcon (HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CloseWindow (HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MoveWindow (HWND hWnd, int X, int Y, int nWidth, int nHeight, WINBOOL bRepaint);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetWindowPos (HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetWindowPlacement (HWND hWnd, WINDOWPLACEMENT *lpwndpl);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetWindowPlacement (HWND hWnd, const WINDOWPLACEMENT *lpwndpl);
  __attribute__((dllimport)) HDWP __attribute__((__stdcall__)) BeginDeferWindowPos (int nNumWindows);
  __attribute__((dllimport)) HDWP __attribute__((__stdcall__)) DeferWindowPos (HDWP hWinPosInfo, HWND hWnd, HWND hWndInsertAfter, int x, int y, int cx, int cy, UINT uFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EndDeferWindowPos (HDWP hWinPosInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsWindowVisible (HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsIconic (HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AnyPopup (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) BringWindowToTop (HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsZoomed (HWND hWnd);
#define SWP_NOSIZE 0x0001
#define SWP_NOMOVE 0x0002
#define SWP_NOZORDER 0x0004
#define SWP_NOREDRAW 0x0008
#define SWP_NOACTIVATE 0x0010
#define SWP_FRAMECHANGED 0x0020
#define SWP_SHOWWINDOW 0x0040
#define SWP_HIDEWINDOW 0x0080
#define SWP_NOCOPYBITS 0x0100
#define SWP_NOOWNERZORDER 0x0200
#define SWP_NOSENDCHANGING 0x0400
#define SWP_DRAWFRAME SWP_FRAMECHANGED
#define SWP_NOREPOSITION SWP_NOOWNERZORDER
#define SWP_DEFERERASE 0x2000
#define SWP_ASYNCWINDOWPOS 0x4000
#define HWND_TOP ((HWND)0)
#define HWND_BOTTOM ((HWND)1)
#define HWND_TOPMOST ((HWND)-1)
#define HWND_NOTOPMOST ((HWND)-2)
#pragma pack(push,2)
  typedef struct {
    DWORD style;
    DWORD dwExtendedStyle;
    WORD cdit;
    short x;
    short y;
    short cx;
    short cy;
  } DLGTEMPLATE;
  typedef DLGTEMPLATE *LPDLGTEMPLATEA;
  typedef DLGTEMPLATE *LPDLGTEMPLATEW;
  typedef LPDLGTEMPLATEA LPDLGTEMPLATE;
  typedef const DLGTEMPLATE *LPCDLGTEMPLATEA;
  typedef const DLGTEMPLATE *LPCDLGTEMPLATEW;
  typedef LPCDLGTEMPLATEA LPCDLGTEMPLATE;
  typedef struct {
    DWORD style;
    DWORD dwExtendedStyle;
    short x;
    short y;
    short cx;
    short cy;
    WORD id;
  } DLGITEMTEMPLATE;
  typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEA;
  typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEW;
  typedef PDLGITEMTEMPLATEA PDLGITEMTEMPLATE;
  typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEA;
  typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEW;
  typedef LPDLGITEMTEMPLATEA LPDLGITEMTEMPLATE;
#pragma pack(pop)
#define CreateDialogParam __MINGW_NAME_AW(CreateDialogParam)
#define CreateDialogIndirectParam __MINGW_NAME_AW(CreateDialogIndirectParam)
#define CreateDialog __MINGW_NAME_AW(CreateDialog)
#define CreateDialogIndirect __MINGW_NAME_AW(CreateDialogIndirect)
#define DialogBoxParam __MINGW_NAME_AW(DialogBoxParam)
#define DialogBoxIndirectParam __MINGW_NAME_AW(DialogBoxIndirectParam)
#define DialogBox __MINGW_NAME_AW(DialogBox)
#define DialogBoxIndirect __MINGW_NAME_AW(DialogBoxIndirect)
#define SetDlgItemText __MINGW_NAME_AW(SetDlgItemText)
#define GetDlgItemText __MINGW_NAME_AW(GetDlgItemText)
#define SendDlgItemMessage __MINGW_NAME_AW(SendDlgItemMessage)
#define DefDlgProc __MINGW_NAME_AW(DefDlgProc)
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) CreateDialogParamA(HINSTANCE hInstance,LPCSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) CreateDialogParamW(HINSTANCE hInstance,LPCWSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) CreateDialogIndirectParamA(HINSTANCE hInstance,LPCDLGTEMPLATEA lpTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) CreateDialogIndirectParamW(HINSTANCE hInstance,LPCDLGTEMPLATEW lpTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
#define CreateDialogA(hInstance,lpName,hWndParent,lpDialogFunc) CreateDialogParamA(hInstance,lpName,hWndParent,lpDialogFunc,(LPARAM)0)
#define CreateDialogW(hInstance,lpName,hWndParent,lpDialogFunc) CreateDialogParamW(hInstance,lpName,hWndParent,lpDialogFunc,(LPARAM)0)
#define CreateDialogIndirectA(hInstance,lpTemplate,hWndParent,lpDialogFunc) CreateDialogIndirectParamA(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0)
#define CreateDialogIndirectW(hInstance,lpTemplate,hWndParent,lpDialogFunc) CreateDialogIndirectParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0)
  __attribute__((dllimport)) INT_PTR __attribute__((__stdcall__)) DialogBoxParamA(HINSTANCE hInstance,LPCSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
  __attribute__((dllimport)) INT_PTR __attribute__((__stdcall__)) DialogBoxParamW(HINSTANCE hInstance,LPCWSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
  __attribute__((dllimport)) INT_PTR __attribute__((__stdcall__)) DialogBoxIndirectParamA(HINSTANCE hInstance,LPCDLGTEMPLATEA hDialogTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
  __attribute__((dllimport)) INT_PTR __attribute__((__stdcall__)) DialogBoxIndirectParamW(HINSTANCE hInstance,LPCDLGTEMPLATEW hDialogTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
#define DialogBoxA(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxParamA(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0)
#define DialogBoxW(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0)
#define DialogBoxIndirectA(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxIndirectParamA(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0)
#define DialogBoxIndirectW(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxIndirectParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EndDialog(HWND hDlg,INT_PTR nResult);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetDlgItem(HWND hDlg,int nIDDlgItem);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetDlgItemInt(HWND hDlg,int nIDDlgItem,UINT uValue,WINBOOL bSigned);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetDlgItemInt(HWND hDlg,int nIDDlgItem,WINBOOL *lpTranslated,WINBOOL bSigned);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetDlgItemTextA(HWND hDlg,int nIDDlgItem,LPCSTR lpString);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetDlgItemTextW(HWND hDlg,int nIDDlgItem,LPCWSTR lpString);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetDlgItemTextA(HWND hDlg,int nIDDlgItem,LPSTR lpString,int cchMax);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetDlgItemTextW(HWND hDlg,int nIDDlgItem,LPWSTR lpString,int cchMax);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CheckDlgButton(HWND hDlg,int nIDButton,UINT uCheck);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CheckRadioButton(HWND hDlg,int nIDFirstButton,int nIDLastButton,int nIDCheckButton);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) IsDlgButtonChecked(HWND hDlg,int nIDButton);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) SendDlgItemMessageA(HWND hDlg,int nIDDlgItem,UINT Msg,WPARAM wParam,LPARAM lParam);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) SendDlgItemMessageW(HWND hDlg,int nIDDlgItem,UINT Msg,WPARAM wParam,LPARAM lParam);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetNextDlgGroupItem(HWND hDlg,HWND hCtl,WINBOOL bPrevious);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetNextDlgTabItem(HWND hDlg,HWND hCtl,WINBOOL bPrevious);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetDlgCtrlID(HWND hWnd);
  __attribute__((dllimport)) long __attribute__((__stdcall__)) GetDialogBaseUnits(void);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) DefDlgProcA(HWND hDlg,UINT Msg,WPARAM wParam,LPARAM lParam);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) DefDlgProcW(HWND hDlg,UINT Msg,WPARAM wParam,LPARAM lParam);
  typedef enum DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS {
    DCDC_DEFAULT = 0x0000,
    DCDC_DISABLE_FONT_UPDATE = 0x0001,
    DCDC_DISABLE_RELAYOUT = 0x0002
  } DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS;
WINBOOL __attribute__((__stdcall__)) SetDialogControlDpiChangeBehavior(HWND hWnd, DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS mask, DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS values);
DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS __attribute__((__stdcall__)) GetDialogControlDpiChangeBehavior(HWND hWnd);
  typedef enum DIALOG_DPI_CHANGE_BEHAVIORS {
    DDC_DEFAULT = 0x0000,
    DDC_DISABLE_ALL = 0x0001,
    DDC_DISABLE_RESIZE = 0x0002,
    DDC_DISABLE_CONTROL_RELAYOUT = 0x0004
  } DIALOG_DPI_CHANGE_BEHAVIORS;
WINBOOL __attribute__((__stdcall__)) SetDialogDpiChangeBehavior(HWND hDlg, DIALOG_DPI_CHANGE_BEHAVIORS mask, DIALOG_DPI_CHANGE_BEHAVIORS values);
DIALOG_DPI_CHANGE_BEHAVIORS __attribute__((__stdcall__)) GetDialogDpiChangeBehavior(HWND hDlg);
#define DLGWINDOWEXTRA 30
#define CallMsgFilter __MINGW_NAME_AW(CallMsgFilter)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CallMsgFilterA(LPMSG lpMsg,int nCode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CallMsgFilterW(LPMSG lpMsg,int nCode);
#define RegisterClipboardFormat __MINGW_NAME_AW(RegisterClipboardFormat)
#define GetClipboardFormatName __MINGW_NAME_AW(GetClipboardFormatName)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) OpenClipboard(HWND hWndNewOwner);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CloseClipboard(void);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetClipboardSequenceNumber(void);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetClipboardOwner(void);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) SetClipboardViewer(HWND hWndNewViewer);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetClipboardViewer(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ChangeClipboardChain(HWND hWndRemove, HWND hWndNewNext);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) SetClipboardData(UINT uFormat, HANDLE hMem);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) GetClipboardData(UINT uFormat);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) RegisterClipboardFormatA(LPCSTR lpszFormat);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) RegisterClipboardFormatW(LPCWSTR lpszFormat);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) CountClipboardFormats(void);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) EnumClipboardFormats(UINT format);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetClipboardFormatNameA(UINT format, LPSTR lpszFormatName, int cchMaxCount);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetClipboardFormatNameW(UINT format, LPWSTR lpszFormatName, int cchMaxCount);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EmptyClipboard(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsClipboardFormatAvailable(UINT format);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetPriorityClipboardFormat(UINT *paFormatPriorityList, int cFormats);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetOpenClipboardWindow(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddClipboardFormatListener (HWND hwnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RemoveClipboardFormatListener (HWND hwnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetUpdatedClipboardFormats (PUINT lpuiFormats, UINT cFormats, PUINT pcFormatsOut);
#define CharToOem __MINGW_NAME_AW(CharToOem)
#define OemToChar __MINGW_NAME_AW(OemToChar)
#define CharToOemBuff __MINGW_NAME_AW(CharToOemBuff)
#define OemToCharBuff __MINGW_NAME_AW(OemToCharBuff)
#define CharUpper __MINGW_NAME_AW(CharUpper)
#define CharUpperBuff __MINGW_NAME_AW(CharUpperBuff)
#define CharLower __MINGW_NAME_AW(CharLower)
#define CharLowerBuff __MINGW_NAME_AW(CharLowerBuff)
#define CharNext __MINGW_NAME_AW(CharNext)
#define CharPrev __MINGW_NAME_AW(CharPrev)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CharToOemA(LPCSTR lpszSrc,LPSTR lpszDst);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CharToOemW(LPCWSTR lpszSrc,LPSTR lpszDst);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) OemToCharA(LPCSTR lpszSrc,LPSTR lpszDst);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) OemToCharW(LPCSTR lpszSrc,LPWSTR lpszDst);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CharToOemBuffA(LPCSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CharToOemBuffW(LPCWSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) OemToCharBuffA(LPCSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) OemToCharBuffW(LPCSTR lpszSrc,LPWSTR lpszDst,DWORD cchDstLength);
  __attribute__((dllimport)) LPSTR __attribute__((__stdcall__)) CharUpperA(LPSTR lpsz);
  __attribute__((dllimport)) LPWSTR __attribute__((__stdcall__)) CharUpperW(LPWSTR lpsz);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CharUpperBuffA(LPSTR lpsz,DWORD cchLength);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CharUpperBuffW(LPWSTR lpsz,DWORD cchLength);
  __attribute__((dllimport)) LPSTR __attribute__((__stdcall__)) CharLowerA(LPSTR lpsz);
  __attribute__((dllimport)) LPWSTR __attribute__((__stdcall__)) CharLowerW(LPWSTR lpsz);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CharLowerBuffA(LPSTR lpsz,DWORD cchLength);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CharLowerBuffW(LPWSTR lpsz,DWORD cchLength);
  __attribute__((dllimport)) LPSTR __attribute__((__stdcall__)) CharNextA(LPCSTR lpsz);
  __attribute__((dllimport)) LPWSTR __attribute__((__stdcall__)) CharNextW(LPCWSTR lpsz);
  __attribute__((dllimport)) LPSTR __attribute__((__stdcall__)) CharPrevA(LPCSTR lpszStart,LPCSTR lpszCurrent);
  __attribute__((dllimport)) LPWSTR __attribute__((__stdcall__)) CharPrevW(LPCWSTR lpszStart,LPCWSTR lpszCurrent);
  __attribute__((dllimport)) LPSTR __attribute__((__stdcall__)) CharNextExA(WORD CodePage,LPCSTR lpCurrentChar,DWORD dwFlags);
  __attribute__((dllimport)) LPSTR __attribute__((__stdcall__)) CharPrevExA(WORD CodePage,LPCSTR lpStart,LPCSTR lpCurrentChar,DWORD dwFlags);
#define AnsiToOem CharToOemA
#define OemToAnsi OemToCharA
#define AnsiToOemBuff CharToOemBuffA
#define OemToAnsiBuff OemToCharBuffA
#define AnsiUpper CharUpperA
#define AnsiUpperBuff CharUpperBuffA
#define AnsiLower CharLowerA
#define AnsiLowerBuff CharLowerBuffA
#define AnsiNext CharNextA
#define AnsiPrev CharPrevA
#define IsCharAlpha __MINGW_NAME_AW(IsCharAlpha)
#define IsCharAlphaNumeric __MINGW_NAME_AW(IsCharAlphaNumeric)
#define IsCharUpper __MINGW_NAME_AW(IsCharUpper)
#define IsCharLower __MINGW_NAME_AW(IsCharLower)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsCharAlphaA(CHAR ch);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsCharAlphaW(WCHAR ch);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsCharAlphaNumericA(CHAR ch);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsCharAlphaNumericW(WCHAR ch);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsCharUpperA(CHAR ch);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsCharUpperW(WCHAR ch);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsCharLowerA(CHAR ch);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsCharLowerW(WCHAR ch);
#define GetKeyNameText __MINGW_NAME_AW(GetKeyNameText)
#define VkKeyScan __MINGW_NAME_AW(VkKeyScan)
#define VkKeyScanEx __MINGW_NAME_AW(VkKeyScanEx)
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) SetFocus(HWND hWnd);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetActiveWindow(void);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetFocus(void);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetKBCodePage(void);
  __attribute__((dllimport)) SHORT __attribute__((__stdcall__)) GetKeyState(int nVirtKey);
  __attribute__((dllimport)) SHORT __attribute__((__stdcall__)) GetAsyncKeyState(int vKey);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetKeyboardState(PBYTE lpKeyState);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetKeyboardState(LPBYTE lpKeyState);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetKeyNameTextA(LONG lParam,LPSTR lpString,int cchSize);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetKeyNameTextW(LONG lParam,LPWSTR lpString,int cchSize);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetKeyboardType(int nTypeFlag);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) ToAscii(UINT uVirtKey,UINT uScanCode,const BYTE *lpKeyState,LPWORD lpChar,UINT uFlags);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) ToAsciiEx(UINT uVirtKey,UINT uScanCode,const BYTE *lpKeyState,LPWORD lpChar,UINT uFlags,HKL dwhkl);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) ToUnicode(UINT wVirtKey,UINT wScanCode,const BYTE *lpKeyState,LPWSTR pwszBuff,int cchBuff,UINT wFlags);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) OemKeyScan(WORD wOemChar);
  __attribute__((dllimport)) SHORT __attribute__((__stdcall__)) VkKeyScanA(CHAR ch);
  __attribute__((dllimport)) SHORT __attribute__((__stdcall__)) VkKeyScanW(WCHAR ch);
  __attribute__((dllimport)) SHORT __attribute__((__stdcall__)) VkKeyScanExA(CHAR ch,HKL dwhkl);
  __attribute__((dllimport)) SHORT __attribute__((__stdcall__)) VkKeyScanExW(WCHAR ch,HKL dwhkl);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,ULONG_PTR dwExtraInfo);
#define KEYEVENTF_EXTENDEDKEY 0x0001
#define KEYEVENTF_KEYUP 0x0002
#define KEYEVENTF_UNICODE 0x0004
#define KEYEVENTF_SCANCODE 0x0008
#define MOUSEEVENTF_MOVE 0x0001
#define MOUSEEVENTF_LEFTDOWN 0x0002
#define MOUSEEVENTF_LEFTUP 0x0004
#define MOUSEEVENTF_RIGHTDOWN 0x0008
#define MOUSEEVENTF_RIGHTUP 0x0010
#define MOUSEEVENTF_MIDDLEDOWN 0x0020
#define MOUSEEVENTF_MIDDLEUP 0x0040
#define MOUSEEVENTF_XDOWN 0x0080
#define MOUSEEVENTF_XUP 0x0100
#define MOUSEEVENTF_WHEEL 0x0800
#define MOUSEEVENTF_HWHEEL 0x01000
#define MOUSEEVENTF_MOVE_NOCOALESCE 0x2000
#define MOUSEEVENTF_VIRTUALDESK 0x4000
#define MOUSEEVENTF_ABSOLUTE 0x8000
#define INPUT_MOUSE 0
#define INPUT_KEYBOARD 1
#define INPUT_HARDWARE 2
  __attribute__((dllimport)) void __attribute__((__stdcall__)) mouse_event(DWORD dwFlags,DWORD dx,DWORD dy,DWORD dwData,ULONG_PTR dwExtraInfo);
  typedef struct tagMOUSEINPUT {
    LONG dx;
    LONG dy;
    DWORD mouseData;
    DWORD dwFlags;
    DWORD time;
    ULONG_PTR dwExtraInfo;
  } MOUSEINPUT,*PMOUSEINPUT,*LPMOUSEINPUT;
  typedef struct tagKEYBDINPUT {
    WORD wVk;
    WORD wScan;
    DWORD dwFlags;
    DWORD time;
    ULONG_PTR dwExtraInfo;
  } KEYBDINPUT,*PKEYBDINPUT,*LPKEYBDINPUT;
  typedef struct tagHARDWAREINPUT {
    DWORD uMsg;
    WORD wParamL;
    WORD wParamH;
  } HARDWAREINPUT,*PHARDWAREINPUT,*LPHARDWAREINPUT;
  typedef struct tagINPUT {
    DWORD type;
    __extension__ union {
      MOUSEINPUT mi;
      KEYBDINPUT ki;
      HARDWAREINPUT hi;
    } ;
  } INPUT,*PINPUT,*LPINPUT;
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) SendInput(UINT cInputs,LPINPUT pInputs,int cbSize);
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnableMouseInPointerForThread(void);
  typedef struct tagLASTINPUTINFO {
    UINT cbSize;
    DWORD dwTime;
  } LASTINPUTINFO,*PLASTINPUTINFO;
#define MapVirtualKey __MINGW_NAME_AW(MapVirtualKey)
#define MapVirtualKeyEx __MINGW_NAME_AW(MapVirtualKeyEx)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetLastInputInfo(PLASTINPUTINFO plii);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) MapVirtualKeyA(UINT uCode,UINT uMapType);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) MapVirtualKeyW(UINT uCode,UINT uMapType);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) MapVirtualKeyExA(UINT uCode,UINT uMapType,HKL dwhkl);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) MapVirtualKeyExW(UINT uCode,UINT uMapType,HKL dwhkl);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetInputState(void);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetQueueStatus(UINT flags);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetCapture(void);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) SetCapture(HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReleaseCapture(void);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) MsgWaitForMultipleObjects(DWORD nCount,const HANDLE *pHandles,WINBOOL fWaitAll,DWORD dwMilliseconds,DWORD dwWakeMask);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) MsgWaitForMultipleObjectsEx(DWORD nCount,const HANDLE *pHandles,DWORD dwMilliseconds,DWORD dwWakeMask,DWORD dwFlags);
#define MAPVK_VK_TO_VSC (0)
#define MAPVK_VSC_TO_VK (1)
#define MAPVK_VK_TO_CHAR (2)
#define MAPVK_VSC_TO_VK_EX (3)
#define MAPVK_VK_TO_VSC_EX (4)
#define MWMO_WAITALL 0x0001
#define MWMO_ALERTABLE 0x0002
#define MWMO_INPUTAVAILABLE 0x0004
#define QS_KEY 0x0001
#define QS_MOUSEMOVE 0x0002
#define QS_MOUSEBUTTON 0x0004
#define QS_POSTMESSAGE 0x0008
#define QS_TIMER 0x0010
#define QS_PAINT 0x0020
#define QS_SENDMESSAGE 0x0040
#define QS_HOTKEY 0x0080
#define QS_ALLPOSTMESSAGE 0x0100
#define QS_RAWINPUT 0x0400
#define QS_MOUSE (QS_MOUSEMOVE | QS_MOUSEBUTTON)
#define QS_INPUT (QS_MOUSE | QS_KEY | QS_RAWINPUT)
#define QS_ALLEVENTS (QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY)
#define QS_ALLINPUT (QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE)
#define USER_TIMER_MAXIMUM 0x7FFFFFFF
#define USER_TIMER_MINIMUM 0x0000000A
#define LoadAccelerators __MINGW_NAME_AW(LoadAccelerators)
#define CreateAcceleratorTable __MINGW_NAME_AW(CreateAcceleratorTable)
#define CopyAcceleratorTable __MINGW_NAME_AW(CopyAcceleratorTable)
  __attribute__((dllimport)) UINT_PTR __attribute__((__stdcall__)) SetTimer(HWND hWnd,UINT_PTR nIDEvent,UINT uElapse,TIMERPROC lpTimerFunc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) KillTimer(HWND hWnd,UINT_PTR uIDEvent);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsWindowUnicode(HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnableWindow(HWND hWnd,WINBOOL bEnable);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsWindowEnabled(HWND hWnd);
  __attribute__((dllimport)) HACCEL __attribute__((__stdcall__)) LoadAcceleratorsA(HINSTANCE hInstance,LPCSTR lpTableName);
  __attribute__((dllimport)) HACCEL __attribute__((__stdcall__)) LoadAcceleratorsW(HINSTANCE hInstance,LPCWSTR lpTableName);
  __attribute__((dllimport)) HACCEL __attribute__((__stdcall__)) CreateAcceleratorTableA(LPACCEL paccel,int cAccel);
  __attribute__((dllimport)) HACCEL __attribute__((__stdcall__)) CreateAcceleratorTableW(LPACCEL paccel,int cAccel);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DestroyAcceleratorTable(HACCEL hAccel);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) CopyAcceleratorTableA(HACCEL hAccelSrc,LPACCEL lpAccelDst,int cAccelEntries);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) CopyAcceleratorTableW(HACCEL hAccelSrc,LPACCEL lpAccelDst,int cAccelEntries);
#define TranslateAccelerator __MINGW_NAME_AW(TranslateAccelerator)
  __attribute__((dllimport)) int __attribute__((__stdcall__)) TranslateAcceleratorA(HWND hWnd,HACCEL hAccTable,LPMSG lpMsg);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) TranslateAcceleratorW(HWND hWnd,HACCEL hAccTable,LPMSG lpMsg);
#define SM_CXSCREEN 0
#define SM_CYSCREEN 1
#define SM_CXVSCROLL 2
#define SM_CYHSCROLL 3
#define SM_CYCAPTION 4
#define SM_CXBORDER 5
#define SM_CYBORDER 6
#define SM_CXDLGFRAME 7
#define SM_CYDLGFRAME 8
#define SM_CYVTHUMB 9
#define SM_CXHTHUMB 10
#define SM_CXICON 11
#define SM_CYICON 12
#define SM_CXCURSOR 13
#define SM_CYCURSOR 14
#define SM_CYMENU 15
#define SM_CXFULLSCREEN 16
#define SM_CYFULLSCREEN 17
#define SM_CYKANJIWINDOW 18
#define SM_MOUSEPRESENT 19
#define SM_CYVSCROLL 20
#define SM_CXHSCROLL 21
#define SM_DEBUG 22
#define SM_SWAPBUTTON 23
#define SM_RESERVED1 24
#define SM_RESERVED2 25
#define SM_RESERVED3 26
#define SM_RESERVED4 27
#define SM_CXMIN 28
#define SM_CYMIN 29
#define SM_CXSIZE 30
#define SM_CYSIZE 31
#define SM_CXFRAME 32
#define SM_CYFRAME 33
#define SM_CXMINTRACK 34
#define SM_CYMINTRACK 35
#define SM_CXDOUBLECLK 36
#define SM_CYDOUBLECLK 37
#define SM_CXICONSPACING 38
#define SM_CYICONSPACING 39
#define SM_MENUDROPALIGNMENT 40
#define SM_PENWINDOWS 41
#define SM_DBCSENABLED 42
#define SM_CMOUSEBUTTONS 43
#define SM_CXFIXEDFRAME SM_CXDLGFRAME
#define SM_CYFIXEDFRAME SM_CYDLGFRAME
#define SM_CXSIZEFRAME SM_CXFRAME
#define SM_CYSIZEFRAME SM_CYFRAME
#define SM_SECURE 44
#define SM_CXEDGE 45
#define SM_CYEDGE 46
#define SM_CXMINSPACING 47
#define SM_CYMINSPACING 48
#define SM_CXSMICON 49
#define SM_CYSMICON 50
#define SM_CYSMCAPTION 51
#define SM_CXSMSIZE 52
#define SM_CYSMSIZE 53
#define SM_CXMENUSIZE 54
#define SM_CYMENUSIZE 55
#define SM_ARRANGE 56
#define SM_CXMINIMIZED 57
#define SM_CYMINIMIZED 58
#define SM_CXMAXTRACK 59
#define SM_CYMAXTRACK 60
#define SM_CXMAXIMIZED 61
#define SM_CYMAXIMIZED 62
#define SM_NETWORK 63
#define SM_CLEANBOOT 67
#define SM_CXDRAG 68
#define SM_CYDRAG 69
#define SM_SHOWSOUNDS 70
#define SM_CXMENUCHECK 71
#define SM_CYMENUCHECK 72
#define SM_SLOWMACHINE 73
#define SM_MIDEASTENABLED 74
#define SM_MOUSEWHEELPRESENT 75
#define SM_XVIRTUALSCREEN 76
#define SM_YVIRTUALSCREEN 77
#define SM_CXVIRTUALSCREEN 78
#define SM_CYVIRTUALSCREEN 79
#define SM_CMONITORS 80
#define SM_SAMEDISPLAYFORMAT 81
#define SM_IMMENABLED 82
#define SM_CXFOCUSBORDER 83
#define SM_CYFOCUSBORDER 84
#define SM_TABLETPC 86
#define SM_MEDIACENTER 87
#define SM_STARTER 88
#define SM_SERVERR2 89
#define SM_MOUSEHORIZONTALWHEELPRESENT 91
#define SM_CXPADDEDBORDER 92
#define SM_CMETRICS 93
#define SM_REMOTESESSION 0x1000
#define SM_SHUTTINGDOWN 0x2000
#define SM_REMOTECONTROL 0x2001
#define SM_CARETBLINKINGENABLED 0x2002
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetSystemMetrics(int nIndex);
#define PMB_ACTIVE 0x00000001
#define MNC_IGNORE 0
#define MNC_CLOSE 1
#define MNC_EXECUTE 2
#define MNC_SELECT 3
#define MNS_NOCHECK 0x80000000
#define MNS_MODELESS 0x40000000
#define MNS_DRAGDROP 0x20000000
#define MNS_AUTODISMISS 0x10000000
#define MNS_NOTIFYBYPOS 0x08000000
#define MNS_CHECKORBMP 0x04000000
#define MIM_MAXHEIGHT 0x00000001
#define MIM_BACKGROUND 0x00000002
#define MIM_HELPID 0x00000004
#define MIM_MENUDATA 0x00000008
#define MIM_STYLE 0x00000010
#define MIM_APPLYTOSUBMENUS 0x80000000
#define MND_CONTINUE 0
#define MND_ENDMENU 1
#define MNGOF_TOPGAP 0x00000001
#define MNGOF_BOTTOMGAP 0x00000002
#define MNGO_NOINTERFACE 0x00000000
#define MNGO_NOERROR 0x00000001
#define MIIM_STATE 0x00000001
#define MIIM_ID 0x00000002
#define MIIM_SUBMENU 0x00000004
#define MIIM_CHECKMARKS 0x00000008
#define MIIM_TYPE 0x00000010
#define MIIM_DATA 0x00000020
#define MIIM_STRING 0x00000040
#define MIIM_BITMAP 0x00000080
#define MIIM_FTYPE 0x00000100
#define HBMMENU_CALLBACK ((HBITMAP) -1)
#define HBMMENU_SYSTEM ((HBITMAP) 1)
#define HBMMENU_MBAR_RESTORE ((HBITMAP) 2)
#define HBMMENU_MBAR_MINIMIZE ((HBITMAP) 3)
#define HBMMENU_MBAR_CLOSE ((HBITMAP) 5)
#define HBMMENU_MBAR_CLOSE_D ((HBITMAP) 6)
#define HBMMENU_MBAR_MINIMIZE_D ((HBITMAP) 7)
#define HBMMENU_POPUP_CLOSE ((HBITMAP) 8)
#define HBMMENU_POPUP_RESTORE ((HBITMAP) 9)
#define HBMMENU_POPUP_MAXIMIZE ((HBITMAP) 10)
#define HBMMENU_POPUP_MINIMIZE ((HBITMAP) 11)
#define LoadMenu __MINGW_NAME_AW(LoadMenu)
#define LoadMenuIndirect __MINGW_NAME_AW(LoadMenuIndirect)
#define ChangeMenu __MINGW_NAME_AW(ChangeMenu)
#define GetMenuString __MINGW_NAME_AW(GetMenuString)
#define InsertMenu __MINGW_NAME_AW(InsertMenu)
#define AppendMenu __MINGW_NAME_AW(AppendMenu)
#define ModifyMenu __MINGW_NAME_AW(ModifyMenu)
  __attribute__((dllimport)) HMENU __attribute__((__stdcall__)) LoadMenuA(HINSTANCE hInstance,LPCSTR lpMenuName);
  __attribute__((dllimport)) HMENU __attribute__((__stdcall__)) LoadMenuW(HINSTANCE hInstance,LPCWSTR lpMenuName);
  __attribute__((dllimport)) HMENU __attribute__((__stdcall__)) LoadMenuIndirectA(const MENUTEMPLATEA *lpMenuTemplate);
  __attribute__((dllimport)) HMENU __attribute__((__stdcall__)) LoadMenuIndirectW(const MENUTEMPLATEW *lpMenuTemplate);
  __attribute__((dllimport)) HMENU __attribute__((__stdcall__)) GetMenu(HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetMenu(HWND hWnd,HMENU hMenu);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ChangeMenuA(HMENU hMenu,UINT cmd,LPCSTR lpszNewItem,UINT cmdInsert,UINT flags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ChangeMenuW(HMENU hMenu,UINT cmd,LPCWSTR lpszNewItem,UINT cmdInsert,UINT flags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) HiliteMenuItem(HWND hWnd,HMENU hMenu,UINT uIDHiliteItem,UINT uHilite);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetMenuStringA(HMENU hMenu,UINT uIDItem,LPSTR lpString,int cchMax,UINT flags);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetMenuStringW(HMENU hMenu,UINT uIDItem,LPWSTR lpString,int cchMax,UINT flags);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetMenuState(HMENU hMenu,UINT uId,UINT uFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DrawMenuBar(HWND hWnd);
  __attribute__((dllimport)) HMENU __attribute__((__stdcall__)) GetSystemMenu(HWND hWnd,WINBOOL bRevert);
  __attribute__((dllimport)) HMENU __attribute__((__stdcall__)) CreateMenu(void);
  __attribute__((dllimport)) HMENU __attribute__((__stdcall__)) CreatePopupMenu(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DestroyMenu(HMENU hMenu);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CheckMenuItem(HMENU hMenu,UINT uIDCheckItem,UINT uCheck);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnableMenuItem(HMENU hMenu,UINT uIDEnableItem,UINT uEnable);
  __attribute__((dllimport)) HMENU __attribute__((__stdcall__)) GetSubMenu(HMENU hMenu,int nPos);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetMenuItemID(HMENU hMenu,int nPos);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetMenuItemCount(HMENU hMenu);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InsertMenuA(HMENU hMenu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCSTR lpNewItem);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InsertMenuW(HMENU hMenu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCWSTR lpNewItem);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AppendMenuA(HMENU hMenu,UINT uFlags,UINT_PTR uIDNewItem,LPCSTR lpNewItem);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AppendMenuW(HMENU hMenu,UINT uFlags,UINT_PTR uIDNewItem,LPCWSTR lpNewItem);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ModifyMenuA(HMENU hMnu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCSTR lpNewItem);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ModifyMenuW(HMENU hMnu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCWSTR lpNewItem);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RemoveMenu(HMENU hMenu,UINT uPosition,UINT uFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteMenu(HMENU hMenu,UINT uPosition,UINT uFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetMenuItemBitmaps(HMENU hMenu,UINT uPosition,UINT uFlags,HBITMAP hBitmapUnchecked,HBITMAP hBitmapChecked);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) GetMenuCheckMarkDimensions(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TrackPopupMenu(HMENU hMenu,UINT uFlags,int x,int y,int nReserved,HWND hWnd,const RECT *prcRect);
  typedef struct tagTPMPARAMS {
    UINT cbSize;
    RECT rcExclude;
  } TPMPARAMS;
  typedef struct tagMENUINFO {
    DWORD cbSize;
    DWORD fMask;
    DWORD dwStyle;
    UINT cyMax;
    HBRUSH hbrBack;
    DWORD dwContextHelpID;
    ULONG_PTR dwMenuData;
  } MENUINFO,*LPMENUINFO;
  typedef TPMPARAMS *LPTPMPARAMS;
  typedef MENUINFO const *LPCMENUINFO;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TrackPopupMenuEx(HMENU,UINT,int,int,HWND,LPTPMPARAMS);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetMenuInfo(HMENU,LPMENUINFO);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetMenuInfo(HMENU,LPCMENUINFO);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EndMenu(void);
  typedef struct tagMENUGETOBJECTINFO {
    DWORD dwFlags;
    UINT uPos;
    HMENU hmenu;
    PVOID riid;
    PVOID pvObj;
  } MENUGETOBJECTINFO,*PMENUGETOBJECTINFO;
  typedef struct tagMENUITEMINFOA {
    UINT cbSize;
    UINT fMask;
    UINT fType;
    UINT fState;
    UINT wID;
    HMENU hSubMenu;
    HBITMAP hbmpChecked;
    HBITMAP hbmpUnchecked;
    ULONG_PTR dwItemData;
    LPSTR dwTypeData;
    UINT cch;
    HBITMAP hbmpItem;
  } MENUITEMINFOA,*LPMENUITEMINFOA;
  typedef struct tagMENUITEMINFOW {
    UINT cbSize;
    UINT fMask;
    UINT fType;
    UINT fState;
    UINT wID;
    HMENU hSubMenu;
    HBITMAP hbmpChecked;
    HBITMAP hbmpUnchecked;
    ULONG_PTR dwItemData;
    LPWSTR dwTypeData;
    UINT cch;
    HBITMAP hbmpItem;
  } MENUITEMINFOW,*LPMENUITEMINFOW;
  typedef MENUITEMINFOA MENUITEMINFO;
  typedef LPMENUITEMINFOA LPMENUITEMINFO;
  typedef MENUITEMINFOA const *LPCMENUITEMINFOA;
  typedef MENUITEMINFOW const *LPCMENUITEMINFOW;
  typedef LPCMENUITEMINFOA LPCMENUITEMINFO;
#define InsertMenuItem __MINGW_NAME_AW(InsertMenuItem)
#define GetMenuItemInfo __MINGW_NAME_AW(GetMenuItemInfo)
#define SetMenuItemInfo __MINGW_NAME_AW(SetMenuItemInfo)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InsertMenuItemA(HMENU hmenu,UINT item,WINBOOL fByPosition,LPCMENUITEMINFOA lpmi);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InsertMenuItemW(HMENU hmenu,UINT item,WINBOOL fByPosition,LPCMENUITEMINFOW lpmi);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetMenuItemInfoA(HMENU hmenu,UINT item,WINBOOL fByPosition,LPMENUITEMINFOA lpmii);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetMenuItemInfoW(HMENU hmenu,UINT item,WINBOOL fByPosition,LPMENUITEMINFOW lpmii);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetMenuItemInfoA(HMENU hmenu,UINT item,WINBOOL fByPositon,LPCMENUITEMINFOA lpmii);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetMenuItemInfoW(HMENU hmenu,UINT item,WINBOOL fByPositon,LPCMENUITEMINFOW lpmii);
#define GMDI_USEDISABLED __MSABI_LONG(0x0001)
#define GMDI_GOINTOPOPUPS __MSABI_LONG(0x0002)
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetMenuDefaultItem(HMENU hMenu,UINT fByPos,UINT gmdiFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetMenuDefaultItem(HMENU hMenu,UINT uItem,UINT fByPos);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetMenuItemRect(HWND hWnd,HMENU hMenu,UINT uItem,LPRECT lprcItem);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) MenuItemFromPoint(HWND hWnd,HMENU hMenu,POINT ptScreen);
#define TPM_LEFTBUTTON __MSABI_LONG(0x0000)
#define TPM_RIGHTBUTTON __MSABI_LONG(0x0002)
#define TPM_LEFTALIGN __MSABI_LONG(0x0000)
#define TPM_CENTERALIGN __MSABI_LONG(0x0004)
#define TPM_RIGHTALIGN __MSABI_LONG(0x0008)
#define TPM_TOPALIGN __MSABI_LONG(0x0000)
#define TPM_VCENTERALIGN __MSABI_LONG(0x0010)
#define TPM_BOTTOMALIGN __MSABI_LONG(0x0020)
#define TPM_HORIZONTAL __MSABI_LONG(0x0000)
#define TPM_VERTICAL __MSABI_LONG(0x0040)
#define TPM_NONOTIFY __MSABI_LONG(0x0080)
#define TPM_RETURNCMD __MSABI_LONG(0x0100)
#define TPM_RECURSE __MSABI_LONG(0x0001)
#define TPM_HORPOSANIMATION __MSABI_LONG(0x0400)
#define TPM_HORNEGANIMATION __MSABI_LONG(0x0800)
#define TPM_VERPOSANIMATION __MSABI_LONG(0x1000)
#define TPM_VERNEGANIMATION __MSABI_LONG(0x2000)
#define TPM_NOANIMATION __MSABI_LONG(0x4000)
#define TPM_LAYOUTRTL __MSABI_LONG(0x8000)
  typedef struct tagDROPSTRUCT {
    HWND hwndSource;
    HWND hwndSink;
    DWORD wFmt;
    ULONG_PTR dwData;
    POINT ptDrop;
    DWORD dwControlData;
  } DROPSTRUCT,*PDROPSTRUCT,*LPDROPSTRUCT;
#define DOF_EXECUTABLE 0x8001
#define DOF_DOCUMENT 0x8002
#define DOF_DIRECTORY 0x8003
#define DOF_MULTIPLE 0x8004
#define DOF_PROGMAN 0x0001
#define DOF_SHELLDATA 0x0002
#define DO_DROPFILE __MSABI_LONG(0x454C4946)
#define DO_PRINTFILE __MSABI_LONG(0x544E5250)
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) DragObject(HWND hwndParent,HWND hwndFrom,UINT fmt,ULONG_PTR data,HCURSOR hcur);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DragDetect(HWND hwnd,POINT pt);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DrawIcon(HDC hDC,int X,int Y,HICON hIcon);
#define DT_TOP 0x00000000
#define DT_LEFT 0x00000000
#define DT_CENTER 0x00000001
#define DT_RIGHT 0x00000002
#define DT_VCENTER 0x00000004
#define DT_BOTTOM 0x00000008
#define DT_WORDBREAK 0x00000010
#define DT_SINGLELINE 0x00000020
#define DT_EXPANDTABS 0x00000040
#define DT_TABSTOP 0x00000080
#define DT_NOCLIP 0x00000100
#define DT_EXTERNALLEADING 0x00000200
#define DT_CALCRECT 0x00000400
#define DT_NOPREFIX 0x00000800
#define DT_INTERNAL 0x00001000
#define DT_EDITCONTROL 0x00002000
#define DT_PATH_ELLIPSIS 0x00004000
#define DT_END_ELLIPSIS 0x00008000
#define DT_MODIFYSTRING 0x00010000
#define DT_RTLREADING 0x00020000
#define DT_WORD_ELLIPSIS 0x00040000
#define DT_NOFULLWIDTHCHARBREAK 0x00080000
#define DT_HIDEPREFIX 0x00100000
#define DT_PREFIXONLY 0x00200000
  typedef struct tagDRAWTEXTPARAMS {
    UINT cbSize;
    int iTabLength;
    int iLeftMargin;
    int iRightMargin;
    UINT uiLengthDrawn;
  } DRAWTEXTPARAMS,*LPDRAWTEXTPARAMS;
#define DrawText __MINGW_NAME_AW(DrawText)
#define DrawTextEx __MINGW_NAME_AW(DrawTextEx)
  __attribute__((dllimport)) int __attribute__((__stdcall__)) DrawTextA(HDC hdc,LPCSTR lpchText,int cchText,LPRECT lprc,UINT format);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) DrawTextW(HDC hdc,LPCWSTR lpchText,int cchText,LPRECT lprc,UINT format);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) DrawTextExA(HDC hdc,LPSTR lpchText,int cchText,LPRECT lprc,UINT format,LPDRAWTEXTPARAMS lpdtp);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) DrawTextExW(HDC hdc,LPWSTR lpchText,int cchText,LPRECT lprc,UINT format,LPDRAWTEXTPARAMS lpdtp);
#define GrayString __MINGW_NAME_AW(GrayString)
#define DrawState __MINGW_NAME_AW(DrawState)
#define TabbedTextOut __MINGW_NAME_AW(TabbedTextOut)
#define GetTabbedTextExtent __MINGW_NAME_AW(GetTabbedTextExtent)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GrayStringA(HDC hDC,HBRUSH hBrush,GRAYSTRINGPROC lpOutputFunc,LPARAM lpData,int nCount,int X,int Y,int nWidth,int nHeight);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GrayStringW(HDC hDC,HBRUSH hBrush,GRAYSTRINGPROC lpOutputFunc,LPARAM lpData,int nCount,int X,int Y,int nWidth,int nHeight);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DrawStateA(HDC hdc,HBRUSH hbrFore,DRAWSTATEPROC qfnCallBack,LPARAM lData,WPARAM wData,int x,int y,int cx,int cy,UINT uFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DrawStateW(HDC hdc,HBRUSH hbrFore,DRAWSTATEPROC qfnCallBack,LPARAM lData,WPARAM wData,int x,int y,int cx,int cy,UINT uFlags);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) TabbedTextOutA(HDC hdc,int x,int y,LPCSTR lpString,int chCount,int nTabPositions,const INT *lpnTabStopPositions,int nTabOrigin);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) TabbedTextOutW(HDC hdc,int x,int y,LPCWSTR lpString,int chCount,int nTabPositions,const INT *lpnTabStopPositions,int nTabOrigin);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetTabbedTextExtentA(HDC hdc,LPCSTR lpString,int chCount,int nTabPositions,const INT *lpnTabStopPositions);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetTabbedTextExtentW(HDC hdc,LPCWSTR lpString,int chCount,int nTabPositions,const INT *lpnTabStopPositions);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UpdateWindow(HWND hWnd);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) SetActiveWindow(HWND hWnd);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetForegroundWindow(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PaintDesktop(HDC hdc);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) SwitchToThisWindow(HWND hwnd,WINBOOL fUnknown);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetForegroundWindow(HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AllowSetForegroundWindow(DWORD dwProcessId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LockSetForegroundWindow(UINT uLockCode);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) WindowFromDC(HDC hDC);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) GetDC(HWND hWnd);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) GetDCEx(HWND hWnd,HRGN hrgnClip,DWORD flags);
#define DST_COMPLEX 0x0000
#define DST_TEXT 0x0001
#define DST_PREFIXTEXT 0x0002
#define DST_ICON 0x0003
#define DST_BITMAP 0x0004
#define DSS_NORMAL 0x0000
#define DSS_UNION 0x0010
#define DSS_DISABLED 0x0020
#define DSS_MONO 0x0080
#define DSS_HIDEPREFIX 0x0200
#define DSS_PREFIXONLY 0x0400
#define DSS_RIGHT 0x8000
#define ASFW_ANY ((DWORD)-1)
#define LSFW_LOCK 1
#define LSFW_UNLOCK 2
#define DCX_WINDOW __MSABI_LONG(0x00000001)
#define DCX_CACHE __MSABI_LONG(0x00000002)
#define DCX_NORESETATTRS __MSABI_LONG(0x00000004)
#define DCX_CLIPCHILDREN __MSABI_LONG(0x00000008)
#define DCX_CLIPSIBLINGS __MSABI_LONG(0x00000010)
#define DCX_PARENTCLIP __MSABI_LONG(0x00000020)
#define DCX_EXCLUDERGN __MSABI_LONG(0x00000040)
#define DCX_INTERSECTRGN __MSABI_LONG(0x00000080)
#define DCX_EXCLUDEUPDATE __MSABI_LONG(0x00000100)
#define DCX_INTERSECTUPDATE __MSABI_LONG(0x00000200)
#define DCX_LOCKWINDOWUPDATE __MSABI_LONG(0x00000400)
#define DCX_VALIDATE __MSABI_LONG(0x00200000)
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) GetWindowDC(HWND hWnd);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) ReleaseDC(HWND hWnd,HDC hDC);
  __attribute__((dllimport)) HDC __attribute__((__stdcall__)) BeginPaint(HWND hWnd,LPPAINTSTRUCT lpPaint);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EndPaint(HWND hWnd,const PAINTSTRUCT *lpPaint);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetUpdateRect(HWND hWnd,LPRECT lpRect,WINBOOL bErase);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetUpdateRgn(HWND hWnd,HRGN hRgn,WINBOOL bErase);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetWindowRgn(HWND hWnd,HRGN hRgn,WINBOOL bRedraw);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetWindowRgn(HWND hWnd,HRGN hRgn);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetWindowRgnBox(HWND hWnd,LPRECT lprc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) ExcludeUpdateRgn(HDC hDC,HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InvalidateRect(HWND hWnd,const RECT *lpRect,WINBOOL bErase);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ValidateRect(HWND hWnd,const RECT *lpRect);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InvalidateRgn(HWND hWnd,HRGN hRgn,WINBOOL bErase);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ValidateRgn(HWND hWnd,HRGN hRgn);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RedrawWindow(HWND hWnd,const RECT *lprcUpdate,HRGN hrgnUpdate,UINT flags);
#define RDW_INVALIDATE 0x0001
#define RDW_INTERNALPAINT 0x0002
#define RDW_ERASE 0x0004
#define RDW_VALIDATE 0x0008
#define RDW_NOINTERNALPAINT 0x0010
#define RDW_NOERASE 0x0020
#define RDW_NOCHILDREN 0x0040
#define RDW_ALLCHILDREN 0x0080
#define RDW_UPDATENOW 0x0100
#define RDW_ERASENOW 0x0200
#define RDW_FRAME 0x0400
#define RDW_NOFRAME 0x0800
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LockWindowUpdate(HWND hWndLock);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ScrollWindow(HWND hWnd,int XAmount,int YAmount,const RECT *lpRect,const RECT *lpClipRect);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ScrollDC(HDC hDC,int dx,int dy,const RECT *lprcScroll,const RECT *lprcClip,HRGN hrgnUpdate,LPRECT lprcUpdate);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) ScrollWindowEx(HWND hWnd,int dx,int dy,const RECT *prcScroll,const RECT *prcClip,HRGN hrgnUpdate,LPRECT prcUpdate,UINT flags);
#define SW_SCROLLCHILDREN 0x0001
#define SW_INVALIDATE 0x0002
#define SW_ERASE 0x0004
#define SW_SMOOTHSCROLL 0x0010
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetScrollPos(HWND hWnd,int nBar,int nPos,WINBOOL bRedraw);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetScrollPos(HWND hWnd,int nBar);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetScrollRange(HWND hWnd,int nBar,int nMinPos,int nMaxPos,WINBOOL bRedraw);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetScrollRange(HWND hWnd,int nBar,LPINT lpMinPos,LPINT lpMaxPos);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ShowScrollBar(HWND hWnd,int wBar,WINBOOL bShow);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnableScrollBar(HWND hWnd,UINT wSBflags,UINT wArrows);
#define ESB_ENABLE_BOTH 0x0000
#define ESB_DISABLE_BOTH 0x0003
#define ESB_DISABLE_LEFT 0x0001
#define ESB_DISABLE_RIGHT 0x0002
#define ESB_DISABLE_UP 0x0001
#define ESB_DISABLE_DOWN 0x0002
#define ESB_DISABLE_LTUP ESB_DISABLE_LEFT
#define ESB_DISABLE_RTDN ESB_DISABLE_RIGHT
#define SetProp __MINGW_NAME_AW(SetProp)
#define GetProp __MINGW_NAME_AW(GetProp)
#define RemoveProp __MINGW_NAME_AW(RemoveProp)
#define EnumPropsEx __MINGW_NAME_AW(EnumPropsEx)
#define EnumProps __MINGW_NAME_AW(EnumProps)
#define SetWindowText __MINGW_NAME_AW(SetWindowText)
#define GetWindowText __MINGW_NAME_AW(GetWindowText)
#define GetWindowTextLength __MINGW_NAME_AW(GetWindowTextLength)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetPropA(HWND hWnd,LPCSTR lpString,HANDLE hData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetPropW(HWND hWnd,LPCWSTR lpString,HANDLE hData);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) GetPropA(HWND hWnd,LPCSTR lpString);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) GetPropW(HWND hWnd,LPCWSTR lpString);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) RemovePropA(HWND hWnd,LPCSTR lpString);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) RemovePropW(HWND hWnd,LPCWSTR lpString);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EnumPropsExA(HWND hWnd,PROPENUMPROCEXA lpEnumFunc,LPARAM lParam);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EnumPropsExW(HWND hWnd,PROPENUMPROCEXW lpEnumFunc,LPARAM lParam);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EnumPropsA(HWND hWnd,PROPENUMPROCA lpEnumFunc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) EnumPropsW(HWND hWnd,PROPENUMPROCW lpEnumFunc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetWindowTextA(HWND hWnd,LPCSTR lpString);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetWindowTextW(HWND hWnd,LPCWSTR lpString);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetWindowTextA(HWND hWnd,LPSTR lpString,int nMaxCount);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetWindowTextW(HWND hWnd,LPWSTR lpString,int nMaxCount);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetWindowTextLengthA(HWND hWnd);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetWindowTextLengthW(HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetClientRect(HWND hWnd,LPRECT lpRect);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetWindowRect(HWND hWnd,LPRECT lpRect);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AdjustWindowRect(LPRECT lpRect,DWORD dwStyle,WINBOOL bMenu);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AdjustWindowRectEx(LPRECT lpRect,DWORD dwStyle,WINBOOL bMenu,DWORD dwExStyle);
#define HELPINFO_WINDOW 0x0001
#define HELPINFO_MENUITEM 0x0002
  typedef struct tagHELPINFO {
    UINT cbSize;
    int iContextType;
    int iCtrlId;
    HANDLE hItemHandle;
    DWORD_PTR dwContextId;
    POINT MousePos;
  } HELPINFO,*LPHELPINFO;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetWindowContextHelpId(HWND,DWORD);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetWindowContextHelpId(HWND);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetMenuContextHelpId(HMENU,DWORD);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetMenuContextHelpId(HMENU);
#define MB_OK __MSABI_LONG(0x00000000)
#define MB_OKCANCEL __MSABI_LONG(0x00000001)
#define MB_ABORTRETRYIGNORE __MSABI_LONG(0x00000002)
#define MB_YESNOCANCEL __MSABI_LONG(0x00000003)
#define MB_YESNO __MSABI_LONG(0x00000004)
#define MB_RETRYCANCEL __MSABI_LONG(0x00000005)
#define MB_CANCELTRYCONTINUE __MSABI_LONG(0x00000006)
#define MB_ICONHAND __MSABI_LONG(0x00000010)
#define MB_ICONQUESTION __MSABI_LONG(0x00000020)
#define MB_ICONEXCLAMATION __MSABI_LONG(0x00000030)
#define MB_ICONASTERISK __MSABI_LONG(0x00000040)
#define MB_USERICON __MSABI_LONG(0x00000080)
#define MB_ICONWARNING MB_ICONEXCLAMATION
#define MB_ICONERROR MB_ICONHAND
#define MB_ICONINFORMATION MB_ICONASTERISK
#define MB_ICONSTOP MB_ICONHAND
#define MB_DEFBUTTON1 __MSABI_LONG(0x00000000)
#define MB_DEFBUTTON2 __MSABI_LONG(0x00000100)
#define MB_DEFBUTTON3 __MSABI_LONG(0x00000200)
#define MB_DEFBUTTON4 __MSABI_LONG(0x00000300)
#define MB_APPLMODAL __MSABI_LONG(0x00000000)
#define MB_SYSTEMMODAL __MSABI_LONG(0x00001000)
#define MB_TASKMODAL __MSABI_LONG(0x00002000)
#define MB_HELP __MSABI_LONG(0x00004000)
#define MB_NOFOCUS __MSABI_LONG(0x00008000)
#define MB_SETFOREGROUND __MSABI_LONG(0x00010000)
#define MB_DEFAULT_DESKTOP_ONLY __MSABI_LONG(0x00020000)
#define MB_TOPMOST __MSABI_LONG(0x00040000)
#define MB_RIGHT __MSABI_LONG(0x00080000)
#define MB_RTLREADING __MSABI_LONG(0x00100000)
#define MB_SERVICE_NOTIFICATION __MSABI_LONG(0x00200000)
#define MB_SERVICE_NOTIFICATION_NT3X __MSABI_LONG(0x00040000)
#define MB_TYPEMASK __MSABI_LONG(0x0000000F)
#define MB_ICONMASK __MSABI_LONG(0x000000F0)
#define MB_DEFMASK __MSABI_LONG(0x00000F00)
#define MB_MODEMASK __MSABI_LONG(0x00003000)
#define MB_MISCMASK __MSABI_LONG(0x0000C000)
#define MessageBox __MINGW_NAME_AW(MessageBox)
#define MessageBoxEx __MINGW_NAME_AW(MessageBoxEx)
  __attribute__((dllimport)) int __attribute__((__stdcall__)) MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) MessageBoxW(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) MessageBoxExA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType,WORD wLanguageId);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) MessageBoxExW(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType,WORD wLanguageId);
  typedef void (__attribute__((__stdcall__)) *MSGBOXCALLBACK)(LPHELPINFO lpHelpInfo);
  typedef struct tagMSGBOXPARAMSA {
    UINT cbSize;
    HWND hwndOwner;
    HINSTANCE hInstance;
    LPCSTR lpszText;
    LPCSTR lpszCaption;
    DWORD dwStyle;
    LPCSTR lpszIcon;
    DWORD_PTR dwContextHelpId;
    MSGBOXCALLBACK lpfnMsgBoxCallback;
    DWORD dwLanguageId;
  } MSGBOXPARAMSA,*PMSGBOXPARAMSA,*LPMSGBOXPARAMSA;
  typedef struct tagMSGBOXPARAMSW {
    UINT cbSize;
    HWND hwndOwner;
    HINSTANCE hInstance;
    LPCWSTR lpszText;
    LPCWSTR lpszCaption;
    DWORD dwStyle;
    LPCWSTR lpszIcon;
    DWORD_PTR dwContextHelpId;
    MSGBOXCALLBACK lpfnMsgBoxCallback;
    DWORD dwLanguageId;
  } MSGBOXPARAMSW,*PMSGBOXPARAMSW,*LPMSGBOXPARAMSW;
  typedef MSGBOXPARAMSA MSGBOXPARAMS;
  typedef PMSGBOXPARAMSA PMSGBOXPARAMS;
  typedef LPMSGBOXPARAMSA LPMSGBOXPARAMS;
#define MessageBoxIndirect __MINGW_NAME_AW(MessageBoxIndirect)
  __attribute__((dllimport)) int __attribute__((__stdcall__)) MessageBoxIndirectA(const MSGBOXPARAMSA *lpmbp);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) MessageBoxIndirectW(const MSGBOXPARAMSW *lpmbp);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MessageBeep(UINT uType);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) ShowCursor(WINBOOL bShow);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetCursorPos(int X,int Y);
  __attribute__((dllimport)) HCURSOR __attribute__((__stdcall__)) SetCursor(HCURSOR hCursor);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCursorPos(LPPOINT lpPoint);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ClipCursor(const RECT *lpRect);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetClipCursor(LPRECT lpRect);
  __attribute__((dllimport)) HCURSOR __attribute__((__stdcall__)) GetCursor(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CreateCaret(HWND hWnd,HBITMAP hBitmap,int nWidth,int nHeight);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetCaretBlinkTime(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetCaretBlinkTime(UINT uMSeconds);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DestroyCaret(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) HideCaret(HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ShowCaret(HWND hWnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetCaretPos(int X,int Y);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCaretPos(LPPOINT lpPoint);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ClientToScreen(HWND hWnd,LPPOINT lpPoint);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ScreenToClient(HWND hWnd,LPPOINT lpPoint);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) MapWindowPoints(HWND hWndFrom,HWND hWndTo,LPPOINT lpPoints,UINT cPoints);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) WindowFromPoint(POINT Point);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) ChildWindowFromPoint(HWND hWndParent,POINT Point);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) ChildWindowFromPointEx(HWND hwnd,POINT pt,UINT flags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetPhysicalCursorPos (int X, int Y);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetPhysicalCursorPos (LPPOINT lpPoint);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LogicalToPhysicalPoint (HWND hWnd, LPPOINT lpPoint);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PhysicalToLogicalPoint (HWND hWnd, LPPOINT lpPoint);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) WindowFromPhysicalPoint (POINT Point);
#define CWP_ALL 0x0000
#define CWP_SKIPINVISIBLE 0x0001
#define CWP_SKIPDISABLED 0x0002
#define CWP_SKIPTRANSPARENT 0x0004
#define CTLCOLOR_MSGBOX 0
#define CTLCOLOR_EDIT 1
#define CTLCOLOR_LISTBOX 2
#define CTLCOLOR_BTN 3
#define CTLCOLOR_DLG 4
#define CTLCOLOR_SCROLLBAR 5
#define CTLCOLOR_STATIC 6
#define CTLCOLOR_MAX 7
#define COLOR_SCROLLBAR 0
#define COLOR_BACKGROUND 1
#define COLOR_ACTIVECAPTION 2
#define COLOR_INACTIVECAPTION 3
#define COLOR_MENU 4
#define COLOR_WINDOW 5
#define COLOR_WINDOWFRAME 6
#define COLOR_MENUTEXT 7
#define COLOR_WINDOWTEXT 8
#define COLOR_CAPTIONTEXT 9
#define COLOR_ACTIVEBORDER 10
#define COLOR_INACTIVEBORDER 11
#define COLOR_APPWORKSPACE 12
#define COLOR_HIGHLIGHT 13
#define COLOR_HIGHLIGHTTEXT 14
#define COLOR_BTNFACE 15
#define COLOR_BTNSHADOW 16
#define COLOR_GRAYTEXT 17
#define COLOR_BTNTEXT 18
#define COLOR_INACTIVECAPTIONTEXT 19
#define COLOR_BTNHIGHLIGHT 20
#define COLOR_3DDKSHADOW 21
#define COLOR_3DLIGHT 22
#define COLOR_INFOTEXT 23
#define COLOR_INFOBK 24
#define COLOR_HOTLIGHT 26
#define COLOR_GRADIENTACTIVECAPTION 27
#define COLOR_GRADIENTINACTIVECAPTION 28
#define COLOR_MENUHILIGHT 29
#define COLOR_MENUBAR 30
#define COLOR_DESKTOP COLOR_BACKGROUND
#define COLOR_3DFACE COLOR_BTNFACE
#define COLOR_3DSHADOW COLOR_BTNSHADOW
#define COLOR_3DHIGHLIGHT COLOR_BTNHIGHLIGHT
#define COLOR_3DHILIGHT COLOR_BTNHIGHLIGHT
#define COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetSysColor(int nIndex);
  __attribute__((dllimport)) HBRUSH __attribute__((__stdcall__)) GetSysColorBrush(int nIndex);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetSysColors(int cElements,const INT *lpaElements,const COLORREF *lpaRgbValues);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DrawFocusRect(HDC hDC,const RECT *lprc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) FillRect(HDC hDC,const RECT *lprc,HBRUSH hbr);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) FrameRect(HDC hDC,const RECT *lprc,HBRUSH hbr);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InvertRect(HDC hDC,const RECT *lprc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetRect(LPRECT lprc,int xLeft,int yTop,int xRight,int yBottom);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetRectEmpty(LPRECT lprc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CopyRect(LPRECT lprcDst,const RECT *lprcSrc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InflateRect(LPRECT lprc,int dx,int dy);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IntersectRect(LPRECT lprcDst,const RECT *lprcSrc1,const RECT *lprcSrc2);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnionRect(LPRECT lprcDst,const RECT *lprcSrc1,const RECT *lprcSrc2);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SubtractRect(LPRECT lprcDst,const RECT *lprcSrc1,const RECT *lprcSrc2);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) OffsetRect(LPRECT lprc,int dx,int dy);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsRectEmpty(const RECT *lprc);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EqualRect(const RECT *lprc1,const RECT *lprc2);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PtInRect(const RECT *lprc,POINT pt);
#define GetWindowLong __MINGW_NAME_AW(GetWindowLong)
#define SetWindowLong __MINGW_NAME_AW(SetWindowLong)
#define GetClassLong __MINGW_NAME_AW(GetClassLong)
#define SetClassLong __MINGW_NAME_AW(SetClassLong)
  __attribute__((dllimport)) WORD __attribute__((__stdcall__)) GetWindowWord(HWND hWnd,int nIndex);
  __attribute__((dllimport)) WORD __attribute__((__stdcall__)) SetWindowWord(HWND hWnd,int nIndex,WORD wNewWord);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) GetWindowLongA(HWND hWnd,int nIndex);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) GetWindowLongW(HWND hWnd,int nIndex);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) SetWindowLongA(HWND hWnd,int nIndex,LONG dwNewLong);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) SetWindowLongW(HWND hWnd,int nIndex,LONG dwNewLong);
#define GetWindowLongPtr __MINGW_NAME_AW(GetWindowLongPtr)
#define SetWindowLongPtr __MINGW_NAME_AW(SetWindowLongPtr)
#define GetWindowLongPtrA GetWindowLongA
#define GetWindowLongPtrW GetWindowLongW
#define SetWindowLongPtrA SetWindowLongA
#define SetWindowLongPtrW SetWindowLongW
  __attribute__((dllimport)) WORD __attribute__((__stdcall__)) GetClassWord(HWND hWnd,int nIndex);
  __attribute__((dllimport)) WORD __attribute__((__stdcall__)) SetClassWord(HWND hWnd,int nIndex,WORD wNewWord);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetClassLongA(HWND hWnd,int nIndex);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetClassLongW(HWND hWnd,int nIndex);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SetClassLongA(HWND hWnd,int nIndex,LONG dwNewLong);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SetClassLongW(HWND hWnd,int nIndex,LONG dwNewLong);
#define GetClassLongPtr __MINGW_NAME_AW(GetClassLongPtr)
#define SetClassLongPtr __MINGW_NAME_AW(SetClassLongPtr)
#define GetClassLongPtrA GetClassLongA
#define GetClassLongPtrW GetClassLongW
#define SetClassLongPtrA SetClassLongA
#define SetClassLongPtrW SetClassLongW
#define FindWindow __MINGW_NAME_AW(FindWindow)
#define FindWindowEx __MINGW_NAME_AW(FindWindowEx)
#define GetClassName __MINGW_NAME_AW(GetClassName)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetProcessDefaultLayout(DWORD *pdwDefaultLayout);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetProcessDefaultLayout(DWORD dwDefaultLayout);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetDesktopWindow(void);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetParent(HWND hWnd);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) SetParent(HWND hWndChild,HWND hWndNewParent);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumChildWindows(HWND hWndParent,WNDENUMPROC lpEnumFunc,LPARAM lParam);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) FindWindowA(LPCSTR lpClassName,LPCSTR lpWindowName);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) FindWindowW(LPCWSTR lpClassName,LPCWSTR lpWindowName);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) FindWindowExA(HWND hWndParent,HWND hWndChildAfter,LPCSTR lpszClass,LPCSTR lpszWindow);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) FindWindowExW(HWND hWndParent,HWND hWndChildAfter,LPCWSTR lpszClass,LPCWSTR lpszWindow);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetShellWindow(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RegisterShellHookWindow(HWND hwnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeregisterShellHookWindow(HWND hwnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumThreadWindows(DWORD dwThreadId,WNDENUMPROC lpfn,LPARAM lParam);
#define EnumTaskWindows(hTask,lpfn,lParam) EnumThreadWindows(HandleToUlong(hTask),lpfn,lParam)
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetClassNameA(HWND hWnd,LPSTR lpClassName,int nMaxCount);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetClassNameW(HWND hWnd,LPWSTR lpClassName,int nMaxCount);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetTopWindow(HWND hWnd);
#define GetNextWindow(hWnd,wCmd) GetWindow(hWnd,wCmd)
#define GetSysModalWindow() (NULL)
#define SetSysModalWindow(hWnd) (NULL)
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetWindowThreadProcessId(HWND hWnd,LPDWORD lpdwProcessId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsGUIThread(WINBOOL bConvert);
#define GetWindowTask(hWnd) ((HANDLE)(DWORD_PTR)GetWindowThreadProcessId(hWnd,NULL))
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetLastActivePopup(HWND hWnd);
#define GW_HWNDFIRST 0
#define GW_HWNDLAST 1
#define GW_HWNDNEXT 2
#define GW_HWNDPREV 3
#define GW_OWNER 4
#define GW_CHILD 5
#define GW_ENABLEDPOPUP 6
#define GW_MAX 6
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetWindow(HWND hWnd,UINT uCmd);
#define SetWindowsHook __MINGW_NAME_AW(SetWindowsHook)
#define SetWindowsHookEx __MINGW_NAME_AW(SetWindowsHookEx)
  __attribute__((dllimport)) HHOOK __attribute__((__stdcall__)) SetWindowsHookA (int nFilterType, HOOKPROC pfnFilterProc);
  __attribute__((dllimport)) HHOOK __attribute__((__stdcall__)) SetWindowsHookW (int nFilterType, HOOKPROC pfnFilterProc);
#define DefHookProc(nCode,wParam,lParam,phhk) CallNextHookEx (*phhk, nCode, wParam, lParam)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnhookWindowsHook (int nCode, HOOKPROC pfnFilterProc);
  __attribute__((dllimport)) HHOOK __attribute__((__stdcall__)) SetWindowsHookExA (int idHook, HOOKPROC lpfn, HINSTANCE hmod, DWORD dwThreadId);
  __attribute__((dllimport)) HHOOK __attribute__((__stdcall__)) SetWindowsHookExW (int idHook, HOOKPROC lpfn, HINSTANCE hmod, DWORD dwThreadId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnhookWindowsHookEx (HHOOK hhk);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) CallNextHookEx (HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam);
#define MF_INSERT __MSABI_LONG(0x00000000)
#define MF_CHANGE __MSABI_LONG(0x00000080)
#define MF_APPEND __MSABI_LONG(0x00000100)
#define MF_DELETE __MSABI_LONG(0x00000200)
#define MF_REMOVE __MSABI_LONG(0x00001000)
#define MF_BYCOMMAND __MSABI_LONG(0x00000000)
#define MF_BYPOSITION __MSABI_LONG(0x00000400)
#define MF_SEPARATOR __MSABI_LONG(0x00000800)
#define MF_ENABLED __MSABI_LONG(0x00000000)
#define MF_GRAYED __MSABI_LONG(0x00000001)
#define MF_DISABLED __MSABI_LONG(0x00000002)
#define MF_UNCHECKED __MSABI_LONG(0x00000000)
#define MF_CHECKED __MSABI_LONG(0x00000008)
#define MF_USECHECKBITMAPS __MSABI_LONG(0x00000200)
#define MF_STRING __MSABI_LONG(0x00000000)
#define MF_BITMAP __MSABI_LONG(0x00000004)
#define MF_OWNERDRAW __MSABI_LONG(0x00000100)
#define MF_POPUP __MSABI_LONG(0x00000010)
#define MF_MENUBARBREAK __MSABI_LONG(0x00000020)
#define MF_MENUBREAK __MSABI_LONG(0x00000040)
#define MF_UNHILITE __MSABI_LONG(0x00000000)
#define MF_HILITE __MSABI_LONG(0x00000080)
#define MF_DEFAULT __MSABI_LONG(0x00001000)
#define MF_SYSMENU __MSABI_LONG(0x00002000)
#define MF_HELP __MSABI_LONG(0x00004000)
#define MF_RIGHTJUSTIFY __MSABI_LONG(0x00004000)
#define MF_MOUSESELECT __MSABI_LONG(0x00008000)
#define MF_END __MSABI_LONG(0x00000080)
#define MFT_STRING MF_STRING
#define MFT_BITMAP MF_BITMAP
#define MFT_MENUBARBREAK MF_MENUBARBREAK
#define MFT_MENUBREAK MF_MENUBREAK
#define MFT_OWNERDRAW MF_OWNERDRAW
#define MFT_RADIOCHECK __MSABI_LONG(0x00000200)
#define MFT_SEPARATOR MF_SEPARATOR
#define MFT_RIGHTORDER __MSABI_LONG(0x00002000)
#define MFT_RIGHTJUSTIFY MF_RIGHTJUSTIFY
#define MFS_GRAYED __MSABI_LONG(0x00000003)
#define MFS_DISABLED MFS_GRAYED
#define MFS_CHECKED MF_CHECKED
#define MFS_HILITE MF_HILITE
#define MFS_ENABLED MF_ENABLED
#define MFS_UNCHECKED MF_UNCHECKED
#define MFS_UNHILITE MF_UNHILITE
#define MFS_DEFAULT MF_DEFAULT
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CheckMenuRadioItem(HMENU hmenu,UINT first,UINT last,UINT check,UINT flags);
  typedef struct {
    WORD versionNumber;
    WORD offset;
  } MENUITEMTEMPLATEHEADER,*PMENUITEMTEMPLATEHEADER;
  typedef struct {
    WORD mtOption;
    WORD mtID;
    WCHAR mtString[1];
  } MENUITEMTEMPLATE,*PMENUITEMTEMPLATE;
#define MF_END __MSABI_LONG(0x00000080)
#define SC_SIZE 0xF000
#define SC_MOVE 0xF010
#define SC_MINIMIZE 0xF020
#define SC_MAXIMIZE 0xF030
#define SC_NEXTWINDOW 0xF040
#define SC_PREVWINDOW 0xF050
#define SC_CLOSE 0xF060
#define SC_VSCROLL 0xF070
#define SC_HSCROLL 0xF080
#define SC_MOUSEMENU 0xF090
#define SC_KEYMENU 0xF100
#define SC_ARRANGE 0xF110
#define SC_RESTORE 0xF120
#define SC_TASKLIST 0xF130
#define SC_SCREENSAVE 0xF140
#define SC_HOTKEY 0xF150
#define SC_DEFAULT 0xF160
#define SC_MONITORPOWER 0xF170
#define SC_CONTEXTHELP 0xF180
#define SC_SEPARATOR 0xF00F
#define SCF_ISSECURE 0x00000001
#define GET_SC_WPARAM(wParam) ((int)wParam &0xfff0)
#define SC_ICON SC_MINIMIZE
#define SC_ZOOM SC_MAXIMIZE
#define LoadBitmap __MINGW_NAME_AW(LoadBitmap)
#define LoadCursor __MINGW_NAME_AW(LoadCursor)
#define LoadCursorFromFile __MINGW_NAME_AW(LoadCursorFromFile)
  __attribute__((dllimport)) HBITMAP __attribute__((__stdcall__)) LoadBitmapA(HINSTANCE hInstance,LPCSTR lpBitmapName);
  __attribute__((dllimport)) HBITMAP __attribute__((__stdcall__)) LoadBitmapW(HINSTANCE hInstance,LPCWSTR lpBitmapName);
  __attribute__((dllimport)) HCURSOR __attribute__((__stdcall__)) LoadCursorA(HINSTANCE hInstance,LPCSTR lpCursorName);
  __attribute__((dllimport)) HCURSOR __attribute__((__stdcall__)) LoadCursorW(HINSTANCE hInstance,LPCWSTR lpCursorName);
  __attribute__((dllimport)) HCURSOR __attribute__((__stdcall__)) LoadCursorFromFileA(LPCSTR lpFileName);
  __attribute__((dllimport)) HCURSOR __attribute__((__stdcall__)) LoadCursorFromFileW(LPCWSTR lpFileName);
  __attribute__((dllimport)) HCURSOR __attribute__((__stdcall__)) CreateCursor(HINSTANCE hInst,int xHotSpot,int yHotSpot,int nWidth,int nHeight,const void *pvANDPlane,const void *pvXORPlane);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DestroyCursor(HCURSOR hCursor);
#define CopyCursor(pcur) ((HCURSOR)CopyIcon((HICON)(pcur)))
#define IDC_ARROW MAKEINTRESOURCE(32512)
#define IDC_IBEAM MAKEINTRESOURCE(32513)
#define IDC_WAIT MAKEINTRESOURCE(32514)
#define IDC_CROSS MAKEINTRESOURCE(32515)
#define IDC_UPARROW MAKEINTRESOURCE(32516)
#define IDC_SIZE MAKEINTRESOURCE(32640)
#define IDC_ICON MAKEINTRESOURCE(32641)
#define IDC_SIZENWSE MAKEINTRESOURCE(32642)
#define IDC_SIZENESW MAKEINTRESOURCE(32643)
#define IDC_SIZEWE MAKEINTRESOURCE(32644)
#define IDC_SIZENS MAKEINTRESOURCE(32645)
#define IDC_SIZEALL MAKEINTRESOURCE(32646)
#define IDC_NO MAKEINTRESOURCE(32648)
#define IDC_HAND MAKEINTRESOURCE(32649)
#define IDC_APPSTARTING MAKEINTRESOURCE(32650)
#define IDC_HELP MAKEINTRESOURCE(32651)
  typedef struct _ICONINFO {
    WINBOOL fIcon;
    DWORD xHotspot;
    DWORD yHotspot;
    HBITMAP hbmMask;
    HBITMAP hbmColor;
  } ICONINFO;
  typedef ICONINFO *PICONINFO;
#define LoadIcon __MINGW_NAME_AW(LoadIcon)
#define PrivateExtractIcons __MINGW_NAME_AW(PrivateExtractIcons)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetSystemCursor(HCURSOR hcur,DWORD id);
  __attribute__((dllimport)) HICON __attribute__((__stdcall__)) LoadIconA(HINSTANCE hInstance,LPCSTR lpIconName);
  __attribute__((dllimport)) HICON __attribute__((__stdcall__)) LoadIconW(HINSTANCE hInstance,LPCWSTR lpIconName);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) PrivateExtractIconsA(LPCSTR szFileName,int nIconIndex,int cxIcon,int cyIcon,HICON *phicon,UINT *piconid,UINT nIcons,UINT flags);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) PrivateExtractIconsW(LPCWSTR szFileName,int nIconIndex,int cxIcon,int cyIcon,HICON *phicon,UINT *piconid,UINT nIcons,UINT flags);
  __attribute__((dllimport)) HICON __attribute__((__stdcall__)) CreateIcon(HINSTANCE hInstance,int nWidth,int nHeight,BYTE cPlanes,BYTE cBitsPixel,const BYTE *lpbANDbits,const BYTE *lpbXORbits);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DestroyIcon(HICON hIcon);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) LookupIconIdFromDirectory(PBYTE presbits,WINBOOL fIcon);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) LookupIconIdFromDirectoryEx(PBYTE presbits,WINBOOL fIcon,int cxDesired,int cyDesired,UINT Flags);
  __attribute__((dllimport)) HICON __attribute__((__stdcall__)) CreateIconFromResource(PBYTE presbits,DWORD dwResSize,WINBOOL fIcon,DWORD dwVer);
  __attribute__((dllimport)) HICON __attribute__((__stdcall__)) CreateIconFromResourceEx(PBYTE presbits,DWORD dwResSize,WINBOOL fIcon,DWORD dwVer,int cxDesired,int cyDesired,UINT Flags);
  typedef struct tagCURSORSHAPE {
    int xHotSpot;
    int yHotSpot;
    int cx;
    int cy;
    int cbWidth;
    BYTE Planes;
    BYTE BitsPixel;
  } CURSORSHAPE,*LPCURSORSHAPE;
#define IMAGE_BITMAP 0
#define IMAGE_ICON 1
#define IMAGE_CURSOR 2
#define IMAGE_ENHMETAFILE 3
#define LR_DEFAULTCOLOR 0x0000
#define LR_MONOCHROME 0x0001
#define LR_COLOR 0x0002
#define LR_COPYRETURNORG 0x0004
#define LR_COPYDELETEORG 0x0008
#define LR_LOADFROMFILE 0x0010
#define LR_LOADTRANSPARENT 0x0020
#define LR_DEFAULTSIZE 0x0040
#define LR_VGACOLOR 0x0080
#define LR_LOADMAP3DCOLORS 0x1000
#define LR_CREATEDIBSECTION 0x2000
#define LR_COPYFROMRESOURCE 0x4000
#define LR_SHARED 0x8000
#define LoadImage __MINGW_NAME_AW(LoadImage)
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) LoadImageA(HINSTANCE hInst,LPCSTR name,UINT type,int cx,int cy,UINT fuLoad);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) LoadImageW(HINSTANCE hInst,LPCWSTR name,UINT type,int cx,int cy,UINT fuLoad);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CopyImage(HANDLE h,UINT type,int cx,int cy,UINT flags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DrawIconEx(HDC hdc,int xLeft,int yTop,HICON hIcon,int cxWidth,int cyWidth,UINT istepIfAniCur,HBRUSH hbrFlickerFreeDraw,UINT diFlags);
  __attribute__((dllimport)) HICON __attribute__((__stdcall__)) CreateIconIndirect(PICONINFO piconinfo);
  __attribute__((dllimport)) HICON __attribute__((__stdcall__)) CopyIcon(HICON hIcon);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetIconInfo(HICON hIcon,PICONINFO piconinfo);
  typedef struct _ICONINFOEXA {
    DWORD cbSize;
    WINBOOL fIcon;
    DWORD xHotspot;
    DWORD yHotspot;
    HBITMAP hbmMask;
    HBITMAP hbmColor;
    WORD wResID;
    CHAR szModName[260];
    CHAR szResName[260];
  } ICONINFOEXA,*PICONINFOEXA;
  typedef struct _ICONINFOEXW {
    DWORD cbSize;
    WINBOOL fIcon;
    DWORD xHotspot;
    DWORD yHotspot;
    HBITMAP hbmMask;
    HBITMAP hbmColor;
    WORD wResID;
    WCHAR szModName[260];
    WCHAR szResName[260];
  } ICONINFOEXW,*PICONINFOEXW;
  typedef ICONINFOEXA ICONINFOEX;;
  typedef PICONINFOEXA PICONINFOEX;;
#define GetIconInfoEx __MINGW_NAME_AW(GetIconInfoEx)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetIconInfoExA (HICON hicon, PICONINFOEXA piconinfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetIconInfoExW (HICON hicon, PICONINFOEXW piconinfo);
#define DI_MASK 0x0001
#define DI_IMAGE 0x0002
#define DI_NORMAL 0x0003
#define DI_COMPAT 0x0004
#define DI_DEFAULTSIZE 0x0008
#define DI_NOMIRROR 0x0010
#define RES_ICON 1
#define RES_CURSOR 2
#define ORD_LANGDRIVER 1
#define IDI_APPLICATION MAKEINTRESOURCE(32512)
#define IDI_HAND MAKEINTRESOURCE(32513)
#define IDI_QUESTION MAKEINTRESOURCE(32514)
#define IDI_EXCLAMATION MAKEINTRESOURCE(32515)
#define IDI_ASTERISK MAKEINTRESOURCE(32516)
#define IDI_WINLOGO MAKEINTRESOURCE(32517)
#define IDI_SHIELD MAKEINTRESOURCE (32518)
#define IDI_WARNING IDI_EXCLAMATION
#define IDI_ERROR IDI_HAND
#define IDI_INFORMATION IDI_ASTERISK
#define IDOK 1
#define IDCANCEL 2
#define IDABORT 3
#define IDRETRY 4
#define IDIGNORE 5
#define IDYES 6
#define IDNO 7
#define IDCLOSE 8
#define IDHELP 9
#define IDTRYAGAIN 10
#define IDCONTINUE 11
#define IDTIMEOUT 32000
#define ES_LEFT __MSABI_LONG(0x0000)
#define ES_CENTER __MSABI_LONG(0x0001)
#define ES_RIGHT __MSABI_LONG(0x0002)
#define ES_MULTILINE __MSABI_LONG(0x0004)
#define ES_UPPERCASE __MSABI_LONG(0x0008)
#define ES_LOWERCASE __MSABI_LONG(0x0010)
#define ES_PASSWORD __MSABI_LONG(0x0020)
#define ES_AUTOVSCROLL __MSABI_LONG(0x0040)
#define ES_AUTOHSCROLL __MSABI_LONG(0x0080)
#define ES_NOHIDESEL __MSABI_LONG(0x0100)
#define ES_OEMCONVERT __MSABI_LONG(0x0400)
#define ES_READONLY __MSABI_LONG(0x0800)
#define ES_WANTRETURN __MSABI_LONG(0x1000)
#define ES_NUMBER __MSABI_LONG(0x2000)
#define EN_SETFOCUS 0x0100
#define EN_KILLFOCUS 0x0200
#define EN_CHANGE 0x0300
#define EN_UPDATE 0x0400
#define EN_ERRSPACE 0x0500
#define EN_MAXTEXT 0x0501
#define EN_HSCROLL 0x0601
#define EN_VSCROLL 0x0602
#define EN_ALIGN_LTR_EC 0x0700
#define EN_ALIGN_RTL_EC 0x0701
#define EC_LEFTMARGIN 0x0001
#define EC_RIGHTMARGIN 0x0002
#define EC_USEFONTINFO 0xffff
#define EMSIS_COMPOSITIONSTRING 0x0001
#define EIMES_GETCOMPSTRATONCE 0x0001
#define EIMES_CANCELCOMPSTRINFOCUS 0x0002
#define EIMES_COMPLETECOMPSTRKILLFOCUS 0x0004
#define EM_GETSEL 0x00B0
#define EM_SETSEL 0x00B1
#define EM_GETRECT 0x00B2
#define EM_SETRECT 0x00B3
#define EM_SETRECTNP 0x00B4
#define EM_SCROLL 0x00B5
#define EM_LINESCROLL 0x00B6
#define EM_SCROLLCARET 0x00B7
#define EM_GETMODIFY 0x00B8
#define EM_SETMODIFY 0x00B9
#define EM_GETLINECOUNT 0x00BA
#define EM_LINEINDEX 0x00BB
#define EM_SETHANDLE 0x00BC
#define EM_GETHANDLE 0x00BD
#define EM_GETTHUMB 0x00BE
#define EM_LINELENGTH 0x00C1
#define EM_REPLACESEL 0x00C2
#define EM_GETLINE 0x00C4
#define EM_LIMITTEXT 0x00C5
#define EM_CANUNDO 0x00C6
#define EM_UNDO 0x00C7
#define EM_FMTLINES 0x00C8
#define EM_LINEFROMCHAR 0x00C9
#define EM_SETTABSTOPS 0x00CB
#define EM_SETPASSWORDCHAR 0x00CC
#define EM_EMPTYUNDOBUFFER 0x00CD
#define EM_GETFIRSTVISIBLELINE 0x00CE
#define EM_SETREADONLY 0x00CF
#define EM_SETWORDBREAKPROC 0x00D0
#define EM_GETWORDBREAKPROC 0x00D1
#define EM_GETPASSWORDCHAR 0x00D2
#define EM_SETMARGINS 0x00D3
#define EM_GETMARGINS 0x00D4
#define EM_SETLIMITTEXT EM_LIMITTEXT
#define EM_GETLIMITTEXT 0x00D5
#define EM_POSFROMCHAR 0x00D6
#define EM_CHARFROMPOS 0x00D7
#define EM_SETIMESTATUS 0x00D8
#define EM_GETIMESTATUS 0x00D9
#define WB_LEFT 0
#define WB_RIGHT 1
#define WB_ISDELIMITER 2
#define BS_PUSHBUTTON __MSABI_LONG(0x00000000)
#define BS_DEFPUSHBUTTON __MSABI_LONG(0x00000001)
#define BS_CHECKBOX __MSABI_LONG(0x00000002)
#define BS_AUTOCHECKBOX __MSABI_LONG(0x00000003)
#define BS_RADIOBUTTON __MSABI_LONG(0x00000004)
#define BS_3STATE __MSABI_LONG(0x00000005)
#define BS_AUTO3STATE __MSABI_LONG(0x00000006)
#define BS_GROUPBOX __MSABI_LONG(0x00000007)
#define BS_USERBUTTON __MSABI_LONG(0x00000008)
#define BS_AUTORADIOBUTTON __MSABI_LONG(0x00000009)
#define BS_PUSHBOX __MSABI_LONG(0x0000000A)
#define BS_OWNERDRAW __MSABI_LONG(0x0000000B)
#define BS_TYPEMASK __MSABI_LONG(0x0000000F)
#define BS_LEFTTEXT __MSABI_LONG(0x00000020)
#define BS_TEXT __MSABI_LONG(0x00000000)
#define BS_ICON __MSABI_LONG(0x00000040)
#define BS_BITMAP __MSABI_LONG(0x00000080)
#define BS_LEFT __MSABI_LONG(0x00000100)
#define BS_RIGHT __MSABI_LONG(0x00000200)
#define BS_CENTER __MSABI_LONG(0x00000300)
#define BS_TOP __MSABI_LONG(0x00000400)
#define BS_BOTTOM __MSABI_LONG(0x00000800)
#define BS_VCENTER __MSABI_LONG(0x00000C00)
#define BS_PUSHLIKE __MSABI_LONG(0x00001000)
#define BS_MULTILINE __MSABI_LONG(0x00002000)
#define BS_NOTIFY __MSABI_LONG(0x00004000)
#define BS_FLAT __MSABI_LONG(0x00008000)
#define BS_RIGHTBUTTON BS_LEFTTEXT
#define BN_CLICKED 0
#define BN_PAINT 1
#define BN_HILITE 2
#define BN_UNHILITE 3
#define BN_DISABLE 4
#define BN_DOUBLECLICKED 5
#define BN_PUSHED BN_HILITE
#define BN_UNPUSHED BN_UNHILITE
#define BN_DBLCLK BN_DOUBLECLICKED
#define BN_SETFOCUS 6
#define BN_KILLFOCUS 7
#define BM_GETCHECK 0x00F0
#define BM_SETCHECK 0x00F1
#define BM_GETSTATE 0x00F2
#define BM_SETSTATE 0x00F3
#define BM_SETSTYLE 0x00F4
#define BM_CLICK 0x00F5
#define BM_GETIMAGE 0x00F6
#define BM_SETIMAGE 0x00F7
#define BM_SETDONTCLICK 0x00f8
#define BST_UNCHECKED 0x0000
#define BST_CHECKED 0x0001
#define BST_INDETERMINATE 0x0002
#define BST_PUSHED 0x0004
#define BST_FOCUS 0x0008
#define SS_LEFT __MSABI_LONG(0x00000000)
#define SS_CENTER __MSABI_LONG(0x00000001)
#define SS_RIGHT __MSABI_LONG(0x00000002)
#define SS_ICON __MSABI_LONG(0x00000003)
#define SS_BLACKRECT __MSABI_LONG(0x00000004)
#define SS_GRAYRECT __MSABI_LONG(0x00000005)
#define SS_WHITERECT __MSABI_LONG(0x00000006)
#define SS_BLACKFRAME __MSABI_LONG(0x00000007)
#define SS_GRAYFRAME __MSABI_LONG(0x00000008)
#define SS_WHITEFRAME __MSABI_LONG(0x00000009)
#define SS_USERITEM __MSABI_LONG(0x0000000A)
#define SS_SIMPLE __MSABI_LONG(0x0000000B)
#define SS_LEFTNOWORDWRAP __MSABI_LONG(0x0000000C)
#define SS_OWNERDRAW __MSABI_LONG(0x0000000D)
#define SS_BITMAP __MSABI_LONG(0x0000000E)
#define SS_ENHMETAFILE __MSABI_LONG(0x0000000F)
#define SS_ETCHEDHORZ __MSABI_LONG(0x00000010)
#define SS_ETCHEDVERT __MSABI_LONG(0x00000011)
#define SS_ETCHEDFRAME __MSABI_LONG(0x00000012)
#define SS_TYPEMASK __MSABI_LONG(0x0000001F)
#define SS_REALSIZECONTROL __MSABI_LONG(0x00000040)
#define SS_NOPREFIX __MSABI_LONG(0x00000080)
#define SS_NOTIFY __MSABI_LONG(0x00000100)
#define SS_CENTERIMAGE __MSABI_LONG(0x00000200)
#define SS_RIGHTJUST __MSABI_LONG(0x00000400)
#define SS_REALSIZEIMAGE __MSABI_LONG(0x00000800)
#define SS_SUNKEN __MSABI_LONG(0x00001000)
#define SS_EDITCONTROL __MSABI_LONG(0x00002000)
#define SS_ENDELLIPSIS __MSABI_LONG(0x00004000)
#define SS_PATHELLIPSIS __MSABI_LONG(0x00008000)
#define SS_WORDELLIPSIS __MSABI_LONG(0x0000C000)
#define SS_ELLIPSISMASK __MSABI_LONG(0x0000C000)
#define STM_SETICON 0x0170
#define STM_GETICON 0x0171
#define STM_SETIMAGE 0x0172
#define STM_GETIMAGE 0x0173
#define STN_CLICKED 0
#define STN_DBLCLK 1
#define STN_ENABLE 2
#define STN_DISABLE 3
#define STM_MSGMAX 0x0174
#define WC_DIALOG (MAKEINTATOM(0x8002))
#define DWL_MSGRESULT 0
#define DWL_DLGPROC 4
#define DWL_USER 8
#define DWLP_MSGRESULT 0
#define DWLP_DLGPROC DWLP_MSGRESULT + sizeof(LRESULT)
#define DWLP_USER DWLP_DLGPROC + sizeof(DLGPROC)
#define DDL_READWRITE 0x0000
#define DDL_READONLY 0x0001
#define DDL_HIDDEN 0x0002
#define DDL_SYSTEM 0x0004
#define DDL_DIRECTORY 0x0010
#define DDL_ARCHIVE 0x0020
#define DDL_POSTMSGS 0x2000
#define DDL_DRIVES 0x4000
#define DDL_EXCLUSIVE 0x8000
#define IsDialogMessage __MINGW_NAME_AW(IsDialogMessage)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsDialogMessageA(HWND hDlg,LPMSG lpMsg);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsDialogMessageW(HWND hDlg,LPMSG lpMsg);
#define DlgDirList __MINGW_NAME_AW(DlgDirList)
#define DlgDirSelectEx __MINGW_NAME_AW(DlgDirSelectEx)
#define DlgDirListComboBox __MINGW_NAME_AW(DlgDirListComboBox)
#define DlgDirSelectComboBoxEx __MINGW_NAME_AW(DlgDirSelectComboBoxEx)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) MapDialogRect(HWND hDlg,LPRECT lpRect);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) DlgDirListA(HWND hDlg,LPSTR lpPathSpec,int nIDListBox,int nIDStaticPath,UINT uFileType);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) DlgDirListW(HWND hDlg,LPWSTR lpPathSpec,int nIDListBox,int nIDStaticPath,UINT uFileType);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DlgDirSelectExA(HWND hwndDlg,LPSTR lpString,int chCount,int idListBox);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DlgDirSelectExW(HWND hwndDlg,LPWSTR lpString,int chCount,int idListBox);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) DlgDirListComboBoxA(HWND hDlg,LPSTR lpPathSpec,int nIDComboBox,int nIDStaticPath,UINT uFiletype);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) DlgDirListComboBoxW(HWND hDlg,LPWSTR lpPathSpec,int nIDComboBox,int nIDStaticPath,UINT uFiletype);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DlgDirSelectComboBoxExA(HWND hwndDlg,LPSTR lpString,int cchOut,int idComboBox);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DlgDirSelectComboBoxExW(HWND hwndDlg,LPWSTR lpString,int cchOut,int idComboBox);
#define DS_ABSALIGN __MSABI_LONG(0x01)
#define DS_SYSMODAL __MSABI_LONG(0x02)
#define DS_LOCALEDIT __MSABI_LONG(0x20)
#define DS_SETFONT __MSABI_LONG(0x40)
#define DS_MODALFRAME __MSABI_LONG(0x80)
#define DS_NOIDLEMSG __MSABI_LONG(0x100)
#define DS_SETFOREGROUND __MSABI_LONG(0x200)
#define DS_3DLOOK __MSABI_LONG(0x0004)
#define DS_FIXEDSYS __MSABI_LONG(0x0008)
#define DS_NOFAILCREATE __MSABI_LONG(0x0010)
#define DS_CONTROL __MSABI_LONG(0x0400)
#define DS_CENTER __MSABI_LONG(0x0800)
#define DS_CENTERMOUSE __MSABI_LONG(0x1000)
#define DS_CONTEXTHELP __MSABI_LONG(0x2000)
#define DS_SHELLFONT (DS_SETFONT | DS_FIXEDSYS)
#define DM_GETDEFID (WM_USER+0)
#define DM_SETDEFID (WM_USER+1)
#define DM_REPOSITION (WM_USER+2)
#define DC_HASDEFID 0x534B
#define DLGC_WANTARROWS 0x0001
#define DLGC_WANTTAB 0x0002
#define DLGC_WANTALLKEYS 0x0004
#define DLGC_WANTMESSAGE 0x0004
#define DLGC_HASSETSEL 0x0008
#define DLGC_DEFPUSHBUTTON 0x0010
#define DLGC_UNDEFPUSHBUTTON 0x0020
#define DLGC_RADIOBUTTON 0x0040
#define DLGC_WANTCHARS 0x0080
#define DLGC_STATIC 0x0100
#define DLGC_BUTTON 0x2000
#define LB_CTLCODE __MSABI_LONG(0)
#define LB_OKAY 0
#define LB_ERR (-1)
#define LB_ERRSPACE (-2)
#define LBN_ERRSPACE (-2)
#define LBN_SELCHANGE 1
#define LBN_DBLCLK 2
#define LBN_SELCANCEL 3
#define LBN_SETFOCUS 4
#define LBN_KILLFOCUS 5
#define LB_ADDSTRING 0x0180
#define LB_INSERTSTRING 0x0181
#define LB_DELETESTRING 0x0182
#define LB_SELITEMRANGEEX 0x0183
#define LB_RESETCONTENT 0x0184
#define LB_SETSEL 0x0185
#define LB_SETCURSEL 0x0186
#define LB_GETSEL 0x0187
#define LB_GETCURSEL 0x0188
#define LB_GETTEXT 0x0189
#define LB_GETTEXTLEN 0x018A
#define LB_GETCOUNT 0x018B
#define LB_SELECTSTRING 0x018C
#define LB_DIR 0x018D
#define LB_GETTOPINDEX 0x018E
#define LB_FINDSTRING 0x018F
#define LB_GETSELCOUNT 0x0190
#define LB_GETSELITEMS 0x0191
#define LB_SETTABSTOPS 0x0192
#define LB_GETHORIZONTALEXTENT 0x0193
#define LB_SETHORIZONTALEXTENT 0x0194
#define LB_SETCOLUMNWIDTH 0x0195
#define LB_ADDFILE 0x0196
#define LB_SETTOPINDEX 0x0197
#define LB_GETITEMRECT 0x0198
#define LB_GETITEMDATA 0x0199
#define LB_SETITEMDATA 0x019A
#define LB_SELITEMRANGE 0x019B
#define LB_SETANCHORINDEX 0x019C
#define LB_GETANCHORINDEX 0x019D
#define LB_SETCARETINDEX 0x019E
#define LB_GETCARETINDEX 0x019F
#define LB_SETITEMHEIGHT 0x01A0
#define LB_GETITEMHEIGHT 0x01A1
#define LB_FINDSTRINGEXACT 0x01A2
#define LB_SETLOCALE 0x01A5
#define LB_GETLOCALE 0x01A6
#define LB_SETCOUNT 0x01A7
#define LB_INITSTORAGE 0x01A8
#define LB_ITEMFROMPOINT 0x01A9
#define LB_GETLISTBOXINFO 0x01B2
#define LB_MSGMAX 0x01B3
#define LBS_NOTIFY __MSABI_LONG(0x0001)
#define LBS_SORT __MSABI_LONG(0x0002)
#define LBS_NOREDRAW __MSABI_LONG(0x0004)
#define LBS_MULTIPLESEL __MSABI_LONG(0x0008)
#define LBS_OWNERDRAWFIXED __MSABI_LONG(0x0010)
#define LBS_OWNERDRAWVARIABLE __MSABI_LONG(0x0020)
#define LBS_HASSTRINGS __MSABI_LONG(0x0040)
#define LBS_USETABSTOPS __MSABI_LONG(0x0080)
#define LBS_NOINTEGRALHEIGHT __MSABI_LONG(0x0100)
#define LBS_MULTICOLUMN __MSABI_LONG(0x0200)
#define LBS_WANTKEYBOARDINPUT __MSABI_LONG(0x0400)
#define LBS_EXTENDEDSEL __MSABI_LONG(0x0800)
#define LBS_DISABLENOSCROLL __MSABI_LONG(0x1000)
#define LBS_NODATA __MSABI_LONG(0x2000)
#define LBS_NOSEL __MSABI_LONG(0x4000)
#define LBS_COMBOBOX __MSABI_LONG(0x8000)
#define LBS_STANDARD (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
#define CB_OKAY 0
#define CB_ERR (-1)
#define CB_ERRSPACE (-2)
#define CBN_ERRSPACE (-1)
#define CBN_SELCHANGE 1
#define CBN_DBLCLK 2
#define CBN_SETFOCUS 3
#define CBN_KILLFOCUS 4
#define CBN_EDITCHANGE 5
#define CBN_EDITUPDATE 6
#define CBN_DROPDOWN 7
#define CBN_CLOSEUP 8
#define CBN_SELENDOK 9
#define CBN_SELENDCANCEL 10
#define CBS_SIMPLE __MSABI_LONG(0x0001)
#define CBS_DROPDOWN __MSABI_LONG(0x0002)
#define CBS_DROPDOWNLIST __MSABI_LONG(0x0003)
#define CBS_OWNERDRAWFIXED __MSABI_LONG(0x0010)
#define CBS_OWNERDRAWVARIABLE __MSABI_LONG(0x0020)
#define CBS_AUTOHSCROLL __MSABI_LONG(0x0040)
#define CBS_OEMCONVERT __MSABI_LONG(0x0080)
#define CBS_SORT __MSABI_LONG(0x0100)
#define CBS_HASSTRINGS __MSABI_LONG(0x0200)
#define CBS_NOINTEGRALHEIGHT __MSABI_LONG(0x0400)
#define CBS_DISABLENOSCROLL __MSABI_LONG(0x0800)
#define CBS_UPPERCASE __MSABI_LONG(0x2000)
#define CBS_LOWERCASE __MSABI_LONG(0x4000)
#define CB_GETEDITSEL 0x0140
#define CB_LIMITTEXT 0x0141
#define CB_SETEDITSEL 0x0142
#define CB_ADDSTRING 0x0143
#define CB_DELETESTRING 0x0144
#define CB_DIR 0x0145
#define CB_GETCOUNT 0x0146
#define CB_GETCURSEL 0x0147
#define CB_GETLBTEXT 0x0148
#define CB_GETLBTEXTLEN 0x0149
#define CB_INSERTSTRING 0x014A
#define CB_RESETCONTENT 0x014B
#define CB_FINDSTRING 0x014C
#define CB_SELECTSTRING 0x014D
#define CB_SETCURSEL 0x014E
#define CB_SHOWDROPDOWN 0x014F
#define CB_GETITEMDATA 0x0150
#define CB_SETITEMDATA 0x0151
#define CB_GETDROPPEDCONTROLRECT 0x0152
#define CB_SETITEMHEIGHT 0x0153
#define CB_GETITEMHEIGHT 0x0154
#define CB_SETEXTENDEDUI 0x0155
#define CB_GETEXTENDEDUI 0x0156
#define CB_GETDROPPEDSTATE 0x0157
#define CB_FINDSTRINGEXACT 0x0158
#define CB_SETLOCALE 0x0159
#define CB_GETLOCALE 0x015A
#define CB_GETTOPINDEX 0x015b
#define CB_SETTOPINDEX 0x015c
#define CB_GETHORIZONTALEXTENT 0x015d
#define CB_SETHORIZONTALEXTENT 0x015e
#define CB_GETDROPPEDWIDTH 0x015f
#define CB_SETDROPPEDWIDTH 0x0160
#define CB_INITSTORAGE 0x0161
#define CB_GETCOMBOBOXINFO 0x0164
#define CB_MSGMAX 0x0165
#define SBS_HORZ __MSABI_LONG(0x0000)
#define SBS_VERT __MSABI_LONG(0x0001)
#define SBS_TOPALIGN __MSABI_LONG(0x0002)
#define SBS_LEFTALIGN __MSABI_LONG(0x0002)
#define SBS_BOTTOMALIGN __MSABI_LONG(0x0004)
#define SBS_RIGHTALIGN __MSABI_LONG(0x0004)
#define SBS_SIZEBOXTOPLEFTALIGN __MSABI_LONG(0x0002)
#define SBS_SIZEBOXBOTTOMRIGHTALIGN __MSABI_LONG(0x0004)
#define SBS_SIZEBOX __MSABI_LONG(0x0008)
#define SBS_SIZEGRIP __MSABI_LONG(0x0010)
#define SBM_SETPOS 0x00E0
#define SBM_GETPOS 0x00E1
#define SBM_SETRANGE 0x00E2
#define SBM_SETRANGEREDRAW 0x00E6
#define SBM_GETRANGE 0x00E3
#define SBM_ENABLE_ARROWS 0x00E4
#define SBM_SETSCROLLINFO 0x00E9
#define SBM_GETSCROLLINFO 0x00EA
#define SBM_GETSCROLLBARINFO 0x00EB
#define SIF_RANGE 0x0001
#define SIF_PAGE 0x0002
#define SIF_POS 0x0004
#define SIF_DISABLENOSCROLL 0x0008
#define SIF_TRACKPOS 0x0010
#define SIF_ALL (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)
  typedef struct tagSCROLLINFO {
    UINT cbSize;
    UINT fMask;
    int nMin;
    int nMax;
    UINT nPage;
    int nPos;
    int nTrackPos;
  } SCROLLINFO,*LPSCROLLINFO;
  typedef SCROLLINFO const *LPCSCROLLINFO;
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SetScrollInfo(HWND hwnd,int nBar,LPCSCROLLINFO lpsi,WINBOOL redraw);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetScrollInfo(HWND hwnd,int nBar,LPSCROLLINFO lpsi);
#define MDIS_ALLCHILDSTYLES 0x0001
#define MDITILE_VERTICAL 0x0000
#define MDITILE_HORIZONTAL 0x0001
#define MDITILE_SKIPDISABLED 0x0002
#define MDITILE_ZORDER 0x0004
  typedef struct tagMDICREATESTRUCTA {
    LPCSTR szClass;
    LPCSTR szTitle;
    HANDLE hOwner;
    int x;
    int y;
    int cx;
    int cy;
    DWORD style;
    LPARAM lParam;
  } MDICREATESTRUCTA,*LPMDICREATESTRUCTA;
  typedef struct tagMDICREATESTRUCTW {
    LPCWSTR szClass;
    LPCWSTR szTitle;
    HANDLE hOwner;
    int x;
    int y;
    int cx;
    int cy;
    DWORD style;
    LPARAM lParam;
  } MDICREATESTRUCTW,*LPMDICREATESTRUCTW;
  typedef MDICREATESTRUCTA MDICREATESTRUCT;
  typedef LPMDICREATESTRUCTA LPMDICREATESTRUCT;
  typedef struct tagCLIENTCREATESTRUCT {
    HANDLE hWindowMenu;
    UINT idFirstChild;
  } CLIENTCREATESTRUCT,*LPCLIENTCREATESTRUCT;
#define DefFrameProc __MINGW_NAME_AW(DefFrameProc)
#define DefMDIChildProc __MINGW_NAME_AW(DefMDIChildProc)
#define CreateMDIWindow __MINGW_NAME_AW(CreateMDIWindow)
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) DefFrameProcA(HWND hWnd,HWND hWndMDIClient,UINT uMsg,WPARAM wParam,LPARAM lParam);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) DefFrameProcW(HWND hWnd,HWND hWndMDIClient,UINT uMsg,WPARAM wParam,LPARAM lParam);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) DefMDIChildProcA(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) DefMDIChildProcW(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) TranslateMDISysAccel(HWND hWndClient,LPMSG lpMsg);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) ArrangeIconicWindows(HWND hWnd);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) CreateMDIWindowA(LPCSTR lpClassName,LPCSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HINSTANCE hInstance,LPARAM lParam);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) CreateMDIWindowW(LPCWSTR lpClassName,LPCWSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HINSTANCE hInstance,LPARAM lParam);
  __attribute__((dllimport)) WORD __attribute__((__stdcall__)) TileWindows(HWND hwndParent,UINT wHow,const RECT *lpRect,UINT cKids,const HWND *lpKids);
  __attribute__((dllimport)) WORD __attribute__((__stdcall__)) CascadeWindows(HWND hwndParent,UINT wHow,const RECT *lpRect,UINT cKids,const HWND *lpKids);
  typedef DWORD HELPPOLY;
  typedef struct tagMULTIKEYHELPA {
    DWORD mkSize;
    CHAR mkKeylist;
    CHAR szKeyphrase[1];
  } MULTIKEYHELPA,*PMULTIKEYHELPA,*LPMULTIKEYHELPA;
  typedef struct tagMULTIKEYHELPW {
    DWORD mkSize;
    WCHAR mkKeylist;
    WCHAR szKeyphrase[1];
  } MULTIKEYHELPW,*PMULTIKEYHELPW,*LPMULTIKEYHELPW;
  typedef MULTIKEYHELPA MULTIKEYHELP;
  typedef PMULTIKEYHELPA PMULTIKEYHELP;
  typedef LPMULTIKEYHELPA LPMULTIKEYHELP;
  typedef struct tagHELPWININFOA {
    int wStructSize;
    int x;
    int y;
    int dx;
    int dy;
    int wMax;
    CHAR rgchMember[2];
  } HELPWININFOA,*PHELPWININFOA,*LPHELPWININFOA;
  typedef struct tagHELPWININFOW {
    int wStructSize;
    int x;
    int y;
    int dx;
    int dy;
    int wMax;
    WCHAR rgchMember[2];
  } HELPWININFOW,*PHELPWININFOW,*LPHELPWININFOW;
  typedef HELPWININFOA HELPWININFO;
  typedef PHELPWININFOA PHELPWININFO;
  typedef LPHELPWININFOA LPHELPWININFO;
#define WinHelp __MINGW_NAME_AW(WinHelp)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WinHelpA(HWND hWndMain,LPCSTR lpszHelp,UINT uCommand,ULONG_PTR dwData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WinHelpW(HWND hWndMain,LPCWSTR lpszHelp,UINT uCommand,ULONG_PTR dwData);
#define HELP_CONTEXT 0x0001
#define HELP_QUIT 0x0002
#define HELP_INDEX 0x0003
#define HELP_CONTENTS 0x0003
#define HELP_HELPONHELP 0x0004
#define HELP_SETINDEX 0x0005
#define HELP_SETCONTENTS 0x0005
#define HELP_CONTEXTPOPUP 0x0008
#define HELP_FORCEFILE 0x0009
#define HELP_KEY 0x0101
#define HELP_COMMAND 0x0102
#define HELP_PARTIALKEY 0x0105
#define HELP_MULTIKEY 0x0201
#define HELP_SETWINPOS 0x0203
#define HELP_CONTEXTMENU 0x000a
#define HELP_FINDER 0x000b
#define HELP_WM_HELP 0x000c
#define HELP_SETPOPUP_POS 0x000d
#define HELP_TCARD 0x8000
#define HELP_TCARD_DATA 0x0010
#define HELP_TCARD_OTHER_CALLER 0x0011
#define IDH_NO_HELP 28440
#define IDH_MISSING_CONTEXT 28441
#define IDH_GENERIC_HELP_BUTTON 28442
#define IDH_OK 28443
#define IDH_CANCEL 28444
#define IDH_HELP 28445
#define GR_GDIOBJECTS 0
#define GR_USEROBJECTS 1
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetGuiResources(HANDLE hProcess,DWORD uiFlags);
#define SPI_GETBEEP 0x0001
#define SPI_SETBEEP 0x0002
#define SPI_GETMOUSE 0x0003
#define SPI_SETMOUSE 0x0004
#define SPI_GETBORDER 0x0005
#define SPI_SETBORDER 0x0006
#define SPI_GETKEYBOARDSPEED 0x000A
#define SPI_SETKEYBOARDSPEED 0x000B
#define SPI_LANGDRIVER 0x000C
#define SPI_ICONHORIZONTALSPACING 0x000D
#define SPI_GETSCREENSAVETIMEOUT 0x000E
#define SPI_SETSCREENSAVETIMEOUT 0x000F
#define SPI_GETSCREENSAVEACTIVE 0x0010
#define SPI_SETSCREENSAVEACTIVE 0x0011
#define SPI_GETGRIDGRANULARITY 0x0012
#define SPI_SETGRIDGRANULARITY 0x0013
#define SPI_SETDESKWALLPAPER 0x0014
#define SPI_SETDESKPATTERN 0x0015
#define SPI_GETKEYBOARDDELAY 0x0016
#define SPI_SETKEYBOARDDELAY 0x0017
#define SPI_ICONVERTICALSPACING 0x0018
#define SPI_GETICONTITLEWRAP 0x0019
#define SPI_SETICONTITLEWRAP 0x001A
#define SPI_GETMENUDROPALIGNMENT 0x001B
#define SPI_SETMENUDROPALIGNMENT 0x001C
#define SPI_SETDOUBLECLKWIDTH 0x001D
#define SPI_SETDOUBLECLKHEIGHT 0x001E
#define SPI_GETICONTITLELOGFONT 0x001F
#define SPI_SETDOUBLECLICKTIME 0x0020
#define SPI_SETMOUSEBUTTONSWAP 0x0021
#define SPI_SETICONTITLELOGFONT 0x0022
#define SPI_GETFASTTASKSWITCH 0x0023
#define SPI_SETFASTTASKSWITCH 0x0024
#define SPI_SETDRAGFULLWINDOWS 0x0025
#define SPI_GETDRAGFULLWINDOWS 0x0026
#define SPI_GETNONCLIENTMETRICS 0x0029
#define SPI_SETNONCLIENTMETRICS 0x002A
#define SPI_GETMINIMIZEDMETRICS 0x002B
#define SPI_SETMINIMIZEDMETRICS 0x002C
#define SPI_GETICONMETRICS 0x002D
#define SPI_SETICONMETRICS 0x002E
#define SPI_SETWORKAREA 0x002F
#define SPI_GETWORKAREA 0x0030
#define SPI_SETPENWINDOWS 0x0031
#define SPI_GETHIGHCONTRAST 0x0042
#define SPI_SETHIGHCONTRAST 0x0043
#define SPI_GETKEYBOARDPREF 0x0044
#define SPI_SETKEYBOARDPREF 0x0045
#define SPI_GETSCREENREADER 0x0046
#define SPI_SETSCREENREADER 0x0047
#define SPI_GETANIMATION 0x0048
#define SPI_SETANIMATION 0x0049
#define SPI_GETFONTSMOOTHING 0x004A
#define SPI_SETFONTSMOOTHING 0x004B
#define SPI_SETDRAGWIDTH 0x004C
#define SPI_SETDRAGHEIGHT 0x004D
#define SPI_SETHANDHELD 0x004E
#define SPI_GETLOWPOWERTIMEOUT 0x004F
#define SPI_GETPOWEROFFTIMEOUT 0x0050
#define SPI_SETLOWPOWERTIMEOUT 0x0051
#define SPI_SETPOWEROFFTIMEOUT 0x0052
#define SPI_GETLOWPOWERACTIVE 0x0053
#define SPI_GETPOWEROFFACTIVE 0x0054
#define SPI_SETLOWPOWERACTIVE 0x0055
#define SPI_SETPOWEROFFACTIVE 0x0056
#define SPI_SETCURSORS 0x0057
#define SPI_SETICONS 0x0058
#define SPI_GETDEFAULTINPUTLANG 0x0059
#define SPI_SETDEFAULTINPUTLANG 0x005A
#define SPI_SETLANGTOGGLE 0x005B
#define SPI_GETWINDOWSEXTENSION 0x005C
#define SPI_SETMOUSETRAILS 0x005D
#define SPI_GETMOUSETRAILS 0x005E
#define SPI_SETSCREENSAVERRUNNING 0x0061
#define SPI_SCREENSAVERRUNNING SPI_SETSCREENSAVERRUNNING
#define SPI_GETFILTERKEYS 0x0032
#define SPI_SETFILTERKEYS 0x0033
#define SPI_GETTOGGLEKEYS 0x0034
#define SPI_SETTOGGLEKEYS 0x0035
#define SPI_GETMOUSEKEYS 0x0036
#define SPI_SETMOUSEKEYS 0x0037
#define SPI_GETSHOWSOUNDS 0x0038
#define SPI_SETSHOWSOUNDS 0x0039
#define SPI_GETSTICKYKEYS 0x003A
#define SPI_SETSTICKYKEYS 0x003B
#define SPI_GETACCESSTIMEOUT 0x003C
#define SPI_SETACCESSTIMEOUT 0x003D
#define SPI_GETSERIALKEYS 0x003E
#define SPI_SETSERIALKEYS 0x003F
#define SPI_GETSOUNDSENTRY 0x0040
#define SPI_SETSOUNDSENTRY 0x0041
#define SPI_GETSNAPTODEFBUTTON 0x005F
#define SPI_SETSNAPTODEFBUTTON 0x0060
#define SPI_GETMOUSEHOVERWIDTH 0x0062
#define SPI_SETMOUSEHOVERWIDTH 0x0063
#define SPI_GETMOUSEHOVERHEIGHT 0x0064
#define SPI_SETMOUSEHOVERHEIGHT 0x0065
#define SPI_GETMOUSEHOVERTIME 0x0066
#define SPI_SETMOUSEHOVERTIME 0x0067
#define SPI_GETWHEELSCROLLLINES 0x0068
#define SPI_SETWHEELSCROLLLINES 0x0069
#define SPI_GETMENUSHOWDELAY 0x006A
#define SPI_SETMENUSHOWDELAY 0x006B
#define SPI_GETWHEELSCROLLCHARS 0x006C
#define SPI_SETWHEELSCROLLCHARS 0x006D
#define SPI_GETSHOWIMEUI 0x006E
#define SPI_SETSHOWIMEUI 0x006F
#define SPI_GETMOUSESPEED 0x0070
#define SPI_SETMOUSESPEED 0x0071
#define SPI_GETSCREENSAVERRUNNING 0x0072
#define SPI_GETDESKWALLPAPER 0x0073
#define SPI_GETAUDIODESCRIPTION 0x0074
#define SPI_SETAUDIODESCRIPTION 0x0075
#define SPI_GETSCREENSAVESECURE 0x0076
#define SPI_SETSCREENSAVESECURE 0x0077
#define SPI_GETACTIVEWINDOWTRACKING 0x1000
#define SPI_SETACTIVEWINDOWTRACKING 0x1001
#define SPI_GETMENUANIMATION 0x1002
#define SPI_SETMENUANIMATION 0x1003
#define SPI_GETCOMBOBOXANIMATION 0x1004
#define SPI_SETCOMBOBOXANIMATION 0x1005
#define SPI_GETLISTBOXSMOOTHSCROLLING 0x1006
#define SPI_SETLISTBOXSMOOTHSCROLLING 0x1007
#define SPI_GETGRADIENTCAPTIONS 0x1008
#define SPI_SETGRADIENTCAPTIONS 0x1009
#define SPI_GETKEYBOARDCUES 0x100A
#define SPI_SETKEYBOARDCUES 0x100B
#define SPI_GETMENUUNDERLINES SPI_GETKEYBOARDCUES
#define SPI_SETMENUUNDERLINES SPI_SETKEYBOARDCUES
#define SPI_GETACTIVEWNDTRKZORDER 0x100C
#define SPI_SETACTIVEWNDTRKZORDER 0x100D
#define SPI_GETHOTTRACKING 0x100E
#define SPI_SETHOTTRACKING 0x100F
#define SPI_GETMENUFADE 0x1012
#define SPI_SETMENUFADE 0x1013
#define SPI_GETSELECTIONFADE 0x1014
#define SPI_SETSELECTIONFADE 0x1015
#define SPI_GETTOOLTIPANIMATION 0x1016
#define SPI_SETTOOLTIPANIMATION 0x1017
#define SPI_GETTOOLTIPFADE 0x1018
#define SPI_SETTOOLTIPFADE 0x1019
#define SPI_GETCURSORSHADOW 0x101A
#define SPI_SETCURSORSHADOW 0x101B
#define SPI_GETMOUSESONAR 0x101C
#define SPI_SETMOUSESONAR 0x101D
#define SPI_GETMOUSECLICKLOCK 0x101E
#define SPI_SETMOUSECLICKLOCK 0x101F
#define SPI_GETMOUSEVANISH 0x1020
#define SPI_SETMOUSEVANISH 0x1021
#define SPI_GETFLATMENU 0x1022
#define SPI_SETFLATMENU 0x1023
#define SPI_GETDROPSHADOW 0x1024
#define SPI_SETDROPSHADOW 0x1025
#define SPI_GETBLOCKSENDINPUTRESETS 0x1026
#define SPI_SETBLOCKSENDINPUTRESETS 0x1027
#define SPI_GETUIEFFECTS 0x103E
#define SPI_SETUIEFFECTS 0x103F
#define SPI_GETDISABLEOVERLAPPEDCONTENT 0x1040
#define SPI_SETDISABLEOVERLAPPEDCONTENT 0x1041
#define SPI_GETCLIENTAREAANIMATION 0x1042
#define SPI_SETCLIENTAREAANIMATION 0x1043
#define SPI_GETCLEARTYPE 0x1048
#define SPI_SETCLEARTYPE 0x1049
#define SPI_GETSPEECHRECOGNITION 0x104a
#define SPI_SETSPEECHRECOGNITION 0x104b
#define SPI_GETFOREGROUNDLOCKTIMEOUT 0x2000
#define SPI_SETFOREGROUNDLOCKTIMEOUT 0x2001
#define SPI_GETACTIVEWNDTRKTIMEOUT 0x2002
#define SPI_SETACTIVEWNDTRKTIMEOUT 0x2003
#define SPI_GETFOREGROUNDFLASHCOUNT 0x2004
#define SPI_SETFOREGROUNDFLASHCOUNT 0x2005
#define SPI_GETCARETWIDTH 0x2006
#define SPI_SETCARETWIDTH 0x2007
#define SPI_GETMOUSECLICKLOCKTIME 0x2008
#define SPI_SETMOUSECLICKLOCKTIME 0x2009
#define SPI_GETFONTSMOOTHINGTYPE 0x200A
#define SPI_SETFONTSMOOTHINGTYPE 0x200B
#define FE_FONTSMOOTHINGSTANDARD 0x0001
#define FE_FONTSMOOTHINGCLEARTYPE 0x0002
#define FE_FONTSMOOTHINGDOCKING 0x8000
#define SPI_GETFONTSMOOTHINGCONTRAST 0x200C
#define SPI_SETFONTSMOOTHINGCONTRAST 0x200D
#define SPI_GETFOCUSBORDERWIDTH 0x200E
#define SPI_SETFOCUSBORDERWIDTH 0x200F
#define SPI_GETFOCUSBORDERHEIGHT 0x2010
#define SPI_SETFOCUSBORDERHEIGHT 0x2011
#define SPI_GETFONTSMOOTHINGORIENTATION 0x2012
#define SPI_SETFONTSMOOTHINGORIENTATION 0x2013
#define SPI_GETMINIMUMHITRADIUS 0x2014
#define SPI_SETMINIMUMHITRADIUS 0x2015
#define SPI_GETMESSAGEDURATION 0x2016
#define SPI_SETMESSAGEDURATION 0x2017
#define FE_FONTSMOOTHINGORIENTATIONBGR 0x0000
#define FE_FONTSMOOTHINGORIENTATIONRGB 0x0001
#define SPIF_UPDATEINIFILE 0x0001
#define SPIF_SENDWININICHANGE 0x0002
#define SPIF_SENDCHANGE SPIF_SENDWININICHANGE
#define METRICS_USEDEFAULT -1
  typedef struct tagNONCLIENTMETRICSA {
    UINT cbSize;
    int iBorderWidth;
    int iScrollWidth;
    int iScrollHeight;
    int iCaptionWidth;
    int iCaptionHeight;
    LOGFONTA lfCaptionFont;
    int iSmCaptionWidth;
    int iSmCaptionHeight;
    LOGFONTA lfSmCaptionFont;
    int iMenuWidth;
    int iMenuHeight;
    LOGFONTA lfMenuFont;
    LOGFONTA lfStatusFont;
    LOGFONTA lfMessageFont;
    int iPaddedBorderWidth;
  } NONCLIENTMETRICSA,*PNONCLIENTMETRICSA,*LPNONCLIENTMETRICSA;
  typedef struct tagNONCLIENTMETRICSW {
    UINT cbSize;
    int iBorderWidth;
    int iScrollWidth;
    int iScrollHeight;
    int iCaptionWidth;
    int iCaptionHeight;
    LOGFONTW lfCaptionFont;
    int iSmCaptionWidth;
    int iSmCaptionHeight;
    LOGFONTW lfSmCaptionFont;
    int iMenuWidth;
    int iMenuHeight;
    LOGFONTW lfMenuFont;
    LOGFONTW lfStatusFont;
    LOGFONTW lfMessageFont;
    int iPaddedBorderWidth;
  } NONCLIENTMETRICSW,*PNONCLIENTMETRICSW,*LPNONCLIENTMETRICSW;
  typedef NONCLIENTMETRICSA NONCLIENTMETRICS;
  typedef PNONCLIENTMETRICSA PNONCLIENTMETRICS;
  typedef LPNONCLIENTMETRICSA LPNONCLIENTMETRICS;
#define ARW_BOTTOMLEFT __MSABI_LONG(0x0000)
#define ARW_BOTTOMRIGHT __MSABI_LONG(0x0001)
#define ARW_TOPLEFT __MSABI_LONG(0x0002)
#define ARW_TOPRIGHT __MSABI_LONG(0x0003)
#define ARW_STARTMASK __MSABI_LONG(0x0003)
#define ARW_STARTRIGHT __MSABI_LONG(0x0001)
#define ARW_STARTTOP __MSABI_LONG(0x0002)
#define ARW_LEFT __MSABI_LONG(0x0000)
#define ARW_RIGHT __MSABI_LONG(0x0000)
#define ARW_UP __MSABI_LONG(0x0004)
#define ARW_DOWN __MSABI_LONG(0x0004)
#define ARW_HIDE __MSABI_LONG(0x0008)
  typedef struct tagMINIMIZEDMETRICS {
    UINT cbSize;
    int iWidth;
    int iHorzGap;
    int iVertGap;
    int iArrange;
  } MINIMIZEDMETRICS,*PMINIMIZEDMETRICS,*LPMINIMIZEDMETRICS;
  typedef struct tagICONMETRICSA {
    UINT cbSize;
    int iHorzSpacing;
    int iVertSpacing;
    int iTitleWrap;
    LOGFONTA lfFont;
  } ICONMETRICSA,*PICONMETRICSA,*LPICONMETRICSA;
  typedef struct tagICONMETRICSW {
    UINT cbSize;
    int iHorzSpacing;
    int iVertSpacing;
    int iTitleWrap;
    LOGFONTW lfFont;
  } ICONMETRICSW,*PICONMETRICSW,*LPICONMETRICSW;
  typedef ICONMETRICSA ICONMETRICS;
  typedef PICONMETRICSA PICONMETRICS;
  typedef LPICONMETRICSA LPICONMETRICS;
  typedef struct tagANIMATIONINFO {
    UINT cbSize;
    int iMinAnimate;
  } ANIMATIONINFO,*LPANIMATIONINFO;
  typedef struct tagSERIALKEYSA {
    UINT cbSize;
    DWORD dwFlags;
    LPSTR lpszActivePort;
    LPSTR lpszPort;
    UINT iBaudRate;
    UINT iPortState;
    UINT iActive;
  } SERIALKEYSA,*LPSERIALKEYSA;
  typedef struct tagSERIALKEYSW {
    UINT cbSize;
    DWORD dwFlags;
    LPWSTR lpszActivePort;
    LPWSTR lpszPort;
    UINT iBaudRate;
    UINT iPortState;
    UINT iActive;
  } SERIALKEYSW,*LPSERIALKEYSW;
  typedef SERIALKEYSA SERIALKEYS;
  typedef LPSERIALKEYSA LPSERIALKEYS;
  typedef struct tagHIGHCONTRASTA {
    UINT cbSize;
    DWORD dwFlags;
    LPSTR lpszDefaultScheme;
  } HIGHCONTRASTA,*LPHIGHCONTRASTA;
  typedef struct tagHIGHCONTRASTW {
    UINT cbSize;
    DWORD dwFlags;
    LPWSTR lpszDefaultScheme;
  } HIGHCONTRASTW,*LPHIGHCONTRASTW;
  typedef HIGHCONTRASTA HIGHCONTRAST;
  typedef LPHIGHCONTRASTA LPHIGHCONTRAST;
#define SERKF_SERIALKEYSON 0x00000001
#define SERKF_AVAILABLE 0x00000002
#define SERKF_INDICATOR 0x00000004
#define HCF_HIGHCONTRASTON 0x00000001
#define HCF_AVAILABLE 0x00000002
#define HCF_HOTKEYACTIVE 0x00000004
#define HCF_CONFIRMHOTKEY 0x00000008
#define HCF_HOTKEYSOUND 0x00000010
#define HCF_INDICATOR 0x00000020
#define HCF_HOTKEYAVAILABLE 0x00000040
#define HCF_LOGONDESKTOP 0x00000100
#define HCF_DEFAULTDESKTOP 0x00000200
#define HCF_OPTION_NOTHEMECHANGE 0x00001000
#define CDS_UPDATEREGISTRY 0x00000001
#define CDS_TEST 0x00000002
#define CDS_FULLSCREEN 0x00000004
#define CDS_GLOBAL 0x00000008
#define CDS_SET_PRIMARY 0x00000010
#define CDS_VIDEOPARAMETERS 0x00000020
#define CDS_ENABLE_UNSAFE_MODES 0x00000100
#define CDS_DISABLE_UNSAFE_MODES 0x00000200
#define CDS_RESET 0x40000000
#define CDS_RESET_EX 0x20000000
#define CDS_NORESET 0x10000000
#define __TVOUT__ 
#undef DEFINE_GUID
#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name
#define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46)
typedef struct _VIDEOPARAMETERS {
  GUID Guid;
  ULONG 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;
  UCHAR bOEMCopyProtection[256];
} VIDEOPARAMETERS,*PVIDEOPARAMETERS,*LPVIDEOPARAMETERS;
#define VP_COMMAND_GET 0x0001
#define VP_COMMAND_SET 0x0002
#define VP_FLAGS_TV_MODE 0x0001
#define VP_FLAGS_TV_STANDARD 0x0002
#define VP_FLAGS_FLICKER 0x0004
#define VP_FLAGS_OVERSCAN 0x0008
#define VP_FLAGS_MAX_UNSCALED 0x0010
#define VP_FLAGS_POSITION 0x0020
#define VP_FLAGS_BRIGHTNESS 0x0040
#define VP_FLAGS_CONTRAST 0x0080
#define VP_FLAGS_COPYPROTECT 0x0100
#define VP_MODE_WIN_GRAPHICS 0x0001
#define VP_MODE_TV_PLAYBACK 0x0002
#define VP_TV_STANDARD_NTSC_M 0x0001
#define VP_TV_STANDARD_NTSC_M_J 0x0002
#define VP_TV_STANDARD_PAL_B 0x0004
#define VP_TV_STANDARD_PAL_D 0x0008
#define VP_TV_STANDARD_PAL_H 0x0010
#define VP_TV_STANDARD_PAL_I 0x0020
#define VP_TV_STANDARD_PAL_M 0x0040
#define VP_TV_STANDARD_PAL_N 0x0080
#define VP_TV_STANDARD_SECAM_B 0x0100
#define VP_TV_STANDARD_SECAM_D 0x0200
#define VP_TV_STANDARD_SECAM_G 0x0400
#define VP_TV_STANDARD_SECAM_H 0x0800
#define VP_TV_STANDARD_SECAM_K 0x1000
#define VP_TV_STANDARD_SECAM_K1 0x2000
#define VP_TV_STANDARD_SECAM_L 0x4000
#define VP_TV_STANDARD_WIN_VGA 0x8000
#define VP_TV_STANDARD_NTSC_433 0x00010000
#define VP_TV_STANDARD_PAL_G 0x00020000
#define VP_TV_STANDARD_PAL_60 0x00040000
#define VP_TV_STANDARD_SECAM_L1 0x00080000
#define VP_CP_TYPE_APS_TRIGGER 0x0001
#define VP_CP_TYPE_MACROVISION 0x0002
#define VP_CP_CMD_ACTIVATE 0x0001
#define VP_CP_CMD_DEACTIVATE 0x0002
#define VP_CP_CMD_CHANGE 0x0004
#define DISP_CHANGE_SUCCESSFUL 0
#define DISP_CHANGE_RESTART 1
#define DISP_CHANGE_FAILED -1
#define DISP_CHANGE_BADMODE -2
#define DISP_CHANGE_NOTUPDATED -3
#define DISP_CHANGE_BADFLAGS -4
#define DISP_CHANGE_BADPARAM -5
#define DISP_CHANGE_BADDUALVIEW -6
#define ChangeDisplaySettings __MINGW_NAME_AW(ChangeDisplaySettings)
#define ChangeDisplaySettingsEx __MINGW_NAME_AW(ChangeDisplaySettingsEx)
#define EnumDisplaySettings __MINGW_NAME_AW(EnumDisplaySettings)
#define EnumDisplaySettingsEx __MINGW_NAME_AW(EnumDisplaySettingsEx)
#define EnumDisplayDevices __MINGW_NAME_AW(EnumDisplayDevices)
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) ChangeDisplaySettingsA(LPDEVMODEA lpDevMode,DWORD dwFlags);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) ChangeDisplaySettingsW(LPDEVMODEW lpDevMode,DWORD dwFlags);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) ChangeDisplaySettingsExA(LPCSTR lpszDeviceName,LPDEVMODEA lpDevMode,HWND hwnd,DWORD dwflags,LPVOID lParam);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) ChangeDisplaySettingsExW(LPCWSTR lpszDeviceName,LPDEVMODEW lpDevMode,HWND hwnd,DWORD dwflags,LPVOID lParam);
#define ENUM_CURRENT_SETTINGS ((DWORD)-1)
#define ENUM_REGISTRY_SETTINGS ((DWORD)-2)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDisplaySettingsA(LPCSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEA lpDevMode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDisplaySettingsW(LPCWSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEW lpDevMode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDisplaySettingsExA(LPCSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEA lpDevMode,DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDisplaySettingsExW(LPCWSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEW lpDevMode,DWORD dwFlags);
#define EDS_RAWMODE 0x00000002
#define EDS_ROTATEDMODE 0x00000004
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDisplayDevicesA(LPCSTR lpDevice,DWORD iDevNum,PDISPLAY_DEVICEA lpDisplayDevice,DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDisplayDevicesW(LPCWSTR lpDevice,DWORD iDevNum,PDISPLAY_DEVICEW lpDisplayDevice,DWORD dwFlags);
#define EDD_GET_DEVICE_INTERFACE_NAME 0x00000001
#define SystemParametersInfo __MINGW_NAME_AW(SystemParametersInfo)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SystemParametersInfoA(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinIni);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SystemParametersInfoW(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinIni);
  typedef struct tagFILTERKEYS {
    UINT cbSize;
    DWORD dwFlags;
    DWORD iWaitMSec;
    DWORD iDelayMSec;
    DWORD iRepeatMSec;
    DWORD iBounceMSec;
  } FILTERKEYS,*LPFILTERKEYS;
#define FKF_FILTERKEYSON 0x00000001
#define FKF_AVAILABLE 0x00000002
#define FKF_HOTKEYACTIVE 0x00000004
#define FKF_CONFIRMHOTKEY 0x00000008
#define FKF_HOTKEYSOUND 0x00000010
#define FKF_INDICATOR 0x00000020
#define FKF_CLICKON 0x00000040
  typedef struct tagSTICKYKEYS {
    UINT cbSize;
    DWORD dwFlags;
  } STICKYKEYS,*LPSTICKYKEYS;
#define SKF_STICKYKEYSON 0x00000001
#define SKF_AVAILABLE 0x00000002
#define SKF_HOTKEYACTIVE 0x00000004
#define SKF_CONFIRMHOTKEY 0x00000008
#define SKF_HOTKEYSOUND 0x00000010
#define SKF_INDICATOR 0x00000020
#define SKF_AUDIBLEFEEDBACK 0x00000040
#define SKF_TRISTATE 0x00000080
#define SKF_TWOKEYSOFF 0x00000100
#define SKF_LALTLATCHED 0x10000000
#define SKF_LCTLLATCHED 0x04000000
#define SKF_LSHIFTLATCHED 0x01000000
#define SKF_RALTLATCHED 0x20000000
#define SKF_RCTLLATCHED 0x08000000
#define SKF_RSHIFTLATCHED 0x02000000
#define SKF_LWINLATCHED 0x40000000
#define SKF_RWINLATCHED 0x80000000
#define SKF_LALTLOCKED 0x00100000
#define SKF_LCTLLOCKED 0x00040000
#define SKF_LSHIFTLOCKED 0x00010000
#define SKF_RALTLOCKED 0x00200000
#define SKF_RCTLLOCKED 0x00080000
#define SKF_RSHIFTLOCKED 0x00020000
#define SKF_LWINLOCKED 0x00400000
#define SKF_RWINLOCKED 0x00800000
  typedef struct tagMOUSEKEYS {
    UINT cbSize;
    DWORD dwFlags;
    DWORD iMaxSpeed;
    DWORD iTimeToMaxSpeed;
    DWORD iCtrlSpeed;
    DWORD dwReserved1;
    DWORD dwReserved2;
  } MOUSEKEYS,*LPMOUSEKEYS;
#define MKF_MOUSEKEYSON 0x00000001
#define MKF_AVAILABLE 0x00000002
#define MKF_HOTKEYACTIVE 0x00000004
#define MKF_CONFIRMHOTKEY 0x00000008
#define MKF_HOTKEYSOUND 0x00000010
#define MKF_INDICATOR 0x00000020
#define MKF_MODIFIERS 0x00000040
#define MKF_REPLACENUMBERS 0x00000080
#define MKF_LEFTBUTTONSEL 0x10000000
#define MKF_RIGHTBUTTONSEL 0x20000000
#define MKF_LEFTBUTTONDOWN 0x01000000
#define MKF_RIGHTBUTTONDOWN 0x02000000
#define MKF_MOUSEMODE 0x80000000
  typedef struct tagACCESSTIMEOUT {
    UINT cbSize;
    DWORD dwFlags;
    DWORD iTimeOutMSec;
  } ACCESSTIMEOUT,*LPACCESSTIMEOUT;
#define ATF_TIMEOUTON 0x00000001
#define ATF_ONOFFFEEDBACK 0x00000002
#define SSGF_NONE 0
#define SSGF_DISPLAY 3
#define SSTF_NONE 0
#define SSTF_CHARS 1
#define SSTF_BORDER 2
#define SSTF_DISPLAY 3
#define SSWF_NONE 0
#define SSWF_TITLE 1
#define SSWF_WINDOW 2
#define SSWF_DISPLAY 3
#define SSWF_CUSTOM 4
  typedef struct tagSOUNDSENTRYA {
    UINT cbSize;
    DWORD dwFlags;
    DWORD iFSTextEffect;
    DWORD iFSTextEffectMSec;
    DWORD iFSTextEffectColorBits;
    DWORD iFSGrafEffect;
    DWORD iFSGrafEffectMSec;
    DWORD iFSGrafEffectColor;
    DWORD iWindowsEffect;
    DWORD iWindowsEffectMSec;
    LPSTR lpszWindowsEffectDLL;
    DWORD iWindowsEffectOrdinal;
  } SOUNDSENTRYA,*LPSOUNDSENTRYA;
  typedef struct tagSOUNDSENTRYW {
    UINT cbSize;
    DWORD dwFlags;
    DWORD iFSTextEffect;
    DWORD iFSTextEffectMSec;
    DWORD iFSTextEffectColorBits;
    DWORD iFSGrafEffect;
    DWORD iFSGrafEffectMSec;
    DWORD iFSGrafEffectColor;
    DWORD iWindowsEffect;
    DWORD iWindowsEffectMSec;
    LPWSTR lpszWindowsEffectDLL;
    DWORD iWindowsEffectOrdinal;
  } SOUNDSENTRYW,*LPSOUNDSENTRYW;
  typedef SOUNDSENTRYA SOUNDSENTRY;
  typedef LPSOUNDSENTRYA LPSOUNDSENTRY;
#define SSF_SOUNDSENTRYON 0x00000001
#define SSF_AVAILABLE 0x00000002
#define SSF_INDICATOR 0x00000004
  typedef struct tagTOGGLEKEYS {
    UINT cbSize;
    DWORD dwFlags;
  } TOGGLEKEYS,*LPTOGGLEKEYS;
  typedef struct tagMONITORINFO {
    DWORD cbSize;
    RECT rcMonitor;
    RECT rcWork;
    DWORD dwFlags;
  } MONITORINFO,*LPMONITORINFO;
  typedef struct tagAUDIODESCRIPTION {
    UINT cbSize;
    WINBOOL Enabled;
    LCID Locale;
  } AUDIODESCRIPTION,*LPAUDIODESCRIPTION;
  typedef struct tagMONITORINFOEXA {
    __extension__ struct {
      DWORD cbSize;
      RECT rcMonitor;
      RECT rcWork;
      DWORD dwFlags;
    };
    CHAR szDevice[32];
  } MONITORINFOEXA,*LPMONITORINFOEXA;
  typedef struct tagMONITORINFOEXW {
    __extension__ struct {
      DWORD cbSize;
      RECT rcMonitor;
      RECT rcWork;
      DWORD dwFlags;
    };
    WCHAR szDevice[32];
  } MONITORINFOEXW,*LPMONITORINFOEXW;
  typedef MONITORINFOEXA MONITORINFOEX;
  typedef LPMONITORINFOEXA LPMONITORINFOEX;
  typedef WINBOOL (__attribute__((__stdcall__)) *MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) SetDebugErrorLevel (DWORD dwLevel);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) SetLastErrorEx (DWORD dwErrCode, DWORD dwType);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) InternalGetWindowText (HWND hWnd, LPWSTR pString, int cchMaxCount);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CancelShutdown (void);
  __attribute__((dllimport)) HMONITOR __attribute__((__stdcall__)) MonitorFromPoint(POINT pt,DWORD dwFlags);
  __attribute__((dllimport)) HMONITOR __attribute__((__stdcall__)) MonitorFromRect(LPCRECT lprc,DWORD dwFlags);
  __attribute__((dllimport)) HMONITOR __attribute__((__stdcall__)) MonitorFromWindow(HWND hwnd,DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EndTask (HWND hWnd, WINBOOL fShutDown, WINBOOL fForce);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SoundSentry (void);
#define GetMonitorInfo __MINGW_NAME_AW(GetMonitorInfo)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetMonitorInfoA(HMONITOR hMonitor,LPMONITORINFO lpmi);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetMonitorInfoW(HMONITOR hMonitor,LPMONITORINFO lpmi);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDisplayMonitors(HDC hdc,LPCRECT lprcClip,MONITORENUMPROC lpfnEnum,LPARAM dwData);
#define TKF_TOGGLEKEYSON 0x00000001
#define TKF_AVAILABLE 0x00000002
#define TKF_HOTKEYACTIVE 0x00000004
#define TKF_CONFIRMHOTKEY 0x00000008
#define TKF_HOTKEYSOUND 0x00000010
#define TKF_INDICATOR 0x00000020
#define SLE_ERROR 0x00000001
#define SLE_MINORERROR 0x00000002
#define SLE_WARNING 0x00000003
#define MONITOR_DEFAULTTONULL 0x00000000
#define MONITOR_DEFAULTTOPRIMARY 0x00000001
#define MONITOR_DEFAULTTONEAREST 0x00000002
#define MONITORINFOF_PRIMARY 0x00000001
  typedef void (__attribute__((__stdcall__)) *WINEVENTPROC)(HWINEVENTHOOK hWinEventHook,DWORD event,HWND hwnd,LONG idObject,LONG idChild,DWORD idEventThread,DWORD dwmsEventTime);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NotifyWinEvent(DWORD event,HWND hwnd,LONG idObject,LONG idChild);
  __attribute__((dllimport)) HWINEVENTHOOK __attribute__((__stdcall__)) SetWinEventHook(DWORD eventMin,DWORD eventMax,HMODULE hmodWinEventProc,WINEVENTPROC pfnWinEventProc,DWORD idProcess,DWORD idThread,DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsWinEventHookInstalled(DWORD event);
#define WINEVENT_OUTOFCONTEXT 0x0000
#define WINEVENT_SKIPOWNTHREAD 0x0001
#define WINEVENT_SKIPOWNPROCESS 0x0002
#define WINEVENT_INCONTEXT 0x0004
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnhookWinEvent(HWINEVENTHOOK hWinEventHook);
#define CHILDID_SELF 0
#define INDEXID_OBJECT 0
#define INDEXID_CONTAINER 0
#define OBJID_WINDOW ((LONG)0x00000000)
#define OBJID_SYSMENU ((LONG)0xFFFFFFFF)
#define OBJID_TITLEBAR ((LONG)0xFFFFFFFE)
#define OBJID_MENU ((LONG)0xFFFFFFFD)
#define OBJID_CLIENT ((LONG)0xFFFFFFFC)
#define OBJID_VSCROLL ((LONG)0xFFFFFFFB)
#define OBJID_HSCROLL ((LONG)0xFFFFFFFA)
#define OBJID_SIZEGRIP ((LONG)0xFFFFFFF9)
#define OBJID_CARET ((LONG)0xFFFFFFF8)
#define OBJID_CURSOR ((LONG)0xFFFFFFF7)
#define OBJID_ALERT ((LONG)0xFFFFFFF6)
#define OBJID_SOUND ((LONG)0xFFFFFFF5)
#define OBJID_QUERYCLASSNAMEIDX ((LONG)0xFFFFFFF4)
#define OBJID_NATIVEOM ((LONG)0xFFFFFFF0)
#define EVENT_MIN 0x00000001
#define EVENT_MAX 0x7FFFFFFF
#define EVENT_SYSTEM_SOUND 0x0001
#define EVENT_SYSTEM_ALERT 0x0002
#define EVENT_SYSTEM_FOREGROUND 0x0003
#define EVENT_SYSTEM_MENUSTART 0x0004
#define EVENT_SYSTEM_MENUEND 0x0005
#define EVENT_SYSTEM_MENUPOPUPSTART 0x0006
#define EVENT_SYSTEM_MENUPOPUPEND 0x0007
#define EVENT_SYSTEM_CAPTURESTART 0x0008
#define EVENT_SYSTEM_CAPTUREEND 0x0009
#define EVENT_SYSTEM_MOVESIZESTART 0x000A
#define EVENT_SYSTEM_MOVESIZEEND 0x000B
#define EVENT_SYSTEM_CONTEXTHELPSTART 0x000C
#define EVENT_SYSTEM_CONTEXTHELPEND 0x000D
#define EVENT_SYSTEM_DRAGDROPSTART 0x000E
#define EVENT_SYSTEM_DRAGDROPEND 0x000F
#define EVENT_SYSTEM_DIALOGSTART 0x0010
#define EVENT_SYSTEM_DIALOGEND 0x0011
#define EVENT_SYSTEM_SCROLLINGSTART 0x0012
#define EVENT_SYSTEM_SCROLLINGEND 0x0013
#define EVENT_SYSTEM_SWITCHSTART 0x0014
#define EVENT_SYSTEM_SWITCHEND 0x0015
#define EVENT_SYSTEM_MINIMIZESTART 0x0016
#define EVENT_SYSTEM_MINIMIZEEND 0x0017
#define EVENT_SYSTEM_DESKTOPSWITCH 0x0020
#define EVENT_CONSOLE_CARET 0x4001
#define EVENT_CONSOLE_UPDATE_REGION 0x4002
#define EVENT_CONSOLE_UPDATE_SIMPLE 0x4003
#define EVENT_CONSOLE_UPDATE_SCROLL 0x4004
#define EVENT_CONSOLE_LAYOUT 0x4005
#define EVENT_CONSOLE_START_APPLICATION 0x4006
#define EVENT_CONSOLE_END_APPLICATION 0x4007
#define CONSOLE_APPLICATION_16BIT 0x0001
#define CONSOLE_CARET_SELECTION 0x0001
#define CONSOLE_CARET_VISIBLE 0x0002
#define EVENT_OBJECT_CREATE 0x8000
#define EVENT_OBJECT_DESTROY 0x8001
#define EVENT_OBJECT_SHOW 0x8002
#define EVENT_OBJECT_HIDE 0x8003
#define EVENT_OBJECT_REORDER 0x8004
#define EVENT_OBJECT_FOCUS 0x8005
#define EVENT_OBJECT_SELECTION 0x8006
#define EVENT_OBJECT_SELECTIONADD 0x8007
#define EVENT_OBJECT_SELECTIONREMOVE 0x8008
#define EVENT_OBJECT_SELECTIONWITHIN 0x8009
#define EVENT_OBJECT_STATECHANGE 0x800A
#define EVENT_OBJECT_LOCATIONCHANGE 0x800B
#define EVENT_OBJECT_NAMECHANGE 0x800C
#define EVENT_OBJECT_DESCRIPTIONCHANGE 0x800D
#define EVENT_OBJECT_VALUECHANGE 0x800E
#define EVENT_OBJECT_PARENTCHANGE 0x800F
#define EVENT_OBJECT_HELPCHANGE 0x8010
#define EVENT_OBJECT_DEFACTIONCHANGE 0x8011
#define EVENT_OBJECT_ACCELERATORCHANGE 0x8012
#define EVENT_OBJECT_INVOKED 0x8013
#define EVENT_OBJECT_TEXTSELECTIONCHANGED 0x8014
#define EVENT_OBJECT_CONTENTSCROLLED 0x8015
#define SOUND_SYSTEM_STARTUP 1
#define SOUND_SYSTEM_SHUTDOWN 2
#define SOUND_SYSTEM_BEEP 3
#define SOUND_SYSTEM_ERROR 4
#define SOUND_SYSTEM_QUESTION 5
#define SOUND_SYSTEM_WARNING 6
#define SOUND_SYSTEM_INFORMATION 7
#define SOUND_SYSTEM_MAXIMIZE 8
#define SOUND_SYSTEM_MINIMIZE 9
#define SOUND_SYSTEM_RESTOREUP 10
#define SOUND_SYSTEM_RESTOREDOWN 11
#define SOUND_SYSTEM_APPSTART 12
#define SOUND_SYSTEM_FAULT 13
#define SOUND_SYSTEM_APPEND 14
#define SOUND_SYSTEM_MENUCOMMAND 15
#define SOUND_SYSTEM_MENUPOPUP 16
#define CSOUND_SYSTEM 16
#define ALERT_SYSTEM_INFORMATIONAL 1
#define ALERT_SYSTEM_WARNING 2
#define ALERT_SYSTEM_ERROR 3
#define ALERT_SYSTEM_QUERY 4
#define ALERT_SYSTEM_CRITICAL 5
#define CALERT_SYSTEM 6
  typedef struct tagGUITHREADINFO {
    DWORD cbSize;
    DWORD flags;
    HWND hwndActive;
    HWND hwndFocus;
    HWND hwndCapture;
    HWND hwndMenuOwner;
    HWND hwndMoveSize;
    HWND hwndCaret;
    RECT rcCaret;
  } GUITHREADINFO,*PGUITHREADINFO,*LPGUITHREADINFO;
#define GUI_CARETBLINKING 0x00000001
#define GUI_INMOVESIZE 0x00000002
#define GUI_INMENUMODE 0x00000004
#define GUI_SYSTEMMENUMODE 0x00000008
#define GUI_POPUPMENUMODE 0x00000010
#define GUI_16BITTASK 0x00000020
#define GetWindowModuleFileName __MINGW_NAME_AW(GetWindowModuleFileName)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetGUIThreadInfo(DWORD idThread,PGUITHREADINFO pgui);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) BlockInput (WINBOOL fBlockIt);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetWindowModuleFileNameA(HWND hwnd,LPSTR pszFileName,UINT cchFileNameMax);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetWindowModuleFileNameW(HWND hwnd,LPWSTR pszFileName,UINT cchFileNameMax);
#define USER_DEFAULT_SCREEN_DPI 96
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetProcessDPIAware (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsProcessDPIAware (void);
#define STATE_SYSTEM_UNAVAILABLE 0x00000001
#define STATE_SYSTEM_SELECTED 0x00000002
#define STATE_SYSTEM_FOCUSED 0x00000004
#define STATE_SYSTEM_PRESSED 0x00000008
#define STATE_SYSTEM_CHECKED 0x00000010
#define STATE_SYSTEM_MIXED 0x00000020
#define STATE_SYSTEM_INDETERMINATE STATE_SYSTEM_MIXED
#define STATE_SYSTEM_READONLY 0x00000040
#define STATE_SYSTEM_HOTTRACKED 0x00000080
#define STATE_SYSTEM_DEFAULT 0x00000100
#define STATE_SYSTEM_EXPANDED 0x00000200
#define STATE_SYSTEM_COLLAPSED 0x00000400
#define STATE_SYSTEM_BUSY 0x00000800
#define STATE_SYSTEM_FLOATING 0x00001000
#define STATE_SYSTEM_MARQUEED 0x00002000
#define STATE_SYSTEM_ANIMATED 0x00004000
#define STATE_SYSTEM_INVISIBLE 0x00008000
#define STATE_SYSTEM_OFFSCREEN 0x00010000
#define STATE_SYSTEM_SIZEABLE 0x00020000
#define STATE_SYSTEM_MOVEABLE 0x00040000
#define STATE_SYSTEM_SELFVOICING 0x00080000
#define STATE_SYSTEM_FOCUSABLE 0x00100000
#define STATE_SYSTEM_SELECTABLE 0x00200000
#define STATE_SYSTEM_LINKED 0x00400000
#define STATE_SYSTEM_TRAVERSED 0x00800000
#define STATE_SYSTEM_MULTISELECTABLE 0x01000000
#define STATE_SYSTEM_EXTSELECTABLE 0x02000000
#define STATE_SYSTEM_ALERT_LOW 0x04000000
#define STATE_SYSTEM_ALERT_MEDIUM 0x08000000
#define STATE_SYSTEM_ALERT_HIGH 0x10000000
#define STATE_SYSTEM_PROTECTED 0x20000000
#define STATE_SYSTEM_VALID 0x3FFFFFFF
#define CCHILDREN_TITLEBAR 5
#define CCHILDREN_SCROLLBAR 5
  typedef struct tagCURSORINFO {
    DWORD cbSize;
    DWORD flags;
    HCURSOR hCursor;
    POINT ptScreenPos;
  } CURSORINFO,*PCURSORINFO,*LPCURSORINFO;
#define CURSOR_SHOWING 0x00000001
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCursorInfo(PCURSORINFO pci);
  typedef struct tagWINDOWINFO {
    DWORD cbSize;
    RECT rcWindow;
    RECT rcClient;
    DWORD dwStyle;
    DWORD dwExStyle;
    DWORD dwWindowStatus;
    UINT cxWindowBorders;
    UINT cyWindowBorders;
    ATOM atomWindowType;
    WORD wCreatorVersion;
  } WINDOWINFO,*PWINDOWINFO,*LPWINDOWINFO;
#define WS_ACTIVECAPTION 0x0001
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetWindowInfo(HWND hwnd,PWINDOWINFO pwi);
  typedef struct tagTITLEBARINFO {
    DWORD cbSize;
    RECT rcTitleBar;
    DWORD rgstate[5 + 1];
  } TITLEBARINFO,*PTITLEBARINFO,*LPTITLEBARINFO;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetTitleBarInfo(HWND hwnd,PTITLEBARINFO pti);
  typedef struct tagTITLEBARINFOEX {
    DWORD cbSize;
    RECT rcTitleBar;
    DWORD rgstate[5 + 1];
    RECT rgrect[5 + 1];
  } TITLEBARINFOEX,*PTITLEBARINFOEX,*LPTITLEBARINFOEX;
  typedef struct tagMENUBARINFO {
    DWORD cbSize;
    RECT rcBar;
    HMENU hMenu;
    HWND hwndMenu;
    WINBOOL fBarFocused:1;
    WINBOOL fFocused:1;
  } MENUBARINFO,*PMENUBARINFO,*LPMENUBARINFO;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetMenuBarInfo(HWND hwnd,LONG idObject,LONG idItem,PMENUBARINFO pmbi);
  typedef struct tagSCROLLBARINFO {
    DWORD cbSize;
    RECT rcScrollBar;
    int dxyLineButton;
    int xyThumbTop;
    int xyThumbBottom;
    int reserved;
    DWORD rgstate[5 + 1];
  } SCROLLBARINFO,*PSCROLLBARINFO,*LPSCROLLBARINFO;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetScrollBarInfo(HWND hwnd,LONG idObject,PSCROLLBARINFO psbi);
  typedef struct tagCOMBOBOXINFO {
    DWORD cbSize;
    RECT rcItem;
    RECT rcButton;
    DWORD stateButton;
    HWND hwndCombo;
    HWND hwndItem;
    HWND hwndList;
  } COMBOBOXINFO,*PCOMBOBOXINFO,*LPCOMBOBOXINFO;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetComboBoxInfo(HWND hwndCombo,PCOMBOBOXINFO pcbi);
#define GA_PARENT 1
#define GA_ROOT 2
#define GA_ROOTOWNER 3
#define RealGetWindowClass __MINGW_NAME_AW(RealGetWindowClass)
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetAncestor(HWND hwnd,UINT gaFlags);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) RealChildWindowFromPoint(HWND hwndParent,POINT ptParentClientCoords);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) RealGetWindowClassA(HWND hwnd,LPSTR ptszClassName,UINT cchClassNameMax);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) RealGetWindowClassW(HWND hwnd,LPWSTR ptszClassName,UINT cchClassNameMax);
  typedef struct tagALTTABINFO {
    DWORD cbSize;
    int cItems;
    int cColumns;
    int cRows;
    int iColFocus;
    int iRowFocus;
    int cxItem;
    int cyItem;
    POINT ptStart;
  } ALTTABINFO,*PALTTABINFO,*LPALTTABINFO;
#define GetAltTabInfo __MINGW_NAME_AW(GetAltTabInfo)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetAltTabInfoA(HWND hwnd,int iItem,PALTTABINFO pati,LPSTR pszItemText,UINT cchItemText);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetAltTabInfoW(HWND hwnd,int iItem,PALTTABINFO pati,LPWSTR pszItemText,UINT cchItemText);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetListBoxInfo(HWND hwnd);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) LockWorkStation(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UserHandleGrantAccess(HANDLE hUserHandle,HANDLE hJob,WINBOOL bGrant);
  struct HRAWINPUT__ { int unused; }; typedef struct HRAWINPUT__ *HRAWINPUT;
#define GET_RAWINPUT_CODE_WPARAM(wParam) ((wParam) & 0xff)
#define RIM_INPUT 0
#define RIM_INPUTSINK 1
  typedef struct tagRAWINPUTHEADER {
    DWORD dwType;
    DWORD dwSize;
    HANDLE hDevice;
    WPARAM wParam;
  } RAWINPUTHEADER,*PRAWINPUTHEADER,*LPRAWINPUTHEADER;
#define RIM_TYPEMOUSE 0
#define RIM_TYPEKEYBOARD 1
#define RIM_TYPEHID 2
#define RIM_TYPEMAX 2
  typedef struct tagRAWMOUSE {
    USHORT usFlags;
    __extension__ union {
      ULONG ulButtons;
      __extension__ struct {
 USHORT usButtonFlags;
 USHORT usButtonData;
      };
    };
    ULONG ulRawButtons;
    LONG lLastX;
    LONG lLastY;
    ULONG ulExtraInformation;
  } RAWMOUSE,*PRAWMOUSE,*LPRAWMOUSE;
#define RI_MOUSE_LEFT_BUTTON_DOWN 0x0001
#define RI_MOUSE_LEFT_BUTTON_UP 0x0002
#define RI_MOUSE_RIGHT_BUTTON_DOWN 0x0004
#define RI_MOUSE_RIGHT_BUTTON_UP 0x0008
#define RI_MOUSE_MIDDLE_BUTTON_DOWN 0x0010
#define RI_MOUSE_MIDDLE_BUTTON_UP 0x0020
#define RI_MOUSE_BUTTON_4_DOWN 0x0040
#define RI_MOUSE_BUTTON_4_UP 0x0080
#define RI_MOUSE_BUTTON_5_DOWN 0x0100
#define RI_MOUSE_BUTTON_5_UP 0x0200
#define RI_MOUSE_WHEEL 0x0400
#define RI_MOUSE_HWHEEL 0x0800
#define RI_MOUSE_BUTTON_1_DOWN RI_MOUSE_LEFT_BUTTON_DOWN
#define RI_MOUSE_BUTTON_1_UP RI_MOUSE_LEFT_BUTTON_UP
#define RI_MOUSE_BUTTON_2_DOWN RI_MOUSE_RIGHT_BUTTON_DOWN
#define RI_MOUSE_BUTTON_2_UP RI_MOUSE_RIGHT_BUTTON_UP
#define RI_MOUSE_BUTTON_3_DOWN RI_MOUSE_MIDDLE_BUTTON_DOWN
#define RI_MOUSE_BUTTON_3_UP RI_MOUSE_MIDDLE_BUTTON_UP
#define MOUSE_MOVE_RELATIVE 0
#define MOUSE_MOVE_ABSOLUTE 1
#define MOUSE_VIRTUAL_DESKTOP 0x02
#define MOUSE_ATTRIBUTES_CHANGED 0x04
#define MOUSE_MOVE_NOCOALESCE 0x08
  typedef struct tagRAWKEYBOARD {
    USHORT MakeCode;
    USHORT Flags;
    USHORT Reserved;
    USHORT VKey;
    UINT Message;
    ULONG ExtraInformation;
  } RAWKEYBOARD,*PRAWKEYBOARD,*LPRAWKEYBOARD;
#define KEYBOARD_OVERRUN_MAKE_CODE 0xFF
#define RI_KEY_MAKE 0
#define RI_KEY_BREAK 1
#define RI_KEY_E0 2
#define RI_KEY_E1 4
#define RI_KEY_TERMSRV_SET_LED 8
#define RI_KEY_TERMSRV_SHADOW 0x10
  typedef struct tagRAWHID {
    DWORD dwSizeHid;
    DWORD dwCount;
    BYTE bRawData[1];
  } RAWHID,*PRAWHID,*LPRAWHID;
  typedef struct tagRAWINPUT {
    RAWINPUTHEADER header;
    union {
      RAWMOUSE mouse;
      RAWKEYBOARD keyboard;
      RAWHID hid;
    } data;
  } RAWINPUT,*PRAWINPUT,*LPRAWINPUT;
#define RAWINPUT_ALIGN(x) (((x) + sizeof(DWORD) - 1) & ~(sizeof(DWORD) - 1))
#define NEXTRAWINPUTBLOCK(ptr) ((PRAWINPUT)RAWINPUT_ALIGN((ULONG_PTR)((PBYTE)(ptr) + (ptr)->header.dwSize)))
#define RID_INPUT 0x10000003
#define RID_HEADER 0x10000005
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetRawInputData(HRAWINPUT hRawInput,UINT uiCommand,LPVOID pData,PUINT pcbSize,UINT cbSizeHeader);
#define RIDI_PREPARSEDDATA 0x20000005
#define RIDI_DEVICENAME 0x20000007
#define RIDI_DEVICEINFO 0x2000000b
  typedef struct tagRID_DEVICE_INFO_MOUSE {
    DWORD dwId;
    DWORD dwNumberOfButtons;
    DWORD dwSampleRate;
    WINBOOL fHasHorizontalWheel;
  } RID_DEVICE_INFO_MOUSE,*PRID_DEVICE_INFO_MOUSE;
  typedef struct tagRID_DEVICE_INFO_KEYBOARD {
    DWORD dwType;
    DWORD dwSubType;
    DWORD dwKeyboardMode;
    DWORD dwNumberOfFunctionKeys;
    DWORD dwNumberOfIndicators;
    DWORD dwNumberOfKeysTotal;
  } RID_DEVICE_INFO_KEYBOARD,*PRID_DEVICE_INFO_KEYBOARD;
  typedef struct tagRID_DEVICE_INFO_HID {
    DWORD dwVendorId;
    DWORD dwProductId;
    DWORD dwVersionNumber;
    USHORT usUsagePage;
    USHORT usUsage;
  } RID_DEVICE_INFO_HID,*PRID_DEVICE_INFO_HID;
  typedef struct tagRID_DEVICE_INFO {
    DWORD cbSize;
    DWORD dwType;
    __extension__ union {
      RID_DEVICE_INFO_MOUSE mouse;
      RID_DEVICE_INFO_KEYBOARD keyboard;
      RID_DEVICE_INFO_HID hid;
    } ;
  } RID_DEVICE_INFO,*PRID_DEVICE_INFO,*LPRID_DEVICE_INFO;
#define GetRawInputDeviceInfo __MINGW_NAME_AW(GetRawInputDeviceInfo)
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetRawInputDeviceInfoA(HANDLE hDevice,UINT uiCommand,LPVOID pData,PUINT pcbSize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetRawInputDeviceInfoW(HANDLE hDevice,UINT uiCommand,LPVOID pData,PUINT pcbSize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetRawInputBuffer(PRAWINPUT pData,PUINT pcbSize,UINT cbSizeHeader);
  typedef struct tagRAWINPUTDEVICE {
    USHORT usUsagePage;
    USHORT usUsage;
    DWORD dwFlags;
    HWND hwndTarget;
  } RAWINPUTDEVICE,*PRAWINPUTDEVICE,*LPRAWINPUTDEVICE;
  typedef const RAWINPUTDEVICE *PCRAWINPUTDEVICE;
#define RIDEV_REMOVE 0x00000001
#define RIDEV_EXCLUDE 0x00000010
#define RIDEV_PAGEONLY 0x00000020
#define RIDEV_NOLEGACY 0x00000030
#define RIDEV_INPUTSINK 0x00000100
#define RIDEV_CAPTUREMOUSE 0x00000200
#define RIDEV_NOHOTKEYS 0x00000200
#define RIDEV_APPKEYS 0x00000400
#define RIDEV_EXINPUTSINK 0x00001000
#define RIDEV_DEVNOTIFY 0x00002000
#define RIDEV_EXMODEMASK 0x000000F0
#define RIDEV_EXMODE(mode) ((mode) & RIDEV_EXMODEMASK)
#define GIDC_ARRIVAL 1
#define GIDC_REMOVAL 2
#define GET_DEVICE_CHANGE_LPARAM(lParam) (LOWORD (lParam))
  typedef struct tagRAWINPUTDEVICELIST {
    HANDLE hDevice;
    DWORD dwType;
  } RAWINPUTDEVICELIST,*PRAWINPUTDEVICELIST;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) RegisterRawInputDevices (PCRAWINPUTDEVICE pRawInputDevices, UINT uiNumDevices, UINT cbSize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetRegisteredRawInputDevices (PRAWINPUTDEVICE pRawInputDevices, PUINT puiNumDevices, UINT cbSize);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetRawInputDeviceList (PRAWINPUTDEVICELIST pRawInputDeviceList, PUINT puiNumDevices, UINT cbSize);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) DefRawInputProc (PRAWINPUT *paRawInput, INT nInput, UINT cbSizeHeader);
#define MSGFLT_ADD 1
#define MSGFLT_REMOVE 2
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ChangeWindowMessageFilter (UINT message, DWORD dwFlag);
#define MAX_STR_BLOCKREASON 256
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ShutdownBlockReasonCreate (HWND hWnd, LPCWSTR pwszReason);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ShutdownBlockReasonQuery (HWND hWnd, LPWSTR pwszBuff, DWORD *pcchBuff);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ShutdownBlockReasonDestroy (HWND hWnd);
#define _WINNLS_ 
#define _DATETIMEAPI_H_ 
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetTimeFormatEx (LPCWSTR lpLocaleName, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCWSTR lpFormat, LPWSTR lpTimeStr, int cchTime);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetDateFormatEx (LPCWSTR lpLocaleName, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCWSTR lpFormat, LPWSTR lpDateStr, int cchDate, LPCWSTR lpCalendar);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetDateFormatA (LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCSTR lpFormat, LPSTR lpDateStr, int cchDate);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetDateFormatW (LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCWSTR lpFormat, LPWSTR lpDateStr, int cchDate);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetTimeFormatA (LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCSTR lpFormat, LPSTR lpTimeStr, int cchTime);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetTimeFormatW (LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCWSTR lpFormat, LPWSTR lpTimeStr, int cchTime);
#define GetDateFormat __MINGW_NAME_AW(GetDateFormat)
#define GetTimeFormat __MINGW_NAME_AW(GetTimeFormat)
#define WINNORMALIZEAPI DECLSPEC_IMPORT
#define MAX_LEADBYTES 12
#define MAX_DEFAULTCHAR 2
#define HIGH_SURROGATE_START 0xd800
#define HIGH_SURROGATE_END 0xdbff
#define LOW_SURROGATE_START 0xdc00
#define LOW_SURROGATE_END 0xdfff
#define MB_PRECOMPOSED 0x00000001
#define MB_COMPOSITE 0x00000002
#define MB_USEGLYPHCHARS 0x00000004
#define MB_ERR_INVALID_CHARS 0x00000008
#define WC_DISCARDNS 0x00000010
#define WC_SEPCHARS 0x00000020
#define WC_DEFAULTCHAR 0x00000040
#define WC_ERR_INVALID_CHARS 0x00000080
#define WC_COMPOSITECHECK 0x00000200
#define WC_NO_BEST_FIT_CHARS 0x00000400
#define CT_CTYPE1 0x00000001
#define CT_CTYPE2 0x00000002
#define CT_CTYPE3 0x00000004
#define C1_UPPER 0x0001
#define C1_LOWER 0x0002
#define C1_DIGIT 0x0004
#define C1_SPACE 0x0008
#define C1_PUNCT 0x0010
#define C1_CNTRL 0x0020
#define C1_BLANK 0x0040
#define C1_XDIGIT 0x0080
#define C1_ALPHA 0x0100
#define C1_DEFINED 0x0200
#define C2_LEFTTORIGHT 0x0001
#define C2_RIGHTTOLEFT 0x0002
#define C2_EUROPENUMBER 0x0003
#define C2_EUROPESEPARATOR 0x0004
#define C2_EUROPETERMINATOR 0x0005
#define C2_ARABICNUMBER 0x0006
#define C2_COMMONSEPARATOR 0x0007
#define C2_BLOCKSEPARATOR 0x0008
#define C2_SEGMENTSEPARATOR 0x0009
#define C2_WHITESPACE 0x000a
#define C2_OTHERNEUTRAL 0x000b
#define C2_NOTAPPLICABLE 0x0000
#define C3_NONSPACING 0x0001
#define C3_DIACRITIC 0x0002
#define C3_VOWELMARK 0x0004
#define C3_SYMBOL 0x0008
#define C3_KATAKANA 0x0010
#define C3_HIRAGANA 0x0020
#define C3_HALFWIDTH 0x0040
#define C3_FULLWIDTH 0x0080
#define C3_IDEOGRAPH 0x0100
#define C3_KASHIDA 0x0200
#define C3_LEXICAL 0x0400
#define C3_HIGHSURROGATE 0x0800
#define C3_LOWSURROGATE 0x1000
#define C3_ALPHA 0x8000
#define C3_NOTAPPLICABLE 0x0000
#define NORM_IGNORECASE 0x00000001
#define NORM_IGNORENONSPACE 0x00000002
#define NORM_IGNORESYMBOLS 0x00000004
#define LINGUISTIC_IGNORECASE 0x00000010
#define LINGUISTIC_IGNOREDIACRITIC 0x00000020
#define NORM_IGNOREKANATYPE 0x00010000
#define NORM_IGNOREWIDTH 0x00020000
#define NORM_LINGUISTIC_CASING 0x08000000
#define MAP_FOLDCZONE 0x00000010
#define MAP_PRECOMPOSED 0x00000020
#define MAP_COMPOSITE 0x00000040
#define MAP_FOLDDIGITS 0x00000080
#define MAP_EXPAND_LIGATURES 0x00002000
#define LCMAP_LOWERCASE 0x00000100
#define LCMAP_UPPERCASE 0x00000200
#define LCMAP_SORTKEY 0x00000400
#define LCMAP_BYTEREV 0x00000800
#define LCMAP_HIRAGANA 0x00100000
#define LCMAP_KATAKANA 0x00200000
#define LCMAP_HALFWIDTH 0x00400000
#define LCMAP_FULLWIDTH 0x00800000
#define LCMAP_LINGUISTIC_CASING 0x01000000
#define LCMAP_SIMPLIFIED_CHINESE 0x02000000
#define LCMAP_TRADITIONAL_CHINESE 0x04000000
#define FIND_STARTSWITH 0x00100000
#define FIND_ENDSWITH 0x00200000
#define FIND_FROMSTART 0x00400000
#define FIND_FROMEND 0x00800000
#define LGRPID_INSTALLED 0x00000001
#define LGRPID_SUPPORTED 0x00000002
#define LCID_INSTALLED 0x00000001
#define LCID_SUPPORTED 0x00000002
#define LCID_ALTERNATE_SORTS 0x00000004
#define LOCALE_ALL 0
#define LOCALE_WINDOWS 0x00000001
#define LOCALE_SUPPLEMENTAL 0x00000002
#define LOCALE_ALTERNATE_SORTS 0x00000004
#define LOCALE_REPLACEMENT 0x00000008
#define CP_INSTALLED 0x00000001
#define CP_SUPPORTED 0x00000002
#define SORT_STRINGSORT 0x00001000
#define CSTR_LESS_THAN 1
#define CSTR_EQUAL 2
#define CSTR_GREATER_THAN 3
#define CP_ACP 0
#define CP_OEMCP 1
#define CP_MACCP 2
#define CP_THREAD_ACP 3
#define CP_SYMBOL 42
#define CP_UTF7 65000
#define CP_UTF8 65001
#define CTRY_DEFAULT 0
#define CTRY_ALBANIA 355
#define CTRY_ALGERIA 213
#define CTRY_ARGENTINA 54
#define CTRY_ARMENIA 374
#define CTRY_AUSTRALIA 61
#define CTRY_AUSTRIA 43
#define CTRY_AZERBAIJAN 994
#define CTRY_BAHRAIN 973
#define CTRY_BELARUS 375
#define CTRY_BELGIUM 32
#define CTRY_BELIZE 501
#define CTRY_BOLIVIA 591
#define CTRY_BRAZIL 55
#define CTRY_BRUNEI_DARUSSALAM 673
#define CTRY_BULGARIA 359
#define CTRY_CANADA 2
#define CTRY_CARIBBEAN 1
#define CTRY_CHILE 56
#define CTRY_COLOMBIA 57
#define CTRY_COSTA_RICA 506
#define CTRY_CROATIA 385
#define CTRY_CZECH 420
#define CTRY_DENMARK 45
#define CTRY_DOMINICAN_REPUBLIC 1
#define CTRY_ECUADOR 593
#define CTRY_EGYPT 20
#define CTRY_EL_SALVADOR 503
#define CTRY_ESTONIA 372
#define CTRY_FAEROE_ISLANDS 298
#define CTRY_FINLAND 358
#define CTRY_FRANCE 33
#define CTRY_GEORGIA 995
#define CTRY_GERMANY 49
#define CTRY_GREECE 30
#define CTRY_GUATEMALA 502
#define CTRY_HONDURAS 504
#define CTRY_HONG_KONG 852
#define CTRY_HUNGARY 36
#define CTRY_ICELAND 354
#define CTRY_INDIA 91
#define CTRY_INDONESIA 62
#define CTRY_IRAN 981
#define CTRY_IRAQ 964
#define CTRY_IRELAND 353
#define CTRY_ISRAEL 972
#define CTRY_ITALY 39
#define CTRY_JAMAICA 1
#define CTRY_JAPAN 81
#define CTRY_JORDAN 962
#define CTRY_KAZAKSTAN 7
#define CTRY_KENYA 254
#define CTRY_KUWAIT 965
#define CTRY_KYRGYZSTAN 996
#define CTRY_LATVIA 371
#define CTRY_LEBANON 961
#define CTRY_LIBYA 218
#define CTRY_LIECHTENSTEIN 41
#define CTRY_LITHUANIA 370
#define CTRY_LUXEMBOURG 352
#define CTRY_MACAU 853
#define CTRY_MACEDONIA 389
#define CTRY_MALAYSIA 60
#define CTRY_MALDIVES 960
#define CTRY_MEXICO 52
#define CTRY_MONACO 33
#define CTRY_MONGOLIA 976
#define CTRY_MOROCCO 212
#define CTRY_NETHERLANDS 31
#define CTRY_NEW_ZEALAND 64
#define CTRY_NICARAGUA 505
#define CTRY_NORWAY 47
#define CTRY_OMAN 968
#define CTRY_PAKISTAN 92
#define CTRY_PANAMA 507
#define CTRY_PARAGUAY 595
#define CTRY_PERU 51
#define CTRY_PHILIPPINES 63
#define CTRY_POLAND 48
#define CTRY_PORTUGAL 351
#define CTRY_PRCHINA 86
#define CTRY_PUERTO_RICO 1
#define CTRY_QATAR 974
#define CTRY_ROMANIA 40
#define CTRY_RUSSIA 7
#define CTRY_SAUDI_ARABIA 966
#define CTRY_SERBIA 381
#define CTRY_SINGAPORE 65
#define CTRY_SLOVAK 421
#define CTRY_SLOVENIA 386
#define CTRY_SOUTH_AFRICA 27
#define CTRY_SOUTH_KOREA 82
#define CTRY_SPAIN 34
#define CTRY_SWEDEN 46
#define CTRY_SWITZERLAND 41
#define CTRY_SYRIA 963
#define CTRY_TAIWAN 886
#define CTRY_TATARSTAN 7
#define CTRY_THAILAND 66
#define CTRY_TRINIDAD_Y_TOBAGO 1
#define CTRY_TUNISIA 216
#define CTRY_TURKEY 90
#define CTRY_UAE 971
#define CTRY_UKRAINE 380
#define CTRY_UNITED_KINGDOM 44
#define CTRY_UNITED_STATES 1
#define CTRY_URUGUAY 598
#define CTRY_UZBEKISTAN 7
#define CTRY_VENEZUELA 58
#define CTRY_VIET_NAM 84
#define CTRY_YEMEN 967
#define CTRY_ZIMBABWE 263
#define LOCALE_SLOCALIZEDDISPLAYNAME 0x00000002
#define LOCALE_RETURN_NUMBER 0x20000000
#define LOCALE_USE_CP_ACP 0x40000000
#define LOCALE_NOUSEROVERRIDE 0x80000000
#define LOCALE_SLOCALIZEDLANGUAGENAME 0x0000006f
#define LOCALE_SENGLISHLANGUAGENAME 0x00001001
#define LOCALE_SNATIVELANGUAGENAME 0x00000004
#define LOCALE_SLOCALIZEDCOUNTRYNAME 0x00000006
#define LOCALE_SENGLISHCOUNTRYNAME 0x00001002
#define LOCALE_SNATIVECOUNTRYNAME 0x00000008
#define LOCALE_SLANGUAGE 0x00000002
#define LOCALE_SLANGDISPLAYNAME 0x0000006f
#define LOCALE_SENGLANGUAGE 0x00001001
#define LOCALE_SNATIVELANGNAME 0x00000004
#define LOCALE_SCOUNTRY 0x00000006
#define LOCALE_SENGCOUNTRY 0x00001002
#define LOCALE_SNATIVECTRYNAME 0x00000008
#define LOCALE_ILANGUAGE 0x00000001
#define LOCALE_SABBREVLANGNAME 0x00000003
#define LOCALE_ICOUNTRY 0x00000005
#define LOCALE_SABBREVCTRYNAME 0x00000007
#define LOCALE_IGEOID 0x0000005b
#define LOCALE_IDEFAULTLANGUAGE 0x00000009
#define LOCALE_IDEFAULTCOUNTRY 0x0000000a
#define LOCALE_IDEFAULTCODEPAGE 0x0000000b
#define LOCALE_IDEFAULTANSICODEPAGE 0x00001004
#define LOCALE_IDEFAULTMACCODEPAGE 0x00001011
#define LOCALE_IDIALINGCODE 0x00000005
#define LOCALE_SLIST 0x0000000c
#define LOCALE_IMEASURE 0x0000000d
#define LOCALE_SDECIMAL 0x0000000e
#define LOCALE_STHOUSAND 0x0000000f
#define LOCALE_SGROUPING 0x00000010
#define LOCALE_IDIGITS 0x00000011
#define LOCALE_ILZERO 0x00000012
#define LOCALE_INEGNUMBER 0x00001010
#define LOCALE_SNATIVEDIGITS 0x00000013
#define LOCALE_SCURRENCY 0x00000014
#define LOCALE_SINTLSYMBOL 0x00000015
#define LOCALE_SMONDECIMALSEP 0x00000016
#define LOCALE_SMONTHOUSANDSEP 0x00000017
#define LOCALE_SMONGROUPING 0x00000018
#define LOCALE_ICURRDIGITS 0x00000019
#define LOCALE_IINTLCURRDIGITS 0x0000001a
#define LOCALE_ICURRENCY 0x0000001b
#define LOCALE_INEGCURR 0x0000001c
#define LOCALE_SDATE 0x0000001d
#define LOCALE_STIME 0x0000001e
#define LOCALE_SSHORTDATE 0x0000001f
#define LOCALE_SLONGDATE 0x00000020
#define LOCALE_STIMEFORMAT 0x00001003
#define LOCALE_SAM 0x00000028
#define LOCALE_SPM 0x00000029
#define LOCALE_IDATE 0x00000021
#define LOCALE_ILDATE 0x00000022
#define LOCALE_ITIME 0x00000023
#define LOCALE_ITIMEMARKPOSN 0x00001005
#define LOCALE_ICENTURY 0x00000024
#define LOCALE_ITLZERO 0x00000025
#define LOCALE_IDAYLZERO 0x00000026
#define LOCALE_IMONLZERO 0x00000027
#define LOCALE_S1159 0x00000028
#define LOCALE_S2359 0x00000029
#define LOCALE_ICALENDARTYPE 0x00001009
#define LOCALE_IOPTIONALCALENDAR 0x0000100b
#define LOCALE_IFIRSTDAYOFWEEK 0x0000100c
#define LOCALE_IFIRSTWEEKOFYEAR 0x0000100d
#define LOCALE_SDAYNAME1 0x0000002a
#define LOCALE_SDAYNAME2 0x0000002b
#define LOCALE_SDAYNAME3 0x0000002c
#define LOCALE_SDAYNAME4 0x0000002d
#define LOCALE_SDAYNAME5 0x0000002e
#define LOCALE_SDAYNAME6 0x0000002f
#define LOCALE_SDAYNAME7 0x00000030
#define LOCALE_SABBREVDAYNAME1 0x00000031
#define LOCALE_SABBREVDAYNAME2 0x00000032
#define LOCALE_SABBREVDAYNAME3 0x00000033
#define LOCALE_SABBREVDAYNAME4 0x00000034
#define LOCALE_SABBREVDAYNAME5 0x00000035
#define LOCALE_SABBREVDAYNAME6 0x00000036
#define LOCALE_SABBREVDAYNAME7 0x00000037
#define LOCALE_SMONTHNAME1 0x00000038
#define LOCALE_SMONTHNAME2 0x00000039
#define LOCALE_SMONTHNAME3 0x0000003a
#define LOCALE_SMONTHNAME4 0x0000003b
#define LOCALE_SMONTHNAME5 0x0000003c
#define LOCALE_SMONTHNAME6 0x0000003d
#define LOCALE_SMONTHNAME7 0x0000003e
#define LOCALE_SMONTHNAME8 0x0000003f
#define LOCALE_SMONTHNAME9 0x00000040
#define LOCALE_SMONTHNAME10 0x00000041
#define LOCALE_SMONTHNAME11 0x00000042
#define LOCALE_SMONTHNAME12 0x00000043
#define LOCALE_SMONTHNAME13 0x0000100e
#define LOCALE_SABBREVMONTHNAME1 0x00000044
#define LOCALE_SABBREVMONTHNAME2 0x00000045
#define LOCALE_SABBREVMONTHNAME3 0x00000046
#define LOCALE_SABBREVMONTHNAME4 0x00000047
#define LOCALE_SABBREVMONTHNAME5 0x00000048
#define LOCALE_SABBREVMONTHNAME6 0x00000049
#define LOCALE_SABBREVMONTHNAME7 0x0000004a
#define LOCALE_SABBREVMONTHNAME8 0x0000004b
#define LOCALE_SABBREVMONTHNAME9 0x0000004c
#define LOCALE_SABBREVMONTHNAME10 0x0000004d
#define LOCALE_SABBREVMONTHNAME11 0x0000004e
#define LOCALE_SABBREVMONTHNAME12 0x0000004f
#define LOCALE_SABBREVMONTHNAME13 0x0000100f
#define LOCALE_SPOSITIVESIGN 0x00000050
#define LOCALE_SNEGATIVESIGN 0x00000051
#define LOCALE_IPOSSIGNPOSN 0x00000052
#define LOCALE_INEGSIGNPOSN 0x00000053
#define LOCALE_IPOSSYMPRECEDES 0x00000054
#define LOCALE_IPOSSEPBYSPACE 0x00000055
#define LOCALE_INEGSYMPRECEDES 0x00000056
#define LOCALE_INEGSEPBYSPACE 0x00000057
#define LOCALE_FONTSIGNATURE 0x00000058
#define LOCALE_SISO639LANGNAME 0x00000059
#define LOCALE_SISO3166CTRYNAME 0x0000005a
#define LOCALE_IDEFAULTEBCDICCODEPAGE 0x00001012
#define LOCALE_IPAPERSIZE 0x0000100a
#define LOCALE_SENGCURRNAME 0x00001007
#define LOCALE_SNATIVECURRNAME 0x00001008
#define LOCALE_SYEARMONTH 0x00001006
#define LOCALE_SSORTNAME 0x00001013
#define LOCALE_IDIGITSUBSTITUTION 0x00001014
#define LOCALE_SNAME 0x0000005c
#define LOCALE_SDURATION 0x0000005d
#define LOCALE_SKEYBOARDSTOINSTALL 0x0000005e
#define LOCALE_SSHORTESTDAYNAME1 0x00000060
#define LOCALE_SSHORTESTDAYNAME2 0x00000061
#define LOCALE_SSHORTESTDAYNAME3 0x00000062
#define LOCALE_SSHORTESTDAYNAME4 0x00000063
#define LOCALE_SSHORTESTDAYNAME5 0x00000064
#define LOCALE_SSHORTESTDAYNAME6 0x00000065
#define LOCALE_SSHORTESTDAYNAME7 0x00000066
#define LOCALE_SISO639LANGNAME2 0x00000067
#define LOCALE_SISO3166CTRYNAME2 0x00000068
#define LOCALE_SNAN 0x00000069
#define LOCALE_SPOSINFINITY 0x0000006a
#define LOCALE_SNEGINFINITY 0x0000006b
#define LOCALE_SSCRIPTS 0x0000006c
#define LOCALE_SPARENT 0x0000006d
#define LOCALE_SCONSOLEFALLBACKNAME 0x0000006e
#define TIME_NOMINUTESORSECONDS 0x00000001
#define TIME_NOSECONDS 0x00000002
#define TIME_NOTIMEMARKER 0x00000004
#define TIME_FORCE24HOURFORMAT 0x00000008
#define DATE_SHORTDATE 0x00000001
#define DATE_LONGDATE 0x00000002
#define DATE_USE_ALT_CALENDAR 0x00000004
#define DATE_YEARMONTH 0x00000008
#define DATE_LTRREADING 0x00000010
#define DATE_RTLREADING 0x00000020
#define CAL_NOUSEROVERRIDE LOCALE_NOUSEROVERRIDE
#define CAL_USE_CP_ACP LOCALE_USE_CP_ACP
#define CAL_RETURN_NUMBER LOCALE_RETURN_NUMBER
#define CAL_ICALINTVALUE 0x00000001
#define CAL_SCALNAME 0x00000002
#define CAL_IYEAROFFSETRANGE 0x00000003
#define CAL_SERASTRING 0x00000004
#define CAL_SSHORTDATE 0x00000005
#define CAL_SLONGDATE 0x00000006
#define CAL_SDAYNAME1 0x00000007
#define CAL_SDAYNAME2 0x00000008
#define CAL_SDAYNAME3 0x00000009
#define CAL_SDAYNAME4 0x0000000a
#define CAL_SDAYNAME5 0x0000000b
#define CAL_SDAYNAME6 0x0000000c
#define CAL_SDAYNAME7 0x0000000d
#define CAL_SABBREVDAYNAME1 0x0000000e
#define CAL_SABBREVDAYNAME2 0x0000000f
#define CAL_SABBREVDAYNAME3 0x00000010
#define CAL_SABBREVDAYNAME4 0x00000011
#define CAL_SABBREVDAYNAME5 0x00000012
#define CAL_SABBREVDAYNAME6 0x00000013
#define CAL_SABBREVDAYNAME7 0x00000014
#define CAL_SMONTHNAME1 0x00000015
#define CAL_SMONTHNAME2 0x00000016
#define CAL_SMONTHNAME3 0x00000017
#define CAL_SMONTHNAME4 0x00000018
#define CAL_SMONTHNAME5 0x00000019
#define CAL_SMONTHNAME6 0x0000001a
#define CAL_SMONTHNAME7 0x0000001b
#define CAL_SMONTHNAME8 0x0000001c
#define CAL_SMONTHNAME9 0x0000001d
#define CAL_SMONTHNAME10 0x0000001e
#define CAL_SMONTHNAME11 0x0000001f
#define CAL_SMONTHNAME12 0x00000020
#define CAL_SMONTHNAME13 0x00000021
#define CAL_SABBREVMONTHNAME1 0x00000022
#define CAL_SABBREVMONTHNAME2 0x00000023
#define CAL_SABBREVMONTHNAME3 0x00000024
#define CAL_SABBREVMONTHNAME4 0x00000025
#define CAL_SABBREVMONTHNAME5 0x00000026
#define CAL_SABBREVMONTHNAME6 0x00000027
#define CAL_SABBREVMONTHNAME7 0x00000028
#define CAL_SABBREVMONTHNAME8 0x00000029
#define CAL_SABBREVMONTHNAME9 0x0000002a
#define CAL_SABBREVMONTHNAME10 0x0000002b
#define CAL_SABBREVMONTHNAME11 0x0000002c
#define CAL_SABBREVMONTHNAME12 0x0000002d
#define CAL_SABBREVMONTHNAME13 0x0000002e
#define CAL_SYEARMONTH 0x0000002f
#define CAL_ITWODIGITYEARMAX 0x00000030
#define CAL_SSHORTESTDAYNAME1 0x00000031
#define CAL_SSHORTESTDAYNAME2 0x00000032
#define CAL_SSHORTESTDAYNAME3 0x00000033
#define CAL_SSHORTESTDAYNAME4 0x00000034
#define CAL_SSHORTESTDAYNAME5 0x00000035
#define CAL_SSHORTESTDAYNAME6 0x00000036
#define CAL_SSHORTESTDAYNAME7 0x00000037
#define CAL_SJAPANESEERAFIRSTYEAR 0x0000003d
#define ENUM_ALL_CALENDARS 0xffffffff
#define CAL_GREGORIAN 1
#define CAL_GREGORIAN_US 2
#define CAL_JAPAN 3
#define CAL_TAIWAN 4
#define CAL_KOREA 5
#define CAL_HIJRI 6
#define CAL_THAI 7
#define CAL_HEBREW 8
#define CAL_GREGORIAN_ME_FRENCH 9
#define CAL_GREGORIAN_ARABIC 10
#define CAL_GREGORIAN_XLIT_ENGLISH 11
#define CAL_GREGORIAN_XLIT_FRENCH 12
#define CAL_UMALQURA 23
#define LGRPID_WESTERN_EUROPE 0x0001
#define LGRPID_CENTRAL_EUROPE 0x0002
#define LGRPID_BALTIC 0x0003
#define LGRPID_GREEK 0x0004
#define LGRPID_CYRILLIC 0x0005
#define LGRPID_TURKIC 0x0006
#define LGRPID_TURKISH 0x0006
#define LGRPID_JAPANESE 0x0007
#define LGRPID_KOREAN 0x0008
#define LGRPID_TRADITIONAL_CHINESE 0x0009
#define LGRPID_SIMPLIFIED_CHINESE 0x000a
#define LGRPID_THAI 0x000b
#define LGRPID_HEBREW 0x000c
#define LGRPID_ARABIC 0x000d
#define LGRPID_VIETNAMESE 0x000e
#define LGRPID_INDIC 0x000f
#define LGRPID_GEORGIAN 0x0010
#define LGRPID_ARMENIAN 0x0011
#define MUI_LANGUAGE_ID 0x4
#define MUI_LANGUAGE_NAME 0x8
#define MUI_MERGE_SYSTEM_FALLBACK 0x10
#define MUI_MERGE_USER_FALLBACK 0x20
#define MUI_UI_FALLBACK MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK
#define MUI_THREAD_LANGUAGES 0x40
#define MUI_CONSOLE_FILTER 0x100
#define MUI_COMPLEX_SCRIPT_FILTER 0x200
#define MUI_RESET_FILTERS 0x001
#define MUI_USER_PREFERRED_UI_LANGUAGES 0x10
#define MUI_USE_INSTALLED_LANGUAGES 0x20
#define MUI_USE_SEARCH_ALL_LANGUAGES 0x40
#define MUI_LANG_NEUTRAL_PE_FILE 0x100
#define MUI_NON_LANG_NEUTRAL_FILE 0x200
#define MUI_MACHINE_LANGUAGE_SETTINGS 0x400
#define MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL 0x001
#define MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN 0x002
#define MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI 0x004
#define MUI_QUERY_TYPE 0x001
#define MUI_QUERY_CHECKSUM 0x002
#define MUI_QUERY_LANGUAGE_NAME 0x004
#define MUI_QUERY_RESOURCE_TYPES 0x008
#define MUI_FILEINFO_VERSION 0x001
#define MUI_FULL_LANGUAGE 0x01
#define MUI_PARTIAL_LANGUAGE 0x02
#define MUI_LIP_LANGUAGE 0x04
#define MUI_LANGUAGE_INSTALLED 0x20
#define MUI_LANGUAGE_LICENSED 0x40
#define MUI_CALLBACK_ALL_FLAGS MUI_CALLBACK_FLAG_UPGRADED_INSTALLATION
  typedef DWORD LGRPID;
  typedef DWORD LCTYPE;
  typedef DWORD CALTYPE;
  typedef DWORD CALID;
  typedef struct _cpinfo {
    UINT MaxCharSize;
    BYTE DefaultChar[2];
    BYTE LeadByte[12];
  } CPINFO,*LPCPINFO;
  typedef struct _cpinfoexA {
    UINT MaxCharSize;
    BYTE DefaultChar[2];
    BYTE LeadByte[12];
    WCHAR UnicodeDefaultChar;
    UINT CodePage;
    CHAR CodePageName[260];
  } CPINFOEXA,*LPCPINFOEXA;
  typedef struct _cpinfoexW {
    UINT MaxCharSize;
    BYTE DefaultChar[2];
    BYTE LeadByte[12];
    WCHAR UnicodeDefaultChar;
    UINT CodePage;
    WCHAR CodePageName[260];
  } CPINFOEXW,*LPCPINFOEXW;
  typedef CPINFOEXA CPINFOEX;
  typedef LPCPINFOEXA LPCPINFOEX;
  typedef struct _numberfmtA {
    UINT NumDigits;
    UINT LeadingZero;
    UINT Grouping;
    LPSTR lpDecimalSep;
    LPSTR lpThousandSep;
    UINT NegativeOrder;
  } NUMBERFMTA,*LPNUMBERFMTA;
  typedef struct _numberfmtW {
    UINT NumDigits;
    UINT LeadingZero;
    UINT Grouping;
    LPWSTR lpDecimalSep;
    LPWSTR lpThousandSep;
    UINT NegativeOrder;
  } NUMBERFMTW,*LPNUMBERFMTW;
  typedef NUMBERFMTA NUMBERFMT;
  typedef LPNUMBERFMTA LPNUMBERFMT;
  typedef struct _currencyfmtA {
    UINT NumDigits;
    UINT LeadingZero;
    UINT Grouping;
    LPSTR lpDecimalSep;
    LPSTR lpThousandSep;
    UINT NegativeOrder;
    UINT PositiveOrder;
    LPSTR lpCurrencySymbol;
  } CURRENCYFMTA,*LPCURRENCYFMTA;
  typedef struct _currencyfmtW {
    UINT NumDigits;
    UINT LeadingZero;
    UINT Grouping;
    LPWSTR lpDecimalSep;
    LPWSTR lpThousandSep;
    UINT NegativeOrder;
    UINT PositiveOrder;
    LPWSTR lpCurrencySymbol;
  } CURRENCYFMTW,*LPCURRENCYFMTW;
  typedef CURRENCYFMTA CURRENCYFMT;
  typedef LPCURRENCYFMTA LPCURRENCYFMT;
  enum SYSNLS_FUNCTION {
    COMPARE_STRING = 0x1
  };
  typedef DWORD NLS_FUNCTION;
  typedef struct _nlsversioninfo {
    DWORD dwNLSVersionInfoSize;
    DWORD dwNLSVersion;
    DWORD dwDefinedVersion;
  } NLSVERSIONINFO,*LPNLSVERSIONINFO;
  typedef struct _nlsversioninfoex {
    DWORD dwNLSVersionInfoSize;
    DWORD dwNLSVersion;
    DWORD dwDefinedVersion;
    DWORD dwEffectiveId;
    GUID guidCustomVersion;
  } NLSVERSIONINFOEX,*LPNLSVERSIONINFOEX;
  typedef LONG GEOID;
  typedef DWORD GEOTYPE;
  typedef DWORD GEOCLASS;
#define GEOID_NOT_AVAILABLE -1
  enum SYSGEOTYPE {
    GEO_NATION = 0x0001,
    GEO_LATITUDE = 0x0002,
    GEO_LONGITUDE = 0x0003,
    GEO_ISO2 = 0x0004,
    GEO_ISO3 = 0x0005,
    GEO_RFC1766 = 0x0006,
    GEO_LCID = 0x0007,
    GEO_FRIENDLYNAME= 0x0008,
    GEO_OFFICIALNAME= 0x0009,
    GEO_TIMEZONES = 0x000a,
    GEO_OFFICIALLANGUAGES = 0x000b,
    GEO_ISO_UN_NUMBER = 0x000c,
    GEO_PARENT = 0x000d,
    GEO_DIALINGCODE = 0x000e,
    GEO_CURRENCYCODE= 0x000f,
    GEO_CURRENCYSYMBOL= 0x0010,
  };
  enum SYSGEOCLASS {
    GEOCLASS_NATION = 16,
    GEOCLASS_REGION = 14,
    GEOCLASS_ALL = 0
  };
  typedef enum _NORM_FORM {
    NormalizationOther = 0,
    NormalizationC = 0x1,
    NormalizationD = 0x2,
    NormalizationKC = 0x5,
    NormalizationKD = 0x6
  } NORM_FORM;
#define IDN_ALLOW_UNASSIGNED 0x01
#define IDN_USE_STD3_ASCII_RULES 0x02
#define IDN_EMAIL_ADDRESS 0x04
#define IDN_RAW_PUNYCODE 0x08
#define VS_ALLOW_LATIN 0x0001
#define GSS_ALLOW_INHERITED_COMMON 0x0001
  typedef WINBOOL (__attribute__((__stdcall__)) *LANGUAGEGROUP_ENUMPROCA) (LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *LANGGROUPLOCALE_ENUMPROCA) (LGRPID, LCID, LPSTR, LONG_PTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *UILANGUAGE_ENUMPROCA) (LPSTR, LONG_PTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *CODEPAGE_ENUMPROCA) (LPSTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *DATEFMT_ENUMPROCA) (LPSTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *DATEFMT_ENUMPROCEXA) (LPSTR, CALID);
  typedef WINBOOL (__attribute__((__stdcall__)) *TIMEFMT_ENUMPROCA) (LPSTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *CALINFO_ENUMPROCA) (LPSTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *CALINFO_ENUMPROCEXA) (LPSTR, CALID);
  typedef WINBOOL (__attribute__((__stdcall__)) *LOCALE_ENUMPROCA) (LPSTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *LOCALE_ENUMPROCW) (LPWSTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *LANGUAGEGROUP_ENUMPROCW) (LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *LANGGROUPLOCALE_ENUMPROCW) (LGRPID, LCID, LPWSTR, LONG_PTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *UILANGUAGE_ENUMPROCW) (LPWSTR, LONG_PTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *CODEPAGE_ENUMPROCW) (LPWSTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *DATEFMT_ENUMPROCW) (LPWSTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *DATEFMT_ENUMPROCEXW) (LPWSTR, CALID);
  typedef WINBOOL (__attribute__((__stdcall__)) *TIMEFMT_ENUMPROCW) (LPWSTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *CALINFO_ENUMPROCW) (LPWSTR);
  typedef WINBOOL (__attribute__((__stdcall__)) *CALINFO_ENUMPROCEXW) (LPWSTR, CALID);
  typedef WINBOOL (__attribute__((__stdcall__)) *GEO_ENUMPROC) (GEOID);
#define LANGUAGEGROUP_ENUMPROC LANGUAGEGROUP_ENUMPROCA
#define LANGGROUPLOCALE_ENUMPROC LANGGROUPLOCALE_ENUMPROCA
#define UILANGUAGE_ENUMPROC UILANGUAGE_ENUMPROCA
#define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCA
#define DATEFMT_ENUMPROC DATEFMT_ENUMPROCA
#define DATEFMT_ENUMPROCEX DATEFMT_ENUMPROCEXA
#define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCA
#define CALINFO_ENUMPROC CALINFO_ENUMPROCA
#define CALINFO_ENUMPROCEX CALINFO_ENUMPROCEXA
#define LOCALE_ENUMPROC LOCALE_ENUMPROCA
  typedef struct _FILEMUIINFO {
    DWORD dwSize;
    DWORD dwVersion;
    DWORD dwFileType;
    BYTE pChecksum[16];
    BYTE pServiceChecksum[16];
    DWORD dwLanguageNameOffset;
    DWORD dwTypeIDMainSize;
    DWORD dwTypeIDMainOffset;
    DWORD dwTypeNameMainOffset;
    DWORD dwTypeIDMUISize;
    DWORD dwTypeIDMUIOffset;
    DWORD dwTypeNameMUIOffset;
    BYTE abBuffer[8];
  } FILEMUIINFO,*PFILEMUIINFO;
#define _APISETSTRING_ 
  __attribute__((dllimport)) int __attribute__((__stdcall__)) CompareStringW (LCID Locale, DWORD dwCmpFlags, PCNZWCH lpString1, int cchCount1, PCNZWCH lpString2, int cchCount2);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) FoldStringW (DWORD dwMapFlags, LPCWCH lpSrcStr, int cchSrc, LPWSTR lpDestStr, int cchDest);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetStringTypeExW (LCID Locale, DWORD dwInfoType, LPCWCH lpSrcStr, int cchSrc, LPWORD lpCharType);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) CompareStringEx (LPCWSTR lpLocaleName, DWORD dwCmpFlags, LPCWCH lpString1, int cchCount1, LPCWCH lpString2, int cchCount2, LPNLSVERSIONINFO lpVersionInformation, LPVOID lpReserved, LPARAM lParam);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) CompareStringOrdinal (LPCWCH lpString1, int cchCount1, LPCWCH lpString2, int cchCount2, WINBOOL bIgnoreCase);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetStringTypeW (DWORD dwInfoType, LPCWCH lpSrcStr, int cchSrc, LPWORD lpCharType);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) MultiByteToWideChar (UINT CodePage, DWORD dwFlags, LPCCH lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WideCharToMultiByte (UINT CodePage, DWORD dwFlags, LPCWCH lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCCH lpDefaultChar, LPBOOL lpUsedDefaultChar);
#define IS_HIGH_SURROGATE(wch) (((wch) >= HIGH_SURROGATE_START) && ((wch) <= HIGH_SURROGATE_END))
#define IS_LOW_SURROGATE(wch) (((wch) >= LOW_SURROGATE_START) && ((wch) <= LOW_SURROGATE_END))
#define IS_SURROGATE_PAIR(hs,ls) (IS_HIGH_SURROGATE (hs) && IS_LOW_SURROGATE (ls))
#define FILEMUIINFO_GET_CULTURE(pInfo) ((LPWSTR) ((pInfo->dwLanguageNameOffset>0)? (ULONG_PTR)pInfo+pInfo->dwLanguageNameOffset:NULL))
#define FILEMUIINFO_GET_MAIN_TYPEIDS(pInfo) ((DWORD *) ((pInfo->dwTypeIDMainOffset>0)? (ULONG_PTR)pInfo+pInfo->dwTypeIDMainOffset:NULL))
#define FILEMUIINFO_GET_MAIN_TYPEID(pInfo,iType) (((iType<pInfo->dwTypeIDMainSize)&& (pInfo->dwTypeIDMainOffset>0))? *((DWORD *) ((ULONG_PTR)pInfo+pInfo->dwTypeIDMainOffset)+iType):0)
#define FILEMUIINFO_GET_MAIN_TYPENAMES(pInfo) ((LPWSTR) ((pInfo->dwTypeNameMainOffset>0)? (ULONG_PTR)pInfo+pInfo->dwTypeNameMainOffset:NULL))
#define FILEMUIINFO_GET_MUI_TYPEIDS(pInfo) ((DWORD *) ((pInfo->dwTypeIDMUIOffset>0)? (ULONG_PTR)pInfo+pInfo->dwTypeIDMUIOffset:NULL))
#define FILEMUIINFO_GET_MUI_TYPEID(pInfo,iType) (((iType<pInfo->dwTypeIDMUISize)&& (pInfo->dwTypeIDMUIOffset>0))? *((DWORD *) ((ULONG_PTR)pInfo+pInfo->dwTypeIDMUIOffset)+iType):0)
#define FILEMUIINFO_GET_MUI_TYPENAMES(pInfo) ((LPWSTR) ((pInfo->dwTypeNameMUIOffset>0)? (ULONG_PTR)pInfo+pInfo->dwTypeNameMUIOffset:NULL))
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsValidCodePage (UINT CodePage);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetACP (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsDBCSLeadByte (BYTE TestChar);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsDBCSLeadByteEx (UINT CodePage, BYTE TestChar);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsNLSDefinedString (NLS_FUNCTION Function, DWORD dwFlags, LPNLSVERSIONINFO lpVersionInformation, LPCWSTR lpString, INT cchStr);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetLocaleInfoW (LCID Locale, LCTYPE LCType, LPWSTR lpLCData, int cchData);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetLocaleInfoA (LCID Locale, LCTYPE LCType, LPSTR lpLCData, int cchData);
#define GetLocaleInfo GetLocaleInfoA
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetOEMCP (void);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) CompareStringA (LCID Locale, DWORD dwCmpFlags, PCNZCH lpString1, int cchCount1, PCNZCH lpString2, int cchCount2);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) LCMapStringW (LCID Locale, DWORD dwMapFlags, LPCWSTR lpSrcStr, int cchSrc, LPWSTR lpDestStr, int cchDest);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) LCMapStringA (LCID Locale, DWORD dwMapFlags, LPCSTR lpSrcStr, int cchSrc, LPSTR lpDestStr, int cchDest);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetNumberFormatA (LCID Locale, DWORD dwFlags, LPCSTR lpValue, const NUMBERFMTA *lpFormat, LPSTR lpNumberStr, int cchNumber);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetNumberFormatW (LCID Locale, DWORD dwFlags, LPCWSTR lpValue, const NUMBERFMTW *lpFormat, LPWSTR lpNumberStr, int cchNumber);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetCurrencyFormatA (LCID Locale, DWORD dwFlags, LPCSTR lpValue, const CURRENCYFMTA *lpFormat, LPSTR lpCurrencyStr, int cchCurrency);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetCurrencyFormatW (LCID Locale, DWORD dwFlags, LPCWSTR lpValue, const CURRENCYFMTW *lpFormat, LPWSTR lpCurrencyStr, int cchCurrency);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumCalendarInfoA (CALINFO_ENUMPROCA lpCalInfoEnumProc, LCID Locale, CALID Calendar, CALTYPE CalType);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumCalendarInfoW (CALINFO_ENUMPROCW lpCalInfoEnumProc, LCID Locale, CALID Calendar, CALTYPE CalType);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumCalendarInfoExA (CALINFO_ENUMPROCEXA lpCalInfoEnumProcEx, LCID Locale, CALID Calendar, CALTYPE CalType);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumCalendarInfoExW (CALINFO_ENUMPROCEXW lpCalInfoEnumProcEx, LCID Locale, CALID Calendar, CALTYPE CalType);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumTimeFormatsA (TIMEFMT_ENUMPROCA lpTimeFmtEnumProc, LCID Locale, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumTimeFormatsW (TIMEFMT_ENUMPROCW lpTimeFmtEnumProc, LCID Locale, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDateFormatsA (DATEFMT_ENUMPROCA lpDateFmtEnumProc, LCID Locale, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDateFormatsW (DATEFMT_ENUMPROCW lpDateFmtEnumProc, LCID Locale, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDateFormatsExA (DATEFMT_ENUMPROCEXA lpDateFmtEnumProcEx, LCID Locale, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDateFormatsExW (DATEFMT_ENUMPROCEXW lpDateFmtEnumProcEx, LCID Locale, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsValidLanguageGroup (LGRPID LanguageGroup, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNLSVersion (NLS_FUNCTION Function, LCID Locale, LPNLSVERSIONINFO lpVersionInformation);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsValidLocale (LCID Locale, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetLocaleInfoA (LCID Locale, LCTYPE LCType, LPCSTR lpLCData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetLocaleInfoW (LCID Locale, LCTYPE LCType, LPCWSTR lpLCData);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetCalendarInfoA (LCID Locale, CALID Calendar, CALTYPE CalType, LPSTR lpCalData, int cchData, LPDWORD lpValue);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetCalendarInfoW (LCID Locale, CALID Calendar, CALTYPE CalType, LPWSTR lpCalData, int cchData, LPDWORD lpValue);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetCalendarInfoA (LCID Locale, CALID Calendar, CALTYPE CalType, LPCSTR lpCalData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetCalendarInfoW (LCID Locale, CALID Calendar, CALTYPE CalType, LPCWSTR lpCalData);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetDurationFormat (LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDuration, ULONGLONG ullDuration, LPCWSTR lpFormat, LPWSTR lpDurationStr, int cchDuration);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) FindNLSString (LCID Locale, DWORD dwFindNLSStringFlags, LPCWSTR lpStringSource, int cchSource, LPCWSTR lpStringValue, int cchValue, LPINT pcchFound);
#define SetLocaleInfo __MINGW_NAME_AW(SetLocaleInfo)
#define GetCalendarInfo __MINGW_NAME_AW(GetCalendarInfo)
#define SetCalendarInfo __MINGW_NAME_AW(SetCalendarInfo)
#define CompareString CompareStringA
#define LCMapString LCMapStringA
#define GetNumberFormat __MINGW_NAME_AW(GetNumberFormat)
#define GetCurrencyFormat __MINGW_NAME_AW(GetCurrencyFormat)
#define EnumCalendarInfo __MINGW_NAME_AW(EnumCalendarInfo)
#define EnumCalendarInfoEx __MINGW_NAME_AW(EnumCalendarInfoEx)
#define EnumTimeFormats __MINGW_NAME_AW(EnumTimeFormats)
#define EnumDateFormats __MINGW_NAME_AW(EnumDateFormats)
#define EnumDateFormatsEx __MINGW_NAME_AW(EnumDateFormatsEx)
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetGeoInfoA (GEOID Location, GEOTYPE GeoType, LPSTR lpGeoData, int cchData, LANGID LangId);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetGeoInfoW (GEOID Location, GEOTYPE GeoType, LPWSTR lpGeoData, int cchData, LANGID LangId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumSystemGeoID (GEOCLASS GeoClass, GEOID ParentGeoId, GEO_ENUMPROC lpGeoEnumProc);
  __attribute__((dllimport)) GEOID __attribute__((__stdcall__)) GetUserGeoID (GEOCLASS GeoClass);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetUserDefaultGeoName (LPWSTR geoName, int geoNameCount);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCPInfo (UINT CodePage, LPCPINFO lpCPInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCPInfoExA (UINT CodePage, DWORD dwFlags, LPCPINFOEXA lpCPInfoEx);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCPInfoExW (UINT CodePage, DWORD dwFlags, LPCPINFOEXW lpCPInfoEx);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) LCIDToLocaleName (LCID Locale, LPWSTR lpName, int cchName, DWORD dwFlags);
  __attribute__((dllimport)) LCID __attribute__((__stdcall__)) LocaleNameToLCID (LPCWSTR lpName, DWORD dwFlags);
#define GetGeoInfo __MINGW_NAME_AW(GetGeoInfo)
#define GetCPInfoEx __MINGW_NAME_AW(GetCPInfoEx)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetUserGeoID (GEOID GeoId);
  __attribute__((dllimport)) LCID __attribute__((__stdcall__)) ConvertDefaultLocale (LCID Locale);
  __attribute__((dllimport)) LCID __attribute__((__stdcall__)) GetThreadLocale (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetThreadLocale (LCID Locale);
  __attribute__((dllimport)) LANGID __attribute__((__stdcall__)) GetSystemDefaultUILanguage (void);
  __attribute__((dllimport)) LANGID __attribute__((__stdcall__)) GetSystemDefaultLangID (void);
  __attribute__((dllimport)) LCID __attribute__((__stdcall__)) GetSystemDefaultLCID (void);
  __attribute__((dllimport)) LCID __attribute__((__stdcall__)) GetUserDefaultLCID (void);
  __attribute__((dllimport)) LANGID __attribute__((__stdcall__)) SetThreadUILanguage (LANGID LangId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetStringTypeA (LCID Locale, DWORD dwInfoType, LPCSTR lpSrcStr, int cchSrc, LPWORD lpCharType);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) FoldStringA (DWORD dwMapFlags, LPCSTR lpSrcStr, int cchSrc, LPSTR lpDestStr, int cchDest);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumSystemLocalesA (LOCALE_ENUMPROCA lpLocaleEnumProc, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumSystemLocalesW (LOCALE_ENUMPROCW lpLocaleEnumProc, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumSystemLanguageGroupsA (LANGUAGEGROUP_ENUMPROCA lpLanguageGroupEnumProc, DWORD dwFlags, LONG_PTR lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumSystemLanguageGroupsW (LANGUAGEGROUP_ENUMPROCW lpLanguageGroupEnumProc, DWORD dwFlags, LONG_PTR lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumLanguageGroupLocalesA (LANGGROUPLOCALE_ENUMPROCA lpLangGroupLocaleEnumProc, LGRPID LanguageGroup, DWORD dwFlags, LONG_PTR lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumLanguageGroupLocalesW (LANGGROUPLOCALE_ENUMPROCW lpLangGroupLocaleEnumProc, LGRPID LanguageGroup, DWORD dwFlags, LONG_PTR lParam);
  __attribute__((dllimport)) LANGID __attribute__((__stdcall__)) GetThreadUILanguage (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetProcessPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetProcessPreferredUILanguages (DWORD dwFlags, PCZZWSTR pwszLanguagesBuffer, PULONG pulNumLanguages);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetUserPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetSystemPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetThreadPreferredUILanguages (DWORD dwFlags, PULONG pulNumLanguages, PZZWSTR pwszLanguagesBuffer, PULONG pcchLanguagesBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetThreadPreferredUILanguages (DWORD dwFlags, PCZZWSTR pwszLanguagesBuffer, PULONG pulNumLanguages);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetFileMUIInfo (DWORD dwFlags, PCWSTR pcwszFilePath, PFILEMUIINFO pFileMUIInfo, DWORD *pcbFileMUIInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetFileMUIPath (DWORD dwFlags, PCWSTR pcwszFilePath, PWSTR pwszLanguage, PULONG pcchLanguage, PWSTR pwszFileMUIPath, PULONG pcchFileMUIPath, PULONGLONG pululEnumerator);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetUILanguageInfo (DWORD dwFlags, PCZZWSTR pwmszLanguage, PZZWSTR pwszFallbackLanguages, PDWORD pcchFallbackLanguages, PDWORD pAttributes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) NotifyUILanguageChange (DWORD dwFlags, PCWSTR pcwstrNewLanguage, PCWSTR pcwstrPreviousLanguage, DWORD dwReserved, PDWORD pdwStatusRtrn);
#define FoldString FoldStringA
#define EnumSystemLocales __MINGW_NAME_AW(EnumSystemLocales)
#define EnumSystemLanguageGroups __MINGW_NAME_AW(EnumSystemLanguageGroups)
#define EnumLanguageGroupLocales __MINGW_NAME_AW(EnumLanguageGroupLocales)
#define EnumUILanguages __MINGW_NAME_AW(EnumUILanguages)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetStringTypeExA (LCID Locale, DWORD dwInfoType, LPCSTR lpSrcStr, int cchSrc, LPWORD lpCharType);
  __attribute__((dllimport)) LANGID __attribute__((__stdcall__)) GetUserDefaultUILanguage (void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumUILanguagesA (UILANGUAGE_ENUMPROCA lpUILanguageEnumProc, DWORD dwFlags, LONG_PTR lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumUILanguagesW (UILANGUAGE_ENUMPROCW lpUILanguageEnumProc, DWORD dwFlags, LONG_PTR lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumSystemCodePagesA (CODEPAGE_ENUMPROCA lpCodePageEnumProc, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumSystemCodePagesW (CODEPAGE_ENUMPROCW lpCodePageEnumProc, DWORD dwFlags);
  __attribute__((dllimport)) LANGID __attribute__((__stdcall__)) GetUserDefaultLangID (void);
#define GetStringTypeEx GetStringTypeExA
#define EnumSystemCodePages __MINGW_NAME_AW(EnumSystemCodePages)
#define LOCALE_NAME_USER_DEFAULT NULL
#define LOCALE_NAME_INVARIANT L""
#define LOCALE_NAME_SYSTEM_DEFAULT L"!x-sys-default-locale"
  typedef WINBOOL (__attribute__((__stdcall__)) *CALINFO_ENUMPROCEXEX) (LPWSTR, CALID, LPWSTR, LPARAM);
  typedef WINBOOL (__attribute__((__stdcall__)) *DATEFMT_ENUMPROCEXEX) (LPWSTR, CALID, LPARAM);
  typedef WINBOOL (__attribute__((__stdcall__)) *TIMEFMT_ENUMPROCEX) (LPWSTR, LPARAM);
  typedef WINBOOL (__attribute__((__stdcall__)) *LOCALE_ENUMPROCEX) (LPWSTR, DWORD, LPARAM);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) NormalizeString (NORM_FORM NormForm, LPCWSTR lpSrcString, int cwSrcLength, LPWSTR lpDstString, int cwDstLength);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsNormalizedString (NORM_FORM NormForm, LPCWSTR lpString, int cwLength);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) IdnToAscii (DWORD dwFlags, LPCWSTR lpUnicodeCharStr, int cchUnicodeChar, LPWSTR lpASCIICharStr, int cchASCIIChar);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) IdnToNameprepUnicode (DWORD dwFlags, LPCWSTR lpUnicodeCharStr, int cchUnicodeChar, LPWSTR lpNameprepCharStr, int cchNameprepChar);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) IdnToUnicode (DWORD dwFlags, LPCWSTR lpASCIICharStr, int cchASCIIChar, LPWSTR lpUnicodeCharStr, int cchUnicodeChar);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) VerifyScripts (DWORD dwFlags, LPCWSTR lpLocaleScripts, int cchLocaleScripts, LPCWSTR lpTestScripts, int cchTestScripts);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetStringScripts (DWORD dwFlags, LPCWSTR lpString, int cchString, LPWSTR lpScripts, int cchScripts);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetLocaleInfoEx (LPCWSTR lpLocaleName, LCTYPE LCType, LPWSTR lpLCData, int cchData);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetCalendarInfoEx (LPCWSTR lpLocaleName, CALID Calendar, LPCWSTR lpReserved, CALTYPE CalType, LPWSTR lpCalData, int cchData, LPDWORD lpValue);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetDurationFormatEx (LPCWSTR lpLocaleName, DWORD dwFlags, const SYSTEMTIME *lpDuration, ULONGLONG ullDuration, LPCWSTR lpFormat, LPWSTR lpDurationStr, int cchDuration);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetNumberFormatEx (LPCWSTR lpLocaleName, DWORD dwFlags, LPCWSTR lpValue, const NUMBERFMTW *lpFormat, LPWSTR lpNumberStr, int cchNumber);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetCurrencyFormatEx (LPCWSTR lpLocaleName, DWORD dwFlags, LPCWSTR lpValue, const CURRENCYFMTW *lpFormat, LPWSTR lpCurrencyStr, int cchCurrency);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetUserDefaultLocaleName (LPWSTR lpLocaleName, int cchLocaleName);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetSystemDefaultLocaleName (LPWSTR lpLocaleName, int cchLocaleName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNLSVersionEx (NLS_FUNCTION function, LPCWSTR lpLocaleName, LPNLSVERSIONINFOEX lpVersionInformation);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) FindNLSStringEx (LPCWSTR lpLocaleName, DWORD dwFindNLSStringFlags, LPCWSTR lpStringSource, int cchSource, LPCWSTR lpStringValue, int cchValue, LPINT pcchFound, LPNLSVERSIONINFO lpVersionInformation, LPVOID lpReserved, LPARAM sortHandle);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) LCMapStringEx (LPCWSTR lpLocaleName, DWORD dwMapFlags, LPCWSTR lpSrcStr, int cchSrc, LPWSTR lpDestStr, int cchDest, LPNLSVERSIONINFO lpVersionInformation, LPVOID lpReserved, LPARAM sortHandle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsValidLocaleName (LPCWSTR lpLocaleName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumCalendarInfoExEx (CALINFO_ENUMPROCEXEX pCalInfoEnumProcExEx, LPCWSTR lpLocaleName, CALID Calendar, LPCWSTR lpReserved, CALTYPE CalType, LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDateFormatsExEx (DATEFMT_ENUMPROCEXEX lpDateFmtEnumProcExEx, LPCWSTR lpLocaleName, DWORD dwFlags, LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumTimeFormatsEx (TIMEFMT_ENUMPROCEX lpTimeFmtEnumProcEx, LPCWSTR lpLocaleName, DWORD dwFlags, LPARAM lParam);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumSystemLocalesEx (LOCALE_ENUMPROCEX lpLocaleEnumProcEx, DWORD dwFlags, LPARAM lParam, LPVOID lpReserved);
#define _WINCON_ 
#define CONSOLE_REAL_OUTPUT_HANDLE (LongToHandle(-2))
#define CONSOLE_REAL_INPUT_HANDLE (LongToHandle(-3))
  typedef struct _COORD {
    SHORT X;
    SHORT Y;
  } COORD,*PCOORD;
  typedef struct _SMALL_RECT {
    SHORT Left;
    SHORT Top;
    SHORT Right;
    SHORT Bottom;
  } SMALL_RECT,*PSMALL_RECT;
  typedef struct _KEY_EVENT_RECORD {
    WINBOOL bKeyDown;
    WORD wRepeatCount;
    WORD wVirtualKeyCode;
    WORD wVirtualScanCode;
    union {
      WCHAR UnicodeChar;
      CHAR AsciiChar;
    } uChar;
    DWORD dwControlKeyState;
  } KEY_EVENT_RECORD,*PKEY_EVENT_RECORD;
#define RIGHT_ALT_PRESSED 0x1
#define LEFT_ALT_PRESSED 0x2
#define RIGHT_CTRL_PRESSED 0x4
#define LEFT_CTRL_PRESSED 0x8
#define SHIFT_PRESSED 0x10
#define NUMLOCK_ON 0x20
#define SCROLLLOCK_ON 0x40
#define CAPSLOCK_ON 0x80
#define ENHANCED_KEY 0x100
#define NLS_DBCSCHAR 0x10000
#define NLS_ALPHANUMERIC 0x0
#define NLS_KATAKANA 0x20000
#define NLS_HIRAGANA 0x40000
#define NLS_ROMAN 0x400000
#define NLS_IME_CONVERSION 0x800000
#define ALTNUMPAD_BIT 0x4000000
#define NLS_IME_DISABLE 0x20000000
  typedef struct _MOUSE_EVENT_RECORD {
    COORD dwMousePosition;
    DWORD dwButtonState;
    DWORD dwControlKeyState;
    DWORD dwEventFlags;
  } MOUSE_EVENT_RECORD,*PMOUSE_EVENT_RECORD;
#define FROM_LEFT_1ST_BUTTON_PRESSED 0x1
#define RIGHTMOST_BUTTON_PRESSED 0x2
#define FROM_LEFT_2ND_BUTTON_PRESSED 0x4
#define FROM_LEFT_3RD_BUTTON_PRESSED 0x8
#define FROM_LEFT_4TH_BUTTON_PRESSED 0x10
#define MOUSE_MOVED 0x1
#define DOUBLE_CLICK 0x2
#define MOUSE_WHEELED 0x4
#define MOUSE_HWHEELED 0x8
  typedef struct _WINDOW_BUFFER_SIZE_RECORD {
    COORD dwSize;
  } WINDOW_BUFFER_SIZE_RECORD,*PWINDOW_BUFFER_SIZE_RECORD;
  typedef struct _MENU_EVENT_RECORD {
    UINT dwCommandId;
  } MENU_EVENT_RECORD,*PMENU_EVENT_RECORD;
  typedef struct _FOCUS_EVENT_RECORD {
    WINBOOL bSetFocus;
  } FOCUS_EVENT_RECORD,*PFOCUS_EVENT_RECORD;
  typedef struct _INPUT_RECORD {
    WORD EventType;
    union {
      KEY_EVENT_RECORD KeyEvent;
      MOUSE_EVENT_RECORD MouseEvent;
      WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
      MENU_EVENT_RECORD MenuEvent;
      FOCUS_EVENT_RECORD FocusEvent;
    } Event;
  } INPUT_RECORD,*PINPUT_RECORD;
#define KEY_EVENT 0x1
#define MOUSE_EVENT 0x2
#define WINDOW_BUFFER_SIZE_EVENT 0x4
#define MENU_EVENT 0x8
#define FOCUS_EVENT 0x10
  typedef struct _CHAR_INFO {
    union {
      WCHAR UnicodeChar;
      CHAR AsciiChar;
    } Char;
    WORD Attributes;
  } CHAR_INFO,*PCHAR_INFO;
#define FOREGROUND_BLUE 0x1
#define FOREGROUND_GREEN 0x2
#define FOREGROUND_RED 0x4
#define FOREGROUND_INTENSITY 0x8
#define BACKGROUND_BLUE 0x10
#define BACKGROUND_GREEN 0x20
#define BACKGROUND_RED 0x40
#define BACKGROUND_INTENSITY 0x80
#define COMMON_LVB_LEADING_BYTE 0x100
#define COMMON_LVB_TRAILING_BYTE 0x200
#define COMMON_LVB_GRID_HORIZONTAL 0x400
#define COMMON_LVB_GRID_LVERTICAL 0x800
#define COMMON_LVB_GRID_RVERTICAL 0x1000
#define COMMON_LVB_REVERSE_VIDEO 0x4000
#define COMMON_LVB_UNDERSCORE 0x8000
#define COMMON_LVB_SBCSDBCS 0x300
  typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
    COORD dwSize;
    COORD dwCursorPosition;
    WORD wAttributes;
    SMALL_RECT srWindow;
    COORD dwMaximumWindowSize;
  } CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO;
  typedef struct _CONSOLE_CURSOR_INFO {
    DWORD dwSize;
    WINBOOL bVisible;
  } CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;
  typedef struct _CONSOLE_FONT_INFO {
    DWORD nFont;
    COORD dwFontSize;
  } CONSOLE_FONT_INFO,*PCONSOLE_FONT_INFO;
  typedef struct _CONSOLE_SELECTION_INFO {
    DWORD dwFlags;
    COORD dwSelectionAnchor;
    SMALL_RECT srSelection;
  } CONSOLE_SELECTION_INFO,*PCONSOLE_SELECTION_INFO;
#define CONSOLE_NO_SELECTION 0x0
#define CONSOLE_SELECTION_IN_PROGRESS 0x1
#define CONSOLE_SELECTION_NOT_EMPTY 0x2
#define CONSOLE_MOUSE_SELECTION 0x4
#define CONSOLE_MOUSE_DOWN 0x8
  typedef WINBOOL (__attribute__((__stdcall__)) *PHANDLER_ROUTINE)(DWORD CtrlType);
#define CTRL_C_EVENT 0
#define CTRL_BREAK_EVENT 1
#define CTRL_CLOSE_EVENT 2
#define CTRL_LOGOFF_EVENT 5
#define CTRL_SHUTDOWN_EVENT 6
#define ENABLE_PROCESSED_INPUT 0x1
#define ENABLE_LINE_INPUT 0x2
#define ENABLE_ECHO_INPUT 0x4
#define ENABLE_WINDOW_INPUT 0x8
#define ENABLE_MOUSE_INPUT 0x10
#define ENABLE_INSERT_MODE 0x20
#define ENABLE_QUICK_EDIT_MODE 0x40
#define ENABLE_EXTENDED_FLAGS 0x80
#define ENABLE_AUTO_POSITION 0x100
#define ENABLE_VIRTUAL_TERMINAL_INPUT 0x200
#define ENABLE_PROCESSED_OUTPUT 0x1
#define ENABLE_WRAP_AT_EOL_OUTPUT 0x2
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x4
#define DISABLE_NEWLINE_AUTO_RETURN 0x8
#define ENABLE_LVB_GRID_WORLDWIDE 0x10
#define PeekConsoleInput __MINGW_NAME_AW(PeekConsoleInput)
#define ReadConsoleInput __MINGW_NAME_AW(ReadConsoleInput)
#define WriteConsoleInput __MINGW_NAME_AW(WriteConsoleInput)
#define ReadConsoleOutput __MINGW_NAME_AW(ReadConsoleOutput)
#define WriteConsoleOutput __MINGW_NAME_AW(WriteConsoleOutput)
#define ReadConsoleOutputCharacter __MINGW_NAME_AW(ReadConsoleOutputCharacter)
#define WriteConsoleOutputCharacter __MINGW_NAME_AW(WriteConsoleOutputCharacter)
#define FillConsoleOutputCharacter __MINGW_NAME_AW(FillConsoleOutputCharacter)
#define ScrollConsoleScreenBuffer __MINGW_NAME_AW(ScrollConsoleScreenBuffer)
#define GetConsoleTitle __MINGW_NAME_AW(GetConsoleTitle)
#define SetConsoleTitle __MINGW_NAME_AW(SetConsoleTitle)
#define ReadConsole __MINGW_NAME_AW(ReadConsole)
#define WriteConsole __MINGW_NAME_AW(WriteConsole)
#define AddConsoleAlias __MINGW_NAME_AW(AddConsoleAlias)
#define GetConsoleAlias __MINGW_NAME_AW(GetConsoleAlias)
#define GetConsoleAliasesLength __MINGW_NAME_AW(GetConsoleAliasesLength)
#define GetConsoleAliasExesLength __MINGW_NAME_AW(GetConsoleAliasExesLength)
#define GetConsoleAliases __MINGW_NAME_AW(GetConsoleAliases)
#define GetConsoleAliasExes __MINGW_NAME_AW(GetConsoleAliasExes)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PeekConsoleInputA(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsRead);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PeekConsoleInputW(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsRead);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadConsoleInputA(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsRead);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadConsoleInputW(HANDLE hConsoleInput,PINPUT_RECORD lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsRead);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteConsoleInputA(HANDLE hConsoleInput,const INPUT_RECORD *lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsWritten);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteConsoleInputW(HANDLE hConsoleInput,const INPUT_RECORD *lpBuffer,DWORD nLength,LPDWORD lpNumberOfEventsWritten);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadConsoleOutputA(HANDLE hConsoleOutput,PCHAR_INFO lpBuffer,COORD dwBufferSize,COORD dwBufferCoord,PSMALL_RECT lpReadRegion);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadConsoleOutputW(HANDLE hConsoleOutput,PCHAR_INFO lpBuffer,COORD dwBufferSize,COORD dwBufferCoord,PSMALL_RECT lpReadRegion);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteConsoleOutputA(HANDLE hConsoleOutput,const CHAR_INFO *lpBuffer,COORD dwBufferSize,COORD dwBufferCoord,PSMALL_RECT lpWriteRegion);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteConsoleOutputW(HANDLE hConsoleOutput,const CHAR_INFO *lpBuffer,COORD dwBufferSize,COORD dwBufferCoord,PSMALL_RECT lpWriteRegion);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadConsoleOutputCharacterA(HANDLE hConsoleOutput,LPSTR lpCharacter,DWORD nLength,COORD dwReadCoord,LPDWORD lpNumberOfCharsRead);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadConsoleOutputCharacterW(HANDLE hConsoleOutput,LPWSTR lpCharacter,DWORD nLength,COORD dwReadCoord,LPDWORD lpNumberOfCharsRead);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadConsoleOutputAttribute(HANDLE hConsoleOutput,LPWORD lpAttribute,DWORD nLength,COORD dwReadCoord,LPDWORD lpNumberOfAttrsRead);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteConsoleOutputCharacterA(HANDLE hConsoleOutput,LPCSTR lpCharacter,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfCharsWritten);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteConsoleOutputCharacterW(HANDLE hConsoleOutput,LPCWSTR lpCharacter,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfCharsWritten);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteConsoleOutputAttribute(HANDLE hConsoleOutput,const WORD *lpAttribute,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfAttrsWritten);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FillConsoleOutputCharacterA(HANDLE hConsoleOutput,CHAR cCharacter,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfCharsWritten);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FillConsoleOutputCharacterW(HANDLE hConsoleOutput,WCHAR cCharacter,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfCharsWritten);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FillConsoleOutputAttribute(HANDLE hConsoleOutput,WORD wAttribute,DWORD nLength,COORD dwWriteCoord,LPDWORD lpNumberOfAttrsWritten);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetConsoleMode(HANDLE hConsoleHandle,LPDWORD lpMode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNumberOfConsoleInputEvents(HANDLE hConsoleInput,LPDWORD lpNumberOfEvents);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetConsoleScreenBufferInfo(HANDLE hConsoleOutput,PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo);
  __attribute__((dllimport)) COORD __attribute__((__stdcall__)) GetLargestConsoleWindowSize(HANDLE hConsoleOutput);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetConsoleCursorInfo(HANDLE hConsoleOutput,PCONSOLE_CURSOR_INFO lpConsoleCursorInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCurrentConsoleFont(HANDLE hConsoleOutput,WINBOOL bMaximumWindow,PCONSOLE_FONT_INFO lpConsoleCurrentFont);
  __attribute__((dllimport)) COORD __attribute__((__stdcall__)) GetConsoleFontSize(HANDLE hConsoleOutput,DWORD nFont);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetConsoleSelectionInfo(PCONSOLE_SELECTION_INFO lpConsoleSelectionInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetNumberOfConsoleMouseButtons(LPDWORD lpNumberOfMouseButtons);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleMode(HANDLE hConsoleHandle,DWORD dwMode);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleActiveScreenBuffer(HANDLE hConsoleOutput);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FlushConsoleInputBuffer(HANDLE hConsoleInput);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleScreenBufferSize(HANDLE hConsoleOutput,COORD dwSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleCursorPosition(HANDLE hConsoleOutput,COORD dwCursorPosition);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleCursorInfo(HANDLE hConsoleOutput,const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ScrollConsoleScreenBufferA(HANDLE hConsoleOutput,const SMALL_RECT *lpScrollRectangle,const SMALL_RECT *lpClipRectangle,COORD dwDestinationOrigin,const CHAR_INFO *lpFill);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ScrollConsoleScreenBufferW(HANDLE hConsoleOutput,const SMALL_RECT *lpScrollRectangle,const SMALL_RECT *lpClipRectangle,COORD dwDestinationOrigin,const CHAR_INFO *lpFill);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleWindowInfo(HANDLE hConsoleOutput,WINBOOL bAbsolute,const SMALL_RECT *lpConsoleWindow);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleTextAttribute(HANDLE hConsoleOutput,WORD wAttributes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine,WINBOOL Add);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GenerateConsoleCtrlEvent(DWORD dwCtrlEvent,DWORD dwProcessGroupId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AllocConsole(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) FreeConsole(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AttachConsole(DWORD dwProcessId);
#define ATTACH_PARENT_PROCESS ((DWORD)-1)
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleTitleA(LPSTR lpConsoleTitle,DWORD nSize);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleTitleW(LPWSTR lpConsoleTitle,DWORD nSize);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleTitleA(LPCSTR lpConsoleTitle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleTitleW(LPCWSTR lpConsoleTitle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadConsoleA(HANDLE hConsoleInput,LPVOID lpBuffer,DWORD nNumberOfCharsToRead,LPDWORD lpNumberOfCharsRead,LPVOID lpReserved);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ReadConsoleW(HANDLE hConsoleInput,LPVOID lpBuffer,DWORD nNumberOfCharsToRead,LPDWORD lpNumberOfCharsRead,LPVOID lpReserved);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteConsoleA(HANDLE hConsoleOutput,const void *lpBuffer,DWORD nNumberOfCharsToWrite,LPDWORD lpNumberOfCharsWritten,LPVOID lpReserved);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WriteConsoleW(HANDLE hConsoleOutput,const void *lpBuffer,DWORD nNumberOfCharsToWrite,LPDWORD lpNumberOfCharsWritten,LPVOID lpReserved);
#define CONSOLE_TEXTMODE_BUFFER 1
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) CreateConsoleScreenBuffer(DWORD dwDesiredAccess,DWORD dwShareMode,const SECURITY_ATTRIBUTES *lpSecurityAttributes,DWORD dwFlags,LPVOID lpScreenBufferData);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetConsoleCP(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleCP(UINT wCodePageID);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) GetConsoleOutputCP(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleOutputCP(UINT wCodePageID);
#define CONSOLE_FULLSCREEN 1
#define CONSOLE_FULLSCREEN_HARDWARE 2
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetConsoleDisplayMode(LPDWORD lpModeFlags);
#define CONSOLE_FULLSCREEN_MODE 1
#define CONSOLE_WINDOWED_MODE 2
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleDisplayMode(HANDLE hConsoleOutput, DWORD dwFlags, PCOORD lpNewScreenBufferDimensions);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) GetConsoleWindow(void);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleProcessList(LPDWORD lpdwProcessList,DWORD dwProcessCount);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddConsoleAliasA(LPSTR Source,LPSTR Target,LPSTR ExeName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AddConsoleAliasW(LPWSTR Source,LPWSTR Target,LPWSTR ExeName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleAliasA(LPSTR Source,LPSTR TargetBuffer,DWORD TargetBufferLength,LPSTR ExeName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleAliasW(LPWSTR Source,LPWSTR TargetBuffer,DWORD TargetBufferLength,LPWSTR ExeName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleAliasesLengthA(LPSTR ExeName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleAliasesLengthW(LPWSTR ExeName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleAliasExesLengthA(void);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleAliasExesLengthW(void);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleAliasesA(LPSTR AliasBuffer,DWORD AliasBufferLength,LPSTR ExeName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleAliasesW(LPWSTR AliasBuffer,DWORD AliasBufferLength,LPWSTR ExeName);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleAliasExesA(LPSTR ExeNameBuffer,DWORD ExeNameBufferLength);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleAliasExesW(LPWSTR ExeNameBuffer,DWORD ExeNameBufferLength);
__attribute__((dllimport)) void __attribute__((__stdcall__)) ExpungeConsoleCommandHistoryA(LPSTR ExeName);
__attribute__((dllimport)) void __attribute__((__stdcall__)) ExpungeConsoleCommandHistoryW(LPWSTR ExeName);
#define ExpungeConsoleCommandHistory __MINGW_NAME_AW(ExpungeConsoleCommandHistory)
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleNumberOfCommandsA(DWORD Number, LPSTR ExeName);
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleNumberOfCommandsW(DWORD Number, LPWSTR ExeName);
#define SetConsoleNumberOfCommands __MINGW_NAME_AW(SetConsoleNumberOfCommands)
__attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleCommandHistoryLengthA(LPSTR ExeName);
__attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleCommandHistoryLengthW(LPWSTR ExeName);
#define GetConsoleCommandHistoryLength __MINGW_NAME_AW(GetConsoleCommandHistoryLength)
__attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleCommandHistoryA(LPSTR Commands, DWORD CommandBufferLength, LPSTR ExeName);
__attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleCommandHistoryW(LPWSTR Commands, DWORD CommandBufferLength, LPWSTR ExeName);
#define GetConsoleCommandHistory __MINGW_NAME_AW(GetConsoleCommandHistory)
typedef struct _CONSOLE_FONT_INFOEX {
  ULONG cbSize;
  DWORD nFont;
  COORD dwFontSize;
  UINT FontFamily;
  UINT FontWeight;
  WCHAR FaceName[32];
} CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetCurrentConsoleFontEx(
  HANDLE hConsoleOutput,
  WINBOOL bMaximumWindow,
  PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx
);
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetCurrentConsoleFontEx(
  HANDLE hConsoleOutput,
  WINBOOL bMaximumWindow,
  PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx
);
#define HISTORY_NO_DUP_FLAG 0x1
typedef struct _CONSOLE_HISTORY_INFO {
  UINT cbSize;
  UINT HistoryBufferSize;
  UINT NumberOfHistoryBuffers;
  DWORD dwFlags;
} CONSOLE_HISTORY_INFO, *PCONSOLE_HISTORY_INFO;
typedef struct _CONSOLE_READCONSOLE_CONTROL {
  ULONG nLength;
  ULONG nInitialChars;
  ULONG dwCtrlWakeupMask;
  ULONG dwControlKeyState;
} CONSOLE_READCONSOLE_CONTROL, *PCONSOLE_READCONSOLE_CONTROL;
typedef struct _CONSOLE_SCREEN_BUFFER_INFOEX {
  ULONG cbSize;
  COORD dwSize;
  COORD dwCursorPosition;
  WORD wAttributes;
  SMALL_RECT srWindow;
  COORD dwMaximumWindowSize;
  WORD wPopupAttributes;
  WINBOOL bFullscreenSupported;
  COLORREF ColorTable[16];
} CONSOLE_SCREEN_BUFFER_INFOEX, *PCONSOLE_SCREEN_BUFFER_INFOEX;
WINBOOL __attribute__((__stdcall__)) GetConsoleHistoryInfo(
  PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo
);
#define GetConsoleOriginalTitle __MINGW_NAME_AW(GetConsoleOriginalTitle)
__attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleOriginalTitleA(
  LPSTR lpConsoleTitle,
  DWORD nSize
);
__attribute__((dllimport)) DWORD __attribute__((__stdcall__)) GetConsoleOriginalTitleW(
  LPWSTR lpConsoleTitle,
  DWORD nSize
);
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetConsoleScreenBufferInfoEx(
  HANDLE hConsoleOutput,
  PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx
);
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleHistoryInfo(
  PCONSOLE_HISTORY_INFO lpConsoleHistoryInfo
);
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetConsoleScreenBufferInfoEx(
  HANDLE hConsoleOutput,
  PCONSOLE_SCREEN_BUFFER_INFOEX lpConsoleScreenBufferInfoEx
);
#define VER_H 
#define VS_FILE_INFO RT_VERSION
#define VS_VERSION_INFO 1
#define VS_USER_DEFINED 100
#define VS_FFI_SIGNATURE __MSABI_LONG(0xFEEF04BD)
#define VS_FFI_STRUCVERSION __MSABI_LONG(0x00010000)
#define VS_FFI_FILEFLAGSMASK __MSABI_LONG(0x0000003F)
#define VS_FF_DEBUG __MSABI_LONG(0x00000001)
#define VS_FF_PRERELEASE __MSABI_LONG(0x00000002)
#define VS_FF_PATCHED __MSABI_LONG(0x00000004)
#define VS_FF_PRIVATEBUILD __MSABI_LONG(0x00000008)
#define VS_FF_INFOINFERRED __MSABI_LONG(0x00000010)
#define VS_FF_SPECIALBUILD __MSABI_LONG(0x00000020)
#define VOS_UNKNOWN __MSABI_LONG(0x00000000)
#define VOS_DOS __MSABI_LONG(0x00010000)
#define VOS_OS216 __MSABI_LONG(0x00020000)
#define VOS_OS232 __MSABI_LONG(0x00030000)
#define VOS_NT __MSABI_LONG(0x00040000)
#define VOS_WINCE __MSABI_LONG(0x00050000)
#define VOS__BASE __MSABI_LONG(0x00000000)
#define VOS__WINDOWS16 __MSABI_LONG(0x00000001)
#define VOS__PM16 __MSABI_LONG(0x00000002)
#define VOS__PM32 __MSABI_LONG(0x00000003)
#define VOS__WINDOWS32 __MSABI_LONG(0x00000004)
#define VOS_DOS_WINDOWS16 __MSABI_LONG(0x00010001)
#define VOS_DOS_WINDOWS32 __MSABI_LONG(0x00010004)
#define VOS_OS216_PM16 __MSABI_LONG(0x00020002)
#define VOS_OS232_PM32 __MSABI_LONG(0x00030003)
#define VOS_NT_WINDOWS32 __MSABI_LONG(0x00040004)
#define VFT_UNKNOWN __MSABI_LONG(0x00000000)
#define VFT_APP __MSABI_LONG(0x00000001)
#define VFT_DLL __MSABI_LONG(0x00000002)
#define VFT_DRV __MSABI_LONG(0x00000003)
#define VFT_FONT __MSABI_LONG(0x00000004)
#define VFT_VXD __MSABI_LONG(0x00000005)
#define VFT_STATIC_LIB __MSABI_LONG(0x00000007)
#define VFT2_UNKNOWN __MSABI_LONG(0x00000000)
#define VFT2_DRV_PRINTER __MSABI_LONG(0x00000001)
#define VFT2_DRV_KEYBOARD __MSABI_LONG(0x00000002)
#define VFT2_DRV_LANGUAGE __MSABI_LONG(0x00000003)
#define VFT2_DRV_DISPLAY __MSABI_LONG(0x00000004)
#define VFT2_DRV_MOUSE __MSABI_LONG(0x00000005)
#define VFT2_DRV_NETWORK __MSABI_LONG(0x00000006)
#define VFT2_DRV_SYSTEM __MSABI_LONG(0x00000007)
#define VFT2_DRV_INSTALLABLE __MSABI_LONG(0x00000008)
#define VFT2_DRV_SOUND __MSABI_LONG(0x00000009)
#define VFT2_DRV_COMM __MSABI_LONG(0x0000000A)
#define VFT2_DRV_INPUTMETHOD __MSABI_LONG(0x0000000B)
#define VFT2_DRV_VERSIONED_PRINTER __MSABI_LONG(0x0000000C)
#define VFT2_FONT_RASTER __MSABI_LONG(0x00000001)
#define VFT2_FONT_VECTOR __MSABI_LONG(0x00000002)
#define VFT2_FONT_TRUETYPE __MSABI_LONG(0x00000003)
#define VFFF_ISSHAREDFILE 0x0001
#define VFF_CURNEDEST 0x0001
#define VFF_FILEINUSE 0x0002
#define VFF_BUFFTOOSMALL 0x0004
#define VIFF_FORCEINSTALL 0x0001
#define VIFF_DONTDELETEOLD 0x0002
#define VIF_TEMPFILE __MSABI_LONG(0x00000001)
#define VIF_MISMATCH __MSABI_LONG(0x00000002)
#define VIF_SRCOLD __MSABI_LONG(0x00000004)
#define VIF_DIFFLANG __MSABI_LONG(0x00000008)
#define VIF_DIFFCODEPG __MSABI_LONG(0x00000010)
#define VIF_DIFFTYPE __MSABI_LONG(0x00000020)
#define VIF_WRITEPROT __MSABI_LONG(0x00000040)
#define VIF_FILEINUSE __MSABI_LONG(0x00000080)
#define VIF_OUTOFSPACE __MSABI_LONG(0x00000100)
#define VIF_ACCESSVIOLATION __MSABI_LONG(0x00000200)
#define VIF_SHARINGVIOLATION __MSABI_LONG(0x00000400)
#define VIF_CANNOTCREATE __MSABI_LONG(0x00000800)
#define VIF_CANNOTDELETE __MSABI_LONG(0x00001000)
#define VIF_CANNOTRENAME __MSABI_LONG(0x00002000)
#define VIF_CANNOTDELETECUR __MSABI_LONG(0x00004000)
#define VIF_OUTOFMEMORY __MSABI_LONG(0x00008000)
#define VIF_CANNOTREADSRC __MSABI_LONG(0x00010000)
#define VIF_CANNOTREADDST __MSABI_LONG(0x00020000)
#define VIF_BUFFTOOSMALL __MSABI_LONG(0x00040000)
#define VIF_CANNOTLOADLZ32 __MSABI_LONG(0x00080000)
#define VIF_CANNOTLOADCABINET __MSABI_LONG(0x00100000)
#define FILE_VER_GET_LOCALISED 0x01
#define FILE_VER_GET_NEUTRAL 0x02
#define FILE_VER_GET_PREFETCHED 0x04
  typedef struct tagVS_FIXEDFILEINFO
  {
    DWORD 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;
  } VS_FIXEDFILEINFO;
#define VerFindFile __MINGW_NAME_AW(VerFindFile)
#define VerInstallFile __MINGW_NAME_AW(VerInstallFile)
#define GetFileVersionInfoSize __MINGW_NAME_AW(GetFileVersionInfoSize)
#define GetFileVersionInfoSizeEx __MINGW_NAME_AW(GetFileVersionInfoSizeEx)
#define GetFileVersionInfo __MINGW_NAME_AW(GetFileVersionInfo)
#define GetFileVersionInfoEx __MINGW_NAME_AW(GetFileVersionInfoEx)
#define VerLanguageName __MINGW_NAME_AW(VerLanguageName)
#define VerQueryValue __MINGW_NAME_AW(VerQueryValue)
  DWORD __attribute__((__stdcall__)) VerFindFileA(DWORD uFlags,LPSTR szFileName,LPSTR szWinDir,LPSTR szAppDir,LPSTR szCurDir,PUINT lpuCurDirLen,LPSTR szDestDir,PUINT lpuDestDirLen);
  DWORD __attribute__((__stdcall__)) VerFindFileW(DWORD uFlags,LPWSTR szFileName,LPWSTR szWinDir,LPWSTR szAppDir,LPWSTR szCurDir,PUINT lpuCurDirLen,LPWSTR szDestDir,PUINT lpuDestDirLen);
  DWORD __attribute__((__stdcall__)) VerInstallFileA(DWORD uFlags,LPSTR szSrcFileName,LPSTR szDestFileName,LPSTR szSrcDir,LPSTR szDestDir,LPSTR szCurDir,LPSTR szTmpFile,PUINT lpuTmpFileLen);
  DWORD __attribute__((__stdcall__)) VerInstallFileW(DWORD uFlags,LPWSTR szSrcFileName,LPWSTR szDestFileName,LPWSTR szSrcDir,LPWSTR szDestDir,LPWSTR szCurDir,LPWSTR szTmpFile,PUINT lpuTmpFileLen);
  DWORD __attribute__((__stdcall__)) GetFileVersionInfoSizeA(LPCSTR lptstrFilename,LPDWORD lpdwHandle);
  DWORD __attribute__((__stdcall__)) GetFileVersionInfoSizeW(LPCWSTR lptstrFilename,LPDWORD lpdwHandle);
  DWORD __attribute__((__stdcall__)) GetFileVersionInfoSizeExA(DWORD dwFlags, LPCSTR lpwstrFilename, LPDWORD lpdwHandle);
  DWORD __attribute__((__stdcall__)) GetFileVersionInfoSizeExW(DWORD dwFlags, LPCWSTR lpwstrFilename, LPDWORD lpdwHandle);
  WINBOOL __attribute__((__stdcall__)) GetFileVersionInfoA(LPCSTR lptstrFilename,DWORD dwHandle,DWORD dwLen,LPVOID lpData);
  WINBOOL __attribute__((__stdcall__)) GetFileVersionInfoW(LPCWSTR lptstrFilename,DWORD dwHandle,DWORD dwLen,LPVOID lpData);
  WINBOOL __attribute__((__stdcall__)) GetFileVersionInfoExA(DWORD dwFlags, LPCSTR lpwstrFilename, DWORD dwHandle, DWORD dwLen, LPVOID lpData);
  WINBOOL __attribute__((__stdcall__)) GetFileVersionInfoExW(DWORD dwFlags, LPCWSTR lpwstrFilename, DWORD dwHandle, DWORD dwLen, LPVOID lpData);
  DWORD __attribute__((__stdcall__)) VerLanguageNameA(DWORD wLang,LPSTR szLang,DWORD nSize);
  DWORD __attribute__((__stdcall__)) VerLanguageNameW(DWORD wLang,LPWSTR szLang,DWORD nSize);
  WINBOOL __attribute__((__stdcall__)) VerQueryValueA(LPCVOID pBlock,LPCSTR lpSubBlock,LPVOID *lplpBuffer,PUINT puLen);
  WINBOOL __attribute__((__stdcall__)) VerQueryValueW(LPCVOID pBlock,LPCWSTR lpSubBlock,LPVOID *lplpBuffer,PUINT puLen);
#define _WINREG_ 
#define RRF_RT_REG_NONE 0x00000001
#define RRF_RT_REG_SZ 0x00000002
#define RRF_RT_REG_EXPAND_SZ 0x00000004
#define RRF_RT_REG_BINARY 0x00000008
#define RRF_RT_REG_DWORD 0x00000010
#define RRF_RT_REG_MULTI_SZ 0x00000020
#define RRF_RT_REG_QWORD 0x00000040
#define RRF_RT_DWORD (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD)
#define RRF_RT_QWORD (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD)
#define RRF_RT_ANY 0x0000ffff
#define RRF_NOEXPAND 0x10000000
#define RRF_ZEROONFAILURE 0x20000000
#define REG_PROCESS_APPKEY 0x00000001
  typedef ACCESS_MASK REGSAM;
  typedef LONG LSTATUS;
#define HKEY_CLASSES_ROOT ((HKEY) (ULONG_PTR)((LONG)0x80000000))
#define HKEY_CURRENT_USER ((HKEY) (ULONG_PTR)((LONG)0x80000001))
#define HKEY_LOCAL_MACHINE ((HKEY) (ULONG_PTR)((LONG)0x80000002))
#define HKEY_USERS ((HKEY) (ULONG_PTR)((LONG)0x80000003))
#define HKEY_PERFORMANCE_DATA ((HKEY) (ULONG_PTR)((LONG)0x80000004))
#define HKEY_PERFORMANCE_TEXT ((HKEY) (ULONG_PTR)((LONG)0x80000050))
#define HKEY_PERFORMANCE_NLSTEXT ((HKEY) (ULONG_PTR)((LONG)0x80000060))
#define HKEY_CURRENT_CONFIG ((HKEY) (ULONG_PTR)((LONG)0x80000005))
#define HKEY_DYN_DATA ((HKEY) (ULONG_PTR)((LONG)0x80000006))
#define HKEY_CURRENT_USER_LOCAL_SETTINGS ((HKEY) (ULONG_PTR)((LONG)0x80000007))
#define _PROVIDER_STRUCTS_DEFINED 
#define PROVIDER_KEEPS_VALUE_LENGTH 0x1
  struct val_context {
    int valuelen;
    LPVOID value_context;
    LPVOID val_buff_ptr;
  };
  typedef struct val_context *PVALCONTEXT;
  typedef struct pvalueA {
    LPSTR pv_valuename;
    int pv_valuelen;
    LPVOID pv_value_context;
    DWORD pv_type;
  }PVALUEA,*PPVALUEA;
  typedef struct pvalueW {
    LPWSTR pv_valuename;
    int pv_valuelen;
    LPVOID pv_value_context;
    DWORD pv_type;
  }PVALUEW,*PPVALUEW;
  typedef PVALUEA PVALUE;
  typedef PPVALUEA PPVALUE;
  typedef DWORD __attribute__((__cdecl__)) QUERYHANDLER(LPVOID keycontext,PVALCONTEXT val_list,DWORD num_vals,LPVOID outputbuffer,DWORD *total_outlen,DWORD input_blen);
  typedef QUERYHANDLER *PQUERYHANDLER;
  typedef struct provider_info {
    PQUERYHANDLER pi_R0_1val;
    PQUERYHANDLER pi_R0_allvals;
    PQUERYHANDLER pi_R3_1val;
    PQUERYHANDLER pi_R3_allvals;
    DWORD pi_flags;
    LPVOID pi_key_context;
  } REG_PROVIDER;
  typedef struct provider_info *PPROVIDER;
  typedef struct value_entA {
    LPSTR ve_valuename;
    DWORD ve_valuelen;
    DWORD_PTR ve_valueptr;
    DWORD ve_type;
  } VALENTA,*PVALENTA;
  typedef struct value_entW {
    LPWSTR ve_valuename;
    DWORD ve_valuelen;
    DWORD_PTR ve_valueptr;
    DWORD ve_type;
  } VALENTW,*PVALENTW;
  typedef VALENTA VALENT;
  typedef PVALENTA PVALENT;
#define WIN31_CLASS NULL
#define REG_MUI_STRING_TRUNCATE 0x00000001
#define REG_SECURE_CONNECTION 1
#define RegConnectRegistry __MINGW_NAME_AW(RegConnectRegistry)
#define RegConnectRegistryEx __MINGW_NAME_AW(RegConnectRegistryEx)
#define RegCreateKey __MINGW_NAME_AW(RegCreateKey)
#define RegCreateKeyEx __MINGW_NAME_AW(RegCreateKeyEx)
#define RegDeleteKey __MINGW_NAME_AW(RegDeleteKey)
#define RegDeleteKeyEx __MINGW_NAME_AW(RegDeleteKeyEx)
#define RegDeleteValue __MINGW_NAME_AW(RegDeleteValue)
#define RegEnumKey __MINGW_NAME_AW(RegEnumKey)
#define RegEnumKeyEx __MINGW_NAME_AW(RegEnumKeyEx)
#define RegEnumValue __MINGW_NAME_AW(RegEnumValue)
#define RegLoadKey __MINGW_NAME_AW(RegLoadKey)
#define RegOpenKey __MINGW_NAME_AW(RegOpenKey)
#define RegOpenKeyEx __MINGW_NAME_AW(RegOpenKeyEx)
#define RegQueryInfoKey __MINGW_NAME_AW(RegQueryInfoKey)
#define RegQueryValue __MINGW_NAME_AW(RegQueryValue)
#define RegQueryMultipleValues __MINGW_NAME_AW(RegQueryMultipleValues)
#define RegQueryValueEx __MINGW_NAME_AW(RegQueryValueEx)
#define RegReplaceKey __MINGW_NAME_AW(RegReplaceKey)
#define RegRestoreKey __MINGW_NAME_AW(RegRestoreKey)
#define RegSaveKey __MINGW_NAME_AW(RegSaveKey)
#define RegSetValue __MINGW_NAME_AW(RegSetValue)
#define RegSetValueEx __MINGW_NAME_AW(RegSetValueEx)
#define RegUnLoadKey __MINGW_NAME_AW(RegUnLoadKey)
#define RegGetValue __MINGW_NAME_AW(RegGetValue)
#define InitiateSystemShutdown __MINGW_NAME_AW(InitiateSystemShutdown)
#define AbortSystemShutdown __MINGW_NAME_AW(AbortSystemShutdown)
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegCloseKey(HKEY hKey);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegOverridePredefKey(HKEY hKey,HKEY hNewHKey);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegOpenUserClassesRoot(HANDLE hToken,DWORD dwOptions,REGSAM samDesired,PHKEY phkResult);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegOpenCurrentUser(REGSAM samDesired,PHKEY phkResult);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDisablePredefinedCache(void);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDisablePredefinedCacheEx(void);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegConnectRegistryA(LPCSTR lpMachineName,HKEY hKey,PHKEY phkResult);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegConnectRegistryW(LPCWSTR lpMachineName,HKEY hKey,PHKEY phkResult);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegConnectRegistryExA(LPCSTR lpMachineName,HKEY hKey,ULONG Flags,PHKEY phkResult);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegConnectRegistryExW(LPCWSTR lpMachineName,HKEY hKey,ULONG Flags,PHKEY phkResult);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegCreateKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY phkResult);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegCreateKeyW(HKEY hKey,LPCWSTR lpSubKey,PHKEY phkResult);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegCreateKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD Reserved,LPSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegCreateKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD Reserved,LPWSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDeleteKeyA(HKEY hKey,LPCSTR lpSubKey);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDeleteKeyW(HKEY hKey,LPCWSTR lpSubKey);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDeleteKeyExA(HKEY hKey,LPCSTR lpSubKey,REGSAM samDesired,DWORD Reserved);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDeleteKeyExW(HKEY hKey,LPCWSTR lpSubKey,REGSAM samDesired,DWORD Reserved);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDisableReflectionKey(HKEY hBase);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegEnableReflectionKey(HKEY hBase);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegQueryReflectionKey(HKEY hBase,WINBOOL *bIsReflectionDisabled);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDeleteValueA(HKEY hKey,LPCSTR lpValueName);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDeleteValueW(HKEY hKey,LPCWSTR lpValueName);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegEnumKeyA(HKEY hKey,DWORD dwIndex,LPSTR lpName,DWORD cchName);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegEnumKeyW(HKEY hKey,DWORD dwIndex,LPWSTR lpName,DWORD cchName);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegEnumKeyExA(HKEY hKey,DWORD dwIndex,LPSTR lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPSTR lpClass,LPDWORD lpcchClass,PFILETIME lpftLastWriteTime);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegEnumKeyExW(HKEY hKey,DWORD dwIndex,LPWSTR lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPWSTR lpClass,LPDWORD lpcchClass,PFILETIME lpftLastWriteTime);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegEnumValueA(HKEY hKey,DWORD dwIndex,LPSTR lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegEnumValueW(HKEY hKey,DWORD dwIndex,LPWSTR lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegFlushKey(HKEY hKey);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegGetKeySecurity(HKEY hKey,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor,LPDWORD lpcbSecurityDescriptor);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegLoadKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpFile);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegLoadKeyW(HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpFile);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegNotifyChangeKeyValue(HKEY hKey,WINBOOL bWatchSubtree,DWORD dwNotifyFilter,HANDLE hEvent,WINBOOL fAsynchronous);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegOpenKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY phkResult);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegOpenKeyW(HKEY hKey,LPCWSTR lpSubKey,PHKEY phkResult);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegOpenKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegOpenKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD ulOptions,REGSAM samDesired,PHKEY phkResult);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegQueryInfoKeyA(HKEY hKey,LPSTR lpClass,LPDWORD lpcchClass,LPDWORD lpReserved,LPDWORD lpcSubKeys,LPDWORD lpcbMaxSubKeyLen,LPDWORD lpcbMaxClassLen,LPDWORD lpcValues,LPDWORD lpcbMaxValueNameLen,LPDWORD lpcbMaxValueLen,LPDWORD lpcbSecurityDescriptor,PFILETIME lpftLastWriteTime);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegQueryInfoKeyW(HKEY hKey,LPWSTR lpClass,LPDWORD lpcchClass,LPDWORD lpReserved,LPDWORD lpcSubKeys,LPDWORD lpcbMaxSubKeyLen,LPDWORD lpcbMaxClassLen,LPDWORD lpcValues,LPDWORD lpcbMaxValueNameLen,LPDWORD lpcbMaxValueLen,LPDWORD lpcbSecurityDescriptor,PFILETIME lpftLastWriteTime);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegQueryValueA(HKEY hKey,LPCSTR lpSubKey,LPSTR lpData,PLONG lpcbData);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegQueryValueW(HKEY hKey,LPCWSTR lpSubKey,LPWSTR lpData,PLONG lpcbData);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegQueryMultipleValuesA(HKEY hKey,PVALENTA val_list,DWORD num_vals,LPSTR lpValueBuf,LPDWORD ldwTotsize);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegQueryMultipleValuesW(HKEY hKey,PVALENTW val_list,DWORD num_vals,LPWSTR lpValueBuf,LPDWORD ldwTotsize);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegQueryValueExA(HKEY hKey,LPCSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegQueryValueExW(HKEY hKey,LPCWSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegReplaceKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpNewFile,LPCSTR lpOldFile);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegReplaceKeyW(HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpNewFile,LPCWSTR lpOldFile);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegRestoreKeyA(HKEY hKey,LPCSTR lpFile,DWORD dwFlags);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegRestoreKeyW(HKEY hKey,LPCWSTR lpFile,DWORD dwFlags);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegSaveKeyA(HKEY hKey,LPCSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegSaveKeyW(HKEY hKey,LPCWSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegSetKeySecurity(HKEY hKey,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegSetValueA(HKEY hKey,LPCSTR lpSubKey,DWORD dwType,LPCSTR lpData,DWORD cbData);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegSetValueW(HKEY hKey,LPCWSTR lpSubKey,DWORD dwType,LPCWSTR lpData,DWORD cbData);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegSetValueExA(HKEY hKey,LPCSTR lpValueName,DWORD Reserved,DWORD dwType,const BYTE *lpData,DWORD cbData);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegSetValueExW(HKEY hKey,LPCWSTR lpValueName,DWORD Reserved,DWORD dwType,const BYTE *lpData,DWORD cbData);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegUnLoadKeyA(HKEY hKey,LPCSTR lpSubKey);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegUnLoadKeyW(HKEY hKey,LPCWSTR lpSubKey);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegGetValueA(HKEY hkey,LPCSTR lpSubKey,LPCSTR lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegGetValueW(HKEY hkey,LPCWSTR lpSubKey,LPCWSTR lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitiateSystemShutdownA(LPSTR lpMachineName,LPSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitiateSystemShutdownW(LPWSTR lpMachineName,LPWSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AbortSystemShutdownA(LPSTR lpMachineName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) AbortSystemShutdownW(LPWSTR lpMachineName);
#define SENTINEL_Reason 
#define SHTDN_REASON_FLAG_COMMENT_REQUIRED 0x01000000
#define SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED 0x02000000
#define SHTDN_REASON_FLAG_CLEAN_UI 0x04000000
#define SHTDN_REASON_FLAG_DIRTY_UI 0x08000000
#define SHTDN_REASON_FLAG_USER_DEFINED 0x40000000
#define SHTDN_REASON_FLAG_PLANNED 0x80000000
#define SHTDN_REASON_MAJOR_OTHER 0x00000000
#define SHTDN_REASON_MAJOR_NONE 0x00000000
#define SHTDN_REASON_MAJOR_HARDWARE 0x00010000
#define SHTDN_REASON_MAJOR_OPERATINGSYSTEM 0x00020000
#define SHTDN_REASON_MAJOR_SOFTWARE 0x00030000
#define SHTDN_REASON_MAJOR_APPLICATION 0x00040000
#define SHTDN_REASON_MAJOR_SYSTEM 0x00050000
#define SHTDN_REASON_MAJOR_POWER 0x00060000
#define SHTDN_REASON_MAJOR_LEGACY_API 0x00070000
#define SHTDN_REASON_MINOR_OTHER 0x00000000
#define SHTDN_REASON_MINOR_NONE 0x000000ff
#define SHTDN_REASON_MINOR_MAINTENANCE 0x00000001
#define SHTDN_REASON_MINOR_INSTALLATION 0x00000002
#define SHTDN_REASON_MINOR_UPGRADE 0x00000003
#define SHTDN_REASON_MINOR_RECONFIG 0x00000004
#define SHTDN_REASON_MINOR_HUNG 0x00000005
#define SHTDN_REASON_MINOR_UNSTABLE 0x00000006
#define SHTDN_REASON_MINOR_DISK 0x00000007
#define SHTDN_REASON_MINOR_PROCESSOR 0x00000008
#define SHTDN_REASON_MINOR_NETWORKCARD 0x00000009
#define SHTDN_REASON_MINOR_POWER_SUPPLY 0x0000000a
#define SHTDN_REASON_MINOR_CORDUNPLUGGED 0x0000000b
#define SHTDN_REASON_MINOR_ENVIRONMENT 0x0000000c
#define SHTDN_REASON_MINOR_HARDWARE_DRIVER 0x0000000d
#define SHTDN_REASON_MINOR_OTHERDRIVER 0x0000000e
#define SHTDN_REASON_MINOR_BLUESCREEN 0x0000000F
#define SHTDN_REASON_MINOR_SERVICEPACK 0x00000010
#define SHTDN_REASON_MINOR_HOTFIX 0x00000011
#define SHTDN_REASON_MINOR_SECURITYFIX 0x00000012
#define SHTDN_REASON_MINOR_SECURITY 0x00000013
#define SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY 0x00000014
#define SHTDN_REASON_MINOR_WMI 0x00000015
#define SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL 0x00000016
#define SHTDN_REASON_MINOR_HOTFIX_UNINSTALL 0x00000017
#define SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL 0x00000018
#define SHTDN_REASON_MINOR_MMC 0x00000019
#define SHTDN_REASON_MINOR_SYSTEMRESTORE 0x0000001a
#define SHTDN_REASON_MINOR_TERMSRV 0x00000020
#define SHTDN_REASON_MINOR_DC_PROMOTION 0x00000021
#define SHTDN_REASON_MINOR_DC_DEMOTION 0x00000022
#define SHTDN_REASON_UNKNOWN SHTDN_REASON_MINOR_NONE
#define SHTDN_REASON_LEGACY_API (SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED)
#define SHTDN_REASON_VALID_BIT_MASK 0xc0ffffff
#define PCLEANUI (SHTDN_REASON_FLAG_PLANNED | SHTDN_REASON_FLAG_CLEAN_UI)
#define UCLEANUI (SHTDN_REASON_FLAG_CLEAN_UI)
#define PDIRTYUI (SHTDN_REASON_FLAG_PLANNED | SHTDN_REASON_FLAG_DIRTY_UI)
#define UDIRTYUI (SHTDN_REASON_FLAG_DIRTY_UI)
#define MAX_REASON_NAME_LEN 64
#define MAX_REASON_DESC_LEN 256
#define MAX_REASON_BUGID_LEN 32
#define MAX_REASON_COMMENT_LEN 512
#define SHUTDOWN_TYPE_LEN 32
#define POLICY_SHOWREASONUI_NEVER 0
#define POLICY_SHOWREASONUI_ALWAYS 1
#define POLICY_SHOWREASONUI_WORKSTATIONONLY 2
#define POLICY_SHOWREASONUI_SERVERONLY 3
#define SNAPSHOT_POLICY_NEVER 0
#define SNAPSHOT_POLICY_ALWAYS 1
#define SNAPSHOT_POLICY_UNPLANNED 2
#define MAX_NUM_REASONS 256
#define REASON_SWINSTALL SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_INSTALLATION
#define REASON_HWINSTALL SHTDN_REASON_MAJOR_HARDWARE|SHTDN_REASON_MINOR_INSTALLATION
#define REASON_SERVICEHANG SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_HUNG
#define REASON_UNSTABLE SHTDN_REASON_MAJOR_SYSTEM|SHTDN_REASON_MINOR_UNSTABLE
#define REASON_SWHWRECONF SHTDN_REASON_MAJOR_SOFTWARE|SHTDN_REASON_MINOR_RECONFIG
#define REASON_OTHER SHTDN_REASON_MAJOR_OTHER|SHTDN_REASON_MINOR_OTHER
#define REASON_UNKNOWN SHTDN_REASON_UNKNOWN
#define REASON_LEGACY_API SHTDN_REASON_LEGACY_API
#define REASON_PLANNED_FLAG SHTDN_REASON_FLAG_PLANNED
#define MAX_SHUTDOWN_TIMEOUT (10*365*24*60*60)
#define InitiateSystemShutdownEx __MINGW_NAME_AW(InitiateSystemShutdownEx)
#define RegSaveKeyEx __MINGW_NAME_AW(RegSaveKeyEx)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitiateSystemShutdownExA(LPSTR lpMachineName,LPSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown,DWORD dwReason);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitiateSystemShutdownExW(LPWSTR lpMachineName,LPWSTR lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL bRebootAfterShutdown,DWORD dwReason);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegSaveKeyExA(HKEY hKey,LPCSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD Flags);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegSaveKeyExW(HKEY hKey,LPCWSTR lpFile,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD Flags);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) Wow64Win32ApiEntry (DWORD dwFuncNumber,DWORD dwFlag,DWORD dwRes);
#define RegCopyTree __MINGW_NAME_AW(RegCopyTree)
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegCopyTreeA(
  HKEY hKeySrc,
  LPCSTR lpSubKey,
  HKEY hKeyDest
);
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegCopyTreeW(
  HKEY hKeySrc,
  LPCWSTR lpSubKey,
  HKEY hKeyDest
);
#define RegCreateKeyTransacted __MINGW_NAME_AW(RegCreateKeyTransacted)
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegCreateKeyTransactedA(
  HKEY hKey,
  LPCSTR lpSubKey,
  DWORD Reserved,
  LPSTR lpClass,
  DWORD dwOptions,
  REGSAM samDesired,
  const LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  PHKEY phkResult,
  LPDWORD lpdwDisposition,
  HANDLE hTransaction,
  PVOID pExtendedParemeter
);
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegCreateKeyTransactedW(
  HKEY hKey,
  LPCWSTR lpSubKey,
  DWORD Reserved,
  LPWSTR lpClass,
  DWORD dwOptions,
  REGSAM samDesired,
  const LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  PHKEY phkResult,
  LPDWORD lpdwDisposition,
  HANDLE hTransaction,
  PVOID pExtendedParemeter
);
#define RegDeleteKeyTransacted __MINGW_NAME_AW(RegDeleteKeyTransacted)
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDeleteKeyTransactedA(
  HKEY hKey,
  LPCSTR lpSubKey,
  REGSAM samDesired,
  DWORD Reserved,
  HANDLE hTransaction,
  PVOID pExtendedParameter
);
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDeleteKeyTransactedW(
  HKEY hKey,
  LPCWSTR lpSubKey,
  REGSAM samDesired,
  DWORD Reserved,
  HANDLE hTransaction,
  PVOID pExtendedParameter
);
#define RegDeleteKeyValue __MINGW_NAME_AW(RegDeleteKeyValue)
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDeleteKeyValueA(
  HKEY hKey,
  LPCSTR lpSubKey,
  LPCSTR lpValueName
);
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDeleteKeyValueW(
  HKEY hKey,
  LPCWSTR lpSubKey,
  LPCWSTR lpValueName
);
#define RegDeleteTree __MINGW_NAME_AW(RegDeleteTree)
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDeleteTreeA(
  HKEY hKey,
  LPCSTR lpSubKey
);
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegDeleteTreeW(
  HKEY hKey,
  LPCWSTR lpSubKey
);
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegLoadAppKeyA(
  LPCSTR lpFile,
  PHKEY phkResult,
  REGSAM samDesired,
  DWORD dwOptions,
  DWORD Reserved
);
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegLoadAppKeyW(
  LPCWSTR lpFile,
  PHKEY phkResult,
  REGSAM samDesired,
  DWORD dwOptions,
  DWORD Reserved
);
#define RegLoadAppKey __MINGW_NAME_AW(RegLoadAppKey)
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegLoadMUIStringA(HKEY hKey, LPCSTR pszValue, LPSTR pszOutBuf, DWORD cbOutBuf, LPDWORD pcbData, DWORD Flags, LPCSTR pszDirectory);
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegLoadMUIStringW(HKEY hKey, LPCWSTR pszValue, LPWSTR pszOutBuf, DWORD cbOutBuf, LPDWORD pcbData, DWORD Flags, LPCWSTR pszDirectory);
#define RegLoadMUIString __MINGW_NAME_AW(RegLoadMUIString)
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegOpenKeyTransactedA(
  HKEY hKey,
  LPCSTR lpSubKey,
  DWORD ulOptions,
  REGSAM samDesired,
  PHKEY phkResult,
  HANDLE hTransaction,
  PVOID pExtendedParameter
);
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegOpenKeyTransactedW(
  HKEY hKey,
  LPCWSTR lpSubKey,
  DWORD ulOptions,
  REGSAM samDesired,
  PHKEY phkResult,
  HANDLE hTransaction,
  PVOID pExtendedParameter
);
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegRenameKey(
  HKEY hKey,
  LPCWSTR lpSubKeyName,
  LPCWSTR lpNewKeyName);
#define RegOpenKeyTransacted __MINGW_NAME_AW(RegOpenKeyTransacted)
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegSetKeyValueA(
  HKEY hKey,
  LPCSTR lpSubKey,
  LPCSTR lpValueName,
  DWORD dwType,
  LPCVOID lpData,
  DWORD cbData
);
__attribute__((dllimport)) LONG __attribute__((__stdcall__)) RegSetKeyValueW(
  HKEY hKey,
  LPCWSTR lpSubKey,
  LPCWSTR lpValueName,
  DWORD dwType,
  LPCVOID lpData,
  DWORD cbData
);
#define RegSetKeyValue __MINGW_NAME_AW(RegSetKeyValue)
#define SHUTDOWN_FORCE_OTHERS 0x00000001
#define SHUTDOWN_FORCE_SELF 0x00000002
#define SHUTDOWN_RESTART 0x00000004
#define SHUTDOWN_POWEROFF 0x00000008
#define SHUTDOWN_NOREBOOT 0x00000010
#define SHUTDOWN_GRACE_OVERRIDE 0x00000020
#define SHUTDOWN_INSTALL_UPDATES 0x00000040
#define SHUTDOWN_RESTARTAPPS 0x00000080
#define SHUTDOWN_SKIP_SVC_PRESHUTDOWN 0x00000100
#define SHUTDOWN_HYBRID 0x00000200
#define SHUTDOWN_RESTART_BOOTOPTIONS 0x00000400
#define SHUTDOWN_SOFT_REBOOT 0x00000800
#define SHUTDOWN_MOBILE_UI 0x00001000
#define SHUTDOWN_ARSO 0x00002000
__attribute__((dllimport)) DWORD __attribute__((__stdcall__)) InitiateShutdownA(
  LPSTR lpMachineName,
  LPSTR lpMessage,
  DWORD dwGracePeriod,
  DWORD dwShutdownFlags,
  DWORD dwReason
);
__attribute__((dllimport)) DWORD __attribute__((__stdcall__)) InitiateShutdownW(
  LPWSTR lpMachineName,
  LPWSTR lpMessage,
  DWORD dwGracePeriod,
  DWORD dwShutdownFlags,
  DWORD dwReason
);
#define InitiateShutdown __MINGW_NAME_AW(InitiateShutdown)
__attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CheckForHiberboot(
  PBOOLEAN pHiberboot,
  BOOLEAN bClearFlag
);
#define _WINNETWK_ 
#define _WNNC_ 
#define WNNC_NET_MSNET 0x00010000
#define WNNC_NET_LANMAN WNNC_NET_SMB
#define WNNC_NET_SMB 0x00020000
#define WNNC_NET_NETWARE 0x00030000
#define WNNC_NET_VINES 0x00040000
#define WNNC_NET_10NET 0x00050000
#define WNNC_NET_LOCUS 0x00060000
#define WNNC_NET_SUN_PC_NFS 0x00070000
#define WNNC_NET_LANSTEP 0x00080000
#define WNNC_NET_9TILES 0x00090000
#define WNNC_NET_LANTASTIC 0x000a0000
#define WNNC_NET_AS400 0x000b0000
#define WNNC_NET_FTP_NFS 0x000c0000
#define WNNC_NET_PATHWORKS 0x000d0000
#define WNNC_NET_LIFENET 0x000e0000
#define WNNC_NET_POWERLAN 0x000f0000
#define WNNC_NET_BWNFS 0x00100000
#define WNNC_NET_COGENT 0x00110000
#define WNNC_NET_FARALLON 0x00120000
#define WNNC_NET_APPLETALK 0x00130000
#define WNNC_NET_INTERGRAPH 0x00140000
#define WNNC_NET_SYMFONET 0x00150000
#define WNNC_NET_CLEARCASE 0x00160000
#define WNNC_NET_FRONTIER 0x00170000
#define WNNC_NET_BMC 0x00180000
#define WNNC_NET_DCE 0x00190000
#define WNNC_NET_AVID 0x001a0000
#define WNNC_NET_DOCUSPACE 0x001b0000
#define WNNC_NET_MANGOSOFT 0x001c0000
#define WNNC_NET_SERNET 0x001d0000
#define WNNC_NET_RIVERFRONT1 0x001e0000
#define WNNC_NET_RIVERFRONT2 0x001f0000
#define WNNC_NET_DECORB 0x00200000
#define WNNC_NET_PROTSTOR 0x00210000
#define WNNC_NET_FJ_REDIR 0x00220000
#define WNNC_NET_DISTINCT 0x00230000
#define WNNC_NET_TWINS 0x00240000
#define WNNC_NET_RDR2SAMPLE 0x00250000
#define WNNC_NET_CSC 0x00260000
#define WNNC_NET_3IN1 0x00270000
#define WNNC_NET_EXTENDNET 0x00290000
#define WNNC_NET_STAC 0x002a0000
#define WNNC_NET_FOXBAT 0x002b0000
#define WNNC_NET_YAHOO 0x002c0000
#define WNNC_NET_EXIFS 0x002d0000
#define WNNC_NET_DAV 0x002e0000
#define WNNC_NET_KNOWARE 0x002f0000
#define WNNC_NET_OBJECT_DIRE 0x00300000
#define WNNC_NET_MASFAX 0x00310000
#define WNNC_NET_HOB_NFS 0x00320000
#define WNNC_NET_SHIVA 0x00330000
#define WNNC_NET_IBMAL 0x00340000
#define WNNC_NET_LOCK 0x00350000
#define WNNC_NET_TERMSRV 0x00360000
#define WNNC_NET_SRT 0x00370000
#define WNNC_NET_QUINCY 0x00380000
#define WNNC_NET_OPENAFS 0x00390000
#define WNNC_NET_AVID1 0x003a0000
#define WNNC_NET_DFS 0x003b0000
#define WNNC_NET_KWNP 0x003c0000
#define WNNC_NET_ZENWORKS 0x003d0000
#define WNNC_NET_DRIVEONWEB 0x003e0000
#define WNNC_NET_VMWARE 0x003f0000
#define WNNC_NET_RSFX 0x00400000
#define WNNC_NET_MFILES 0x00410000
#define WNNC_NET_MS_NFS 0x00420000
#define WNNC_NET_GOOGLE 0x00430000
#define WNNC_NET_NDFS 0x00440000
#define WNNC_CRED_MANAGER 0xffff0000
#define RESOURCE_CONNECTED 0x00000001
#define RESOURCE_GLOBALNET 0x00000002
#define RESOURCE_REMEMBERED 0x00000003
#define RESOURCE_RECENT 0x00000004
#define RESOURCE_CONTEXT 0x00000005
#define RESOURCETYPE_ANY 0x00000000
#define RESOURCETYPE_DISK 0x00000001
#define RESOURCETYPE_PRINT 0x00000002
#define RESOURCETYPE_RESERVED 0x00000008
#define RESOURCETYPE_UNKNOWN 0xFFFFFFFF
#define RESOURCEUSAGE_CONNECTABLE 0x00000001
#define RESOURCEUSAGE_CONTAINER 0x00000002
#define RESOURCEUSAGE_NOLOCALDEVICE 0x00000004
#define RESOURCEUSAGE_SIBLING 0x00000008
#define RESOURCEUSAGE_ATTACHED 0x00000010
#define RESOURCEUSAGE_ALL (RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED)
#define RESOURCEUSAGE_RESERVED 0x80000000
#define RESOURCEDISPLAYTYPE_GENERIC 0x00000000
#define RESOURCEDISPLAYTYPE_DOMAIN 0x00000001
#define RESOURCEDISPLAYTYPE_SERVER 0x00000002
#define RESOURCEDISPLAYTYPE_SHARE 0x00000003
#define RESOURCEDISPLAYTYPE_FILE 0x00000004
#define RESOURCEDISPLAYTYPE_GROUP 0x00000005
#define RESOURCEDISPLAYTYPE_NETWORK 0x00000006
#define RESOURCEDISPLAYTYPE_ROOT 0x00000007
#define RESOURCEDISPLAYTYPE_SHAREADMIN 0x00000008
#define RESOURCEDISPLAYTYPE_DIRECTORY 0x00000009
#define RESOURCEDISPLAYTYPE_TREE 0x0000000a
#define RESOURCEDISPLAYTYPE_NDSCONTAINER 0x0000000b
  typedef struct _NETRESOURCEA {
    DWORD dwScope;
    DWORD dwType;
    DWORD dwDisplayType;
    DWORD dwUsage;
    LPSTR lpLocalName;
    LPSTR lpRemoteName;
    LPSTR lpComment;
    LPSTR lpProvider;
  } NETRESOURCEA,*LPNETRESOURCEA;
  typedef struct _NETRESOURCEW {
    DWORD dwScope;
    DWORD dwType;
    DWORD dwDisplayType;
    DWORD dwUsage;
    LPWSTR lpLocalName;
    LPWSTR lpRemoteName;
    LPWSTR lpComment;
    LPWSTR lpProvider;
  } NETRESOURCEW,*LPNETRESOURCEW;
  typedef NETRESOURCEA NETRESOURCE;
  typedef LPNETRESOURCEA LPNETRESOURCE;
#define NETPROPERTY_PERSISTENT 1
#define CONNECT_UPDATE_PROFILE 0x00000001
#define CONNECT_UPDATE_RECENT 0x00000002
#define CONNECT_TEMPORARY 0x00000004
#define CONNECT_INTERACTIVE 0x00000008
#define CONNECT_PROMPT 0x00000010
#define CONNECT_NEED_DRIVE 0x00000020
#define CONNECT_REFCOUNT 0x00000040
#define CONNECT_REDIRECT 0x00000080
#define CONNECT_LOCALDRIVE 0x00000100
#define CONNECT_CURRENT_MEDIA 0x00000200
#define CONNECT_DEFERRED 0x00000400
#define CONNECT_RESERVED 0xFF000000
#define CONNECT_COMMANDLINE 0x00000800
#define CONNECT_CMD_SAVECRED 0x00001000
#define CONNECT_CRED_RESET 0x00002000
#define WNetAddConnection __MINGW_NAME_AW(WNetAddConnection)
#define WNetAddConnection2 __MINGW_NAME_AW(WNetAddConnection2)
#define WNetAddConnection3 __MINGW_NAME_AW(WNetAddConnection3)
#define WNetCancelConnection __MINGW_NAME_AW(WNetCancelConnection)
#define WNetCancelConnection2 __MINGW_NAME_AW(WNetCancelConnection2)
#define WNetGetConnection __MINGW_NAME_AW(WNetGetConnection)
#define WNetRestoreConnection __MINGW_NAME_AW(WNetRestoreConnection)
#define WNetUseConnection __MINGW_NAME_AW(WNetUseConnection)
  DWORD __attribute__((__stdcall__)) WNetAddConnectionA(LPCSTR lpRemoteName,LPCSTR lpPassword,LPCSTR lpLocalName);
  DWORD __attribute__((__stdcall__)) WNetAddConnectionW(LPCWSTR lpRemoteName,LPCWSTR lpPassword,LPCWSTR lpLocalName);
  DWORD __attribute__((__stdcall__)) WNetAddConnection2A(LPNETRESOURCEA lpNetResource,LPCSTR lpPassword,LPCSTR lpUserName,DWORD dwFlags);
  DWORD __attribute__((__stdcall__)) WNetAddConnection2W(LPNETRESOURCEW lpNetResource,LPCWSTR lpPassword,LPCWSTR lpUserName,DWORD dwFlags);
  DWORD __attribute__((__stdcall__)) WNetAddConnection3A(HWND hwndOwner,LPNETRESOURCEA lpNetResource,LPCSTR lpPassword,LPCSTR lpUserName,DWORD dwFlags);
  DWORD __attribute__((__stdcall__)) WNetAddConnection3W(HWND hwndOwner,LPNETRESOURCEW lpNetResource,LPCWSTR lpPassword,LPCWSTR lpUserName,DWORD dwFlags);
  DWORD __attribute__((__stdcall__)) WNetCancelConnectionA(LPCSTR lpName,WINBOOL fForce);
  DWORD __attribute__((__stdcall__)) WNetCancelConnectionW(LPCWSTR lpName,WINBOOL fForce);
  DWORD __attribute__((__stdcall__)) WNetCancelConnection2A(LPCSTR lpName,DWORD dwFlags,WINBOOL fForce);
  DWORD __attribute__((__stdcall__)) WNetCancelConnection2W(LPCWSTR lpName,DWORD dwFlags,WINBOOL fForce);
  DWORD __attribute__((__stdcall__)) WNetGetConnectionA(LPCSTR lpLocalName,LPSTR lpRemoteName,LPDWORD lpnLength);
  DWORD __attribute__((__stdcall__)) WNetGetConnectionW(LPCWSTR lpLocalName,LPWSTR lpRemoteName,LPDWORD lpnLength);
  DWORD __attribute__((__stdcall__)) WNetRestoreConnectionA(HWND hwndParent,LPCSTR lpDevice);
  DWORD __attribute__((__stdcall__)) WNetUseConnectionA(HWND hwndOwner,LPNETRESOURCEA lpNetResource,LPCSTR lpPassword,LPCSTR lpUserID,DWORD dwFlags,LPSTR lpAccessName,LPDWORD lpBufferSize,LPDWORD lpResult);
  DWORD __attribute__((__stdcall__)) WNetUseConnectionW(HWND hwndOwner,LPNETRESOURCEW lpNetResource,LPCWSTR lpPassword,LPCWSTR lpUserID,DWORD dwFlags,LPWSTR lpAccessName,LPDWORD lpBufferSize,LPDWORD lpResult);
  DWORD __attribute__((__stdcall__)) WNetConnectionDialog(HWND hwnd,DWORD dwType);
  DWORD __attribute__((__stdcall__)) WNetDisconnectDialog(HWND hwnd,DWORD dwType);
  DWORD __attribute__((__stdcall__)) WNetRestoreSingleConnectionW(HWND hwndParent, LPCWSTR lpDevice, WINBOOL fUseUI);
  typedef struct _CONNECTDLGSTRUCTA {
    DWORD cbStructure;
    HWND hwndOwner;
    LPNETRESOURCEA lpConnRes;
    DWORD dwFlags;
    DWORD dwDevNum;
  } CONNECTDLGSTRUCTA,*LPCONNECTDLGSTRUCTA;
  typedef struct _CONNECTDLGSTRUCTW {
    DWORD cbStructure;
    HWND hwndOwner;
    LPNETRESOURCEW lpConnRes;
    DWORD dwFlags;
    DWORD dwDevNum;
  } CONNECTDLGSTRUCTW,*LPCONNECTDLGSTRUCTW;
  typedef CONNECTDLGSTRUCTA CONNECTDLGSTRUCT;
  typedef LPCONNECTDLGSTRUCTA LPCONNECTDLGSTRUCT;
#define CONNDLG_RO_PATH 0x00000001
#define CONNDLG_CONN_POINT 0x00000002
#define CONNDLG_USE_MRU 0x00000004
#define CONNDLG_HIDE_BOX 0x00000008
#define CONNDLG_PERSIST 0x00000010
#define CONNDLG_NOT_PERSIST 0x00000020
#define WNetConnectionDialog1 __MINGW_NAME_AW(WNetConnectionDialog1)
  DWORD __attribute__((__stdcall__)) WNetConnectionDialog1A(LPCONNECTDLGSTRUCTA lpConnDlgStruct);
  DWORD __attribute__((__stdcall__)) WNetConnectionDialog1W(LPCONNECTDLGSTRUCTW lpConnDlgStruct);
  typedef struct _DISCDLGSTRUCTA {
    DWORD cbStructure;
    HWND hwndOwner;
    LPSTR lpLocalName;
    LPSTR lpRemoteName;
    DWORD dwFlags;
  } DISCDLGSTRUCTA,*LPDISCDLGSTRUCTA;
  typedef struct _DISCDLGSTRUCTW {
    DWORD cbStructure;
    HWND hwndOwner;
    LPWSTR lpLocalName;
    LPWSTR lpRemoteName;
    DWORD dwFlags;
  } DISCDLGSTRUCTW,*LPDISCDLGSTRUCTW;
  typedef DISCDLGSTRUCTA DISCDLGSTRUCT;
  typedef LPDISCDLGSTRUCTA LPDISCDLGSTRUCT;
#define DISC_UPDATE_PROFILE 0x00000001
#define DISC_NO_FORCE 0x00000040
#define WNetDisconnectDialog1 __MINGW_NAME_AW(WNetDisconnectDialog1)
#define WNetOpenEnum __MINGW_NAME_AW(WNetOpenEnum)
#define WNetEnumResource __MINGW_NAME_AW(WNetEnumResource)
#define WNetGetResourceParent __MINGW_NAME_AW(WNetGetResourceParent)
#define WNetGetResourceInformation __MINGW_NAME_AW(WNetGetResourceInformation)
  DWORD __attribute__((__stdcall__)) WNetDisconnectDialog1A(LPDISCDLGSTRUCTA lpConnDlgStruct);
  DWORD __attribute__((__stdcall__)) WNetDisconnectDialog1W(LPDISCDLGSTRUCTW lpConnDlgStruct);
  DWORD __attribute__((__stdcall__)) WNetOpenEnumA(DWORD dwScope,DWORD dwType,DWORD dwUsage,LPNETRESOURCEA lpNetResource,LPHANDLE lphEnum);
  DWORD __attribute__((__stdcall__)) WNetOpenEnumW(DWORD dwScope,DWORD dwType,DWORD dwUsage,LPNETRESOURCEW lpNetResource,LPHANDLE lphEnum);
  DWORD __attribute__((__stdcall__)) WNetEnumResourceA(HANDLE hEnum,LPDWORD lpcCount,LPVOID lpBuffer,LPDWORD lpBufferSize);
  DWORD __attribute__((__stdcall__)) WNetEnumResourceW(HANDLE hEnum,LPDWORD lpcCount,LPVOID lpBuffer,LPDWORD lpBufferSize);
  DWORD __attribute__((__stdcall__)) WNetCloseEnum(HANDLE hEnum);
  DWORD __attribute__((__stdcall__)) WNetGetResourceParentA(LPNETRESOURCEA lpNetResource,LPVOID lpBuffer,LPDWORD lpcbBuffer);
  DWORD __attribute__((__stdcall__)) WNetGetResourceParentW(LPNETRESOURCEW lpNetResource,LPVOID lpBuffer,LPDWORD lpcbBuffer);
  DWORD __attribute__((__stdcall__)) WNetGetResourceInformationA(LPNETRESOURCEA lpNetResource,LPVOID lpBuffer,LPDWORD lpcbBuffer,LPSTR *lplpSystem);
  DWORD __attribute__((__stdcall__)) WNetGetResourceInformationW(LPNETRESOURCEW lpNetResource,LPVOID lpBuffer,LPDWORD lpcbBuffer,LPWSTR *lplpSystem);
#define UNIVERSAL_NAME_INFO_LEVEL 0x00000001
#define REMOTE_NAME_INFO_LEVEL 0x00000002
  typedef struct _UNIVERSAL_NAME_INFOA {
    LPSTR lpUniversalName;
  } UNIVERSAL_NAME_INFOA,*LPUNIVERSAL_NAME_INFOA;
  typedef struct _UNIVERSAL_NAME_INFOW {
    LPWSTR lpUniversalName;
  } UNIVERSAL_NAME_INFOW,*LPUNIVERSAL_NAME_INFOW;
  typedef UNIVERSAL_NAME_INFOA UNIVERSAL_NAME_INFO;
  typedef LPUNIVERSAL_NAME_INFOA LPUNIVERSAL_NAME_INFO;
  typedef struct _REMOTE_NAME_INFOA {
    LPSTR lpUniversalName;
    LPSTR lpConnectionName;
    LPSTR lpRemainingPath;
  } REMOTE_NAME_INFOA,*LPREMOTE_NAME_INFOA;
  typedef struct _REMOTE_NAME_INFOW {
    LPWSTR lpUniversalName;
    LPWSTR lpConnectionName;
    LPWSTR lpRemainingPath;
  } REMOTE_NAME_INFOW,*LPREMOTE_NAME_INFOW;
  typedef REMOTE_NAME_INFOA REMOTE_NAME_INFO;
  typedef LPREMOTE_NAME_INFOA LPREMOTE_NAME_INFO;
#define WNetGetUniversalName __MINGW_NAME_AW(WNetGetUniversalName)
#define WNetGetUser __MINGW_NAME_AW(WNetGetUser)
#define WNetGetProviderName __MINGW_NAME_AW(WNetGetProviderName)
  DWORD __attribute__((__stdcall__)) WNetGetUniversalNameA(LPCSTR lpLocalPath,DWORD dwInfoLevel,LPVOID lpBuffer,LPDWORD lpBufferSize);
  DWORD __attribute__((__stdcall__)) WNetGetUniversalNameW(LPCWSTR lpLocalPath,DWORD dwInfoLevel,LPVOID lpBuffer,LPDWORD lpBufferSize);
  DWORD __attribute__((__stdcall__)) WNetGetUserA(LPCSTR lpName,LPSTR lpUserName,LPDWORD lpnLength);
  DWORD __attribute__((__stdcall__)) WNetGetUserW(LPCWSTR lpName,LPWSTR lpUserName,LPDWORD lpnLength);
#define WNFMT_MULTILINE 0x01
#define WNFMT_ABBREVIATED 0x02
#define WNFMT_INENUM 0x10
#define WNFMT_CONNECTION 0x20
  DWORD __attribute__((__stdcall__)) WNetGetProviderNameA(DWORD dwNetType,LPSTR lpProviderName,LPDWORD lpBufferSize);
  DWORD __attribute__((__stdcall__)) WNetGetProviderNameW(DWORD dwNetType,LPWSTR lpProviderName,LPDWORD lpBufferSize);
  typedef struct _NETINFOSTRUCT {
    DWORD cbStructure;
    DWORD dwProviderVersion;
    DWORD dwStatus;
    DWORD dwCharacteristics;
    ULONG_PTR dwHandle;
    WORD wNetType;
    DWORD dwPrinters;
    DWORD dwDrives;
  } NETINFOSTRUCT,*LPNETINFOSTRUCT;
#define NETINFO_DLL16 0x00000001
#define NETINFO_DISKRED 0x00000004
#define NETINFO_PRINTERRED 0x00000008
#define WNetGetNetworkInformation __MINGW_NAME_AW(WNetGetNetworkInformation)
  DWORD __attribute__((__stdcall__)) WNetGetNetworkInformationA(LPCSTR lpProvider,LPNETINFOSTRUCT lpNetInfoStruct);
  DWORD __attribute__((__stdcall__)) WNetGetNetworkInformationW(LPCWSTR lpProvider,LPNETINFOSTRUCT lpNetInfoStruct);
  typedef UINT (__attribute__((__stdcall__)) *PFNGETPROFILEPATHA) (LPCSTR pszUsername,LPSTR pszBuffer,UINT cbBuffer);
  typedef UINT (__attribute__((__stdcall__)) *PFNGETPROFILEPATHW) (LPCWSTR pszUsername,LPWSTR pszBuffer,UINT cbBuffer);
#define PFNGETPROFILEPATH __MINGW_NAME_AW(PFNGETPROFILEPATH)
  typedef UINT (__attribute__((__stdcall__)) *PFNRECONCILEPROFILEA) (LPCSTR pszCentralFile,LPCSTR pszLocalFile,DWORD dwFlags);
  typedef UINT (__attribute__((__stdcall__)) *PFNRECONCILEPROFILEW) (LPCWSTR pszCentralFile,LPCWSTR pszLocalFile,DWORD dwFlags);
#define PFNRECONCILEPROFILE __MINGW_NAME_AW(PFNRECONCILEPROFILE)
#define RP_LOGON 0x01
#define RP_INIFILE 0x02
  typedef WINBOOL (__attribute__((__stdcall__)) *PFNPROCESSPOLICIESA) (HWND hwnd,LPCSTR pszPath,LPCSTR pszUsername,LPCSTR pszComputerName,DWORD dwFlags);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFNPROCESSPOLICIESW) (HWND hwnd,LPCWSTR pszPath,LPCWSTR pszUsername,LPCWSTR pszComputerName,DWORD dwFlags);
#define PFNPROCESSPOLICIES __MINGW_NAME_AW(PFNPROCESSPOLICIES)
#define PP_DISPLAYERRORS 0x01
#define WNetGetLastError __MINGW_NAME_AW(WNetGetLastError)
  DWORD __attribute__((__stdcall__)) WNetGetLastErrorA(LPDWORD lpError,LPSTR lpErrorBuf,DWORD nErrorBufSize,LPSTR lpNameBuf,DWORD nNameBufSize);
  DWORD __attribute__((__stdcall__)) WNetGetLastErrorW(LPDWORD lpError,LPWSTR lpErrorBuf,DWORD nErrorBufSize,LPWSTR lpNameBuf,DWORD nNameBufSize);
#define WN_SUCCESS NO_ERROR
#define WN_NO_ERROR NO_ERROR
#define WN_NOT_SUPPORTED ERROR_NOT_SUPPORTED
#define WN_CANCEL ERROR_CANCELLED
#define WN_RETRY ERROR_RETRY
#define WN_NET_ERROR ERROR_UNEXP_NET_ERR
#define WN_MORE_DATA ERROR_MORE_DATA
#define WN_BAD_POINTER ERROR_INVALID_ADDRESS
#define WN_BAD_VALUE ERROR_INVALID_PARAMETER
#define WN_BAD_USER ERROR_BAD_USERNAME
#define WN_BAD_PASSWORD ERROR_INVALID_PASSWORD
#define WN_ACCESS_DENIED ERROR_ACCESS_DENIED
#define WN_FUNCTION_BUSY ERROR_BUSY
#define WN_WINDOWS_ERROR ERROR_UNEXP_NET_ERR
#define WN_OUT_OF_MEMORY ERROR_NOT_ENOUGH_MEMORY
#define WN_NO_NETWORK ERROR_NO_NETWORK
#define WN_EXTENDED_ERROR ERROR_EXTENDED_ERROR
#define WN_BAD_LEVEL ERROR_INVALID_LEVEL
#define WN_BAD_HANDLE ERROR_INVALID_HANDLE
#define WN_NOT_INITIALIZING ERROR_ALREADY_INITIALIZED
#define WN_NO_MORE_DEVICES ERROR_NO_MORE_DEVICES
#define WN_NOT_CONNECTED ERROR_NOT_CONNECTED
#define WN_OPEN_FILES ERROR_OPEN_FILES
#define WN_DEVICE_IN_USE ERROR_DEVICE_IN_USE
#define WN_BAD_NETNAME ERROR_BAD_NET_NAME
#define WN_BAD_LOCALNAME ERROR_BAD_DEVICE
#define WN_ALREADY_CONNECTED ERROR_ALREADY_ASSIGNED
#define WN_DEVICE_ERROR ERROR_GEN_FAILURE
#define WN_CONNECTION_CLOSED ERROR_CONNECTION_UNAVAIL
#define WN_NO_NET_OR_BAD_PATH ERROR_NO_NET_OR_BAD_PATH
#define WN_BAD_PROVIDER ERROR_BAD_PROVIDER
#define WN_CANNOT_OPEN_PROFILE ERROR_CANNOT_OPEN_PROFILE
#define WN_BAD_PROFILE ERROR_BAD_PROFILE
#define WN_BAD_DEV_TYPE ERROR_BAD_DEV_TYPE
#define WN_DEVICE_ALREADY_REMEMBERED ERROR_DEVICE_ALREADY_REMEMBERED
#define WN_CONNECTED_OTHER_PASSWORD ERROR_CONNECTED_OTHER_PASSWORD
#define WN_CONNECTED_OTHER_PASSWORD_DEFAULT ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT
#define WN_NO_MORE_ENTRIES ERROR_NO_MORE_ITEMS
#define WN_NOT_CONTAINER ERROR_NOT_CONTAINER
#define WN_NOT_AUTHENTICATED ERROR_NOT_AUTHENTICATED
#define WN_NOT_LOGGED_ON ERROR_NOT_LOGGED_ON
#define WN_NOT_VALIDATED ERROR_NO_LOGON_SERVERS
  typedef struct _NETCONNECTINFOSTRUCT {
    DWORD cbStructure;
    DWORD dwFlags;
    DWORD dwSpeed;
    DWORD dwDelay;
    DWORD dwOptDataSize;
  } NETCONNECTINFOSTRUCT,*LPNETCONNECTINFOSTRUCT;
#define WNCON_FORNETCARD 0x00000001
#define WNCON_NOTROUTED 0x00000002
#define WNCON_SLOWLINK 0x00000004
#define WNCON_DYNAMIC 0x00000008
#define MultinetGetConnectionPerformance __MINGW_NAME_AW(MultinetGetConnectionPerformance)
  DWORD __attribute__((__stdcall__)) MultinetGetConnectionPerformanceA(LPNETRESOURCEA lpNetResource,LPNETCONNECTINFOSTRUCT lpNetConnectInfoStruct);
  DWORD __attribute__((__stdcall__)) MultinetGetConnectionPerformanceW(LPNETRESOURCEW lpNetResource,LPNETCONNECTINFOSTRUCT lpNetConnectInfoStruct);
#define _INC_VIRTDISK 
#define _INC_CDERR 
#define CDERR_DIALOGFAILURE 0xFFFF
#define CDERR_GENERALCODES 0x0000
#define CDERR_STRUCTSIZE 0x0001
#define CDERR_INITIALIZATION 0x0002
#define CDERR_NOTEMPLATE 0x0003
#define CDERR_NOHINSTANCE 0x0004
#define CDERR_LOADSTRFAILURE 0x0005
#define CDERR_FINDRESFAILURE 0x0006
#define CDERR_LOADRESFAILURE 0x0007
#define CDERR_LOCKRESFAILURE 0x0008
#define CDERR_MEMALLOCFAILURE 0x0009
#define CDERR_MEMLOCKFAILURE 0x000A
#define CDERR_NOHOOK 0x000B
#define CDERR_REGISTERMSGFAIL 0x000C
#define PDERR_PRINTERCODES 0x1000
#define PDERR_SETUPFAILURE 0x1001
#define PDERR_PARSEFAILURE 0x1002
#define PDERR_RETDEFFAILURE 0x1003
#define PDERR_LOADDRVFAILURE 0x1004
#define PDERR_GETDEVMODEFAIL 0x1005
#define PDERR_INITFAILURE 0x1006
#define PDERR_NODEVICES 0x1007
#define PDERR_NODEFAULTPRN 0x1008
#define PDERR_DNDMMISMATCH 0x1009
#define PDERR_CREATEICFAILURE 0x100A
#define PDERR_PRINTERNOTFOUND 0x100B
#define PDERR_DEFAULTDIFFERENT 0x100C
#define CFERR_CHOOSEFONTCODES 0x2000
#define CFERR_NOFONTS 0x2001
#define CFERR_MAXLESSTHANMIN 0x2002
#define FNERR_FILENAMECODES 0x3000
#define FNERR_SUBCLASSFAILURE 0x3001
#define FNERR_INVALIDFILENAME 0x3002
#define FNERR_BUFFERTOOSMALL 0x3003
#define FRERR_FINDREPLACECODES 0x4000
#define FRERR_BUFFERLENGTHZERO 0x4001
#define CCERR_CHOOSECOLORCODES 0x5000
#define _DDEHEADER_INCLUDED_ 
#define WM_DDE_FIRST 0x03E0
#define WM_DDE_INITIATE (WM_DDE_FIRST)
#define WM_DDE_TERMINATE (WM_DDE_FIRST+1)
#define WM_DDE_ADVISE (WM_DDE_FIRST+2)
#define WM_DDE_UNADVISE (WM_DDE_FIRST+3)
#define WM_DDE_ACK (WM_DDE_FIRST+4)
#define WM_DDE_DATA (WM_DDE_FIRST+5)
#define WM_DDE_REQUEST (WM_DDE_FIRST+6)
#define WM_DDE_POKE (WM_DDE_FIRST+7)
#define WM_DDE_EXECUTE (WM_DDE_FIRST+8)
#define WM_DDE_LAST (WM_DDE_FIRST+8)
  typedef struct {
    unsigned short bAppReturnCode:8,reserved:6,fBusy:1,fAck:1;
  } DDEACK;
  typedef struct {
    unsigned short reserved:14,fDeferUpd:1,fAckReq:1;
    short cfFormat;
  } DDEADVISE;
  typedef struct {
    unsigned short unused:12,fResponse:1,fRelease:1,reserved:1,fAckReq:1;
    short cfFormat;
    BYTE Value[1];
  } DDEDATA;
  typedef struct {
    unsigned short unused:13,fRelease:1,fReserved:2;
    short cfFormat;
    BYTE Value[1];
  } DDEPOKE;
  typedef struct {
    unsigned short unused:13,fRelease:1,fDeferUpd:1,fAckReq:1;
    short cfFormat;
  } DDELN;
  typedef struct {
    unsigned short unused:12,fAck:1,fRelease:1,fReserved:1,fAckReq:1;
    short cfFormat;
    BYTE rgb[1];
  } DDEUP;
  WINBOOL __attribute__((__stdcall__)) DdeSetQualityOfService(HWND hwndClient,const SECURITY_QUALITY_OF_SERVICE *pqosNew,PSECURITY_QUALITY_OF_SERVICE pqosPrev);
  WINBOOL __attribute__((__stdcall__)) ImpersonateDdeClientWindow(HWND hWndClient,HWND hWndServer);
  LPARAM __attribute__((__stdcall__)) PackDDElParam(UINT msg,UINT_PTR uiLo,UINT_PTR uiHi);
  WINBOOL __attribute__((__stdcall__)) UnpackDDElParam(UINT msg,LPARAM lParam,PUINT_PTR puiLo,PUINT_PTR puiHi);
  WINBOOL __attribute__((__stdcall__)) FreeDDElParam(UINT msg,LPARAM lParam);
  LPARAM __attribute__((__stdcall__)) ReuseDDElParam(LPARAM lParam,UINT msgIn,UINT msgOut,UINT_PTR uiLo,UINT_PTR uiHi);
#define _INC_DDEMLH 
  struct HCONVLIST__ { int unused; }; typedef struct HCONVLIST__ *HCONVLIST;
  struct HCONV__ { int unused; }; typedef struct HCONV__ *HCONV;
  struct HSZ__ { int unused; }; typedef struct HSZ__ *HSZ;
  struct HDDEDATA__ { int unused; }; typedef struct HDDEDATA__ *HDDEDATA;
#define EXPENTRY CALLBACK
  typedef struct tagHSZPAIR {
    HSZ hszSvc;
    HSZ hszTopic;
  } HSZPAIR, *PHSZPAIR;
  typedef struct tagCONVCONTEXT {
    UINT cb;
    UINT wFlags;
    UINT wCountryID;
    int iCodePage;
    DWORD dwLangID;
    DWORD dwSecurity;
    SECURITY_QUALITY_OF_SERVICE qos;
  } CONVCONTEXT, *PCONVCONTEXT;
  typedef struct tagCONVINFO {
    DWORD cb;
    DWORD_PTR hUser;
    HCONV hConvPartner;
    HSZ hszSvcPartner;
    HSZ hszServiceReq;
    HSZ hszTopic;
    HSZ hszItem;
    UINT wFmt;
    UINT wType;
    UINT wStatus;
    UINT wConvst;
    UINT wLastError;
    HCONVLIST hConvList;
    CONVCONTEXT ConvCtxt;
    HWND hwnd;
    HWND hwndPartner;
  } CONVINFO, *PCONVINFO;
#define XST_NULL 0
#define XST_INCOMPLETE 1
#define XST_CONNECTED 2
#define XST_INIT1 3
#define XST_INIT2 4
#define XST_REQSENT 5
#define XST_DATARCVD 6
#define XST_POKESENT 7
#define XST_POKEACKRCVD 8
#define XST_EXECSENT 9
#define XST_EXECACKRCVD 10
#define XST_ADVSENT 11
#define XST_UNADVSENT 12
#define XST_ADVACKRCVD 13
#define XST_UNADVACKRCVD 14
#define XST_ADVDATASENT 15
#define XST_ADVDATAACKRCVD 16
#define CADV_LATEACK 0xFFFF
#define ST_CONNECTED 0x0001
#define ST_ADVISE 0x0002
#define ST_ISLOCAL 0x0004
#define ST_BLOCKED 0x0008
#define ST_CLIENT 0x0010
#define ST_TERMINATED 0x0020
#define ST_INLIST 0x0040
#define ST_BLOCKNEXT 0x0080
#define ST_ISSELF 0x0100
#define DDE_FACK 0x8000
#define DDE_FBUSY 0x4000
#define DDE_FDEFERUPD 0x4000
#define DDE_FACKREQ 0x8000
#define DDE_FRELEASE 0x2000
#define DDE_FREQUESTED 0x1000
#define DDE_FAPPSTATUS 0x00ff
#define DDE_FNOTPROCESSED 0x0000
#define DDE_FACKRESERVED (~(DDE_FACK | DDE_FBUSY | DDE_FAPPSTATUS))
#define DDE_FADVRESERVED (~(DDE_FACKREQ | DDE_FDEFERUPD))
#define DDE_FDATRESERVED (~(DDE_FACKREQ | DDE_FRELEASE | DDE_FREQUESTED))
#define DDE_FPOKRESERVED (~(DDE_FRELEASE))
#define MSGF_DDEMGR 0x8001
#define CP_WINANSI 1004
#define CP_WINUNICODE 1200
#define XTYPF_NOBLOCK 0x0002
#define XTYPF_NODATA 0x0004
#define XTYPF_ACKREQ 0x0008
#define XCLASS_MASK 0xFC00
#define XCLASS_BOOL 0x1000
#define XCLASS_DATA 0x2000
#define XCLASS_FLAGS 0x4000
#define XCLASS_NOTIFICATION 0x8000
#define XTYP_ERROR (0x0000 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
#define XTYP_ADVDATA (0x0010 | XCLASS_FLAGS)
#define XTYP_ADVREQ (0x0020 | XCLASS_DATA | XTYPF_NOBLOCK)
#define XTYP_ADVSTART (0x0030 | XCLASS_BOOL)
#define XTYP_ADVSTOP (0x0040 | XCLASS_NOTIFICATION)
#define XTYP_EXECUTE (0x0050 | XCLASS_FLAGS)
#define XTYP_CONNECT (0x0060 | XCLASS_BOOL | XTYPF_NOBLOCK)
#define XTYP_CONNECT_CONFIRM (0x0070 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
#define XTYP_XACT_COMPLETE (0x0080 | XCLASS_NOTIFICATION)
#define XTYP_POKE (0x0090 | XCLASS_FLAGS)
#define XTYP_REGISTER (0x00A0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
#define XTYP_REQUEST (0x00B0 | XCLASS_DATA)
#define XTYP_DISCONNECT (0x00C0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
#define XTYP_UNREGISTER (0x00D0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
#define XTYP_WILDCONNECT (0x00E0 | XCLASS_DATA | XTYPF_NOBLOCK)
#define XTYP_MASK 0x00F0
#define XTYP_SHIFT 4
#define TIMEOUT_ASYNC 0xFFFFFFFF
#define QID_SYNC 0xFFFFFFFF
#define CP_WINNEUTRAL CP_WINANSI
#define SZDDESYS_TOPIC __MINGW_STRING_AW("System")
#define SZDDESYS_ITEM_TOPICS __MINGW_STRING_AW("Topics")
#define SZDDESYS_ITEM_SYSITEMS __MINGW_STRING_AW("SysItems")
#define SZDDESYS_ITEM_RTNMSG __MINGW_STRING_AW("ReturnMessage")
#define SZDDESYS_ITEM_STATUS __MINGW_STRING_AW("Status")
#define SZDDESYS_ITEM_FORMATS __MINGW_STRING_AW("Formats")
#define SZDDESYS_ITEM_HELP __MINGW_STRING_AW("Help")
#define SZDDE_ITEM_ITEMLIST __MINGW_STRING_AW("TopicItemList")
#define DdeInitialize __MINGW_NAME_AW(DdeInitialize)
  typedef HDDEDATA __attribute__((__stdcall__)) FNCALLBACK(UINT wType,UINT wFmt,HCONV hConv,HSZ hsz1,HSZ hsz2,HDDEDATA hData,ULONG_PTR dwData1,ULONG_PTR dwData2);
  typedef HDDEDATA (__attribute__((__stdcall__)) *PFNCALLBACK)(UINT wType,UINT wFmt,HCONV hConv,HSZ hsz1,HSZ hsz2,HDDEDATA hData,ULONG_PTR dwData1,ULONG_PTR dwData2);
#define CBR_BLOCK ((HDDEDATA)-1)
  UINT __attribute__((__stdcall__)) DdeInitializeA(LPDWORD pidInst,PFNCALLBACK pfnCallback,DWORD afCmd,DWORD ulRes);
  UINT __attribute__((__stdcall__)) DdeInitializeW(LPDWORD pidInst,PFNCALLBACK pfnCallback,DWORD afCmd,DWORD ulRes);
#define CBF_FAIL_SELFCONNECTIONS 0x00001000
#define CBF_FAIL_CONNECTIONS 0x00002000
#define CBF_FAIL_ADVISES 0x00004000
#define CBF_FAIL_EXECUTES 0x00008000
#define CBF_FAIL_POKES 0x00010000
#define CBF_FAIL_REQUESTS 0x00020000
#define CBF_FAIL_ALLSVRXACTIONS 0x0003f000
#define CBF_SKIP_CONNECT_CONFIRMS 0x00040000
#define CBF_SKIP_REGISTRATIONS 0x00080000
#define CBF_SKIP_UNREGISTRATIONS 0x00100000
#define CBF_SKIP_DISCONNECTS 0x00200000
#define CBF_SKIP_ALLNOTIFICATIONS 0x003c0000
#define APPCMD_CLIENTONLY __MSABI_LONG(0x00000010)
#define APPCMD_FILTERINITS __MSABI_LONG(0x00000020)
#define APPCMD_MASK __MSABI_LONG(0x00000FF0)
#define APPCLASS_STANDARD __MSABI_LONG(0x00000000)
#define APPCLASS_MASK __MSABI_LONG(0x0000000F)
  WINBOOL __attribute__((__stdcall__)) DdeUninitialize(DWORD idInst);
  HCONVLIST __attribute__((__stdcall__)) DdeConnectList(DWORD idInst,HSZ hszService,HSZ hszTopic,HCONVLIST hConvList,PCONVCONTEXT pCC);
  HCONV __attribute__((__stdcall__)) DdeQueryNextServer(HCONVLIST hConvList,HCONV hConvPrev);
  WINBOOL __attribute__((__stdcall__)) DdeDisconnectList(HCONVLIST hConvList);
  HCONV __attribute__((__stdcall__)) DdeConnect(DWORD idInst,HSZ hszService,HSZ hszTopic,PCONVCONTEXT pCC);
  WINBOOL __attribute__((__stdcall__)) DdeDisconnect(HCONV hConv);
  HCONV __attribute__((__stdcall__)) DdeReconnect(HCONV hConv);
  UINT __attribute__((__stdcall__)) DdeQueryConvInfo(HCONV hConv,DWORD idTransaction,PCONVINFO pConvInfo);
  WINBOOL __attribute__((__stdcall__)) DdeSetUserHandle(HCONV hConv,DWORD id,DWORD_PTR hUser);
  WINBOOL __attribute__((__stdcall__)) DdeAbandonTransaction(DWORD idInst,HCONV hConv,DWORD idTransaction);
  WINBOOL __attribute__((__stdcall__)) DdePostAdvise(DWORD idInst,HSZ hszTopic,HSZ hszItem);
  WINBOOL __attribute__((__stdcall__)) DdeEnableCallback(DWORD idInst,HCONV hConv,UINT wCmd);
  WINBOOL __attribute__((__stdcall__)) DdeImpersonateClient(HCONV hConv);
#define EC_ENABLEALL 0
#define EC_ENABLEONE ST_BLOCKNEXT
#define EC_DISABLE ST_BLOCKED
#define EC_QUERYWAITING 2
#define DNS_REGISTER 0x0001
#define DNS_UNREGISTER 0x0002
#define DNS_FILTERON 0x0004
#define DNS_FILTEROFF 0x0008
  HDDEDATA __attribute__((__stdcall__)) DdeNameService(DWORD idInst,HSZ hsz1,HSZ hsz2,UINT afCmd);
  HDDEDATA __attribute__((__stdcall__)) DdeClientTransaction(LPBYTE pData,DWORD cbData,HCONV hConv,HSZ hszItem,UINT wFmt,UINT wType,DWORD dwTimeout,LPDWORD pdwResult);
  HDDEDATA __attribute__((__stdcall__)) DdeCreateDataHandle(DWORD idInst,LPBYTE pSrc,DWORD cb,DWORD cbOff,HSZ hszItem,UINT wFmt,UINT afCmd);
  HDDEDATA __attribute__((__stdcall__)) DdeAddData(HDDEDATA hData,LPBYTE pSrc,DWORD cb,DWORD cbOff);
  DWORD __attribute__((__stdcall__)) DdeGetData(HDDEDATA hData,LPBYTE pDst,DWORD cbMax,DWORD cbOff);
  LPBYTE __attribute__((__stdcall__)) DdeAccessData(HDDEDATA hData,LPDWORD pcbDataSize);
  WINBOOL __attribute__((__stdcall__)) DdeUnaccessData(HDDEDATA hData);
  WINBOOL __attribute__((__stdcall__)) DdeFreeDataHandle(HDDEDATA hData);
#define HDATA_APPOWNED 0x0001
  UINT __attribute__((__stdcall__)) DdeGetLastError(DWORD idInst);
#define DMLERR_NO_ERROR 0
#define DMLERR_FIRST 0x4000
#define DMLERR_ADVACKTIMEOUT 0x4000
#define DMLERR_BUSY 0x4001
#define DMLERR_DATAACKTIMEOUT 0x4002
#define DMLERR_DLL_NOT_INITIALIZED 0x4003
#define DMLERR_DLL_USAGE 0x4004
#define DMLERR_EXECACKTIMEOUT 0x4005
#define DMLERR_INVALIDPARAMETER 0x4006
#define DMLERR_LOW_MEMORY 0x4007
#define DMLERR_MEMORY_ERROR 0x4008
#define DMLERR_NOTPROCESSED 0x4009
#define DMLERR_NO_CONV_ESTABLISHED 0x400a
#define DMLERR_POKEACKTIMEOUT 0x400b
#define DMLERR_POSTMSG_FAILED 0x400c
#define DMLERR_REENTRANCY 0x400d
#define DMLERR_SERVER_DIED 0x400e
#define DMLERR_SYS_ERROR 0x400f
#define DMLERR_UNADVACKTIMEOUT 0x4010
#define DMLERR_UNFOUND_QUEUE_ID 0x4011
#define DMLERR_LAST 0x4011
  HSZ __attribute__((__stdcall__)) DdeCreateStringHandleA(DWORD idInst,LPCSTR psz,int iCodePage);
  HSZ __attribute__((__stdcall__)) DdeCreateStringHandleW(DWORD idInst,LPCWSTR psz,int iCodePage);
  DWORD __attribute__((__stdcall__)) DdeQueryStringA(DWORD idInst,HSZ hsz,LPSTR psz,DWORD cchMax,int iCodePage);
  DWORD __attribute__((__stdcall__)) DdeQueryStringW(DWORD idInst,HSZ hsz,LPWSTR psz,DWORD cchMax,int iCodePage);
  WINBOOL __attribute__((__stdcall__)) DdeFreeStringHandle(DWORD idInst,HSZ hsz);
  WINBOOL __attribute__((__stdcall__)) DdeKeepStringHandle(DWORD idInst,HSZ hsz);
  int __attribute__((__stdcall__)) DdeCmpStringHandles(HSZ hsz1,HSZ hsz2);
#define DdeCreateStringHandle __MINGW_NAME_AW(DdeCreateStringHandle)
#define DdeQueryString __MINGW_NAME_AW(DdeQueryString)
  typedef struct tagDDEML_MSG_HOOK_DATA {
    UINT_PTR uiLo;
    UINT_PTR uiHi;
    DWORD cbData;
    DWORD Data[8];
  } DDEML_MSG_HOOK_DATA,*PDDEML_MSG_HOOK_DATA;
  typedef struct tagMONMSGSTRUCT {
    UINT cb;
    HWND hwndTo;
    DWORD dwTime;
    HANDLE hTask;
    UINT wMsg;
    WPARAM wParam;
    LPARAM lParam;
    DDEML_MSG_HOOK_DATA dmhd;
  } MONMSGSTRUCT,*PMONMSGSTRUCT;
  typedef struct tagMONCBSTRUCT {
    UINT cb;
    DWORD dwTime;
    HANDLE hTask;
    DWORD dwRet;
    UINT wType;
    UINT wFmt;
    HCONV hConv;
    HSZ hsz1;
    HSZ hsz2;
    HDDEDATA hData;
    ULONG_PTR dwData1;
    ULONG_PTR dwData2;
    CONVCONTEXT cc;
    DWORD cbData;
    DWORD Data[8];
  } MONCBSTRUCT,*PMONCBSTRUCT;
  typedef struct tagMONHSZSTRUCTA {
    UINT cb;
    WINBOOL fsAction;
    DWORD dwTime;
    HSZ hsz;
    HANDLE hTask;
    CHAR str[1];
  } MONHSZSTRUCTA,*PMONHSZSTRUCTA;
  typedef struct tagMONHSZSTRUCTW {
    UINT cb;
    WINBOOL fsAction;
    DWORD dwTime;
    HSZ hsz;
    HANDLE hTask;
    WCHAR str[1];
  } MONHSZSTRUCTW,*PMONHSZSTRUCTW;
  typedef MONHSZSTRUCTA MONHSZSTRUCT;
  typedef PMONHSZSTRUCTA PMONHSZSTRUCT;
#define MH_CREATE 1
#define MH_KEEP 2
#define MH_DELETE 3
#define MH_CLEANUP 4
  typedef struct tagMONERRSTRUCT {
    UINT cb;
    UINT wLastError;
    DWORD dwTime;
    HANDLE hTask;
  } MONERRSTRUCT,*PMONERRSTRUCT;
  typedef struct tagMONLINKSTRUCT {
    UINT cb;
    DWORD dwTime;
    HANDLE hTask;
    WINBOOL fEstablished;
    WINBOOL fNoData;
    HSZ hszSvc;
    HSZ hszTopic;
    HSZ hszItem;
    UINT wFmt;
    WINBOOL fServer;
    HCONV hConvServer;
    HCONV hConvClient;
  } MONLINKSTRUCT,*PMONLINKSTRUCT;
  typedef struct tagMONCONVSTRUCT {
    UINT cb;
    WINBOOL fConnect;
    DWORD dwTime;
    HANDLE hTask;
    HSZ hszSvc;
    HSZ hszTopic;
    HCONV hConvClient;
    HCONV hConvServer;
  } MONCONVSTRUCT,*PMONCONVSTRUCT;
#define MAX_MONITORS 4
#define APPCLASS_MONITOR __MSABI_LONG(0x00000001)
#define XTYP_MONITOR (0x00F0 | XCLASS_NOTIFICATION | XTYPF_NOBLOCK)
#define MF_HSZ_INFO 0x01000000
#define MF_SENDMSGS 0x02000000
#define MF_POSTMSGS 0x04000000
#define MF_CALLBACKS 0x08000000
#define MF_ERRORS 0x10000000
#define MF_LINKS 0x20000000
#define MF_CONV 0x40000000
#define MF_MASK 0xFF000000
#define _DLGSH_INCLUDED_ 
#define ctlFirst 0x0400
#define ctlLast 0x04ff
#define psh1 0x0400
#define psh2 0x0401
#define psh3 0x0402
#define psh4 0x0403
#define psh5 0x0404
#define psh6 0x0405
#define psh7 0x0406
#define psh8 0x0407
#define psh9 0x0408
#define psh10 0x0409
#define psh11 0x040a
#define psh12 0x040b
#define psh13 0x040c
#define psh14 0x040d
#define psh15 0x040e
#define pshHelp psh15
#define psh16 0x040f
#define chx1 0x0410
#define chx2 0x0411
#define chx3 0x0412
#define chx4 0x0413
#define chx5 0x0414
#define chx6 0x0415
#define chx7 0x0416
#define chx8 0x0417
#define chx9 0x0418
#define chx10 0x0419
#define chx11 0x041a
#define chx12 0x041b
#define chx13 0x041c
#define chx14 0x041d
#define chx15 0x041e
#define chx16 0x041f
#define rad1 0x0420
#define rad2 0x0421
#define rad3 0x0422
#define rad4 0x0423
#define rad5 0x0424
#define rad6 0x0425
#define rad7 0x0426
#define rad8 0x0427
#define rad9 0x0428
#define rad10 0x0429
#define rad11 0x042a
#define rad12 0x042b
#define rad13 0x042c
#define rad14 0x042d
#define rad15 0x042e
#define rad16 0x042f
#define grp1 0x0430
#define grp2 0x0431
#define grp3 0x0432
#define grp4 0x0433
#define frm1 0x0434
#define frm2 0x0435
#define frm3 0x0436
#define frm4 0x0437
#define rct1 0x0438
#define rct2 0x0439
#define rct3 0x043a
#define rct4 0x043b
#define ico1 0x043c
#define ico2 0x043d
#define ico3 0x043e
#define ico4 0x043f
#define stc1 0x0440
#define stc2 0x0441
#define stc3 0x0442
#define stc4 0x0443
#define stc5 0x0444
#define stc6 0x0445
#define stc7 0x0446
#define stc8 0x0447
#define stc9 0x0448
#define stc10 0x0449
#define stc11 0x044a
#define stc12 0x044b
#define stc13 0x044c
#define stc14 0x044d
#define stc15 0x044e
#define stc16 0x044f
#define stc17 0x0450
#define stc18 0x0451
#define stc19 0x0452
#define stc20 0x0453
#define stc21 0x0454
#define stc22 0x0455
#define stc23 0x0456
#define stc24 0x0457
#define stc25 0x0458
#define stc26 0x0459
#define stc27 0x045a
#define stc28 0x045b
#define stc29 0x045c
#define stc30 0x045d
#define stc31 0x045e
#define stc32 0x045f
#define lst1 0x0460
#define lst2 0x0461
#define lst3 0x0462
#define lst4 0x0463
#define lst5 0x0464
#define lst6 0x0465
#define lst7 0x0466
#define lst8 0x0467
#define lst9 0x0468
#define lst10 0x0469
#define lst11 0x046a
#define lst12 0x046b
#define lst13 0x046c
#define lst14 0x046d
#define lst15 0x046e
#define lst16 0x046f
#define cmb1 0x0470
#define cmb2 0x0471
#define cmb3 0x0472
#define cmb4 0x0473
#define cmb5 0x0474
#define cmb6 0x0475
#define cmb7 0x0476
#define cmb8 0x0477
#define cmb9 0x0478
#define cmb10 0x0479
#define cmb11 0x047a
#define cmb12 0x047b
#define cmb13 0x047c
#define cmb14 0x047d
#define cmb15 0x047e
#define cmb16 0x047f
#define edt1 0x0480
#define edt2 0x0481
#define edt3 0x0482
#define edt4 0x0483
#define edt5 0x0484
#define edt6 0x0485
#define edt7 0x0486
#define edt8 0x0487
#define edt9 0x0488
#define edt10 0x0489
#define edt11 0x048a
#define edt12 0x048b
#define edt13 0x048c
#define edt14 0x048d
#define edt15 0x048e
#define edt16 0x048f
#define scr1 0x0490
#define scr2 0x0491
#define scr3 0x0492
#define scr4 0x0493
#define scr5 0x0494
#define scr6 0x0495
#define scr7 0x0496
#define scr8 0x0497
#define ctl1 0x04A0
#define FILEOPENORD 1536
#define MULTIFILEOPENORD 1537
#define PRINTDLGORD 1538
#define PRNSETUPDLGORD 1539
#define FINDDLGORD 1540
#define REPLACEDLGORD 1541
#define FONTDLGORD 1542
#define FORMATDLGORD31 1543
#define FORMATDLGORD30 1544
#define RUNDLGORD 1545
#define PAGESETUPDLGORD 1546
#define NEWFILEOPENORD 1547
#define PRINTDLGEXORD 1549
#define PAGESETUPDLGORDMOTIF 1550
#define COLORMGMTDLGORD 1551
#define NEWFILEOPENV2ORD 1552
typedef struct tagCRGB {
  BYTE bRed;
  BYTE bGreen;
  BYTE bBlue;
  BYTE bExtra;
} CRGB;
#define _LZEXPAND_ 
#define LZERROR_BADINHANDLE (-1)
#define LZERROR_BADOUTHANDLE (-2)
#define LZERROR_READ (-3)
#define LZERROR_WRITE (-4)
#define LZERROR_GLOBALLOC (-5)
#define LZERROR_GLOBLOCK (-6)
#define LZERROR_BADVALUE (-7)
#define LZERROR_UNKNOWNALG (-8)
#define GetExpandedName __MINGW_NAME_AW(GetExpandedName)
#define LZOpenFile __MINGW_NAME_AW(LZOpenFile)
  INT __attribute__((__stdcall__)) LZStart(void);
  void __attribute__((__stdcall__)) LZDone(void);
  LONG __attribute__((__stdcall__)) CopyLZFile(INT,INT);
  LONG __attribute__((__stdcall__)) LZCopy(INT,INT);
  INT __attribute__((__stdcall__)) LZInit(INT);
  INT __attribute__((__stdcall__)) GetExpandedNameA(LPSTR,LPSTR);
  INT __attribute__((__stdcall__)) GetExpandedNameW(LPWSTR,LPWSTR);
  INT __attribute__((__stdcall__)) LZOpenFileA(LPSTR,LPOFSTRUCT,WORD);
  INT __attribute__((__stdcall__)) LZOpenFileW(LPWSTR,LPOFSTRUCT,WORD);
  LONG __attribute__((__stdcall__)) LZSeek(INT,LONG,INT);
  INT __attribute__((__stdcall__)) LZRead(INT,LPSTR,INT);
  void __attribute__((__stdcall__)) LZClose(INT);
#define _INC_MMSYSTEM 
#pragma pack(push,1)
#define WINMMAPI DECLSPEC_IMPORT
#define _loadds 
#define _huge 
#define MAXPNAMELEN 32
#define MAXERRORLENGTH 256
#define MAX_JOYSTICKOEMVXDNAME 260
  typedef UINT MMVERSION;
  typedef UINT MMRESULT;
#define _MMRESULT_ 
#define DEFINED_LPUINT 
  typedef UINT *LPUINT;
  typedef struct mmtime_tag {
    UINT wType;
    union {
      DWORD ms;
      DWORD sample;
      DWORD cb;
      DWORD ticks;
      struct {
 BYTE hour;
 BYTE min;
 BYTE sec;
 BYTE frame;
 BYTE fps;
 BYTE dummy;
 BYTE pad[2];
      } smpte;
      struct {
 DWORD songptrpos;
      } midi;
    } u;
  } MMTIME,*PMMTIME, *NPMMTIME,*LPMMTIME;
#define TIME_MS 0x0001
#define TIME_SAMPLES 0x0002
#define TIME_BYTES 0x0004
#define TIME_SMPTE 0x0008
#define TIME_MIDI 0x0010
#define TIME_TICKS 0x0020
#define MAKEFOURCC(ch0,ch1,ch2,ch3) ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24))
#define MM_JOY1MOVE 0x3A0
#define MM_JOY2MOVE 0x3A1
#define MM_JOY1ZMOVE 0x3A2
#define MM_JOY2ZMOVE 0x3A3
#define MM_JOY1BUTTONDOWN 0x3B5
#define MM_JOY2BUTTONDOWN 0x3B6
#define MM_JOY1BUTTONUP 0x3B7
#define MM_JOY2BUTTONUP 0x3B8
#define MM_MCINOTIFY 0x3B9
#define MM_WOM_OPEN 0x3BB
#define MM_WOM_CLOSE 0x3BC
#define MM_WOM_DONE 0x3BD
#define MM_WIM_OPEN 0x3BE
#define MM_WIM_CLOSE 0x3BF
#define MM_WIM_DATA 0x3C0
#define MM_MIM_OPEN 0x3C1
#define MM_MIM_CLOSE 0x3C2
#define MM_MIM_DATA 0x3C3
#define MM_MIM_LONGDATA 0x3C4
#define MM_MIM_ERROR 0x3C5
#define MM_MIM_LONGERROR 0x3C6
#define MM_MOM_OPEN 0x3C7
#define MM_MOM_CLOSE 0x3C8
#define MM_MOM_DONE 0x3C9
#define MM_DRVM_OPEN 0x3D0
#define MM_DRVM_CLOSE 0x3D1
#define MM_DRVM_DATA 0x3D2
#define MM_DRVM_ERROR 0x3D3
#define MM_STREAM_OPEN 0x3D4
#define MM_STREAM_CLOSE 0x3D5
#define MM_STREAM_DONE 0x3D6
#define MM_STREAM_ERROR 0x3D7
#define MM_MOM_POSITIONCB 0x3CA
#define MM_MCISIGNAL 0x3CB
#define MM_MIM_MOREDATA 0x3CC
#define MM_MIXM_LINE_CHANGE 0x3D0
#define MM_MIXM_CONTROL_CHANGE 0x3D1
#define MMSYSERR_BASE 0
#define WAVERR_BASE 32
#define MIDIERR_BASE 64
#define TIMERR_BASE 96
#define JOYERR_BASE 160
#define MCIERR_BASE 256
#define MIXERR_BASE 1024
#define MCI_STRING_OFFSET 512
#define MCI_VD_OFFSET 1024
#define MCI_CD_OFFSET 1088
#define MCI_WAVE_OFFSET 1152
#define MCI_SEQ_OFFSET 1216
#define MMSYSERR_NOERROR 0
#define MMSYSERR_ERROR (MMSYSERR_BASE + 1)
#define MMSYSERR_BADDEVICEID (MMSYSERR_BASE + 2)
#define MMSYSERR_NOTENABLED (MMSYSERR_BASE + 3)
#define MMSYSERR_ALLOCATED (MMSYSERR_BASE + 4)
#define MMSYSERR_INVALHANDLE (MMSYSERR_BASE + 5)
#define MMSYSERR_NODRIVER (MMSYSERR_BASE + 6)
#define MMSYSERR_NOMEM (MMSYSERR_BASE + 7)
#define MMSYSERR_NOTSUPPORTED (MMSYSERR_BASE + 8)
#define MMSYSERR_BADERRNUM (MMSYSERR_BASE + 9)
#define MMSYSERR_INVALFLAG (MMSYSERR_BASE + 10)
#define MMSYSERR_INVALPARAM (MMSYSERR_BASE + 11)
#define MMSYSERR_HANDLEBUSY (MMSYSERR_BASE + 12)
#define MMSYSERR_INVALIDALIAS (MMSYSERR_BASE + 13)
#define MMSYSERR_BADDB (MMSYSERR_BASE + 14)
#define MMSYSERR_KEYNOTFOUND (MMSYSERR_BASE + 15)
#define MMSYSERR_READERROR (MMSYSERR_BASE + 16)
#define MMSYSERR_WRITEERROR (MMSYSERR_BASE + 17)
#define MMSYSERR_DELETEERROR (MMSYSERR_BASE + 18)
#define MMSYSERR_VALNOTFOUND (MMSYSERR_BASE + 19)
#define MMSYSERR_NODRIVERCB (MMSYSERR_BASE + 20)
#define MMSYSERR_MOREDATA (MMSYSERR_BASE + 21)
#define MMSYSERR_LASTERROR (MMSYSERR_BASE + 21)
  struct HDRVR__ { int unused; }; typedef struct HDRVR__ *HDRVR;
  typedef struct DRVCONFIGINFOEX {
    DWORD dwDCISize;
    LPCWSTR lpszDCISectionName;
    LPCWSTR lpszDCIAliasName;
    DWORD dnDevNode;
  } DRVCONFIGINFOEX,*PDRVCONFIGINFOEX, *NPDRVCONFIGINFOEX,*LPDRVCONFIGINFOEX;
#define DRV_LOAD 0x0001
#define DRV_ENABLE 0x0002
#define DRV_OPEN 0x0003
#define DRV_CLOSE 0x0004
#define DRV_DISABLE 0x0005
#define DRV_FREE 0x0006
#define DRV_CONFIGURE 0x0007
#define DRV_QUERYCONFIGURE 0x0008
#define DRV_INSTALL 0x0009
#define DRV_REMOVE 0x000A
#define DRV_EXITSESSION 0x000B
#define DRV_POWER 0x000F
#define DRV_RESERVED 0x0800
#define DRV_USER 0x4000
  typedef struct tagDRVCONFIGINFO {
    DWORD dwDCISize;
    LPCWSTR lpszDCISectionName;
    LPCWSTR lpszDCIAliasName;
  } DRVCONFIGINFO,*PDRVCONFIGINFO, *NPDRVCONFIGINFO,*LPDRVCONFIGINFO;
#define DRVCNF_CANCEL 0x0000
#define DRVCNF_OK 0x0001
#define DRVCNF_RESTART 0x0002
  typedef LRESULT (__attribute__((__stdcall__)) *DRIVERPROC)(DWORD_PTR,HDRVR,UINT,LPARAM,LPARAM);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) CloseDriver(HDRVR hDriver,LPARAM lParam1,LPARAM lParam2);
  __attribute__((dllimport)) HDRVR __attribute__((__stdcall__)) OpenDriver(LPCWSTR szDriverName,LPCWSTR szSectionName,LPARAM lParam2);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) SendDriverMessage(HDRVR hDriver,UINT message,LPARAM lParam1,LPARAM lParam2);
  __attribute__((dllimport)) HMODULE __attribute__((__stdcall__)) DrvGetModuleHandle(HDRVR hDriver);
  __attribute__((dllimport)) HMODULE __attribute__((__stdcall__)) GetDriverModuleHandle(HDRVR hDriver);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) DefDriverProc(DWORD_PTR dwDriverIdentifier,HDRVR hdrvr,UINT uMsg,LPARAM lParam1,LPARAM lParam2);
#define DRV_CANCEL DRVCNF_CANCEL
#define DRV_OK DRVCNF_OK
#define DRV_RESTART DRVCNF_RESTART
#define DRV_MCI_FIRST DRV_RESERVED
#define DRV_MCI_LAST (DRV_RESERVED + 0xFFF)
#define CALLBACK_TYPEMASK __MSABI_LONG(0x00070000)
#define CALLBACK_NULL __MSABI_LONG(0x00000000)
#define CALLBACK_WINDOW __MSABI_LONG(0x00010000)
#define CALLBACK_TASK __MSABI_LONG(0x00020000)
#define CALLBACK_FUNCTION __MSABI_LONG(0x00030000)
#define CALLBACK_THREAD (CALLBACK_TASK)
#define CALLBACK_EVENT __MSABI_LONG(0x00050000)
  typedef void (__attribute__((__stdcall__)) DRVCALLBACK)(HDRVR hdrvr,UINT uMsg,DWORD_PTR dwUser,DWORD_PTR dw1,DWORD_PTR dw2);
  typedef DRVCALLBACK *LPDRVCALLBACK;
  typedef DRVCALLBACK *PDRVCALLBACK;
#define OutputDebugStr OutputDebugString
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) sndPlaySoundA(LPCSTR pszSound,UINT fuSound);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) sndPlaySoundW(LPCWSTR pszSound,UINT fuSound);
#define sndPlaySound __MINGW_NAME_AW(sndPlaySound)
#define SND_SYNC 0x0000
#define SND_ASYNC 0x0001
#define SND_NODEFAULT 0x0002
#define SND_MEMORY 0x0004
#define SND_LOOP 0x0008
#define SND_NOSTOP 0x0010
#define SND_NOWAIT __MSABI_LONG(0x00002000)
#define SND_ALIAS __MSABI_LONG(0x00010000)
#define SND_ALIAS_ID __MSABI_LONG(0x00110000)
#define SND_FILENAME __MSABI_LONG(0x00020000)
#define SND_RESOURCE __MSABI_LONG(0x00040004)
#define SND_PURGE 0x0040
#define SND_APPLICATION 0x0080
#define SND_ALIAS_START 0
#define sndAlias(c0,c1) (SND_ALIAS_START+((DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8)))
#define SND_ALIAS_SYSTEMASTERISK sndAlias('S','*')
#define SND_ALIAS_SYSTEMQUESTION sndAlias('S','?')
#define SND_ALIAS_SYSTEMHAND sndAlias('S','H')
#define SND_ALIAS_SYSTEMEXIT sndAlias('S','E')
#define SND_ALIAS_SYSTEMSTART sndAlias('S','S')
#define SND_ALIAS_SYSTEMWELCOME sndAlias('S','W')
#define SND_ALIAS_SYSTEMEXCLAMATION sndAlias('S','!')
#define SND_ALIAS_SYSTEMDEFAULT sndAlias('S','D')
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PlaySoundA(LPCSTR pszSound,HMODULE hmod,DWORD fdwSound);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PlaySoundW(LPCWSTR pszSound,HMODULE hmod,DWORD fdwSound);
#define PlaySound __MINGW_NAME_AW(PlaySound)
#define WAVERR_BADFORMAT (WAVERR_BASE + 0)
#define WAVERR_STILLPLAYING (WAVERR_BASE + 1)
#define WAVERR_UNPREPARED (WAVERR_BASE + 2)
#define WAVERR_SYNC (WAVERR_BASE + 3)
#define WAVERR_LASTERROR (WAVERR_BASE + 3)
  struct HWAVE__ { int unused; }; typedef struct HWAVE__ *HWAVE;
  struct HWAVEIN__ { int unused; }; typedef struct HWAVEIN__ *HWAVEIN;
  struct HWAVEOUT__ { int unused; }; typedef struct HWAVEOUT__ *HWAVEOUT;
  typedef HWAVEIN *LPHWAVEIN;
  typedef HWAVEOUT *LPHWAVEOUT;
  typedef DRVCALLBACK WAVECALLBACK;
  typedef WAVECALLBACK *LPWAVECALLBACK;
#define WOM_OPEN MM_WOM_OPEN
#define WOM_CLOSE MM_WOM_CLOSE
#define WOM_DONE MM_WOM_DONE
#define WIM_OPEN MM_WIM_OPEN
#define WIM_CLOSE MM_WIM_CLOSE
#define WIM_DATA MM_WIM_DATA
#define WAVE_MAPPER ((UINT)-1)
#define WAVE_FORMAT_QUERY 0x0001
#define WAVE_ALLOWSYNC 0x0002
#define WAVE_MAPPED 0x0004
#define WAVE_FORMAT_DIRECT 0x0008
#define WAVE_FORMAT_DIRECT_QUERY (WAVE_FORMAT_QUERY | WAVE_FORMAT_DIRECT)
  typedef struct wavehdr_tag {
    LPSTR lpData;
    DWORD dwBufferLength;
    DWORD dwBytesRecorded;
    DWORD_PTR dwUser;
    DWORD dwFlags;
    DWORD dwLoops;
    struct wavehdr_tag *lpNext;
    DWORD_PTR reserved;
  } WAVEHDR,*PWAVEHDR, *NPWAVEHDR,*LPWAVEHDR;
#define WHDR_DONE 0x00000001
#define WHDR_PREPARED 0x00000002
#define WHDR_BEGINLOOP 0x00000004
#define WHDR_ENDLOOP 0x00000008
#define WHDR_INQUEUE 0x00000010
  typedef struct tagWAVEOUTCAPSA {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    CHAR szPname[32];
    DWORD dwFormats;
    WORD wChannels;
    WORD wReserved1;
    DWORD dwSupport;
  } WAVEOUTCAPSA,*PWAVEOUTCAPSA,*NPWAVEOUTCAPSA,*LPWAVEOUTCAPSA;
  typedef struct tagWAVEOUTCAPSW {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    WCHAR szPname[32];
    DWORD dwFormats;
    WORD wChannels;
    WORD wReserved1;
    DWORD dwSupport;
  } WAVEOUTCAPSW,*PWAVEOUTCAPSW,*NPWAVEOUTCAPSW,*LPWAVEOUTCAPSW;
  typedef WAVEOUTCAPSA WAVEOUTCAPS;
  typedef PWAVEOUTCAPSA PWAVEOUTCAPS;
  typedef NPWAVEOUTCAPSA NPWAVEOUTCAPS;
  typedef LPWAVEOUTCAPSA LPWAVEOUTCAPS;
  typedef struct tagWAVEOUTCAPS2A {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    CHAR szPname[32];
    DWORD dwFormats;
    WORD wChannels;
    WORD wReserved1;
    DWORD dwSupport;
    GUID ManufacturerGuid;
    GUID ProductGuid;
    GUID NameGuid;
  } WAVEOUTCAPS2A,*PWAVEOUTCAPS2A,*NPWAVEOUTCAPS2A,*LPWAVEOUTCAPS2A;
  typedef struct tagWAVEOUTCAPS2W {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    WCHAR szPname[32];
    DWORD dwFormats;
    WORD wChannels;
    WORD wReserved1;
    DWORD dwSupport;
    GUID ManufacturerGuid;
    GUID ProductGuid;
    GUID NameGuid;
  } WAVEOUTCAPS2W,*PWAVEOUTCAPS2W,*NPWAVEOUTCAPS2W,*LPWAVEOUTCAPS2W;
  typedef WAVEOUTCAPS2A WAVEOUTCAPS2;
  typedef PWAVEOUTCAPS2A PWAVEOUTCAPS2;
  typedef NPWAVEOUTCAPS2A NPWAVEOUTCAPS2;
  typedef LPWAVEOUTCAPS2A LPWAVEOUTCAPS2;
#define WAVECAPS_PITCH 0x0001
#define WAVECAPS_PLAYBACKRATE 0x0002
#define WAVECAPS_VOLUME 0x0004
#define WAVECAPS_LRVOLUME 0x0008
#define WAVECAPS_SYNC 0x0010
#define WAVECAPS_SAMPLEACCURATE 0x0020
  typedef struct tagWAVEINCAPSA {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    CHAR szPname[32];
    DWORD dwFormats;
    WORD wChannels;
    WORD wReserved1;
  } WAVEINCAPSA,*PWAVEINCAPSA,*NPWAVEINCAPSA,*LPWAVEINCAPSA;
  typedef struct tagWAVEINCAPSW {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    WCHAR szPname[32];
    DWORD dwFormats;
    WORD wChannels;
    WORD wReserved1;
  } WAVEINCAPSW,*PWAVEINCAPSW,*NPWAVEINCAPSW,*LPWAVEINCAPSW;
  typedef WAVEINCAPSA WAVEINCAPS;
  typedef PWAVEINCAPSA PWAVEINCAPS;
  typedef NPWAVEINCAPSA NPWAVEINCAPS;
  typedef LPWAVEINCAPSA LPWAVEINCAPS;
  typedef struct tagWAVEINCAPS2A {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    CHAR szPname[32];
    DWORD dwFormats;
    WORD wChannels;
    WORD wReserved1;
    GUID ManufacturerGuid;
    GUID ProductGuid;
    GUID NameGuid;
  } WAVEINCAPS2A,*PWAVEINCAPS2A,*NPWAVEINCAPS2A,*LPWAVEINCAPS2A;
  typedef struct tagWAVEINCAPS2W {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    WCHAR szPname[32];
    DWORD dwFormats;
    WORD wChannels;
    WORD wReserved1;
    GUID ManufacturerGuid;
    GUID ProductGuid;
    GUID NameGuid;
  } WAVEINCAPS2W,*PWAVEINCAPS2W,*NPWAVEINCAPS2W,*LPWAVEINCAPS2W;
  typedef WAVEINCAPS2A WAVEINCAPS2;
  typedef PWAVEINCAPS2A PWAVEINCAPS2;
  typedef NPWAVEINCAPS2A NPWAVEINCAPS2;
  typedef LPWAVEINCAPS2A LPWAVEINCAPS2;
#define WAVE_INVALIDFORMAT 0x00000000
#define WAVE_FORMAT_1M08 0x00000001
#define WAVE_FORMAT_1S08 0x00000002
#define WAVE_FORMAT_1M16 0x00000004
#define WAVE_FORMAT_1S16 0x00000008
#define WAVE_FORMAT_2M08 0x00000010
#define WAVE_FORMAT_2S08 0x00000020
#define WAVE_FORMAT_2M16 0x00000040
#define WAVE_FORMAT_2S16 0x00000080
#define WAVE_FORMAT_4M08 0x00000100
#define WAVE_FORMAT_4S08 0x00000200
#define WAVE_FORMAT_4M16 0x00000400
#define WAVE_FORMAT_4S16 0x00000800
#define WAVE_FORMAT_44M08 0x00000100
#define WAVE_FORMAT_44S08 0x00000200
#define WAVE_FORMAT_44M16 0x00000400
#define WAVE_FORMAT_44S16 0x00000800
#define WAVE_FORMAT_48M08 0x00001000
#define WAVE_FORMAT_48S08 0x00002000
#define WAVE_FORMAT_48M16 0x00004000
#define WAVE_FORMAT_48S16 0x00008000
#define WAVE_FORMAT_96M08 0x00010000
#define WAVE_FORMAT_96S08 0x00020000
#define WAVE_FORMAT_96M16 0x00040000
#define WAVE_FORMAT_96S16 0x00080000
  typedef struct waveformat_tag {
    WORD wFormatTag;
    WORD nChannels;
    DWORD nSamplesPerSec;
    DWORD nAvgBytesPerSec;
    WORD nBlockAlign;
  } WAVEFORMAT,*PWAVEFORMAT, *NPWAVEFORMAT,*LPWAVEFORMAT;
#define WAVE_FORMAT_PCM 1
  typedef struct pcmwaveformat_tag {
    WAVEFORMAT wf;
    WORD wBitsPerSample;
  } PCMWAVEFORMAT,*PPCMWAVEFORMAT, *NPPCMWAVEFORMAT,*LPPCMWAVEFORMAT;
#define _WAVEFORMATEX_ 
  typedef struct tWAVEFORMATEX {
    WORD wFormatTag;
    WORD nChannels;
    DWORD nSamplesPerSec;
    DWORD nAvgBytesPerSec;
    WORD nBlockAlign;
    WORD wBitsPerSample;
    WORD cbSize;
  } WAVEFORMATEX,*PWAVEFORMATEX, *NPWAVEFORMATEX,*LPWAVEFORMATEX;
  typedef const WAVEFORMATEX *LPCWAVEFORMATEX;
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) waveOutGetNumDevs(void);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutGetDevCapsA(UINT_PTR uDeviceID,LPWAVEOUTCAPSA pwoc,UINT cbwoc);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutGetDevCapsW(UINT_PTR uDeviceID,LPWAVEOUTCAPSW pwoc,UINT cbwoc);
#define waveOutGetDevCaps __MINGW_NAME_AW(waveOutGetDevCaps)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutGetVolume(HWAVEOUT hwo,LPDWORD pdwVolume);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutSetVolume(HWAVEOUT hwo,DWORD dwVolume);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutGetErrorTextA(MMRESULT mmrError,LPSTR pszText,UINT cchText);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutGetErrorTextW(MMRESULT mmrError,LPWSTR pszText,UINT cchText);
#define waveOutGetErrorText __MINGW_NAME_AW(waveOutGetErrorText)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutOpen(LPHWAVEOUT phwo,UINT uDeviceID,LPCWAVEFORMATEX pwfx,DWORD_PTR dwCallback,DWORD_PTR dwInstance,DWORD fdwOpen);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutClose(HWAVEOUT hwo);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutPrepareHeader(HWAVEOUT hwo,LPWAVEHDR pwh,UINT cbwh);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutUnprepareHeader(HWAVEOUT hwo,LPWAVEHDR pwh,UINT cbwh);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutWrite(HWAVEOUT hwo,LPWAVEHDR pwh,UINT cbwh);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutPause(HWAVEOUT hwo);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutRestart(HWAVEOUT hwo);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutReset(HWAVEOUT hwo);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutBreakLoop(HWAVEOUT hwo);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutGetPosition(HWAVEOUT hwo,LPMMTIME pmmt,UINT cbmmt);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutGetPitch(HWAVEOUT hwo,LPDWORD pdwPitch);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutSetPitch(HWAVEOUT hwo,DWORD dwPitch);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutGetPlaybackRate(HWAVEOUT hwo,LPDWORD pdwRate);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutSetPlaybackRate(HWAVEOUT hwo,DWORD dwRate);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutGetID(HWAVEOUT hwo,LPUINT puDeviceID);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveOutMessage(HWAVEOUT hwo,UINT uMsg,DWORD_PTR dw1,DWORD_PTR dw2);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) waveInGetNumDevs(void);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInGetDevCapsA(UINT_PTR uDeviceID,LPWAVEINCAPSA pwic,UINT cbwic);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInGetDevCapsW(UINT_PTR uDeviceID,LPWAVEINCAPSW pwic,UINT cbwic);
#define waveInGetDevCaps __MINGW_NAME_AW(waveInGetDevCaps)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInGetErrorTextA(MMRESULT mmrError,LPSTR pszText,UINT cchText);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInGetErrorTextW(MMRESULT mmrError,LPWSTR pszText,UINT cchText);
#define waveInGetErrorText __MINGW_NAME_AW(waveInGetErrorText)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInOpen(LPHWAVEIN phwi,UINT uDeviceID,LPCWAVEFORMATEX pwfx,DWORD_PTR dwCallback,DWORD_PTR dwInstance,DWORD fdwOpen);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInClose(HWAVEIN hwi);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInPrepareHeader(HWAVEIN hwi,LPWAVEHDR pwh,UINT cbwh);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInUnprepareHeader(HWAVEIN hwi,LPWAVEHDR pwh,UINT cbwh);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInAddBuffer(HWAVEIN hwi,LPWAVEHDR pwh,UINT cbwh);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInStart(HWAVEIN hwi);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInStop(HWAVEIN hwi);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInReset(HWAVEIN hwi);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInGetPosition(HWAVEIN hwi,LPMMTIME pmmt,UINT cbmmt);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInGetID(HWAVEIN hwi,LPUINT puDeviceID);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) waveInMessage(HWAVEIN hwi,UINT uMsg,DWORD_PTR dw1,DWORD_PTR dw2);
#define MIDIERR_UNPREPARED (MIDIERR_BASE + 0)
#define MIDIERR_STILLPLAYING (MIDIERR_BASE + 1)
#define MIDIERR_NOMAP (MIDIERR_BASE + 2)
#define MIDIERR_NOTREADY (MIDIERR_BASE + 3)
#define MIDIERR_NODEVICE (MIDIERR_BASE + 4)
#define MIDIERR_INVALIDSETUP (MIDIERR_BASE + 5)
#define MIDIERR_BADOPENMODE (MIDIERR_BASE + 6)
#define MIDIERR_DONT_CONTINUE (MIDIERR_BASE + 7)
#define MIDIERR_LASTERROR (MIDIERR_BASE + 7)
  struct HMIDI__ { int unused; }; typedef struct HMIDI__ *HMIDI;
  struct HMIDIIN__ { int unused; }; typedef struct HMIDIIN__ *HMIDIIN;
  struct HMIDIOUT__ { int unused; }; typedef struct HMIDIOUT__ *HMIDIOUT;
  struct HMIDISTRM__ { int unused; }; typedef struct HMIDISTRM__ *HMIDISTRM;
  typedef HMIDI *LPHMIDI;
  typedef HMIDIIN *LPHMIDIIN;
  typedef HMIDIOUT *LPHMIDIOUT;
  typedef HMIDISTRM *LPHMIDISTRM;
  typedef DRVCALLBACK MIDICALLBACK;
  typedef MIDICALLBACK *LPMIDICALLBACK;
#define MIDIPATCHSIZE 128
  typedef WORD PATCHARRAY[128];
  typedef WORD *LPPATCHARRAY;
  typedef WORD KEYARRAY[128];
  typedef WORD *LPKEYARRAY;
#define MIM_OPEN MM_MIM_OPEN
#define MIM_CLOSE MM_MIM_CLOSE
#define MIM_DATA MM_MIM_DATA
#define MIM_LONGDATA MM_MIM_LONGDATA
#define MIM_ERROR MM_MIM_ERROR
#define MIM_LONGERROR MM_MIM_LONGERROR
#define MOM_OPEN MM_MOM_OPEN
#define MOM_CLOSE MM_MOM_CLOSE
#define MOM_DONE MM_MOM_DONE
#define MIM_MOREDATA MM_MIM_MOREDATA
#define MOM_POSITIONCB MM_MOM_POSITIONCB
#define MIDIMAPPER ((UINT)-1)
#define MIDI_MAPPER ((UINT)-1)
#define MIDI_IO_STATUS __MSABI_LONG(0x00000020)
#define MIDI_CACHE_ALL 1
#define MIDI_CACHE_BESTFIT 2
#define MIDI_CACHE_QUERY 3
#define MIDI_UNCACHE 4
  typedef struct tagMIDIOUTCAPSA {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    CHAR szPname[32];
    WORD wTechnology;
    WORD wVoices;
    WORD wNotes;
    WORD wChannelMask;
    DWORD dwSupport;
  } MIDIOUTCAPSA,*PMIDIOUTCAPSA,*NPMIDIOUTCAPSA,*LPMIDIOUTCAPSA;
  typedef struct tagMIDIOUTCAPSW {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    WCHAR szPname[32];
    WORD wTechnology;
    WORD wVoices;
    WORD wNotes;
    WORD wChannelMask;
    DWORD dwSupport;
  } MIDIOUTCAPSW,*PMIDIOUTCAPSW,*NPMIDIOUTCAPSW,*LPMIDIOUTCAPSW;
  typedef MIDIOUTCAPSA MIDIOUTCAPS;
  typedef PMIDIOUTCAPSA PMIDIOUTCAPS;
  typedef NPMIDIOUTCAPSA NPMIDIOUTCAPS;
  typedef LPMIDIOUTCAPSA LPMIDIOUTCAPS;
  typedef struct tagMIDIOUTCAPS2A {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    CHAR szPname[32];
    WORD wTechnology;
    WORD wVoices;
    WORD wNotes;
    WORD wChannelMask;
    DWORD dwSupport;
    GUID ManufacturerGuid;
    GUID ProductGuid;
    GUID NameGuid;
  } MIDIOUTCAPS2A,*PMIDIOUTCAPS2A,*NPMIDIOUTCAPS2A,*LPMIDIOUTCAPS2A;
  typedef struct tagMIDIOUTCAPS2W {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    WCHAR szPname[32];
    WORD wTechnology;
    WORD wVoices;
    WORD wNotes;
    WORD wChannelMask;
    DWORD dwSupport;
    GUID ManufacturerGuid;
    GUID ProductGuid;
    GUID NameGuid;
  } MIDIOUTCAPS2W,*PMIDIOUTCAPS2W,*NPMIDIOUTCAPS2W,*LPMIDIOUTCAPS2W;
  typedef MIDIOUTCAPS2A MIDIOUTCAPS2;
  typedef PMIDIOUTCAPS2A PMIDIOUTCAPS2;
  typedef NPMIDIOUTCAPS2A NPMIDIOUTCAPS2;
  typedef LPMIDIOUTCAPS2A LPMIDIOUTCAPS2;
#define MOD_MIDIPORT 1
#define MOD_SYNTH 2
#define MOD_SQSYNTH 3
#define MOD_FMSYNTH 4
#define MOD_MAPPER 5
#define MOD_WAVETABLE 6
#define MOD_SWSYNTH 7
#define MIDICAPS_VOLUME 0x0001
#define MIDICAPS_LRVOLUME 0x0002
#define MIDICAPS_CACHE 0x0004
#define MIDICAPS_STREAM 0x0008
  typedef struct tagMIDIINCAPSA {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    CHAR szPname[32];
    DWORD dwSupport;
  } MIDIINCAPSA,*PMIDIINCAPSA,*NPMIDIINCAPSA,*LPMIDIINCAPSA;
  typedef struct tagMIDIINCAPSW {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    WCHAR szPname[32];
    DWORD dwSupport;
  } MIDIINCAPSW,*PMIDIINCAPSW,*NPMIDIINCAPSW,*LPMIDIINCAPSW;
  typedef MIDIINCAPSA MIDIINCAPS;
  typedef PMIDIINCAPSA PMIDIINCAPS;
  typedef NPMIDIINCAPSA NPMIDIINCAPS;
  typedef LPMIDIINCAPSA LPMIDIINCAPS;
  typedef struct tagMIDIINCAPS2A {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    CHAR szPname[32];
    DWORD dwSupport;
    GUID ManufacturerGuid;
    GUID ProductGuid;
    GUID NameGuid;
  } MIDIINCAPS2A,*PMIDIINCAPS2A,*NPMIDIINCAPS2A,*LPMIDIINCAPS2A;
  typedef struct tagMIDIINCAPS2W {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    WCHAR szPname[32];
    DWORD dwSupport;
    GUID ManufacturerGuid;
    GUID ProductGuid;
    GUID NameGuid;
  } MIDIINCAPS2W,*PMIDIINCAPS2W,*NPMIDIINCAPS2W,*LPMIDIINCAPS2W;
  typedef MIDIINCAPS2A MIDIINCAPS2;
  typedef PMIDIINCAPS2A PMIDIINCAPS2;
  typedef NPMIDIINCAPS2A NPMIDIINCAPS2;
  typedef LPMIDIINCAPS2A LPMIDIINCAPS2;
  typedef struct midihdr_tag {
    LPSTR lpData;
    DWORD dwBufferLength;
    DWORD dwBytesRecorded;
    DWORD_PTR dwUser;
    DWORD dwFlags;
    struct midihdr_tag *lpNext;
    DWORD_PTR reserved;
    DWORD dwOffset;
    DWORD_PTR dwReserved[8];
  } MIDIHDR,*PMIDIHDR, *NPMIDIHDR,*LPMIDIHDR;
  typedef struct midievent_tag {
    DWORD dwDeltaTime;
    DWORD dwStreamID;
    DWORD dwEvent;
    DWORD dwParms[1];
  } MIDIEVENT;
  typedef struct midistrmbuffver_tag {
    DWORD dwVersion;
    DWORD dwMid;
    DWORD dwOEMVersion;
  } MIDISTRMBUFFVER;
#define MHDR_DONE 0x00000001
#define MHDR_PREPARED 0x00000002
#define MHDR_INQUEUE 0x00000004
#define MHDR_ISSTRM 0x00000008
#define MEVT_F_SHORT __MSABI_LONG(0x00000000)
#define MEVT_F_LONG __MSABI_LONG(0x80000000)
#define MEVT_F_CALLBACK __MSABI_LONG(0x40000000)
#define MEVT_EVENTTYPE(x) ((BYTE)(((x)>>24)&0xFF))
#define MEVT_EVENTPARM(x) ((DWORD)((x)&0x00FFFFFF))
#define MEVT_SHORTMSG ((BYTE)0x00)
#define MEVT_TEMPO ((BYTE)0x01)
#define MEVT_NOP ((BYTE)0x02)
#define MEVT_LONGMSG ((BYTE)0x80)
#define MEVT_COMMENT ((BYTE)0x82)
#define MEVT_VERSION ((BYTE)0x84)
#define MIDISTRM_ERROR (-2)
#define MIDIPROP_SET __MSABI_LONG(0x80000000)
#define MIDIPROP_GET __MSABI_LONG(0x40000000)
#define MIDIPROP_TIMEDIV __MSABI_LONG(0x00000001)
#define MIDIPROP_TEMPO __MSABI_LONG(0x00000002)
  typedef struct midiproptimediv_tag {
    DWORD cbStruct;
    DWORD dwTimeDiv;
  } MIDIPROPTIMEDIV,*LPMIDIPROPTIMEDIV;
  typedef struct midiproptempo_tag {
    DWORD cbStruct;
    DWORD dwTempo;
  } MIDIPROPTEMPO,*LPMIDIPROPTEMPO;
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) midiOutGetNumDevs(void);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiStreamOpen(LPHMIDISTRM phms,LPUINT puDeviceID,DWORD cMidi,DWORD_PTR dwCallback,DWORD_PTR dwInstance,DWORD fdwOpen);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiStreamClose(HMIDISTRM hms);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiStreamProperty(HMIDISTRM hms,LPBYTE lppropdata,DWORD dwProperty);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiStreamPosition(HMIDISTRM hms,LPMMTIME lpmmt,UINT cbmmt);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiStreamOut(HMIDISTRM hms,LPMIDIHDR pmh,UINT cbmh);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiStreamPause(HMIDISTRM hms);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiStreamRestart(HMIDISTRM hms);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiStreamStop(HMIDISTRM hms);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiConnect(HMIDI hmi,HMIDIOUT hmo,LPVOID pReserved);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiDisconnect(HMIDI hmi,HMIDIOUT hmo,LPVOID pReserved);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutGetDevCapsA(UINT_PTR uDeviceID,LPMIDIOUTCAPSA pmoc,UINT cbmoc);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutGetDevCapsW(UINT_PTR uDeviceID,LPMIDIOUTCAPSW pmoc,UINT cbmoc);
#define midiOutGetDevCaps __MINGW_NAME_AW(midiOutGetDevCaps)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutGetVolume(HMIDIOUT hmo,LPDWORD pdwVolume);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutSetVolume(HMIDIOUT hmo,DWORD dwVolume);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutGetErrorTextA(MMRESULT mmrError,LPSTR pszText,UINT cchText);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutGetErrorTextW(MMRESULT mmrError,LPWSTR pszText,UINT cchText);
#define midiOutGetErrorText __MINGW_NAME_AW(midiOutGetErrorText)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutOpen(LPHMIDIOUT phmo,UINT uDeviceID,DWORD_PTR dwCallback,DWORD_PTR dwInstance,DWORD fdwOpen);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutClose(HMIDIOUT hmo);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutPrepareHeader(HMIDIOUT hmo,LPMIDIHDR pmh,UINT cbmh);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutUnprepareHeader(HMIDIOUT hmo,LPMIDIHDR pmh,UINT cbmh);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutShortMsg(HMIDIOUT hmo,DWORD dwMsg);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutLongMsg(HMIDIOUT hmo,LPMIDIHDR pmh,UINT cbmh);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutReset(HMIDIOUT hmo);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutCachePatches(HMIDIOUT hmo,UINT uBank,LPWORD pwpa,UINT fuCache);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutCacheDrumPatches(HMIDIOUT hmo,UINT uPatch,LPWORD pwkya,UINT fuCache);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutGetID(HMIDIOUT hmo,LPUINT puDeviceID);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiOutMessage(HMIDIOUT hmo,UINT uMsg,DWORD_PTR dw1,DWORD_PTR dw2);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) midiInGetNumDevs(void);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiInGetDevCapsA(UINT_PTR uDeviceID,LPMIDIINCAPSA pmic,UINT cbmic);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiInGetDevCapsW(UINT_PTR uDeviceID,LPMIDIINCAPSW pmic,UINT cbmic);
#define midiInGetDevCaps __MINGW_NAME_AW(midiInGetDevCaps)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiInGetErrorTextA(MMRESULT mmrError,LPSTR pszText,UINT cchText);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiInGetErrorTextW(MMRESULT mmrError,LPWSTR pszText,UINT cchText);
#define midiInGetErrorText __MINGW_NAME_AW(midiInGetErrorText)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiInOpen(LPHMIDIIN phmi,UINT uDeviceID,DWORD_PTR dwCallback,DWORD_PTR dwInstance,DWORD fdwOpen);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiInClose(HMIDIIN hmi);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiInPrepareHeader(HMIDIIN hmi,LPMIDIHDR pmh,UINT cbmh);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiInUnprepareHeader(HMIDIIN hmi,LPMIDIHDR pmh,UINT cbmh);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiInAddBuffer(HMIDIIN hmi,LPMIDIHDR pmh,UINT cbmh);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiInStart(HMIDIIN hmi);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiInStop(HMIDIIN hmi);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiInReset(HMIDIIN hmi);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiInGetID(HMIDIIN hmi,LPUINT puDeviceID);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) midiInMessage(HMIDIIN hmi,UINT uMsg,DWORD_PTR dw1,DWORD_PTR dw2);
#define AUX_MAPPER ((UINT)-1)
  typedef struct tagAUXCAPSA {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    CHAR szPname[32];
    WORD wTechnology;
    WORD wReserved1;
    DWORD dwSupport;
  } AUXCAPSA,*PAUXCAPSA,*NPAUXCAPSA,*LPAUXCAPSA;
  typedef struct tagAUXCAPSW {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    WCHAR szPname[32];
    WORD wTechnology;
    WORD wReserved1;
    DWORD dwSupport;
  } AUXCAPSW,*PAUXCAPSW,*NPAUXCAPSW,*LPAUXCAPSW;
  typedef AUXCAPSA AUXCAPS;
  typedef PAUXCAPSA PAUXCAPS;
  typedef NPAUXCAPSA NPAUXCAPS;
  typedef LPAUXCAPSA LPAUXCAPS;
  typedef struct tagAUXCAPS2A {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    CHAR szPname[32];
    WORD wTechnology;
    WORD wReserved1;
    DWORD dwSupport;
    GUID ManufacturerGuid;
    GUID ProductGuid;
    GUID NameGuid;
  } AUXCAPS2A,*PAUXCAPS2A,*NPAUXCAPS2A,*LPAUXCAPS2A;
  typedef struct tagAUXCAPS2W {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    WCHAR szPname[32];
    WORD wTechnology;
    WORD wReserved1;
    DWORD dwSupport;
    GUID ManufacturerGuid;
    GUID ProductGuid;
    GUID NameGuid;
  } AUXCAPS2W,*PAUXCAPS2W,*NPAUXCAPS2W,*LPAUXCAPS2W;
  typedef AUXCAPS2A AUXCAPS2;
  typedef PAUXCAPS2A PAUXCAPS2;
  typedef NPAUXCAPS2A NPAUXCAPS2;
  typedef LPAUXCAPS2A LPAUXCAPS2;
#define AUXCAPS_CDAUDIO 1
#define AUXCAPS_AUXIN 2
#define AUXCAPS_VOLUME 0x0001
#define AUXCAPS_LRVOLUME 0x0002
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) auxGetNumDevs(void);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) auxGetDevCapsA(UINT_PTR uDeviceID,LPAUXCAPSA pac,UINT cbac);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) auxGetDevCapsW(UINT_PTR uDeviceID,LPAUXCAPSW pac,UINT cbac);
#define auxGetDevCaps __MINGW_NAME_AW(auxGetDevCaps)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) auxSetVolume(UINT uDeviceID,DWORD dwVolume);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) auxGetVolume(UINT uDeviceID,LPDWORD pdwVolume);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) auxOutMessage(UINT uDeviceID,UINT uMsg,DWORD_PTR dw1,DWORD_PTR dw2);
  struct HMIXEROBJ__ { int unused; }; typedef struct HMIXEROBJ__ *HMIXEROBJ;
  typedef HMIXEROBJ *LPHMIXEROBJ;
  struct HMIXER__ { int unused; }; typedef struct HMIXER__ *HMIXER;
  typedef HMIXER *LPHMIXER;
#define MIXER_SHORT_NAME_CHARS 16
#define MIXER_LONG_NAME_CHARS 64
#define MIXERR_INVALLINE (MIXERR_BASE + 0)
#define MIXERR_INVALCONTROL (MIXERR_BASE + 1)
#define MIXERR_INVALVALUE (MIXERR_BASE + 2)
#define MIXERR_LASTERROR (MIXERR_BASE + 2)
#define MIXER_OBJECTF_HANDLE __MSABI_LONG(0x80000000)
#define MIXER_OBJECTF_MIXER __MSABI_LONG(0x00000000)
#define MIXER_OBJECTF_HMIXER (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIXER)
#define MIXER_OBJECTF_WAVEOUT __MSABI_LONG(0x10000000)
#define MIXER_OBJECTF_HWAVEOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEOUT)
#define MIXER_OBJECTF_WAVEIN __MSABI_LONG(0x20000000)
#define MIXER_OBJECTF_HWAVEIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_WAVEIN)
#define MIXER_OBJECTF_MIDIOUT __MSABI_LONG(0x30000000)
#define MIXER_OBJECTF_HMIDIOUT (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIOUT)
#define MIXER_OBJECTF_MIDIIN __MSABI_LONG(0x40000000)
#define MIXER_OBJECTF_HMIDIIN (MIXER_OBJECTF_HANDLE|MIXER_OBJECTF_MIDIIN)
#define MIXER_OBJECTF_AUX __MSABI_LONG(0x50000000)
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) mixerGetNumDevs(void);
  typedef struct tagMIXERCAPSA {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    CHAR szPname[32];
    DWORD fdwSupport;
    DWORD cDestinations;
  } MIXERCAPSA,*PMIXERCAPSA,*LPMIXERCAPSA;
  typedef struct tagMIXERCAPSW {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    WCHAR szPname[32];
    DWORD fdwSupport;
    DWORD cDestinations;
  } MIXERCAPSW,*PMIXERCAPSW,*LPMIXERCAPSW;
  typedef MIXERCAPSA MIXERCAPS;
  typedef PMIXERCAPSA PMIXERCAPS;
  typedef LPMIXERCAPSA LPMIXERCAPS;
  typedef struct tagMIXERCAPS2A {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    CHAR szPname[32];
    DWORD fdwSupport;
    DWORD cDestinations;
    GUID ManufacturerGuid;
    GUID ProductGuid;
    GUID NameGuid;
  } MIXERCAPS2A,*PMIXERCAPS2A,*LPMIXERCAPS2A;
  typedef struct tagMIXERCAPS2W {
    WORD wMid;
    WORD wPid;
    MMVERSION vDriverVersion;
    WCHAR szPname[32];
    DWORD fdwSupport;
    DWORD cDestinations;
    GUID ManufacturerGuid;
    GUID ProductGuid;
    GUID NameGuid;
  } MIXERCAPS2W,*PMIXERCAPS2W,*LPMIXERCAPS2W;
  typedef MIXERCAPS2A MIXERCAPS2;
  typedef PMIXERCAPS2A PMIXERCAPS2;
  typedef LPMIXERCAPS2A LPMIXERCAPS2;
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mixerGetDevCapsA(UINT_PTR uMxId,LPMIXERCAPSA pmxcaps,UINT cbmxcaps);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mixerGetDevCapsW(UINT_PTR uMxId,LPMIXERCAPSW pmxcaps,UINT cbmxcaps);
#define mixerGetDevCaps __MINGW_NAME_AW(mixerGetDevCaps)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mixerOpen(LPHMIXER phmx,UINT uMxId,DWORD_PTR dwCallback,DWORD_PTR dwInstance,DWORD fdwOpen);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mixerClose(HMIXER hmx);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) mixerMessage(HMIXER hmx,UINT uMsg,DWORD_PTR dwParam1,DWORD_PTR dwParam2);
  typedef struct tagMIXERLINEA {
    DWORD cbStruct;
    DWORD dwDestination;
    DWORD dwSource;
    DWORD dwLineID;
    DWORD fdwLine;
    DWORD_PTR dwUser;
    DWORD dwComponentType;
    DWORD cChannels;
    DWORD cConnections;
    DWORD cControls;
    CHAR szShortName[16];
    CHAR szName[64];
    struct {
      DWORD dwType;
      DWORD dwDeviceID;
      WORD wMid;
      WORD wPid;
      MMVERSION vDriverVersion;
      CHAR szPname[32];
    } Target;
  } MIXERLINEA,*PMIXERLINEA,*LPMIXERLINEA;
  typedef struct tagMIXERLINEW {
    DWORD cbStruct;
    DWORD dwDestination;
    DWORD dwSource;
    DWORD dwLineID;
    DWORD fdwLine;
    DWORD_PTR dwUser;
    DWORD dwComponentType;
    DWORD cChannels;
    DWORD cConnections;
    DWORD cControls;
    WCHAR szShortName[16];
    WCHAR szName[64];
    struct {
      DWORD dwType;
      DWORD dwDeviceID;
      WORD wMid;
      WORD wPid;
      MMVERSION vDriverVersion;
      WCHAR szPname[32];
    } Target;
  } MIXERLINEW,*PMIXERLINEW,*LPMIXERLINEW;
  typedef MIXERLINEA MIXERLINE;
  typedef PMIXERLINEA PMIXERLINE;
  typedef LPMIXERLINEA LPMIXERLINE;
#define MIXERLINE_LINEF_ACTIVE __MSABI_LONG(0x00000001)
#define MIXERLINE_LINEF_DISCONNECTED __MSABI_LONG(0x00008000)
#define MIXERLINE_LINEF_SOURCE __MSABI_LONG(0x80000000)
#define MIXERLINE_COMPONENTTYPE_DST_FIRST __MSABI_LONG(0x0)
#define MIXERLINE_COMPONENTTYPE_DST_UNDEFINED (MIXERLINE_COMPONENTTYPE_DST_FIRST + 0)
#define MIXERLINE_COMPONENTTYPE_DST_DIGITAL (MIXERLINE_COMPONENTTYPE_DST_FIRST + 1)
#define MIXERLINE_COMPONENTTYPE_DST_LINE (MIXERLINE_COMPONENTTYPE_DST_FIRST + 2)
#define MIXERLINE_COMPONENTTYPE_DST_MONITOR (MIXERLINE_COMPONENTTYPE_DST_FIRST + 3)
#define MIXERLINE_COMPONENTTYPE_DST_SPEAKERS (MIXERLINE_COMPONENTTYPE_DST_FIRST + 4)
#define MIXERLINE_COMPONENTTYPE_DST_HEADPHONES (MIXERLINE_COMPONENTTYPE_DST_FIRST + 5)
#define MIXERLINE_COMPONENTTYPE_DST_TELEPHONE (MIXERLINE_COMPONENTTYPE_DST_FIRST + 6)
#define MIXERLINE_COMPONENTTYPE_DST_WAVEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST + 7)
#define MIXERLINE_COMPONENTTYPE_DST_VOICEIN (MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
#define MIXERLINE_COMPONENTTYPE_DST_LAST (MIXERLINE_COMPONENTTYPE_DST_FIRST + 8)
#define MIXERLINE_COMPONENTTYPE_SRC_FIRST __MSABI_LONG(0x00001000)
#define MIXERLINE_COMPONENTTYPE_SRC_UNDEFINED (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 0)
#define MIXERLINE_COMPONENTTYPE_SRC_DIGITAL (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 1)
#define MIXERLINE_COMPONENTTYPE_SRC_LINE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2)
#define MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3)
#define MIXERLINE_COMPONENTTYPE_SRC_SYNTHESIZER (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 4)
#define MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 5)
#define MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 6)
#define MIXERLINE_COMPONENTTYPE_SRC_PCSPEAKER (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 7)
#define MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 8)
#define MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 9)
#define MIXERLINE_COMPONENTTYPE_SRC_ANALOG (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
#define MIXERLINE_COMPONENTTYPE_SRC_LAST (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 10)
#define MIXERLINE_TARGETTYPE_UNDEFINED 0
#define MIXERLINE_TARGETTYPE_WAVEOUT 1
#define MIXERLINE_TARGETTYPE_WAVEIN 2
#define MIXERLINE_TARGETTYPE_MIDIOUT 3
#define MIXERLINE_TARGETTYPE_MIDIIN 4
#define MIXERLINE_TARGETTYPE_AUX 5
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mixerGetLineInfoA(HMIXEROBJ hmxobj,LPMIXERLINEA pmxl,DWORD fdwInfo);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mixerGetLineInfoW(HMIXEROBJ hmxobj,LPMIXERLINEW pmxl,DWORD fdwInfo);
#define mixerGetLineInfo __MINGW_NAME_AW(mixerGetLineInfo)
#define MIXER_GETLINEINFOF_DESTINATION __MSABI_LONG(0x00000000)
#define MIXER_GETLINEINFOF_SOURCE __MSABI_LONG(0x00000001)
#define MIXER_GETLINEINFOF_LINEID __MSABI_LONG(0x00000002)
#define MIXER_GETLINEINFOF_COMPONENTTYPE __MSABI_LONG(0x00000003)
#define MIXER_GETLINEINFOF_TARGETTYPE __MSABI_LONG(0x00000004)
#define MIXER_GETLINEINFOF_QUERYMASK __MSABI_LONG(0x0000000F)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mixerGetID(HMIXEROBJ hmxobj,UINT *puMxId,DWORD fdwId);
  typedef struct tagMIXERCONTROLA {
    DWORD cbStruct;
    DWORD dwControlID;
    DWORD dwControlType;
    DWORD fdwControl;
    DWORD cMultipleItems;
    CHAR szShortName[16];
    CHAR szName[64];
    union {
      __extension__ struct {
 LONG lMinimum;
 LONG lMaximum;
      } ;
      __extension__ struct {
 DWORD dwMinimum;
 DWORD dwMaximum;
      } ;
      DWORD dwReserved[6];
    } Bounds;
    union {
      DWORD cSteps;
      DWORD cbCustomData;
      DWORD dwReserved[6];
    } Metrics;
  } MIXERCONTROLA,*PMIXERCONTROLA,*LPMIXERCONTROLA;
  typedef struct tagMIXERCONTROLW {
    DWORD cbStruct;
    DWORD dwControlID;
    DWORD dwControlType;
    DWORD fdwControl;
    DWORD cMultipleItems;
    WCHAR szShortName[16];
    WCHAR szName[64];
    union {
      __extension__ struct {
 LONG lMinimum;
 LONG lMaximum;
      } ;
      __extension__ struct {
 DWORD dwMinimum;
 DWORD dwMaximum;
      } ;
      DWORD dwReserved[6];
    } Bounds;
    union {
      DWORD cSteps;
      DWORD cbCustomData;
      DWORD dwReserved[6];
    } Metrics;
  } MIXERCONTROLW,*PMIXERCONTROLW,*LPMIXERCONTROLW;
  typedef MIXERCONTROLA MIXERCONTROL;
  typedef PMIXERCONTROLA PMIXERCONTROL;
  typedef LPMIXERCONTROLA LPMIXERCONTROL;
#define MIXERCONTROL_CONTROLF_UNIFORM __MSABI_LONG(0x00000001)
#define MIXERCONTROL_CONTROLF_MULTIPLE __MSABI_LONG(0x00000002)
#define MIXERCONTROL_CONTROLF_DISABLED __MSABI_LONG(0x80000000)
#define MIXERCONTROL_CT_CLASS_MASK __MSABI_LONG(0xF0000000)
#define MIXERCONTROL_CT_CLASS_CUSTOM __MSABI_LONG(0x00000000)
#define MIXERCONTROL_CT_CLASS_METER __MSABI_LONG(0x10000000)
#define MIXERCONTROL_CT_CLASS_SWITCH __MSABI_LONG(0x20000000)
#define MIXERCONTROL_CT_CLASS_NUMBER __MSABI_LONG(0x30000000)
#define MIXERCONTROL_CT_CLASS_SLIDER __MSABI_LONG(0x40000000)
#define MIXERCONTROL_CT_CLASS_FADER __MSABI_LONG(0x50000000)
#define MIXERCONTROL_CT_CLASS_TIME __MSABI_LONG(0x60000000)
#define MIXERCONTROL_CT_CLASS_LIST __MSABI_LONG(0x70000000)
#define MIXERCONTROL_CT_SUBCLASS_MASK __MSABI_LONG(0x0F000000)
#define MIXERCONTROL_CT_SC_SWITCH_BOOLEAN __MSABI_LONG(0x00000000)
#define MIXERCONTROL_CT_SC_SWITCH_BUTTON __MSABI_LONG(0x01000000)
#define MIXERCONTROL_CT_SC_METER_POLLED __MSABI_LONG(0x00000000)
#define MIXERCONTROL_CT_SC_TIME_MICROSECS __MSABI_LONG(0x00000000)
#define MIXERCONTROL_CT_SC_TIME_MILLISECS __MSABI_LONG(0x01000000)
#define MIXERCONTROL_CT_SC_LIST_SINGLE __MSABI_LONG(0x00000000)
#define MIXERCONTROL_CT_SC_LIST_MULTIPLE __MSABI_LONG(0x01000000)
#define MIXERCONTROL_CT_UNITS_MASK __MSABI_LONG(0x00FF0000)
#define MIXERCONTROL_CT_UNITS_CUSTOM __MSABI_LONG(0x00000000)
#define MIXERCONTROL_CT_UNITS_BOOLEAN __MSABI_LONG(0x00010000)
#define MIXERCONTROL_CT_UNITS_SIGNED __MSABI_LONG(0x00020000)
#define MIXERCONTROL_CT_UNITS_UNSIGNED __MSABI_LONG(0x00030000)
#define MIXERCONTROL_CT_UNITS_DECIBELS __MSABI_LONG(0x00040000)
#define MIXERCONTROL_CT_UNITS_PERCENT __MSABI_LONG(0x00050000)
#define MIXERCONTROL_CONTROLTYPE_CUSTOM (MIXERCONTROL_CT_CLASS_CUSTOM | MIXERCONTROL_CT_UNITS_CUSTOM)
#define MIXERCONTROL_CONTROLTYPE_BOOLEANMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_BOOLEAN)
#define MIXERCONTROL_CONTROLTYPE_SIGNEDMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_SIGNED)
#define MIXERCONTROL_CONTROLTYPE_PEAKMETER (MIXERCONTROL_CONTROLTYPE_SIGNEDMETER + 1)
#define MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER (MIXERCONTROL_CT_CLASS_METER | MIXERCONTROL_CT_SC_METER_POLLED | MIXERCONTROL_CT_UNITS_UNSIGNED)
#define MIXERCONTROL_CONTROLTYPE_BOOLEAN (MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BOOLEAN | MIXERCONTROL_CT_UNITS_BOOLEAN)
#define MIXERCONTROL_CONTROLTYPE_ONOFF (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 1)
#define MIXERCONTROL_CONTROLTYPE_MUTE (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 2)
#define MIXERCONTROL_CONTROLTYPE_MONO (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 3)
#define MIXERCONTROL_CONTROLTYPE_LOUDNESS (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 4)
#define MIXERCONTROL_CONTROLTYPE_STEREOENH (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 5)
#define MIXERCONTROL_CONTROLTYPE_BASS_BOOST (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 0x00002277)
#define MIXERCONTROL_CONTROLTYPE_BUTTON (MIXERCONTROL_CT_CLASS_SWITCH | MIXERCONTROL_CT_SC_SWITCH_BUTTON | MIXERCONTROL_CT_UNITS_BOOLEAN)
#define MIXERCONTROL_CONTROLTYPE_DECIBELS (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_DECIBELS)
#define MIXERCONTROL_CONTROLTYPE_SIGNED (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_SIGNED)
#define MIXERCONTROL_CONTROLTYPE_UNSIGNED (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_UNSIGNED)
#define MIXERCONTROL_CONTROLTYPE_PERCENT (MIXERCONTROL_CT_CLASS_NUMBER | MIXERCONTROL_CT_UNITS_PERCENT)
#define MIXERCONTROL_CONTROLTYPE_SLIDER (MIXERCONTROL_CT_CLASS_SLIDER | MIXERCONTROL_CT_UNITS_SIGNED)
#define MIXERCONTROL_CONTROLTYPE_PAN (MIXERCONTROL_CONTROLTYPE_SLIDER + 1)
#define MIXERCONTROL_CONTROLTYPE_QSOUNDPAN (MIXERCONTROL_CONTROLTYPE_SLIDER + 2)
#define MIXERCONTROL_CONTROLTYPE_FADER (MIXERCONTROL_CT_CLASS_FADER | MIXERCONTROL_CT_UNITS_UNSIGNED)
#define MIXERCONTROL_CONTROLTYPE_VOLUME (MIXERCONTROL_CONTROLTYPE_FADER + 1)
#define MIXERCONTROL_CONTROLTYPE_BASS (MIXERCONTROL_CONTROLTYPE_FADER + 2)
#define MIXERCONTROL_CONTROLTYPE_TREBLE (MIXERCONTROL_CONTROLTYPE_FADER + 3)
#define MIXERCONTROL_CONTROLTYPE_EQUALIZER (MIXERCONTROL_CONTROLTYPE_FADER + 4)
#define MIXERCONTROL_CONTROLTYPE_SINGLESELECT (MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_SINGLE | MIXERCONTROL_CT_UNITS_BOOLEAN)
#define MIXERCONTROL_CONTROLTYPE_MUX (MIXERCONTROL_CONTROLTYPE_SINGLESELECT + 1)
#define MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT (MIXERCONTROL_CT_CLASS_LIST | MIXERCONTROL_CT_SC_LIST_MULTIPLE | MIXERCONTROL_CT_UNITS_BOOLEAN)
#define MIXERCONTROL_CONTROLTYPE_MIXER (MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT + 1)
#define MIXERCONTROL_CONTROLTYPE_MICROTIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MICROSECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
#define MIXERCONTROL_CONTROLTYPE_MILLITIME (MIXERCONTROL_CT_CLASS_TIME | MIXERCONTROL_CT_SC_TIME_MILLISECS | MIXERCONTROL_CT_UNITS_UNSIGNED)
  typedef struct tagMIXERLINECONTROLSA {
    DWORD cbStruct;
    DWORD dwLineID;
    __extension__ union {
      DWORD dwControlID;
      DWORD dwControlType;
    } ;
    DWORD cControls;
    DWORD cbmxctrl;
    LPMIXERCONTROLA pamxctrl;
  } MIXERLINECONTROLSA,*PMIXERLINECONTROLSA,*LPMIXERLINECONTROLSA;
  typedef struct tagMIXERLINECONTROLSW {
    DWORD cbStruct;
    DWORD dwLineID;
    __extension__ union {
      DWORD dwControlID;
      DWORD dwControlType;
    } ;
    DWORD cControls;
    DWORD cbmxctrl;
    LPMIXERCONTROLW pamxctrl;
  } MIXERLINECONTROLSW,*PMIXERLINECONTROLSW,*LPMIXERLINECONTROLSW;
  typedef MIXERLINECONTROLSA MIXERLINECONTROLS;
  typedef PMIXERLINECONTROLSA PMIXERLINECONTROLS;
  typedef LPMIXERLINECONTROLSA LPMIXERLINECONTROLS;
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mixerGetLineControlsA(HMIXEROBJ hmxobj,LPMIXERLINECONTROLSA pmxlc,DWORD fdwControls);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mixerGetLineControlsW(HMIXEROBJ hmxobj,LPMIXERLINECONTROLSW pmxlc,DWORD fdwControls);
#define mixerGetLineControls __MINGW_NAME_AW(mixerGetLineControls)
#define MIXER_GETLINECONTROLSF_ALL __MSABI_LONG(0x00000000)
#define MIXER_GETLINECONTROLSF_ONEBYID __MSABI_LONG(0x00000001)
#define MIXER_GETLINECONTROLSF_ONEBYTYPE __MSABI_LONG(0x00000002)
#define MIXER_GETLINECONTROLSF_QUERYMASK __MSABI_LONG(0x0000000F)
  typedef struct tMIXERCONTROLDETAILS {
    DWORD cbStruct;
    DWORD dwControlID;
    DWORD cChannels;
    __extension__ union {
      HWND hwndOwner;
      DWORD cMultipleItems;
    } ;
    DWORD cbDetails;
    LPVOID paDetails;
  } MIXERCONTROLDETAILS,*PMIXERCONTROLDETAILS,*LPMIXERCONTROLDETAILS;
  typedef struct tagMIXERCONTROLDETAILS_LISTTEXTA {
    DWORD dwParam1;
    DWORD dwParam2;
    CHAR szName[64];
  } MIXERCONTROLDETAILS_LISTTEXTA,*PMIXERCONTROLDETAILS_LISTTEXTA,*LPMIXERCONTROLDETAILS_LISTTEXTA;
  typedef struct tagMIXERCONTROLDETAILS_LISTTEXTW {
    DWORD dwParam1;
    DWORD dwParam2;
    WCHAR szName[64];
  } MIXERCONTROLDETAILS_LISTTEXTW,*PMIXERCONTROLDETAILS_LISTTEXTW,*LPMIXERCONTROLDETAILS_LISTTEXTW;
  typedef MIXERCONTROLDETAILS_LISTTEXTA MIXERCONTROLDETAILS_LISTTEXT;
  typedef PMIXERCONTROLDETAILS_LISTTEXTA PMIXERCONTROLDETAILS_LISTTEXT;
  typedef LPMIXERCONTROLDETAILS_LISTTEXTA LPMIXERCONTROLDETAILS_LISTTEXT;
  typedef struct tMIXERCONTROLDETAILS_BOOLEAN {
    LONG fValue;
  } MIXERCONTROLDETAILS_BOOLEAN,*PMIXERCONTROLDETAILS_BOOLEAN,*LPMIXERCONTROLDETAILS_BOOLEAN;
  typedef struct tMIXERCONTROLDETAILS_SIGNED {
    LONG lValue;
  } MIXERCONTROLDETAILS_SIGNED,*PMIXERCONTROLDETAILS_SIGNED,*LPMIXERCONTROLDETAILS_SIGNED;
  typedef struct tMIXERCONTROLDETAILS_UNSIGNED {
    DWORD dwValue;
  } MIXERCONTROLDETAILS_UNSIGNED,*PMIXERCONTROLDETAILS_UNSIGNED,*LPMIXERCONTROLDETAILS_UNSIGNED;
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mixerGetControlDetailsA(HMIXEROBJ hmxobj,LPMIXERCONTROLDETAILS pmxcd,DWORD fdwDetails);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mixerGetControlDetailsW(HMIXEROBJ hmxobj,LPMIXERCONTROLDETAILS pmxcd,DWORD fdwDetails);
#define mixerGetControlDetails __MINGW_NAME_AW(mixerGetControlDetails)
#define MIXER_GETCONTROLDETAILSF_VALUE __MSABI_LONG(0x00000000)
#define MIXER_GETCONTROLDETAILSF_LISTTEXT __MSABI_LONG(0x00000001)
#define MIXER_GETCONTROLDETAILSF_QUERYMASK __MSABI_LONG(0x0000000F)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mixerSetControlDetails(HMIXEROBJ hmxobj,LPMIXERCONTROLDETAILS pmxcd,DWORD fdwDetails);
#define MIXER_SETCONTROLDETAILSF_VALUE __MSABI_LONG(0x00000000)
#define MIXER_SETCONTROLDETAILSF_CUSTOM __MSABI_LONG(0x00000001)
#define MIXER_SETCONTROLDETAILSF_QUERYMASK __MSABI_LONG(0x0000000F)
#define TIMERR_NOERROR (0)
#define TIMERR_NOCANDO (TIMERR_BASE+1)
#define TIMERR_STRUCT (TIMERR_BASE+33)
  typedef void (__attribute__((__stdcall__)) TIMECALLBACK)(UINT uTimerID,UINT uMsg,DWORD_PTR dwUser,DWORD_PTR dw1,DWORD_PTR dw2);
  typedef TIMECALLBACK *LPTIMECALLBACK;
#define TIME_ONESHOT 0x0000
#define TIME_PERIODIC 0x0001
#define TIME_CALLBACK_FUNCTION 0x0000
#define TIME_CALLBACK_EVENT_SET 0x0010
#define TIME_CALLBACK_EVENT_PULSE 0x0020
#define TIME_KILL_SYNCHRONOUS 0x0100
  typedef struct timecaps_tag {
    UINT wPeriodMin;
    UINT wPeriodMax;
  } TIMECAPS,*PTIMECAPS, *NPTIMECAPS,*LPTIMECAPS;
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) timeGetSystemTime(LPMMTIME pmmt,UINT cbmmt);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) timeGetTime(void);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) timeSetEvent(UINT uDelay,UINT uResolution,LPTIMECALLBACK fptc,DWORD_PTR dwUser,UINT fuEvent);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) timeKillEvent(UINT uTimerID);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) timeGetDevCaps(LPTIMECAPS ptc,UINT cbtc);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) timeBeginPeriod(UINT uPeriod);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) timeEndPeriod(UINT uPeriod);
#define JOYERR_NOERROR (0)
#define JOYERR_PARMS (JOYERR_BASE+5)
#define JOYERR_NOCANDO (JOYERR_BASE+6)
#define JOYERR_UNPLUGGED (JOYERR_BASE+7)
#define JOY_BUTTON1 0x0001
#define JOY_BUTTON2 0x0002
#define JOY_BUTTON3 0x0004
#define JOY_BUTTON4 0x0008
#define JOY_BUTTON1CHG 0x0100
#define JOY_BUTTON2CHG 0x0200
#define JOY_BUTTON3CHG 0x0400
#define JOY_BUTTON4CHG 0x0800
#define JOY_BUTTON5 __MSABI_LONG(0x00000010)
#define JOY_BUTTON6 __MSABI_LONG(0x00000020)
#define JOY_BUTTON7 __MSABI_LONG(0x00000040)
#define JOY_BUTTON8 __MSABI_LONG(0x00000080)
#define JOY_BUTTON9 __MSABI_LONG(0x00000100)
#define JOY_BUTTON10 __MSABI_LONG(0x00000200)
#define JOY_BUTTON11 __MSABI_LONG(0x00000400)
#define JOY_BUTTON12 __MSABI_LONG(0x00000800)
#define JOY_BUTTON13 __MSABI_LONG(0x00001000)
#define JOY_BUTTON14 __MSABI_LONG(0x00002000)
#define JOY_BUTTON15 __MSABI_LONG(0x00004000)
#define JOY_BUTTON16 __MSABI_LONG(0x00008000)
#define JOY_BUTTON17 __MSABI_LONG(0x00010000)
#define JOY_BUTTON18 __MSABI_LONG(0x00020000)
#define JOY_BUTTON19 __MSABI_LONG(0x00040000)
#define JOY_BUTTON20 __MSABI_LONG(0x00080000)
#define JOY_BUTTON21 __MSABI_LONG(0x00100000)
#define JOY_BUTTON22 __MSABI_LONG(0x00200000)
#define JOY_BUTTON23 __MSABI_LONG(0x00400000)
#define JOY_BUTTON24 __MSABI_LONG(0x00800000)
#define JOY_BUTTON25 __MSABI_LONG(0x01000000)
#define JOY_BUTTON26 __MSABI_LONG(0x02000000)
#define JOY_BUTTON27 __MSABI_LONG(0x04000000)
#define JOY_BUTTON28 __MSABI_LONG(0x08000000)
#define JOY_BUTTON29 __MSABI_LONG(0x10000000)
#define JOY_BUTTON30 __MSABI_LONG(0x20000000)
#define JOY_BUTTON31 __MSABI_LONG(0x40000000)
#define JOY_BUTTON32 __MSABI_LONG(0x80000000)
#define JOY_POVCENTERED (WORD) -1
#define JOY_POVFORWARD 0
#define JOY_POVRIGHT 9000
#define JOY_POVBACKWARD 18000
#define JOY_POVLEFT 27000
#define JOY_RETURNX __MSABI_LONG(0x00000001)
#define JOY_RETURNY __MSABI_LONG(0x00000002)
#define JOY_RETURNZ __MSABI_LONG(0x00000004)
#define JOY_RETURNR __MSABI_LONG(0x00000008)
#define JOY_RETURNU __MSABI_LONG(0x00000010)
#define JOY_RETURNV __MSABI_LONG(0x00000020)
#define JOY_RETURNPOV __MSABI_LONG(0x00000040)
#define JOY_RETURNBUTTONS __MSABI_LONG(0x00000080)
#define JOY_RETURNRAWDATA __MSABI_LONG(0x00000100)
#define JOY_RETURNPOVCTS __MSABI_LONG(0x00000200)
#define JOY_RETURNCENTERED __MSABI_LONG(0x00000400)
#define JOY_USEDEADZONE __MSABI_LONG(0x00000800)
#define JOY_RETURNALL (JOY_RETURNX | JOY_RETURNY | JOY_RETURNZ | JOY_RETURNR | JOY_RETURNU | JOY_RETURNV | JOY_RETURNPOV | JOY_RETURNBUTTONS)
#define JOY_CAL_READALWAYS __MSABI_LONG(0x00010000)
#define JOY_CAL_READXYONLY __MSABI_LONG(0x00020000)
#define JOY_CAL_READ3 __MSABI_LONG(0x00040000)
#define JOY_CAL_READ4 __MSABI_LONG(0x00080000)
#define JOY_CAL_READXONLY __MSABI_LONG(0x00100000)
#define JOY_CAL_READYONLY __MSABI_LONG(0x00200000)
#define JOY_CAL_READ5 __MSABI_LONG(0x00400000)
#define JOY_CAL_READ6 __MSABI_LONG(0x00800000)
#define JOY_CAL_READZONLY __MSABI_LONG(0x01000000)
#define JOY_CAL_READRONLY __MSABI_LONG(0x02000000)
#define JOY_CAL_READUONLY __MSABI_LONG(0x04000000)
#define JOY_CAL_READVONLY __MSABI_LONG(0x08000000)
#define JOYSTICKID1 0
#define JOYSTICKID2 1
#define JOYCAPS_HASZ 0x0001
#define JOYCAPS_HASR 0x0002
#define JOYCAPS_HASU 0x0004
#define JOYCAPS_HASV 0x0008
#define JOYCAPS_HASPOV 0x0010
#define JOYCAPS_POV4DIR 0x0020
#define JOYCAPS_POVCTS 0x0040
  typedef struct tagJOYCAPSA {
    WORD wMid;
    WORD wPid;
    CHAR szPname[32];
    UINT wXmin;
    UINT wXmax;
    UINT wYmin;
    UINT wYmax;
    UINT wZmin;
    UINT wZmax;
    UINT wNumButtons;
    UINT wPeriodMin;
    UINT wPeriodMax;
    UINT wRmin;
    UINT wRmax;
    UINT wUmin;
    UINT wUmax;
    UINT wVmin;
    UINT wVmax;
    UINT wCaps;
    UINT wMaxAxes;
    UINT wNumAxes;
    UINT wMaxButtons;
    CHAR szRegKey[32];
    CHAR szOEMVxD[260];
  } JOYCAPSA,*PJOYCAPSA,*NPJOYCAPSA,*LPJOYCAPSA;
  typedef struct tagJOYCAPSW {
    WORD wMid;
    WORD wPid;
    WCHAR szPname[32];
    UINT wXmin;
    UINT wXmax;
    UINT wYmin;
    UINT wYmax;
    UINT wZmin;
    UINT wZmax;
    UINT wNumButtons;
    UINT wPeriodMin;
    UINT wPeriodMax;
    UINT wRmin;
    UINT wRmax;
    UINT wUmin;
    UINT wUmax;
    UINT wVmin;
    UINT wVmax;
    UINT wCaps;
    UINT wMaxAxes;
    UINT wNumAxes;
    UINT wMaxButtons;
    WCHAR szRegKey[32];
    WCHAR szOEMVxD[260];
  } JOYCAPSW,*PJOYCAPSW,*NPJOYCAPSW,*LPJOYCAPSW;
  typedef JOYCAPSA JOYCAPS;
  typedef PJOYCAPSA PJOYCAPS;
  typedef NPJOYCAPSA NPJOYCAPS;
  typedef LPJOYCAPSA LPJOYCAPS;
  typedef struct tagJOYCAPS2A {
    WORD wMid;
    WORD wPid;
    CHAR szPname[32];
    UINT wXmin;
    UINT wXmax;
    UINT wYmin;
    UINT wYmax;
    UINT wZmin;
    UINT wZmax;
    UINT wNumButtons;
    UINT wPeriodMin;
    UINT wPeriodMax;
    UINT wRmin;
    UINT wRmax;
    UINT wUmin;
    UINT wUmax;
    UINT wVmin;
    UINT wVmax;
    UINT wCaps;
    UINT wMaxAxes;
    UINT wNumAxes;
    UINT wMaxButtons;
    CHAR szRegKey[32];
    CHAR szOEMVxD[260];
    GUID ManufacturerGuid;
    GUID ProductGuid;
    GUID NameGuid;
  } JOYCAPS2A,*PJOYCAPS2A,*NPJOYCAPS2A,*LPJOYCAPS2A;
  typedef struct tagJOYCAPS2W {
    WORD wMid;
    WORD wPid;
    WCHAR szPname[32];
    UINT wXmin;
    UINT wXmax;
    UINT wYmin;
    UINT wYmax;
    UINT wZmin;
    UINT wZmax;
    UINT wNumButtons;
    UINT wPeriodMin;
    UINT wPeriodMax;
    UINT wRmin;
    UINT wRmax;
    UINT wUmin;
    UINT wUmax;
    UINT wVmin;
    UINT wVmax;
    UINT wCaps;
    UINT wMaxAxes;
    UINT wNumAxes;
    UINT wMaxButtons;
    WCHAR szRegKey[32];
    WCHAR szOEMVxD[260];
    GUID ManufacturerGuid;
    GUID ProductGuid;
    GUID NameGuid;
  } JOYCAPS2W,*PJOYCAPS2W,*NPJOYCAPS2W,*LPJOYCAPS2W;
  typedef JOYCAPS2A JOYCAPS2;
  typedef PJOYCAPS2A PJOYCAPS2;
  typedef NPJOYCAPS2A NPJOYCAPS2;
  typedef LPJOYCAPS2A LPJOYCAPS2;
  typedef struct joyinfo_tag {
    UINT wXpos;
    UINT wYpos;
    UINT wZpos;
    UINT wButtons;
  } JOYINFO,*PJOYINFO, *NPJOYINFO,*LPJOYINFO;
  typedef struct joyinfoex_tag {
    DWORD dwSize;
    DWORD dwFlags;
    DWORD dwXpos;
    DWORD dwYpos;
    DWORD dwZpos;
    DWORD dwRpos;
    DWORD dwUpos;
    DWORD dwVpos;
    DWORD dwButtons;
    DWORD dwButtonNumber;
    DWORD dwPOV;
    DWORD dwReserved1;
    DWORD dwReserved2;
  } JOYINFOEX,*PJOYINFOEX, *NPJOYINFOEX,*LPJOYINFOEX;
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) joyGetNumDevs(void);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) joyGetDevCapsA(UINT_PTR uJoyID,LPJOYCAPSA pjc,UINT cbjc);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) joyGetDevCapsW(UINT_PTR uJoyID,LPJOYCAPSW pjc,UINT cbjc);
#define joyGetDevCaps __MINGW_NAME_AW(joyGetDevCaps)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) joyGetPos(UINT uJoyID,LPJOYINFO pji);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) joyGetPosEx(UINT uJoyID,LPJOYINFOEX pji);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) joyGetThreshold(UINT uJoyID,LPUINT puThreshold);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) joyReleaseCapture(UINT uJoyID);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) joySetCapture(HWND hwnd,UINT uJoyID,UINT uPeriod,WINBOOL fChanged);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) joySetThreshold(UINT uJoyID,UINT uThreshold);
#define MMIOERR_BASE 256
#define MMIOERR_FILENOTFOUND (MMIOERR_BASE + 1)
#define MMIOERR_OUTOFMEMORY (MMIOERR_BASE + 2)
#define MMIOERR_CANNOTOPEN (MMIOERR_BASE + 3)
#define MMIOERR_CANNOTCLOSE (MMIOERR_BASE + 4)
#define MMIOERR_CANNOTREAD (MMIOERR_BASE + 5)
#define MMIOERR_CANNOTWRITE (MMIOERR_BASE + 6)
#define MMIOERR_CANNOTSEEK (MMIOERR_BASE + 7)
#define MMIOERR_CANNOTEXPAND (MMIOERR_BASE + 8)
#define MMIOERR_CHUNKNOTFOUND (MMIOERR_BASE + 9)
#define MMIOERR_UNBUFFERED (MMIOERR_BASE + 10)
#define MMIOERR_PATHNOTFOUND (MMIOERR_BASE + 11)
#define MMIOERR_ACCESSDENIED (MMIOERR_BASE + 12)
#define MMIOERR_SHARINGVIOLATION (MMIOERR_BASE + 13)
#define MMIOERR_NETWORKERROR (MMIOERR_BASE + 14)
#define MMIOERR_TOOMANYOPENFILES (MMIOERR_BASE + 15)
#define MMIOERR_INVALIDFILE (MMIOERR_BASE + 16)
#define CFSEPCHAR '+'
  typedef DWORD FOURCC;
  typedef char *HPSTR;
  struct HMMIO__ { int unused; }; typedef struct HMMIO__ *HMMIO;
  typedef LRESULT (__attribute__((__stdcall__)) MMIOPROC)(LPSTR lpmmioinfo,UINT uMsg,LPARAM lParam1,LPARAM lParam2);
  typedef MMIOPROC *LPMMIOPROC;
  typedef struct _MMIOINFO {
    DWORD dwFlags;
    FOURCC fccIOProc;
    LPMMIOPROC pIOProc;
    UINT wErrorRet;
    HTASK htask;
    LONG cchBuffer;
    HPSTR pchBuffer;
    HPSTR pchNext;
    HPSTR pchEndRead;
    HPSTR pchEndWrite;
    LONG lBufOffset;
    LONG lDiskOffset;
    DWORD adwInfo[3];
    DWORD dwReserved1;
    DWORD dwReserved2;
    HMMIO hmmio;
  } MMIOINFO,*PMMIOINFO, *NPMMIOINFO,*LPMMIOINFO;
  typedef const MMIOINFO *LPCMMIOINFO;
  typedef struct _MMCKINFO {
    FOURCC ckid;
    DWORD cksize;
    FOURCC fccType;
    DWORD dwDataOffset;
    DWORD dwFlags;
  } MMCKINFO,*PMMCKINFO, *NPMMCKINFO,*LPMMCKINFO;
  typedef const MMCKINFO *LPCMMCKINFO;
#define MMIO_RWMODE 0x00000003
#define MMIO_SHAREMODE 0x00000070
#define MMIO_CREATE 0x00001000
#define MMIO_PARSE 0x00000100
#define MMIO_DELETE 0x00000200
#define MMIO_EXIST 0x00004000
#define MMIO_ALLOCBUF 0x00010000
#define MMIO_GETTEMP 0x00020000
#define MMIO_DIRTY 0x10000000
#define MMIO_READ 0x00000000
#define MMIO_WRITE 0x00000001
#define MMIO_READWRITE 0x00000002
#define MMIO_COMPAT 0x00000000
#define MMIO_EXCLUSIVE 0x00000010
#define MMIO_DENYWRITE 0x00000020
#define MMIO_DENYREAD 0x00000030
#define MMIO_DENYNONE 0x00000040
#define MMIO_FHOPEN 0x0010
#define MMIO_EMPTYBUF 0x0010
#define MMIO_TOUPPER 0x0010
#define MMIO_INSTALLPROC 0x00010000
#define MMIO_GLOBALPROC 0x10000000
#define MMIO_REMOVEPROC 0x00020000
#define MMIO_UNICODEPROC 0x01000000
#define MMIO_FINDPROC 0x00040000
#define MMIO_FINDCHUNK 0x0010
#define MMIO_FINDRIFF 0x0020
#define MMIO_FINDLIST 0x0040
#define MMIO_CREATERIFF 0x0020
#define MMIO_CREATELIST 0x0040
#define MMIOM_READ MMIO_READ
#define MMIOM_WRITE MMIO_WRITE
#define MMIOM_SEEK 2
#define MMIOM_OPEN 3
#define MMIOM_CLOSE 4
#define MMIOM_WRITEFLUSH 5
#define MMIOM_RENAME 6
#define MMIOM_USER 0x8000
#define FOURCC_RIFF mmioFOURCC('R','I','F','F')
#define FOURCC_LIST mmioFOURCC('L','I','S','T')
#define FOURCC_DOS mmioFOURCC('D','O','S',' ')
#define FOURCC_MEM mmioFOURCC('M','E','M',' ')
#define MMIO_DEFAULTBUFFER 8192
#define mmioFOURCC(ch0,ch1,ch2,ch3) MAKEFOURCC(ch0,ch1,ch2,ch3)
  __attribute__((dllimport)) FOURCC __attribute__((__stdcall__)) mmioStringToFOURCCA(LPCSTR sz,UINT uFlags);
  __attribute__((dllimport)) FOURCC __attribute__((__stdcall__)) mmioStringToFOURCCW(LPCWSTR sz,UINT uFlags);
#define mmioStringToFOURCC __MINGW_NAME_AW(mmioStringToFOURCC)
  __attribute__((dllimport)) LPMMIOPROC __attribute__((__stdcall__)) mmioInstallIOProcA(FOURCC fccIOProc,LPMMIOPROC pIOProc,DWORD dwFlags);
  __attribute__((dllimport)) LPMMIOPROC __attribute__((__stdcall__)) mmioInstallIOProcW(FOURCC fccIOProc,LPMMIOPROC pIOProc,DWORD dwFlags);
#define mmioInstallIOProc __MINGW_NAME_AW(mmioInstallIOProc)
  __attribute__((dllimport)) HMMIO __attribute__((__stdcall__)) mmioOpenA(LPSTR pszFileName,LPMMIOINFO pmmioinfo,DWORD fdwOpen);
  __attribute__((dllimport)) HMMIO __attribute__((__stdcall__)) mmioOpenW(LPWSTR pszFileName,LPMMIOINFO pmmioinfo,DWORD fdwOpen);
#define mmioOpen __MINGW_NAME_AW(mmioOpen)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mmioRenameA(LPCSTR pszFileName,LPCSTR pszNewFileName,LPCMMIOINFO pmmioinfo,DWORD fdwRename);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mmioRenameW(LPCWSTR pszFileName,LPCWSTR pszNewFileName,LPCMMIOINFO pmmioinfo,DWORD fdwRename);
#define mmioRename __MINGW_NAME_AW(mmioRename)
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mmioClose(HMMIO hmmio,UINT fuClose);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) mmioRead(HMMIO hmmio,HPSTR pch,LONG cch);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) mmioWrite(HMMIO hmmio,const char *pch,LONG cch);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) mmioSeek(HMMIO hmmio,LONG lOffset,int iOrigin);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mmioGetInfo(HMMIO hmmio,LPMMIOINFO pmmioinfo,UINT fuInfo);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mmioSetInfo(HMMIO hmmio,LPCMMIOINFO pmmioinfo,UINT fuInfo);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mmioSetBuffer(HMMIO hmmio,LPSTR pchBuffer,LONG cchBuffer,UINT fuBuffer);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mmioFlush(HMMIO hmmio,UINT fuFlush);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mmioAdvance(HMMIO hmmio,LPMMIOINFO pmmioinfo,UINT fuAdvance);
  __attribute__((dllimport)) LRESULT __attribute__((__stdcall__)) mmioSendMessage(HMMIO hmmio,UINT uMsg,LPARAM lParam1,LPARAM lParam2);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mmioDescend(HMMIO hmmio,LPMMCKINFO pmmcki,const MMCKINFO *pmmckiParent,UINT fuDescend);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mmioAscend(HMMIO hmmio,LPMMCKINFO pmmcki,UINT fuAscend);
  __attribute__((dllimport)) MMRESULT __attribute__((__stdcall__)) mmioCreateChunk(HMMIO hmmio,LPMMCKINFO pmmcki,UINT fuCreate);
#define _MCIERROR_ 
  typedef DWORD MCIERROR;
#define _MCIDEVICEID_ 
  typedef UINT MCIDEVICEID;
  typedef UINT (__attribute__((__stdcall__)) *YIELDPROC)(MCIDEVICEID mciId,DWORD dwYieldData);
  __attribute__((dllimport)) MCIERROR __attribute__((__stdcall__)) mciSendCommandA(MCIDEVICEID mciId,UINT uMsg,DWORD_PTR dwParam1,DWORD_PTR dwParam2);
  __attribute__((dllimport)) MCIERROR __attribute__((__stdcall__)) mciSendCommandW(MCIDEVICEID mciId,UINT uMsg,DWORD_PTR dwParam1,DWORD_PTR dwParam2);
#define mciSendCommand __MINGW_NAME_AW(mciSendCommand)
  __attribute__((dllimport)) MCIERROR __attribute__((__stdcall__)) mciSendStringA(LPCSTR lpstrCommand,LPSTR lpstrReturnString,UINT uReturnLength,HWND hwndCallback);
  __attribute__((dllimport)) MCIERROR __attribute__((__stdcall__)) mciSendStringW(LPCWSTR lpstrCommand,LPWSTR lpstrReturnString,UINT uReturnLength,HWND hwndCallback);
#define mciSendString __MINGW_NAME_AW(mciSendString)
  __attribute__((dllimport)) MCIDEVICEID __attribute__((__stdcall__)) mciGetDeviceIDA(LPCSTR pszDevice);
  __attribute__((dllimport)) MCIDEVICEID __attribute__((__stdcall__)) mciGetDeviceIDW(LPCWSTR pszDevice);
#define mciGetDeviceID __MINGW_NAME_AW(mciGetDeviceID)
  __attribute__((dllimport)) MCIDEVICEID __attribute__((__stdcall__)) mciGetDeviceIDFromElementIDA(DWORD dwElementID,LPCSTR lpstrType);
  __attribute__((dllimport)) MCIDEVICEID __attribute__((__stdcall__)) mciGetDeviceIDFromElementIDW(DWORD dwElementID,LPCWSTR lpstrType);
#define mciGetDeviceIDFromElementID __MINGW_NAME_AW(mciGetDeviceIDFromElementID)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) mciGetErrorStringA(MCIERROR mcierr,LPSTR pszText,UINT cchText);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) mciGetErrorStringW(MCIERROR mcierr,LPWSTR pszText,UINT cchText);
#define mciGetErrorString __MINGW_NAME_AW(mciGetErrorString)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) mciSetYieldProc(MCIDEVICEID mciId,YIELDPROC fpYieldProc,DWORD dwYieldData);
  __attribute__((dllimport)) HTASK __attribute__((__stdcall__)) mciGetCreatorTask(MCIDEVICEID mciId);
  __attribute__((dllimport)) YIELDPROC __attribute__((__stdcall__)) mciGetYieldProc(MCIDEVICEID mciId,LPDWORD pdwYieldData);
#define MCIERR_INVALID_DEVICE_ID (MCIERR_BASE + 1)
#define MCIERR_UNRECOGNIZED_KEYWORD (MCIERR_BASE + 3)
#define MCIERR_UNRECOGNIZED_COMMAND (MCIERR_BASE + 5)
#define MCIERR_HARDWARE (MCIERR_BASE + 6)
#define MCIERR_INVALID_DEVICE_NAME (MCIERR_BASE + 7)
#define MCIERR_OUT_OF_MEMORY (MCIERR_BASE + 8)
#define MCIERR_DEVICE_OPEN (MCIERR_BASE + 9)
#define MCIERR_CANNOT_LOAD_DRIVER (MCIERR_BASE + 10)
#define MCIERR_MISSING_COMMAND_STRING (MCIERR_BASE + 11)
#define MCIERR_PARAM_OVERFLOW (MCIERR_BASE + 12)
#define MCIERR_MISSING_STRING_ARGUMENT (MCIERR_BASE + 13)
#define MCIERR_BAD_INTEGER (MCIERR_BASE + 14)
#define MCIERR_PARSER_INTERNAL (MCIERR_BASE + 15)
#define MCIERR_DRIVER_INTERNAL (MCIERR_BASE + 16)
#define MCIERR_MISSING_PARAMETER (MCIERR_BASE + 17)
#define MCIERR_UNSUPPORTED_FUNCTION (MCIERR_BASE + 18)
#define MCIERR_FILE_NOT_FOUND (MCIERR_BASE + 19)
#define MCIERR_DEVICE_NOT_READY (MCIERR_BASE + 20)
#define MCIERR_INTERNAL (MCIERR_BASE + 21)
#define MCIERR_DRIVER (MCIERR_BASE + 22)
#define MCIERR_CANNOT_USE_ALL (MCIERR_BASE + 23)
#define MCIERR_MULTIPLE (MCIERR_BASE + 24)
#define MCIERR_EXTENSION_NOT_FOUND (MCIERR_BASE + 25)
#define MCIERR_OUTOFRANGE (MCIERR_BASE + 26)
#define MCIERR_FLAGS_NOT_COMPATIBLE (MCIERR_BASE + 28)
#define MCIERR_FILE_NOT_SAVED (MCIERR_BASE + 30)
#define MCIERR_DEVICE_TYPE_REQUIRED (MCIERR_BASE + 31)
#define MCIERR_DEVICE_LOCKED (MCIERR_BASE + 32)
#define MCIERR_DUPLICATE_ALIAS (MCIERR_BASE + 33)
#define MCIERR_BAD_CONSTANT (MCIERR_BASE + 34)
#define MCIERR_MUST_USE_SHAREABLE (MCIERR_BASE + 35)
#define MCIERR_MISSING_DEVICE_NAME (MCIERR_BASE + 36)
#define MCIERR_BAD_TIME_FORMAT (MCIERR_BASE + 37)
#define MCIERR_NO_CLOSING_QUOTE (MCIERR_BASE + 38)
#define MCIERR_DUPLICATE_FLAGS (MCIERR_BASE + 39)
#define MCIERR_INVALID_FILE (MCIERR_BASE + 40)
#define MCIERR_NULL_PARAMETER_BLOCK (MCIERR_BASE + 41)
#define MCIERR_UNNAMED_RESOURCE (MCIERR_BASE + 42)
#define MCIERR_NEW_REQUIRES_ALIAS (MCIERR_BASE + 43)
#define MCIERR_NOTIFY_ON_AUTO_OPEN (MCIERR_BASE + 44)
#define MCIERR_NO_ELEMENT_ALLOWED (MCIERR_BASE + 45)
#define MCIERR_NONAPPLICABLE_FUNCTION (MCIERR_BASE + 46)
#define MCIERR_ILLEGAL_FOR_AUTO_OPEN (MCIERR_BASE + 47)
#define MCIERR_FILENAME_REQUIRED (MCIERR_BASE + 48)
#define MCIERR_EXTRA_CHARACTERS (MCIERR_BASE + 49)
#define MCIERR_DEVICE_NOT_INSTALLED (MCIERR_BASE + 50)
#define MCIERR_GET_CD (MCIERR_BASE + 51)
#define MCIERR_SET_CD (MCIERR_BASE + 52)
#define MCIERR_SET_DRIVE (MCIERR_BASE + 53)
#define MCIERR_DEVICE_LENGTH (MCIERR_BASE + 54)
#define MCIERR_DEVICE_ORD_LENGTH (MCIERR_BASE + 55)
#define MCIERR_NO_INTEGER (MCIERR_BASE + 56)
#define MCIERR_WAVE_OUTPUTSINUSE (MCIERR_BASE + 64)
#define MCIERR_WAVE_SETOUTPUTINUSE (MCIERR_BASE + 65)
#define MCIERR_WAVE_INPUTSINUSE (MCIERR_BASE + 66)
#define MCIERR_WAVE_SETINPUTINUSE (MCIERR_BASE + 67)
#define MCIERR_WAVE_OUTPUTUNSPECIFIED (MCIERR_BASE + 68)
#define MCIERR_WAVE_INPUTUNSPECIFIED (MCIERR_BASE + 69)
#define MCIERR_WAVE_OUTPUTSUNSUITABLE (MCIERR_BASE + 70)
#define MCIERR_WAVE_SETOUTPUTUNSUITABLE (MCIERR_BASE + 71)
#define MCIERR_WAVE_INPUTSUNSUITABLE (MCIERR_BASE + 72)
#define MCIERR_WAVE_SETINPUTUNSUITABLE (MCIERR_BASE + 73)
#define MCIERR_SEQ_DIV_INCOMPATIBLE (MCIERR_BASE + 80)
#define MCIERR_SEQ_PORT_INUSE (MCIERR_BASE + 81)
#define MCIERR_SEQ_PORT_NONEXISTENT (MCIERR_BASE + 82)
#define MCIERR_SEQ_PORT_MAPNODEVICE (MCIERR_BASE + 83)
#define MCIERR_SEQ_PORT_MISCERROR (MCIERR_BASE + 84)
#define MCIERR_SEQ_TIMER (MCIERR_BASE + 85)
#define MCIERR_SEQ_PORTUNSPECIFIED (MCIERR_BASE + 86)
#define MCIERR_SEQ_NOMIDIPRESENT (MCIERR_BASE + 87)
#define MCIERR_NO_WINDOW (MCIERR_BASE + 90)
#define MCIERR_CREATEWINDOW (MCIERR_BASE + 91)
#define MCIERR_FILE_READ (MCIERR_BASE + 92)
#define MCIERR_FILE_WRITE (MCIERR_BASE + 93)
#define MCIERR_NO_IDENTITY (MCIERR_BASE + 94)
#define MCIERR_CUSTOM_DRIVER_BASE (MCIERR_BASE + 256)
#define MCI_FIRST DRV_MCI_FIRST
#define MCI_OPEN 0x0803
#define MCI_CLOSE 0x0804
#define MCI_ESCAPE 0x0805
#define MCI_PLAY 0x0806
#define MCI_SEEK 0x0807
#define MCI_STOP 0x0808
#define MCI_PAUSE 0x0809
#define MCI_INFO 0x080A
#define MCI_GETDEVCAPS 0x080B
#define MCI_SPIN 0x080C
#define MCI_SET 0x080D
#define MCI_STEP 0x080E
#define MCI_RECORD 0x080F
#define MCI_SYSINFO 0x0810
#define MCI_BREAK 0x0811
#define MCI_SAVE 0x0813
#define MCI_STATUS 0x0814
#define MCI_CUE 0x0830
#define MCI_REALIZE 0x0840
#define MCI_WINDOW 0x0841
#define MCI_PUT 0x0842
#define MCI_WHERE 0x0843
#define MCI_FREEZE 0x0844
#define MCI_UNFREEZE 0x0845
#define MCI_LOAD 0x0850
#define MCI_CUT 0x0851
#define MCI_COPY 0x0852
#define MCI_PASTE 0x0853
#define MCI_UPDATE 0x0854
#define MCI_RESUME 0x0855
#define MCI_DELETE 0x0856
#define MCI_USER_MESSAGES (DRV_MCI_FIRST + 0x400)
#define MCI_LAST 0x0FFF
#define MCI_ALL_DEVICE_ID ((MCIDEVICEID)-1)
#define MCI_DEVTYPE_VCR 513
#define MCI_DEVTYPE_VIDEODISC 514
#define MCI_DEVTYPE_OVERLAY 515
#define MCI_DEVTYPE_CD_AUDIO 516
#define MCI_DEVTYPE_DAT 517
#define MCI_DEVTYPE_SCANNER 518
#define MCI_DEVTYPE_ANIMATION 519
#define MCI_DEVTYPE_DIGITAL_VIDEO 520
#define MCI_DEVTYPE_OTHER 521
#define MCI_DEVTYPE_WAVEFORM_AUDIO 522
#define MCI_DEVTYPE_SEQUENCER 523
#define MCI_DEVTYPE_FIRST MCI_DEVTYPE_VCR
#define MCI_DEVTYPE_LAST MCI_DEVTYPE_SEQUENCER
#define MCI_DEVTYPE_FIRST_USER 0x1000
#define MCI_MODE_NOT_READY (MCI_STRING_OFFSET + 12)
#define MCI_MODE_STOP (MCI_STRING_OFFSET + 13)
#define MCI_MODE_PLAY (MCI_STRING_OFFSET + 14)
#define MCI_MODE_RECORD (MCI_STRING_OFFSET + 15)
#define MCI_MODE_SEEK (MCI_STRING_OFFSET + 16)
#define MCI_MODE_PAUSE (MCI_STRING_OFFSET + 17)
#define MCI_MODE_OPEN (MCI_STRING_OFFSET + 18)
#define MCI_FORMAT_MILLISECONDS 0
#define MCI_FORMAT_HMS 1
#define MCI_FORMAT_MSF 2
#define MCI_FORMAT_FRAMES 3
#define MCI_FORMAT_SMPTE_24 4
#define MCI_FORMAT_SMPTE_25 5
#define MCI_FORMAT_SMPTE_30 6
#define MCI_FORMAT_SMPTE_30DROP 7
#define MCI_FORMAT_BYTES 8
#define MCI_FORMAT_SAMPLES 9
#define MCI_FORMAT_TMSF 10
#define MCI_MSF_MINUTE(msf) ((BYTE)(msf))
#define MCI_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8))
#define MCI_MSF_FRAME(msf) ((BYTE)((msf)>>16))
#define MCI_MAKE_MSF(m,s,f) ((DWORD)(((BYTE)(m) | ((WORD)(s)<<8)) | (((DWORD)(BYTE)(f))<<16)))
#define MCI_TMSF_TRACK(tmsf) ((BYTE)(tmsf))
#define MCI_TMSF_MINUTE(tmsf) ((BYTE)(((WORD)(tmsf)) >> 8))
#define MCI_TMSF_SECOND(tmsf) ((BYTE)((tmsf)>>16))
#define MCI_TMSF_FRAME(tmsf) ((BYTE)((tmsf)>>24))
#define MCI_MAKE_TMSF(t,m,s,f) ((DWORD)(((BYTE)(t) | ((WORD)(m)<<8)) | (((DWORD)(BYTE)(s) | ((WORD)(f)<<8))<<16)))
#define MCI_HMS_HOUR(hms) ((BYTE)(hms))
#define MCI_HMS_MINUTE(hms) ((BYTE)(((WORD)(hms)) >> 8))
#define MCI_HMS_SECOND(hms) ((BYTE)((hms)>>16))
#define MCI_MAKE_HMS(h,m,s) ((DWORD)(((BYTE)(h) | ((WORD)(m)<<8)) | (((DWORD)(BYTE)(s))<<16)))
#define MCI_NOTIFY_SUCCESSFUL 0x0001
#define MCI_NOTIFY_SUPERSEDED 0x0002
#define MCI_NOTIFY_ABORTED 0x0004
#define MCI_NOTIFY_FAILURE 0x0008
#define MCI_NOTIFY __MSABI_LONG(0x00000001)
#define MCI_WAIT __MSABI_LONG(0x00000002)
#define MCI_FROM __MSABI_LONG(0x00000004)
#define MCI_TO __MSABI_LONG(0x00000008)
#define MCI_TRACK __MSABI_LONG(0x00000010)
#define MCI_OPEN_SHAREABLE __MSABI_LONG(0x00000100)
#define MCI_OPEN_ELEMENT __MSABI_LONG(0x00000200)
#define MCI_OPEN_ALIAS __MSABI_LONG(0x00000400)
#define MCI_OPEN_ELEMENT_ID __MSABI_LONG(0x00000800)
#define MCI_OPEN_TYPE_ID __MSABI_LONG(0x00001000)
#define MCI_OPEN_TYPE __MSABI_LONG(0x00002000)
#define MCI_SEEK_TO_START __MSABI_LONG(0x00000100)
#define MCI_SEEK_TO_END __MSABI_LONG(0x00000200)
#define MCI_STATUS_ITEM __MSABI_LONG(0x00000100)
#define MCI_STATUS_START __MSABI_LONG(0x00000200)
#define MCI_STATUS_LENGTH __MSABI_LONG(0x00000001)
#define MCI_STATUS_POSITION __MSABI_LONG(0x00000002)
#define MCI_STATUS_NUMBER_OF_TRACKS __MSABI_LONG(0x00000003)
#define MCI_STATUS_MODE __MSABI_LONG(0x00000004)
#define MCI_STATUS_MEDIA_PRESENT __MSABI_LONG(0x00000005)
#define MCI_STATUS_TIME_FORMAT __MSABI_LONG(0x00000006)
#define MCI_STATUS_READY __MSABI_LONG(0x00000007)
#define MCI_STATUS_CURRENT_TRACK __MSABI_LONG(0x00000008)
#define MCI_INFO_PRODUCT __MSABI_LONG(0x00000100)
#define MCI_INFO_FILE __MSABI_LONG(0x00000200)
#define MCI_INFO_MEDIA_UPC __MSABI_LONG(0x00000400)
#define MCI_INFO_MEDIA_IDENTITY __MSABI_LONG(0x00000800)
#define MCI_INFO_NAME __MSABI_LONG(0x00001000)
#define MCI_INFO_COPYRIGHT __MSABI_LONG(0x00002000)
#define MCI_GETDEVCAPS_ITEM __MSABI_LONG(0x00000100)
#define MCI_GETDEVCAPS_CAN_RECORD __MSABI_LONG(0x00000001)
#define MCI_GETDEVCAPS_HAS_AUDIO __MSABI_LONG(0x00000002)
#define MCI_GETDEVCAPS_HAS_VIDEO __MSABI_LONG(0x00000003)
#define MCI_GETDEVCAPS_DEVICE_TYPE __MSABI_LONG(0x00000004)
#define MCI_GETDEVCAPS_USES_FILES __MSABI_LONG(0x00000005)
#define MCI_GETDEVCAPS_COMPOUND_DEVICE __MSABI_LONG(0x00000006)
#define MCI_GETDEVCAPS_CAN_EJECT __MSABI_LONG(0x00000007)
#define MCI_GETDEVCAPS_CAN_PLAY __MSABI_LONG(0x00000008)
#define MCI_GETDEVCAPS_CAN_SAVE __MSABI_LONG(0x00000009)
#define MCI_SYSINFO_QUANTITY __MSABI_LONG(0x00000100)
#define MCI_SYSINFO_OPEN __MSABI_LONG(0x00000200)
#define MCI_SYSINFO_NAME __MSABI_LONG(0x00000400)
#define MCI_SYSINFO_INSTALLNAME __MSABI_LONG(0x00000800)
#define MCI_SET_DOOR_OPEN __MSABI_LONG(0x00000100)
#define MCI_SET_DOOR_CLOSED __MSABI_LONG(0x00000200)
#define MCI_SET_TIME_FORMAT __MSABI_LONG(0x00000400)
#define MCI_SET_AUDIO __MSABI_LONG(0x00000800)
#define MCI_SET_VIDEO __MSABI_LONG(0x00001000)
#define MCI_SET_ON __MSABI_LONG(0x00002000)
#define MCI_SET_OFF __MSABI_LONG(0x00004000)
#define MCI_SET_AUDIO_ALL __MSABI_LONG(0x00000000)
#define MCI_SET_AUDIO_LEFT __MSABI_LONG(0x00000001)
#define MCI_SET_AUDIO_RIGHT __MSABI_LONG(0x00000002)
#define MCI_BREAK_KEY __MSABI_LONG(0x00000100)
#define MCI_BREAK_HWND __MSABI_LONG(0x00000200)
#define MCI_BREAK_OFF __MSABI_LONG(0x00000400)
#define MCI_RECORD_INSERT __MSABI_LONG(0x00000100)
#define MCI_RECORD_OVERWRITE __MSABI_LONG(0x00000200)
#define MCI_SAVE_FILE __MSABI_LONG(0x00000100)
#define MCI_LOAD_FILE __MSABI_LONG(0x00000100)
  typedef struct tagMCI_GENERIC_PARMS {
    DWORD_PTR dwCallback;
  } MCI_GENERIC_PARMS,*PMCI_GENERIC_PARMS,*LPMCI_GENERIC_PARMS;
  typedef struct tagMCI_OPEN_PARMSA {
    DWORD_PTR dwCallback;
    MCIDEVICEID wDeviceID;
    LPCSTR lpstrDeviceType;
    LPCSTR lpstrElementName;
    LPCSTR lpstrAlias;
  } MCI_OPEN_PARMSA,*PMCI_OPEN_PARMSA,*LPMCI_OPEN_PARMSA;
  typedef struct tagMCI_OPEN_PARMSW {
    DWORD_PTR dwCallback;
    MCIDEVICEID wDeviceID;
    LPCWSTR lpstrDeviceType;
    LPCWSTR lpstrElementName;
    LPCWSTR lpstrAlias;
  } MCI_OPEN_PARMSW,*PMCI_OPEN_PARMSW,*LPMCI_OPEN_PARMSW;
  typedef MCI_OPEN_PARMSA MCI_OPEN_PARMS;
  typedef PMCI_OPEN_PARMSA PMCI_OPEN_PARMS;
  typedef LPMCI_OPEN_PARMSA LPMCI_OPEN_PARMS;
  typedef struct tagMCI_PLAY_PARMS {
    DWORD_PTR dwCallback;
    DWORD dwFrom;
    DWORD dwTo;
  } MCI_PLAY_PARMS,*PMCI_PLAY_PARMS,*LPMCI_PLAY_PARMS;
  typedef struct tagMCI_SEEK_PARMS {
    DWORD_PTR dwCallback;
    DWORD dwTo;
  } MCI_SEEK_PARMS,*PMCI_SEEK_PARMS,*LPMCI_SEEK_PARMS;
  typedef struct tagMCI_STATUS_PARMS {
    DWORD_PTR dwCallback;
    DWORD_PTR dwReturn;
    DWORD dwItem;
    DWORD dwTrack;
  } MCI_STATUS_PARMS,*PMCI_STATUS_PARMS,*LPMCI_STATUS_PARMS;
  typedef struct tagMCI_INFO_PARMSA {
    DWORD_PTR dwCallback;
    LPSTR lpstrReturn;
    DWORD dwRetSize;
  } MCI_INFO_PARMSA,*LPMCI_INFO_PARMSA;
  typedef struct tagMCI_INFO_PARMSW {
    DWORD_PTR dwCallback;
    LPWSTR lpstrReturn;
    DWORD dwRetSize;
  } MCI_INFO_PARMSW,*LPMCI_INFO_PARMSW;
  typedef MCI_INFO_PARMSA MCI_INFO_PARMS;
  typedef LPMCI_INFO_PARMSA LPMCI_INFO_PARMS;
  typedef struct tagMCI_GETDEVCAPS_PARMS {
    DWORD_PTR dwCallback;
    DWORD dwReturn;
    DWORD dwItem;
  } MCI_GETDEVCAPS_PARMS,*PMCI_GETDEVCAPS_PARMS,*LPMCI_GETDEVCAPS_PARMS;
  typedef struct tagMCI_SYSINFO_PARMSA {
    DWORD_PTR dwCallback;
    LPSTR lpstrReturn;
    DWORD dwRetSize;
    DWORD dwNumber;
    UINT wDeviceType;
  } MCI_SYSINFO_PARMSA,*PMCI_SYSINFO_PARMSA,*LPMCI_SYSINFO_PARMSA;
  typedef struct tagMCI_SYSINFO_PARMSW {
    DWORD_PTR dwCallback;
    LPWSTR lpstrReturn;
    DWORD dwRetSize;
    DWORD dwNumber;
    UINT wDeviceType;
  } MCI_SYSINFO_PARMSW,*PMCI_SYSINFO_PARMSW,*LPMCI_SYSINFO_PARMSW;
  typedef MCI_SYSINFO_PARMSA MCI_SYSINFO_PARMS;
  typedef PMCI_SYSINFO_PARMSA PMCI_SYSINFO_PARMS;
  typedef LPMCI_SYSINFO_PARMSA LPMCI_SYSINFO_PARMS;
  typedef struct tagMCI_SET_PARMS {
    DWORD_PTR dwCallback;
    DWORD dwTimeFormat;
    DWORD dwAudio;
  } MCI_SET_PARMS,*PMCI_SET_PARMS,*LPMCI_SET_PARMS;
  typedef struct tagMCI_BREAK_PARMS {
    DWORD_PTR dwCallback;
    int nVirtKey;
    HWND hwndBreak;
  } MCI_BREAK_PARMS,*PMCI_BREAK_PARMS,*LPMCI_BREAK_PARMS;
  typedef struct tagMCI_SAVE_PARMSA {
    DWORD_PTR dwCallback;
    LPCSTR lpfilename;
  } MCI_SAVE_PARMSA,*PMCI_SAVE_PARMSA,*LPMCI_SAVE_PARMSA;
  typedef struct tagMCI_SAVE_PARMSW {
    DWORD_PTR dwCallback;
    LPCWSTR lpfilename;
  } MCI_SAVE_PARMSW,*PMCI_SAVE_PARMSW,*LPMCI_SAVE_PARMSW;
  typedef MCI_SAVE_PARMSA MCI_SAVE_PARMS;
  typedef PMCI_SAVE_PARMSA PMCI_SAVE_PARMS;
  typedef LPMCI_SAVE_PARMSA LPMCI_SAVE_PARMS;
  typedef struct tagMCI_LOAD_PARMSA {
    DWORD_PTR dwCallback;
    LPCSTR lpfilename;
  } MCI_LOAD_PARMSA,*PMCI_LOAD_PARMSA,*LPMCI_LOAD_PARMSA;
  typedef struct tagMCI_LOAD_PARMSW {
    DWORD_PTR dwCallback;
    LPCWSTR lpfilename;
  } MCI_LOAD_PARMSW,*PMCI_LOAD_PARMSW,*LPMCI_LOAD_PARMSW;
  typedef MCI_LOAD_PARMSA MCI_LOAD_PARMS;
  typedef PMCI_LOAD_PARMSA PMCI_LOAD_PARMS;
  typedef LPMCI_LOAD_PARMSA LPMCI_LOAD_PARMS;
  typedef struct tagMCI_RECORD_PARMS {
    DWORD_PTR dwCallback;
    DWORD dwFrom;
    DWORD dwTo;
  } MCI_RECORD_PARMS,*LPMCI_RECORD_PARMS;
#define MCI_VD_MODE_PARK (MCI_VD_OFFSET + 1)
#define MCI_VD_MEDIA_CLV (MCI_VD_OFFSET + 2)
#define MCI_VD_MEDIA_CAV (MCI_VD_OFFSET + 3)
#define MCI_VD_MEDIA_OTHER (MCI_VD_OFFSET + 4)
#define MCI_VD_FORMAT_TRACK 0x4001
#define MCI_VD_PLAY_REVERSE __MSABI_LONG(0x00010000)
#define MCI_VD_PLAY_FAST __MSABI_LONG(0x00020000)
#define MCI_VD_PLAY_SPEED __MSABI_LONG(0x00040000)
#define MCI_VD_PLAY_SCAN __MSABI_LONG(0x00080000)
#define MCI_VD_PLAY_SLOW __MSABI_LONG(0x00100000)
#define MCI_VD_SEEK_REVERSE __MSABI_LONG(0x00010000)
#define MCI_VD_STATUS_SPEED __MSABI_LONG(0x00004002)
#define MCI_VD_STATUS_FORWARD __MSABI_LONG(0x00004003)
#define MCI_VD_STATUS_MEDIA_TYPE __MSABI_LONG(0x00004004)
#define MCI_VD_STATUS_SIDE __MSABI_LONG(0x00004005)
#define MCI_VD_STATUS_DISC_SIZE __MSABI_LONG(0x00004006)
#define MCI_VD_GETDEVCAPS_CLV __MSABI_LONG(0x00010000)
#define MCI_VD_GETDEVCAPS_CAV __MSABI_LONG(0x00020000)
#define MCI_VD_SPIN_UP __MSABI_LONG(0x00010000)
#define MCI_VD_SPIN_DOWN __MSABI_LONG(0x00020000)
#define MCI_VD_GETDEVCAPS_CAN_REVERSE __MSABI_LONG(0x00004002)
#define MCI_VD_GETDEVCAPS_FAST_RATE __MSABI_LONG(0x00004003)
#define MCI_VD_GETDEVCAPS_SLOW_RATE __MSABI_LONG(0x00004004)
#define MCI_VD_GETDEVCAPS_NORMAL_RATE __MSABI_LONG(0x00004005)
#define MCI_VD_STEP_FRAMES __MSABI_LONG(0x00010000)
#define MCI_VD_STEP_REVERSE __MSABI_LONG(0x00020000)
#define MCI_VD_ESCAPE_STRING __MSABI_LONG(0x00000100)
  typedef struct tagMCI_VD_PLAY_PARMS {
    DWORD_PTR dwCallback;
    DWORD dwFrom;
    DWORD dwTo;
    DWORD dwSpeed;
  } MCI_VD_PLAY_PARMS,*PMCI_VD_PLAY_PARMS,*LPMCI_VD_PLAY_PARMS;
  typedef struct tagMCI_VD_STEP_PARMS {
    DWORD_PTR dwCallback;
    DWORD dwFrames;
  } MCI_VD_STEP_PARMS,*PMCI_VD_STEP_PARMS,*LPMCI_VD_STEP_PARMS;
  typedef struct tagMCI_VD_ESCAPE_PARMSA {
    DWORD_PTR dwCallback;
    LPCSTR lpstrCommand;
  } MCI_VD_ESCAPE_PARMSA,*PMCI_VD_ESCAPE_PARMSA,*LPMCI_VD_ESCAPE_PARMSA;
  typedef struct tagMCI_VD_ESCAPE_PARMSW {
    DWORD_PTR dwCallback;
    LPCWSTR lpstrCommand;
  } MCI_VD_ESCAPE_PARMSW,*PMCI_VD_ESCAPE_PARMSW,*LPMCI_VD_ESCAPE_PARMSW;
  typedef MCI_VD_ESCAPE_PARMSA MCI_VD_ESCAPE_PARMS;
  typedef PMCI_VD_ESCAPE_PARMSA PMCI_VD_ESCAPE_PARMS;
  typedef LPMCI_VD_ESCAPE_PARMSA LPMCI_VD_ESCAPE_PARMS;
#define MCI_CDA_STATUS_TYPE_TRACK __MSABI_LONG(0x00004001)
#define MCI_CDA_TRACK_AUDIO (MCI_CD_OFFSET + 0)
#define MCI_CDA_TRACK_OTHER (MCI_CD_OFFSET + 1)
#define MCI_WAVE_PCM (MCI_WAVE_OFFSET + 0)
#define MCI_WAVE_MAPPER (MCI_WAVE_OFFSET + 1)
#define MCI_WAVE_OPEN_BUFFER __MSABI_LONG(0x00010000)
#define MCI_WAVE_SET_FORMATTAG __MSABI_LONG(0x00010000)
#define MCI_WAVE_SET_CHANNELS __MSABI_LONG(0x00020000)
#define MCI_WAVE_SET_SAMPLESPERSEC __MSABI_LONG(0x00040000)
#define MCI_WAVE_SET_AVGBYTESPERSEC __MSABI_LONG(0x00080000)
#define MCI_WAVE_SET_BLOCKALIGN __MSABI_LONG(0x00100000)
#define MCI_WAVE_SET_BITSPERSAMPLE __MSABI_LONG(0x00200000)
#define MCI_WAVE_INPUT __MSABI_LONG(0x00400000)
#define MCI_WAVE_OUTPUT __MSABI_LONG(0x00800000)
#define MCI_WAVE_STATUS_FORMATTAG __MSABI_LONG(0x00004001)
#define MCI_WAVE_STATUS_CHANNELS __MSABI_LONG(0x00004002)
#define MCI_WAVE_STATUS_SAMPLESPERSEC __MSABI_LONG(0x00004003)
#define MCI_WAVE_STATUS_AVGBYTESPERSEC __MSABI_LONG(0x00004004)
#define MCI_WAVE_STATUS_BLOCKALIGN __MSABI_LONG(0x00004005)
#define MCI_WAVE_STATUS_BITSPERSAMPLE __MSABI_LONG(0x00004006)
#define MCI_WAVE_STATUS_LEVEL __MSABI_LONG(0x00004007)
#define MCI_WAVE_SET_ANYINPUT __MSABI_LONG(0x04000000)
#define MCI_WAVE_SET_ANYOUTPUT __MSABI_LONG(0x08000000)
#define MCI_WAVE_GETDEVCAPS_INPUTS __MSABI_LONG(0x00004001)
#define MCI_WAVE_GETDEVCAPS_OUTPUTS __MSABI_LONG(0x00004002)
  typedef struct tagMCI_WAVE_OPEN_PARMSA {
    DWORD_PTR dwCallback;
    MCIDEVICEID wDeviceID;
    LPCSTR lpstrDeviceType;
    LPCSTR lpstrElementName;
    LPCSTR lpstrAlias;
    DWORD dwBufferSeconds;
  } MCI_WAVE_OPEN_PARMSA,*PMCI_WAVE_OPEN_PARMSA,*LPMCI_WAVE_OPEN_PARMSA;
  typedef struct tagMCI_WAVE_OPEN_PARMSW {
    DWORD_PTR dwCallback;
    MCIDEVICEID wDeviceID;
    LPCWSTR lpstrDeviceType;
    LPCWSTR lpstrElementName;
    LPCWSTR lpstrAlias;
    DWORD dwBufferSeconds;
  } MCI_WAVE_OPEN_PARMSW,*PMCI_WAVE_OPEN_PARMSW,*LPMCI_WAVE_OPEN_PARMSW;
  typedef MCI_WAVE_OPEN_PARMSA MCI_WAVE_OPEN_PARMS;
  typedef PMCI_WAVE_OPEN_PARMSA PMCI_WAVE_OPEN_PARMS;
  typedef LPMCI_WAVE_OPEN_PARMSA LPMCI_WAVE_OPEN_PARMS;
  typedef struct tagMCI_WAVE_DELETE_PARMS {
    DWORD_PTR dwCallback;
    DWORD dwFrom;
    DWORD dwTo;
  } MCI_WAVE_DELETE_PARMS,*PMCI_WAVE_DELETE_PARMS,*LPMCI_WAVE_DELETE_PARMS;
  typedef struct tagMCI_WAVE_SET_PARMS {
    DWORD_PTR dwCallback;
    DWORD dwTimeFormat;
    DWORD dwAudio;
    UINT wInput;
    UINT wOutput;
    WORD wFormatTag;
    WORD wReserved2;
    WORD nChannels;
    WORD wReserved3;
    DWORD nSamplesPerSec;
    DWORD nAvgBytesPerSec;
    WORD nBlockAlign;
    WORD wReserved4;
    WORD wBitsPerSample;
    WORD wReserved5;
  } MCI_WAVE_SET_PARMS,*PMCI_WAVE_SET_PARMS,*LPMCI_WAVE_SET_PARMS;
#define MCI_SEQ_DIV_PPQN (0 + MCI_SEQ_OFFSET)
#define MCI_SEQ_DIV_SMPTE_24 (1 + MCI_SEQ_OFFSET)
#define MCI_SEQ_DIV_SMPTE_25 (2 + MCI_SEQ_OFFSET)
#define MCI_SEQ_DIV_SMPTE_30DROP (3 + MCI_SEQ_OFFSET)
#define MCI_SEQ_DIV_SMPTE_30 (4 + MCI_SEQ_OFFSET)
#define MCI_SEQ_FORMAT_SONGPTR 0x4001
#define MCI_SEQ_FILE 0x4002
#define MCI_SEQ_MIDI 0x4003
#define MCI_SEQ_SMPTE 0x4004
#define MCI_SEQ_NONE 65533
#define MCI_SEQ_MAPPER 65535
#define MCI_SEQ_STATUS_TEMPO __MSABI_LONG(0x00004002)
#define MCI_SEQ_STATUS_PORT __MSABI_LONG(0x00004003)
#define MCI_SEQ_STATUS_SLAVE __MSABI_LONG(0x00004007)
#define MCI_SEQ_STATUS_MASTER __MSABI_LONG(0x00004008)
#define MCI_SEQ_STATUS_OFFSET __MSABI_LONG(0x00004009)
#define MCI_SEQ_STATUS_DIVTYPE __MSABI_LONG(0x0000400A)
#define MCI_SEQ_STATUS_NAME __MSABI_LONG(0x0000400B)
#define MCI_SEQ_STATUS_COPYRIGHT __MSABI_LONG(0x0000400C)
#define MCI_SEQ_SET_TEMPO __MSABI_LONG(0x00010000)
#define MCI_SEQ_SET_PORT __MSABI_LONG(0x00020000)
#define MCI_SEQ_SET_SLAVE __MSABI_LONG(0x00040000)
#define MCI_SEQ_SET_MASTER __MSABI_LONG(0x00080000)
#define MCI_SEQ_SET_OFFSET __MSABI_LONG(0x01000000)
  typedef struct tagMCI_SEQ_SET_PARMS {
    DWORD_PTR dwCallback;
    DWORD dwTimeFormat;
    DWORD dwAudio;
    DWORD dwTempo;
    DWORD dwPort;
    DWORD dwSlave;
    DWORD dwMaster;
    DWORD dwOffset;
  } MCI_SEQ_SET_PARMS,*PMCI_SEQ_SET_PARMS,*LPMCI_SEQ_SET_PARMS;
#define MCI_ANIM_OPEN_WS __MSABI_LONG(0x00010000)
#define MCI_ANIM_OPEN_PARENT __MSABI_LONG(0x00020000)
#define MCI_ANIM_OPEN_NOSTATIC __MSABI_LONG(0x00040000)
#define MCI_ANIM_PLAY_SPEED __MSABI_LONG(0x00010000)
#define MCI_ANIM_PLAY_REVERSE __MSABI_LONG(0x00020000)
#define MCI_ANIM_PLAY_FAST __MSABI_LONG(0x00040000)
#define MCI_ANIM_PLAY_SLOW __MSABI_LONG(0x00080000)
#define MCI_ANIM_PLAY_SCAN __MSABI_LONG(0x00100000)
#define MCI_ANIM_STEP_REVERSE __MSABI_LONG(0x00010000)
#define MCI_ANIM_STEP_FRAMES __MSABI_LONG(0x00020000)
#define MCI_ANIM_STATUS_SPEED __MSABI_LONG(0x00004001)
#define MCI_ANIM_STATUS_FORWARD __MSABI_LONG(0x00004002)
#define MCI_ANIM_STATUS_HWND __MSABI_LONG(0x00004003)
#define MCI_ANIM_STATUS_HPAL __MSABI_LONG(0x00004004)
#define MCI_ANIM_STATUS_STRETCH __MSABI_LONG(0x00004005)
#define MCI_ANIM_INFO_TEXT __MSABI_LONG(0x00010000)
#define MCI_ANIM_GETDEVCAPS_CAN_REVERSE __MSABI_LONG(0x00004001)
#define MCI_ANIM_GETDEVCAPS_FAST_RATE __MSABI_LONG(0x00004002)
#define MCI_ANIM_GETDEVCAPS_SLOW_RATE __MSABI_LONG(0x00004003)
#define MCI_ANIM_GETDEVCAPS_NORMAL_RATE __MSABI_LONG(0x00004004)
#define MCI_ANIM_GETDEVCAPS_PALETTES __MSABI_LONG(0x00004006)
#define MCI_ANIM_GETDEVCAPS_CAN_STRETCH __MSABI_LONG(0x00004007)
#define MCI_ANIM_GETDEVCAPS_MAX_WINDOWS __MSABI_LONG(0x00004008)
#define MCI_ANIM_REALIZE_NORM __MSABI_LONG(0x00010000)
#define MCI_ANIM_REALIZE_BKGD __MSABI_LONG(0x00020000)
#define MCI_ANIM_WINDOW_HWND __MSABI_LONG(0x00010000)
#define MCI_ANIM_WINDOW_STATE __MSABI_LONG(0x00040000)
#define MCI_ANIM_WINDOW_TEXT __MSABI_LONG(0x00080000)
#define MCI_ANIM_WINDOW_ENABLE_STRETCH __MSABI_LONG(0x00100000)
#define MCI_ANIM_WINDOW_DISABLE_STRETCH __MSABI_LONG(0x00200000)
#define MCI_ANIM_WINDOW_DEFAULT __MSABI_LONG(0x00000000)
#define MCI_ANIM_RECT __MSABI_LONG(0x00010000)
#define MCI_ANIM_PUT_SOURCE __MSABI_LONG(0x00020000)
#define MCI_ANIM_PUT_DESTINATION __MSABI_LONG(0x00040000)
#define MCI_ANIM_WHERE_SOURCE __MSABI_LONG(0x00020000)
#define MCI_ANIM_WHERE_DESTINATION __MSABI_LONG(0x00040000)
#define MCI_ANIM_UPDATE_HDC __MSABI_LONG(0x00020000)
  typedef struct tagMCI_ANIM_OPEN_PARMSA {
    DWORD_PTR dwCallback;
    MCIDEVICEID wDeviceID;
    LPCSTR lpstrDeviceType;
    LPCSTR lpstrElementName;
    LPCSTR lpstrAlias;
    DWORD dwStyle;
    HWND hWndParent;
  } MCI_ANIM_OPEN_PARMSA,*PMCI_ANIM_OPEN_PARMSA,*LPMCI_ANIM_OPEN_PARMSA;
  typedef struct tagMCI_ANIM_OPEN_PARMSW {
    DWORD_PTR dwCallback;
    MCIDEVICEID wDeviceID;
    LPCWSTR lpstrDeviceType;
    LPCWSTR lpstrElementName;
    LPCWSTR lpstrAlias;
    DWORD dwStyle;
    HWND hWndParent;
  } MCI_ANIM_OPEN_PARMSW,*PMCI_ANIM_OPEN_PARMSW,*LPMCI_ANIM_OPEN_PARMSW;
  typedef MCI_ANIM_OPEN_PARMSA MCI_ANIM_OPEN_PARMS;
  typedef PMCI_ANIM_OPEN_PARMSA PMCI_ANIM_OPEN_PARMS;
  typedef LPMCI_ANIM_OPEN_PARMSA LPMCI_ANIM_OPEN_PARMS;
  typedef struct tagMCI_ANIM_PLAY_PARMS {
    DWORD_PTR dwCallback;
    DWORD dwFrom;
    DWORD dwTo;
    DWORD dwSpeed;
  } MCI_ANIM_PLAY_PARMS,*PMCI_ANIM_PLAY_PARMS,*LPMCI_ANIM_PLAY_PARMS;
  typedef struct tagMCI_ANIM_STEP_PARMS {
    DWORD_PTR dwCallback;
    DWORD dwFrames;
  } MCI_ANIM_STEP_PARMS,*PMCI_ANIM_STEP_PARMS,*LPMCI_ANIM_STEP_PARMS;
  typedef struct tagMCI_ANIM_WINDOW_PARMSA {
    DWORD_PTR dwCallback;
    HWND hWnd;
    UINT nCmdShow;
    LPCSTR lpstrText;
  } MCI_ANIM_WINDOW_PARMSA,*PMCI_ANIM_WINDOW_PARMSA,*LPMCI_ANIM_WINDOW_PARMSA;
  typedef struct tagMCI_ANIM_WINDOW_PARMSW {
    DWORD_PTR dwCallback;
    HWND hWnd;
    UINT nCmdShow;
    LPCWSTR lpstrText;
  } MCI_ANIM_WINDOW_PARMSW,*PMCI_ANIM_WINDOW_PARMSW,*LPMCI_ANIM_WINDOW_PARMSW;
  typedef MCI_ANIM_WINDOW_PARMSA MCI_ANIM_WINDOW_PARMS;
  typedef PMCI_ANIM_WINDOW_PARMSA PMCI_ANIM_WINDOW_PARMS;
  typedef LPMCI_ANIM_WINDOW_PARMSA LPMCI_ANIM_WINDOW_PARMS;
  typedef struct tagMCI_ANIM_RECT_PARMS {
    DWORD_PTR dwCallback;
    RECT rc;
  } MCI_ANIM_RECT_PARMS;
  typedef MCI_ANIM_RECT_PARMS *PMCI_ANIM_RECT_PARMS;
  typedef MCI_ANIM_RECT_PARMS *LPMCI_ANIM_RECT_PARMS;
  typedef struct tagMCI_ANIM_UPDATE_PARMS {
    DWORD_PTR dwCallback;
    RECT rc;
    HDC hDC;
  } MCI_ANIM_UPDATE_PARMS,*PMCI_ANIM_UPDATE_PARMS,*LPMCI_ANIM_UPDATE_PARMS;
#define MCI_OVLY_OPEN_WS __MSABI_LONG(0x00010000)
#define MCI_OVLY_OPEN_PARENT __MSABI_LONG(0x00020000)
#define MCI_OVLY_STATUS_HWND __MSABI_LONG(0x00004001)
#define MCI_OVLY_STATUS_STRETCH __MSABI_LONG(0x00004002)
#define MCI_OVLY_INFO_TEXT __MSABI_LONG(0x00010000)
#define MCI_OVLY_GETDEVCAPS_CAN_STRETCH __MSABI_LONG(0x00004001)
#define MCI_OVLY_GETDEVCAPS_CAN_FREEZE __MSABI_LONG(0x00004002)
#define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS __MSABI_LONG(0x00004003)
#define MCI_OVLY_WINDOW_HWND __MSABI_LONG(0x00010000)
#define MCI_OVLY_WINDOW_STATE __MSABI_LONG(0x00040000)
#define MCI_OVLY_WINDOW_TEXT __MSABI_LONG(0x00080000)
#define MCI_OVLY_WINDOW_ENABLE_STRETCH __MSABI_LONG(0x00100000)
#define MCI_OVLY_WINDOW_DISABLE_STRETCH __MSABI_LONG(0x00200000)
#define MCI_OVLY_WINDOW_DEFAULT __MSABI_LONG(0x00000000)
#define MCI_OVLY_RECT __MSABI_LONG(0x00010000)
#define MCI_OVLY_PUT_SOURCE __MSABI_LONG(0x00020000)
#define MCI_OVLY_PUT_DESTINATION __MSABI_LONG(0x00040000)
#define MCI_OVLY_PUT_FRAME __MSABI_LONG(0x00080000)
#define MCI_OVLY_PUT_VIDEO __MSABI_LONG(0x00100000)
#define MCI_OVLY_WHERE_SOURCE __MSABI_LONG(0x00020000)
#define MCI_OVLY_WHERE_DESTINATION __MSABI_LONG(0x00040000)
#define MCI_OVLY_WHERE_FRAME __MSABI_LONG(0x00080000)
#define MCI_OVLY_WHERE_VIDEO __MSABI_LONG(0x00100000)
  typedef struct tagMCI_OVLY_OPEN_PARMSA {
    DWORD_PTR dwCallback;
    MCIDEVICEID wDeviceID;
    LPCSTR lpstrDeviceType;
    LPCSTR lpstrElementName;
    LPCSTR lpstrAlias;
    DWORD dwStyle;
    HWND hWndParent;
  } MCI_OVLY_OPEN_PARMSA,*PMCI_OVLY_OPEN_PARMSA,*LPMCI_OVLY_OPEN_PARMSA;
  typedef struct tagMCI_OVLY_OPEN_PARMSW {
    DWORD_PTR dwCallback;
    MCIDEVICEID wDeviceID;
    LPCWSTR lpstrDeviceType;
    LPCWSTR lpstrElementName;
    LPCWSTR lpstrAlias;
    DWORD dwStyle;
    HWND hWndParent;
  } MCI_OVLY_OPEN_PARMSW,*PMCI_OVLY_OPEN_PARMSW,*LPMCI_OVLY_OPEN_PARMSW;
  typedef MCI_OVLY_OPEN_PARMSA MCI_OVLY_OPEN_PARMS;
  typedef PMCI_OVLY_OPEN_PARMSA PMCI_OVLY_OPEN_PARMS;
  typedef LPMCI_OVLY_OPEN_PARMSA LPMCI_OVLY_OPEN_PARMS;
  typedef struct tagMCI_OVLY_WINDOW_PARMSA {
    DWORD_PTR dwCallback;
    HWND hWnd;
    UINT nCmdShow;
    LPCSTR lpstrText;
  } MCI_OVLY_WINDOW_PARMSA,*PMCI_OVLY_WINDOW_PARMSA,*LPMCI_OVLY_WINDOW_PARMSA;
  typedef struct tagMCI_OVLY_WINDOW_PARMSW {
    DWORD_PTR dwCallback;
    HWND hWnd;
    UINT nCmdShow;
    LPCWSTR lpstrText;
  } MCI_OVLY_WINDOW_PARMSW,*PMCI_OVLY_WINDOW_PARMSW,*LPMCI_OVLY_WINDOW_PARMSW;
  typedef MCI_OVLY_WINDOW_PARMSA MCI_OVLY_WINDOW_PARMS;
  typedef PMCI_OVLY_WINDOW_PARMSA PMCI_OVLY_WINDOW_PARMS;
  typedef LPMCI_OVLY_WINDOW_PARMSA LPMCI_OVLY_WINDOW_PARMS;
  typedef struct tagMCI_OVLY_RECT_PARMS {
    DWORD_PTR dwCallback;
    RECT rc;
  } MCI_OVLY_RECT_PARMS,*PMCI_OVLY_RECT_PARMS,*LPMCI_OVLY_RECT_PARMS;
  typedef struct tagMCI_OVLY_SAVE_PARMSA {
    DWORD_PTR dwCallback;
    LPCSTR lpfilename;
    RECT rc;
  } MCI_OVLY_SAVE_PARMSA,*PMCI_OVLY_SAVE_PARMSA,*LPMCI_OVLY_SAVE_PARMSA;
  typedef struct tagMCI_OVLY_SAVE_PARMSW {
    DWORD_PTR dwCallback;
    LPCWSTR lpfilename;
    RECT rc;
  } MCI_OVLY_SAVE_PARMSW,*PMCI_OVLY_SAVE_PARMSW,*LPMCI_OVLY_SAVE_PARMSW;
  typedef MCI_OVLY_SAVE_PARMSA MCI_OVLY_SAVE_PARMS;
  typedef PMCI_OVLY_SAVE_PARMSA PMCI_OVLY_SAVE_PARMS;
  typedef LPMCI_OVLY_SAVE_PARMSA LPMCI_OVLY_SAVE_PARMS;
  typedef struct tagMCI_OVLY_LOAD_PARMSA {
    DWORD_PTR dwCallback;
    LPCSTR lpfilename;
    RECT rc;
  } MCI_OVLY_LOAD_PARMSA,*PMCI_OVLY_LOAD_PARMSA,*LPMCI_OVLY_LOAD_PARMSA;
  typedef struct tagMCI_OVLY_LOAD_PARMSW {
    DWORD_PTR dwCallback;
    LPCWSTR lpfilename;
    RECT rc;
  } MCI_OVLY_LOAD_PARMSW,*PMCI_OVLY_LOAD_PARMSW,*LPMCI_OVLY_LOAD_PARMSW;
  typedef MCI_OVLY_LOAD_PARMSA MCI_OVLY_LOAD_PARMS;
  typedef PMCI_OVLY_LOAD_PARMSA PMCI_OVLY_LOAD_PARMS;
  typedef LPMCI_OVLY_LOAD_PARMSA LPMCI_OVLY_LOAD_PARMS;
#define NEWTRANSPARENT 3
#define QUERYROPSUPPORT 40
#define SELECTDIB 41
#define DIBINDEX(n) MAKELONG((n),0x10FF)
#pragma pack(pop)
#define NCB_INCLUDED 
#define NCBNAMSZ 16
#define MAX_LANA 254
  typedef struct _NCB {
    UCHAR ncb_command;
    UCHAR ncb_retcode;
    UCHAR ncb_lsn;
    UCHAR ncb_num;
    PUCHAR ncb_buffer;
    WORD ncb_length;
    UCHAR ncb_callname[16];
    UCHAR ncb_name[16];
    UCHAR ncb_rto;
    UCHAR ncb_sto;
    void (__attribute__((__stdcall__)) *ncb_post)(struct _NCB *);
    UCHAR ncb_lana_num;
    UCHAR ncb_cmd_cplt;
    UCHAR ncb_reserve[10];
    HANDLE ncb_event;
  } NCB,*PNCB;
  typedef struct _ADAPTER_STATUS {
    UCHAR adapter_address[6];
    UCHAR rev_major;
    UCHAR reserved0;
    UCHAR adapter_type;
    UCHAR rev_minor;
    WORD duration;
    WORD frmr_recv;
    WORD frmr_xmit;
    WORD iframe_recv_err;
    WORD xmit_aborts;
    DWORD xmit_success;
    DWORD recv_success;
    WORD iframe_xmit_err;
    WORD recv_buff_unavail;
    WORD t1_timeouts;
    WORD ti_timeouts;
    DWORD reserved1;
    WORD free_ncbs;
    WORD max_cfg_ncbs;
    WORD max_ncbs;
    WORD xmit_buf_unavail;
    WORD max_dgram_size;
    WORD pending_sess;
    WORD max_cfg_sess;
    WORD max_sess;
    WORD max_sess_pkt_size;
    WORD name_count;
  } ADAPTER_STATUS,*PADAPTER_STATUS;
  typedef struct _NAME_BUFFER {
    UCHAR name[16];
    UCHAR name_num;
    UCHAR name_flags;
  } NAME_BUFFER,*PNAME_BUFFER;
#define NAME_FLAGS_MASK 0x87
#define GROUP_NAME 0x80
#define UNIQUE_NAME 0x00
#define REGISTERING 0x00
#define REGISTERED 0x04
#define DEREGISTERED 0x05
#define DUPLICATE 0x06
#define DUPLICATE_DEREG 0x07
  typedef struct _SESSION_HEADER {
    UCHAR sess_name;
    UCHAR num_sess;
    UCHAR rcv_dg_outstanding;
    UCHAR rcv_any_outstanding;
  } SESSION_HEADER,*PSESSION_HEADER;
  typedef struct _SESSION_BUFFER {
    UCHAR lsn;
    UCHAR state;
    UCHAR local_name[16];
    UCHAR remote_name[16];
    UCHAR rcvs_outstanding;
    UCHAR sends_outstanding;
  } SESSION_BUFFER,*PSESSION_BUFFER;
#define LISTEN_OUTSTANDING 0x01
#define CALL_PENDING 0x02
#define SESSION_ESTABLISHED 0x03
#define HANGUP_PENDING 0x04
#define HANGUP_COMPLETE 0x05
#define SESSION_ABORTED 0x06
  typedef struct _LANA_ENUM {
    UCHAR length;
    UCHAR lana[254 +1];
  } LANA_ENUM,*PLANA_ENUM;
  typedef struct _FIND_NAME_HEADER {
    WORD node_count;
    UCHAR reserved;
    UCHAR unique_group;
  } FIND_NAME_HEADER,*PFIND_NAME_HEADER;
  typedef struct _FIND_NAME_BUFFER {
    UCHAR length;
    UCHAR access_control;
    UCHAR frame_control;
    UCHAR destination_addr[6];
    UCHAR source_addr[6];
    UCHAR routing_info[18];
  } FIND_NAME_BUFFER,*PFIND_NAME_BUFFER;
  typedef struct _ACTION_HEADER {
    ULONG transport_id;
    USHORT action_code;
    USHORT reserved;
  } ACTION_HEADER,*PACTION_HEADER;
#define ALL_TRANSPORTS "M\0\0\0"
#define MS_NBF "MNBF"
#define NCBCALL 0x10
#define NCBLISTEN 0x11
#define NCBHANGUP 0x12
#define NCBSEND 0x14
#define NCBRECV 0x15
#define NCBRECVANY 0x16
#define NCBCHAINSEND 0x17
#define NCBDGSEND 0x20
#define NCBDGRECV 0x21
#define NCBDGSENDBC 0x22
#define NCBDGRECVBC 0x23
#define NCBADDNAME 0x30
#define NCBDELNAME 0x31
#define NCBRESET 0x32
#define NCBASTAT 0x33
#define NCBSSTAT 0x34
#define NCBCANCEL 0x35
#define NCBADDGRNAME 0x36
#define NCBENUM 0x37
#define NCBUNLINK 0x70
#define NCBSENDNA 0x71
#define NCBCHAINSENDNA 0x72
#define NCBLANSTALERT 0x73
#define NCBACTION 0x77
#define NCBFINDNAME 0x78
#define NCBTRACE 0x79
#define ASYNCH 0x80
#define NRC_GOODRET 0x00
#define NRC_BUFLEN 0x01
#define NRC_ILLCMD 0x03
#define NRC_CMDTMO 0x05
#define NRC_INCOMP 0x06
#define NRC_BADDR 0x07
#define NRC_SNUMOUT 0x08
#define NRC_NORES 0x09
#define NRC_SCLOSED 0x0a
#define NRC_CMDCAN 0x0b
#define NRC_DUPNAME 0x0d
#define NRC_NAMTFUL 0x0e
#define NRC_ACTSES 0x0f
#define NRC_LOCTFUL 0x11
#define NRC_REMTFUL 0x12
#define NRC_ILLNN 0x13
#define NRC_NOCALL 0x14
#define NRC_NOWILD 0x15
#define NRC_INUSE 0x16
#define NRC_NAMERR 0x17
#define NRC_SABORT 0x18
#define NRC_NAMCONF 0x19
#define NRC_IFBUSY 0x21
#define NRC_TOOMANY 0x22
#define NRC_BRIDGE 0x23
#define NRC_CANOCCR 0x24
#define NRC_CANCEL 0x26
#define NRC_DUPENV 0x30
#define NRC_ENVNOTDEF 0x34
#define NRC_OSRESNOTAV 0x35
#define NRC_MAXAPPS 0x36
#define NRC_NOSAPS 0x37
#define NRC_NORESOURCES 0x38
#define NRC_INVADDRESS 0x39
#define NRC_INVDDID 0x3B
#define NRC_LOCKFAIL 0x3C
#define NRC_OPENERR 0x3f
#define NRC_SYSTEM 0x40
#define NRC_PENDING 0xff
  UCHAR __attribute__((__stdcall__)) Netbios(PNCB pncb);
#define NCB_POST void CALLBACK
#undef interface
#define interface struct
#define __RPC_H__ 
#define __RPC_WIN32__ 
#define __MIDL_USER_DEFINED 
#define midl_user_allocate MIDL_user_allocate
#define midl_user_free MIDL_user_free
  typedef void *I_RPC_HANDLE;
  typedef long RPC_STATUS;
#define RPC_UNICODE_SUPPORTED 
#define __RPC_FAR 
#define __RPC_API __stdcall
#define __RPC_USER __RPC_API
#define __RPC_STUB __RPC_API
#define RPC_ENTRY __RPC_API
#define RPCRTAPI DECLSPEC_IMPORT
#define RPCNSAPI DECLSPEC_IMPORT
#define __RPCDCE_H__ 
  typedef unsigned char *RPC_CSTR;
  typedef unsigned short *RPC_WSTR;
  typedef I_RPC_HANDLE RPC_BINDING_HANDLE;
  typedef RPC_BINDING_HANDLE handle_t;
#define rpc_binding_handle_t RPC_BINDING_HANDLE
#undef DEFINE_GUID
#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name
#define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46)
#define UUID_DEFINED 
  typedef GUID UUID;
#define uuid_t UUID
  typedef struct _RPC_BINDING_VECTOR {
    unsigned long Count;
    RPC_BINDING_HANDLE BindingH[1];
  } RPC_BINDING_VECTOR;
#define rpc_binding_vector_t RPC_BINDING_VECTOR
  typedef struct _UUID_VECTOR {
    unsigned long Count;
    UUID *Uuid[1];
  } UUID_VECTOR;
#define uuid_vector_t UUID_VECTOR
  typedef void *RPC_IF_HANDLE;
#define IFID_DEFINED 
  typedef struct _RPC_IF_ID {
    UUID Uuid;
    unsigned short VersMajor;
    unsigned short VersMinor;
  } RPC_IF_ID;
#define RPC_C_BINDING_INFINITE_TIMEOUT 10
#define RPC_C_BINDING_MIN_TIMEOUT 0
#define RPC_C_BINDING_DEFAULT_TIMEOUT 5
#define RPC_C_BINDING_MAX_TIMEOUT 9
#define RPC_C_CANCEL_INFINITE_TIMEOUT -1
#define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
#define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
#define RPC_C_BIND_TO_ALL_NICS 1
#define RPC_C_USE_INTERNET_PORT 0x1
#define RPC_C_USE_INTRANET_PORT 0x2
#define RPC_C_DONT_FAIL 0x4
#define RPC_C_MQ_TEMPORARY 0x0000
#define RPC_C_MQ_PERMANENT 0x0001
#define RPC_C_MQ_CLEAR_ON_OPEN 0x0002
#define RPC_C_MQ_USE_EXISTING_SECURITY 0x0004
#define RPC_C_MQ_AUTHN_LEVEL_NONE 0x0000
#define RPC_C_MQ_AUTHN_LEVEL_PKT_INTEGRITY 0x0008
#define RPC_C_MQ_AUTHN_LEVEL_PKT_PRIVACY 0x0010
#define RPC_C_OPT_MQ_DELIVERY 1
#define RPC_C_OPT_MQ_PRIORITY 2
#define RPC_C_OPT_MQ_JOURNAL 3
#define RPC_C_OPT_MQ_ACKNOWLEDGE 4
#define RPC_C_OPT_MQ_AUTHN_SERVICE 5
#define RPC_C_OPT_MQ_AUTHN_LEVEL 6
#define RPC_C_OPT_MQ_TIME_TO_REACH_QUEUE 7
#define RPC_C_OPT_MQ_TIME_TO_BE_RECEIVED 8
#define RPC_C_OPT_BINDING_NONCAUSAL 9
#define RPC_C_OPT_SECURITY_CALLBACK 10
#define RPC_C_OPT_UNIQUE_BINDING 11
#define RPC_C_OPT_CALL_TIMEOUT 12
#define RPC_C_OPT_DONT_LINGER 13
#define RPC_C_OPT_MAX_OPTIONS 14
#define RPC_C_MQ_EXPRESS 0
#define RPC_C_MQ_RECOVERABLE 1
#define RPC_C_MQ_JOURNAL_NONE 0
#define RPC_C_MQ_JOURNAL_DEADLETTER 1
#define RPC_C_MQ_JOURNAL_ALWAYS 2
#define RPC_C_FULL_CERT_CHAIN 0x0001
  typedef struct _RPC_PROTSEQ_VECTORA {
    unsigned int Count;
    unsigned char *Protseq[1];
  } RPC_PROTSEQ_VECTORA;
  typedef struct _RPC_PROTSEQ_VECTORW {
    unsigned int Count;
    unsigned short *Protseq[1];
  } RPC_PROTSEQ_VECTORW;
#define RPC_PROTSEQ_VECTOR __MINGW_NAME_AW(RPC_PROTSEQ_VECTOR)
  typedef struct _RPC_POLICY {
    unsigned int Length;
    unsigned long EndpointFlags;
    unsigned long NICFlags;
  } RPC_POLICY,*PRPC_POLICY;
  typedef void __attribute__((__stdcall__)) RPC_OBJECT_INQ_FN(UUID *ObjectUuid,UUID *TypeUuid,RPC_STATUS *Status);
  typedef RPC_STATUS __attribute__((__stdcall__)) RPC_IF_CALLBACK_FN(RPC_IF_HANDLE InterfaceUuid,void *Context);
  typedef void __attribute__((__stdcall__)) RPC_SECURITY_CALLBACK_FN(void *Context);
#define RPC_MGR_EPV void
  typedef struct {
    unsigned int Count;
    unsigned long Stats[1];
  } RPC_STATS_VECTOR;
#define RPC_C_STATS_CALLS_IN 0
#define RPC_C_STATS_CALLS_OUT 1
#define RPC_C_STATS_PKTS_IN 2
#define RPC_C_STATS_PKTS_OUT 3
  typedef struct {
    unsigned long Count;
    RPC_IF_ID *IfId[1];
  } RPC_IF_ID_VECTOR;
#define RpcBindingFromStringBinding __MINGW_NAME_AW(RpcBindingFromStringBinding)
#define RpcBindingToStringBinding __MINGW_NAME_AW(RpcBindingToStringBinding)
#define RpcStringBindingCompose __MINGW_NAME_AW(RpcStringBindingCompose)
#define RpcStringBindingParse __MINGW_NAME_AW(RpcStringBindingParse)
#define RpcStringFree __MINGW_NAME_AW(RpcStringFree)
#define RpcNetworkIsProtseqValid __MINGW_NAME_AW(RpcNetworkIsProtseqValid)
#define RpcNetworkInqProtseqs __MINGW_NAME_AW(RpcNetworkInqProtseqs)
#define RpcProtseqVectorFree __MINGW_NAME_AW(RpcProtseqVectorFree)
#define RpcServerUseProtseq __MINGW_NAME_AW(RpcServerUseProtseq)
#define RpcServerUseProtseqEx __MINGW_NAME_AW(RpcServerUseProtseqEx)
#define RpcServerUseProtseqEp __MINGW_NAME_AW(RpcServerUseProtseqEp)
#define RpcServerUseProtseqEpEx __MINGW_NAME_AW(RpcServerUseProtseqEpEx)
#define RpcServerUseProtseqIf __MINGW_NAME_AW(RpcServerUseProtseqIf)
#define RpcServerUseProtseqIfEx __MINGW_NAME_AW(RpcServerUseProtseqIfEx)
#define RpcMgmtInqServerPrincName __MINGW_NAME_AW(RpcMgmtInqServerPrincName)
#define RpcServerInqDefaultPrincName __MINGW_NAME_AW(RpcServerInqDefaultPrincName)
#define RpcNsBindingInqEntryName __MINGW_NAME_AW(RpcNsBindingInqEntryName)
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingCopy(RPC_BINDING_HANDLE SourceBinding,RPC_BINDING_HANDLE *DestinationBinding);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingFree(RPC_BINDING_HANDLE *Binding);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingSetOption(RPC_BINDING_HANDLE hBinding,unsigned long option,ULONG_PTR optionValue);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqOption(RPC_BINDING_HANDLE hBinding,unsigned long option,ULONG_PTR *pOptionValue);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingFromStringBindingA(RPC_CSTR StringBinding,RPC_BINDING_HANDLE *Binding);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingFromStringBindingW(RPC_WSTR StringBinding,RPC_BINDING_HANDLE *Binding);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcSsGetContextBinding(void *ContextHandle,RPC_BINDING_HANDLE *Binding);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqObject(RPC_BINDING_HANDLE Binding,UUID *ObjectUuid);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingReset(RPC_BINDING_HANDLE Binding);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingSetObject(RPC_BINDING_HANDLE Binding,UUID *ObjectUuid);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtInqDefaultProtectLevel(unsigned long AuthnSvc,unsigned long *AuthnLevel);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingToStringBindingA(RPC_BINDING_HANDLE Binding,RPC_CSTR *StringBinding);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingToStringBindingW(RPC_BINDING_HANDLE Binding,RPC_WSTR *StringBinding);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingVectorFree(RPC_BINDING_VECTOR **BindingVector);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcStringBindingComposeA(RPC_CSTR ObjUuid,RPC_CSTR Protseq,RPC_CSTR NetworkAddr,RPC_CSTR Endpoint,RPC_CSTR Options,RPC_CSTR *StringBinding);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcStringBindingComposeW(RPC_WSTR ObjUuid,RPC_WSTR Protseq,RPC_WSTR NetworkAddr,RPC_WSTR Endpoint,RPC_WSTR Options,RPC_WSTR *StringBinding);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcStringBindingParseA(RPC_CSTR StringBinding,RPC_CSTR *ObjUuid,RPC_CSTR *Protseq,RPC_CSTR *NetworkAddr,RPC_CSTR *Endpoint,RPC_CSTR *NetworkOptions);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcStringBindingParseW(RPC_WSTR StringBinding,RPC_WSTR *ObjUuid,RPC_WSTR *Protseq,RPC_WSTR *NetworkAddr,RPC_WSTR *Endpoint,RPC_WSTR *NetworkOptions);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcStringFreeA(RPC_CSTR *String);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcStringFreeW(RPC_WSTR *String);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcIfInqId(RPC_IF_HANDLE RpcIfHandle,RPC_IF_ID *RpcIfId);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNetworkIsProtseqValidA(RPC_CSTR Protseq);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNetworkIsProtseqValidW(RPC_WSTR Protseq);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtInqComTimeout(RPC_BINDING_HANDLE Binding,unsigned int *Timeout);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtSetComTimeout(RPC_BINDING_HANDLE Binding,unsigned int Timeout);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtSetCancelTimeout(long Timeout);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNetworkInqProtseqsA (RPC_PROTSEQ_VECTORA **ProtseqVector);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNetworkInqProtseqsW (RPC_PROTSEQ_VECTORW **ProtseqVector);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcObjectInqType(UUID *ObjUuid,UUID *TypeUuid);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcObjectSetInqFn(RPC_OBJECT_INQ_FN *InquiryFn);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcObjectSetType(UUID *ObjUuid,UUID *TypeUuid);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcProtseqVectorFreeA(RPC_PROTSEQ_VECTORA **ProtseqVector);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW **ProtseqVector);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerInqBindings (RPC_BINDING_VECTOR **BindingVector);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerInqIf(RPC_IF_HANDLE IfSpec,UUID *MgrTypeUuid,void **MgrEpv);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerListen(unsigned int MinimumCallThreads,unsigned int MaxCalls,unsigned int DontWait);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerRegisterIf(RPC_IF_HANDLE IfSpec,UUID *MgrTypeUuid,void *MgrEpv);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerRegisterIfEx(RPC_IF_HANDLE IfSpec,UUID *MgrTypeUuid,void *MgrEpv,unsigned int Flags,unsigned int MaxCalls,RPC_IF_CALLBACK_FN *IfCallback);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerRegisterIf2(RPC_IF_HANDLE IfSpec,UUID *MgrTypeUuid,void *MgrEpv,unsigned int Flags,unsigned int MaxCalls,unsigned int MaxRpcSize,RPC_IF_CALLBACK_FN *IfCallbackFn);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUnregisterIf(RPC_IF_HANDLE IfSpec,UUID *MgrTypeUuid,unsigned int WaitForCallsToComplete);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUnregisterIfEx(RPC_IF_HANDLE IfSpec,UUID *MgrTypeUuid,int RundownContextHandles);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseAllProtseqs(unsigned int MaxCalls,void *SecurityDescriptor);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseAllProtseqsEx(unsigned int MaxCalls,void *SecurityDescriptor,PRPC_POLICY Policy);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseAllProtseqsIf(unsigned int MaxCalls,RPC_IF_HANDLE IfSpec,void *SecurityDescriptor);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseAllProtseqsIfEx(unsigned int MaxCalls,RPC_IF_HANDLE IfSpec,void *SecurityDescriptor,PRPC_POLICY Policy);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqA(RPC_CSTR Protseq,unsigned int MaxCalls,void *SecurityDescriptor);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqExA(RPC_CSTR Protseq,unsigned int MaxCalls,void *SecurityDescriptor,PRPC_POLICY Policy);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqW(RPC_WSTR Protseq,unsigned int MaxCalls,void *SecurityDescriptor);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqExW(RPC_WSTR Protseq,unsigned int MaxCalls,void *SecurityDescriptor,PRPC_POLICY Policy);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqEpA(RPC_CSTR Protseq,unsigned int MaxCalls,RPC_CSTR Endpoint,void *SecurityDescriptor);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqEpExA(RPC_CSTR Protseq,unsigned int MaxCalls,RPC_CSTR Endpoint,void *SecurityDescriptor,PRPC_POLICY Policy);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqEpW(RPC_WSTR Protseq,unsigned int MaxCalls,RPC_WSTR Endpoint,void *SecurityDescriptor);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqEpExW(RPC_WSTR Protseq,unsigned int MaxCalls,RPC_WSTR Endpoint,void *SecurityDescriptor,PRPC_POLICY Policy);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqIfA(RPC_CSTR Protseq,unsigned int MaxCalls,RPC_IF_HANDLE IfSpec,void *SecurityDescriptor);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqIfExA(RPC_CSTR Protseq,unsigned int MaxCalls,RPC_IF_HANDLE IfSpec,void *SecurityDescriptor,PRPC_POLICY Policy);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqIfW(RPC_WSTR Protseq,unsigned int MaxCalls,RPC_IF_HANDLE IfSpec,void *SecurityDescriptor);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerUseProtseqIfExW(RPC_WSTR Protseq,unsigned int MaxCalls,RPC_IF_HANDLE IfSpec,void *SecurityDescriptor,PRPC_POLICY Policy);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) RpcServerYield (void);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtStatsVectorFree(RPC_STATS_VECTOR **StatsVector);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtInqStats(RPC_BINDING_HANDLE Binding,RPC_STATS_VECTOR **Statistics);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtIsServerListening(RPC_BINDING_HANDLE Binding);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtStopServerListening(RPC_BINDING_HANDLE Binding);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtWaitServerListen(void);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtSetServerStackSize(unsigned long ThreadStackSize);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) RpcSsDontSerializeContext(void);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtEnableIdleCleanup(void);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtInqIfIds(RPC_BINDING_HANDLE Binding,RPC_IF_ID_VECTOR **IfIdVector);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcIfIdVectorFree(RPC_IF_ID_VECTOR **IfIdVector);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtInqServerPrincNameA(RPC_BINDING_HANDLE Binding,unsigned long AuthnSvc,RPC_CSTR *ServerPrincName);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtInqServerPrincNameW(RPC_BINDING_HANDLE Binding,unsigned long AuthnSvc,RPC_WSTR *ServerPrincName);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerInqDefaultPrincNameA(unsigned long AuthnSvc,RPC_CSTR *PrincName);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerInqDefaultPrincNameW(unsigned long AuthnSvc,RPC_WSTR *PrincName);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcEpResolveBinding(RPC_BINDING_HANDLE Binding,RPC_IF_HANDLE IfSpec);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingInqEntryNameA(RPC_BINDING_HANDLE Binding,unsigned long EntryNameSyntax,RPC_CSTR *EntryName);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingInqEntryNameW(RPC_BINDING_HANDLE Binding,unsigned long EntryNameSyntax,RPC_WSTR *EntryName);
  typedef void *RPC_AUTH_IDENTITY_HANDLE;
  typedef void *RPC_AUTHZ_HANDLE;
#define RPC_C_AUTHN_LEVEL_DEFAULT 0
#define RPC_C_AUTHN_LEVEL_NONE 1
#define RPC_C_AUTHN_LEVEL_CONNECT 2
#define RPC_C_AUTHN_LEVEL_CALL 3
#define RPC_C_AUTHN_LEVEL_PKT 4
#define RPC_C_AUTHN_LEVEL_PKT_INTEGRITY 5
#define RPC_C_AUTHN_LEVEL_PKT_PRIVACY 6
#define RPC_C_IMP_LEVEL_DEFAULT 0
#define RPC_C_IMP_LEVEL_ANONYMOUS 1
#define RPC_C_IMP_LEVEL_IDENTIFY 2
#define RPC_C_IMP_LEVEL_IMPERSONATE 3
#define RPC_C_IMP_LEVEL_DELEGATE 4
#define RPC_C_QOS_IDENTITY_STATIC 0
#define RPC_C_QOS_IDENTITY_DYNAMIC 1
#define RPC_C_QOS_CAPABILITIES_DEFAULT 0x0
#define RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 0x1
#define RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC 0x2
#define RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY 0x4
#define RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE 0x8
#define RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT 0x10
#define RPC_C_PROTECT_LEVEL_DEFAULT (RPC_C_AUTHN_LEVEL_DEFAULT)
#define RPC_C_PROTECT_LEVEL_NONE (RPC_C_AUTHN_LEVEL_NONE)
#define RPC_C_PROTECT_LEVEL_CONNECT (RPC_C_AUTHN_LEVEL_CONNECT)
#define RPC_C_PROTECT_LEVEL_CALL (RPC_C_AUTHN_LEVEL_CALL)
#define RPC_C_PROTECT_LEVEL_PKT (RPC_C_AUTHN_LEVEL_PKT)
#define RPC_C_PROTECT_LEVEL_PKT_INTEGRITY (RPC_C_AUTHN_LEVEL_PKT_INTEGRITY)
#define RPC_C_PROTECT_LEVEL_PKT_PRIVACY (RPC_C_AUTHN_LEVEL_PKT_PRIVACY)
#define RPC_C_AUTHN_NONE 0
#define RPC_C_AUTHN_DCE_PRIVATE 1
#define RPC_C_AUTHN_DCE_PUBLIC 2
#define RPC_C_AUTHN_DEC_PUBLIC 4
#define RPC_C_AUTHN_GSS_NEGOTIATE 9
#define RPC_C_AUTHN_WINNT 10
#define RPC_C_AUTHN_GSS_SCHANNEL 14
#define RPC_C_AUTHN_GSS_KERBEROS 16
#define RPC_C_AUTHN_DPA 17
#define RPC_C_AUTHN_MSN 18
#define RPC_C_AUTHN_DIGEST 21
#define RPC_C_AUTHN_MQ 100
#define RPC_C_AUTHN_DEFAULT __MSABI_LONG(0xFFFFFFFF)
#define RPC_C_NO_CREDENTIALS ((RPC_AUTH_IDENTITY_HANDLE) MAXUINT_PTR)
#define RPC_C_SECURITY_QOS_VERSION __MSABI_LONG(1)
#define RPC_C_SECURITY_QOS_VERSION_1 __MSABI_LONG(1)
  typedef struct _RPC_SECURITY_QOS {
    unsigned long Version;
    unsigned long Capabilities;
    unsigned long IdentityTracking;
    unsigned long ImpersonationType;
  } RPC_SECURITY_QOS,*PRPC_SECURITY_QOS;
#define _AUTH_IDENTITY_DEFINED 
#define SEC_WINNT_AUTH_IDENTITY_ANSI 0x1
#define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
  typedef struct _SEC_WINNT_AUTH_IDENTITY_W {
    unsigned short *User;
    unsigned long UserLength;
    unsigned short *Domain;
    unsigned long DomainLength;
    unsigned short *Password;
    unsigned long PasswordLength;
    unsigned long Flags;
  } SEC_WINNT_AUTH_IDENTITY_W,*PSEC_WINNT_AUTH_IDENTITY_W;
  typedef struct _SEC_WINNT_AUTH_IDENTITY_A {
    unsigned char *User;
    unsigned long UserLength;
    unsigned char *Domain;
    unsigned long DomainLength;
    unsigned char *Password;
    unsigned long PasswordLength;
    unsigned long Flags;
  } SEC_WINNT_AUTH_IDENTITY_A,*PSEC_WINNT_AUTH_IDENTITY_A;
#define SEC_WINNT_AUTH_IDENTITY __MINGW_NAME_UAW(SEC_WINNT_AUTH_IDENTITY)
#define PSEC_WINNT_AUTH_IDENTITY __MINGW_NAME_UAW(PSEC_WINNT_AUTH_IDENTITY)
#define _SEC_WINNT_AUTH_IDENTITY __MINGW_NAME_UAW(_SEC_WINNT_AUTH_IDENTITY)
#define RPC_C_SECURITY_QOS_VERSION_2 __MSABI_LONG(2)
#define RPC_C_AUTHN_INFO_TYPE_HTTP 1
#define RPC_C_HTTP_AUTHN_TARGET_SERVER 1
#define RPC_C_HTTP_AUTHN_TARGET_PROXY 2
#define RPC_C_HTTP_AUTHN_SCHEME_BASIC 0x00000001
#define RPC_C_HTTP_AUTHN_SCHEME_NTLM 0x00000002
#define RPC_C_HTTP_AUTHN_SCHEME_PASSPORT 0x00000004
#define RPC_C_HTTP_AUTHN_SCHEME_DIGEST 0x00000008
#define RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE 0x00000010
#define RPC_C_HTTP_AUTHN_SCHEME_CERT 0x00010000
#define RPC_C_HTTP_FLAG_USE_SSL 1
#define RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME 2
#define RPC_C_HTTP_FLAG_IGNORE_CERT_CN_INVALID 8
  typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_W {
    SEC_WINNT_AUTH_IDENTITY_W *TransportCredentials;
    unsigned long Flags;
    unsigned long AuthenticationTarget;
    unsigned long NumberOfAuthnSchemes;
    unsigned long *AuthnSchemes;
    unsigned short *ServerCertificateSubject;
  } RPC_HTTP_TRANSPORT_CREDENTIALS_W,*PRPC_HTTP_TRANSPORT_CREDENTIALS_W;
  typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_A {
    SEC_WINNT_AUTH_IDENTITY_A *TransportCredentials;
    unsigned long Flags;
    unsigned long AuthenticationTarget;
    unsigned long NumberOfAuthnSchemes;
    unsigned long *AuthnSchemes;
    unsigned char *ServerCertificateSubject;
  } RPC_HTTP_TRANSPORT_CREDENTIALS_A,*PRPC_HTTP_TRANSPORT_CREDENTIALS_A;
  typedef struct _RPC_SECURITY_QOS_V2_W {
    unsigned long Version;
    unsigned long Capabilities;
    unsigned long IdentityTracking;
    unsigned long ImpersonationType;
    unsigned long AdditionalSecurityInfoType;
    union {
      RPC_HTTP_TRANSPORT_CREDENTIALS_W *HttpCredentials;
    } u;
  } RPC_SECURITY_QOS_V2_W,*PRPC_SECURITY_QOS_V2_W;
  typedef struct _RPC_SECURITY_QOS_V2_A {
    unsigned long Version;
    unsigned long Capabilities;
    unsigned long IdentityTracking;
    unsigned long ImpersonationType;
    unsigned long AdditionalSecurityInfoType;
    union {
      RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials;
    } u;
  } RPC_SECURITY_QOS_V2_A,*PRPC_SECURITY_QOS_V2_A;
#define RPC_C_SECURITY_QOS_VERSION_3 __MSABI_LONG(3)
  typedef struct _RPC_SECURITY_QOS_V3_W {
    unsigned long Version;
    unsigned long Capabilities;
    unsigned long IdentityTracking;
    unsigned long ImpersonationType;
    unsigned long AdditionalSecurityInfoType;
    union {
      RPC_HTTP_TRANSPORT_CREDENTIALS_W *HttpCredentials;
    } u;
    void *Sid;
  } RPC_SECURITY_QOS_V3_W,*PRPC_SECURITY_QOS_V3_W;
  typedef struct _RPC_SECURITY_QOS_V3_A {
    unsigned long Version;
    unsigned long Capabilities;
    unsigned long IdentityTracking;
    unsigned long ImpersonationType;
    unsigned long AdditionalSecurityInfoType;
    union {
      RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials;
    } u;
    void *Sid;
  } RPC_SECURITY_QOS_V3_A,*PRPC_SECURITY_QOS_V3_A;
#define RPC_SECURITY_QOS_V2 __MINGW_NAME_UAW(RPC_SECURITY_QOS_V2)
#define PRPC_SECURITY_QOS_V2 __MINGW_NAME_UAW(PRPC_SECURITY_QOS_V2)
#define _RPC_SECURITY_QOS_V2 __MINGW_NAME_UAW(_RPC_SECURITY_QOS_V2)
#define RPC_HTTP_TRANSPORT_CREDENTIALS __MINGW_NAME_UAW(RPC_HTTP_TRANSPORT_CREDENTIALS)
#define PRPC_HTTP_TRANSPORT_CREDENTIALS __MINGW_NAME_UAW(PRPC_HTTP_TRANSPORT_CREDENTIALS)
#define _RPC_HTTP_TRANSPORT_CREDENTIALS __MINGW_NAME_UAW(_RPC_HTTP_TRANSPORT_CREDENTIALS)
#define RPC_SECURITY_QOS_V3 __MINGW_NAME_UAW(RPC_SECURITY_QOS_V3)
#define PRPC_SECURITY_QOS_V3 __MINGW_NAME_UAW(PRPC_SECURITY_QOS_V3)
#define _RPC_SECURITY_QOS_V3 __MINGW_NAME_UAW(_RPC_SECURITY_QOS_V3)
  typedef enum _RPC_HTTP_REDIRECTOR_STAGE {
    RPCHTTP_RS_REDIRECT = 1,RPCHTTP_RS_ACCESS_1,RPCHTTP_RS_SESSION,RPCHTTP_RS_ACCESS_2,RPCHTTP_RS_INTERFACE
  } RPC_HTTP_REDIRECTOR_STAGE;
  typedef RPC_STATUS (__attribute__((__stdcall__)) *RPC_NEW_HTTP_PROXY_CHANNEL)(RPC_HTTP_REDIRECTOR_STAGE RedirectorStage,unsigned short *ServerName,unsigned short *ServerPort,unsigned short *RemoteUser,unsigned short *AuthType,void *ResourceUuid,void *Metadata,void *SessionId,void *Interface,void *Reserved,unsigned long Flags,unsigned short **NewServerName,unsigned short **NewServerPort);
  typedef void (__attribute__((__stdcall__)) *RPC_HTTP_PROXY_FREE_STRING)(unsigned short *String);
#define RPC_C_AUTHZ_NONE 0
#define RPC_C_AUTHZ_NAME 1
#define RPC_C_AUTHZ_DCE 2
#define RPC_C_AUTHZ_DEFAULT 0xffffffff
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcImpersonateClient(RPC_BINDING_HANDLE BindingHandle);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcRevertToSelfEx(RPC_BINDING_HANDLE BindingHandle);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcRevertToSelf(void);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthClientA(RPC_BINDING_HANDLE ClientBinding,RPC_AUTHZ_HANDLE *Privs,RPC_CSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,unsigned long *AuthzSvc);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthClientW(RPC_BINDING_HANDLE ClientBinding,RPC_AUTHZ_HANDLE *Privs,RPC_WSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,unsigned long *AuthzSvc);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthClientExA(RPC_BINDING_HANDLE ClientBinding,RPC_AUTHZ_HANDLE *Privs,RPC_CSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,unsigned long *AuthzSvc,unsigned long Flags);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthClientExW(RPC_BINDING_HANDLE ClientBinding,RPC_AUTHZ_HANDLE *Privs,RPC_WSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,unsigned long *AuthzSvc,unsigned long Flags);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthInfoA(RPC_BINDING_HANDLE Binding,RPC_CSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,RPC_AUTH_IDENTITY_HANDLE *AuthIdentity,unsigned long *AuthzSvc);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthInfoW(RPC_BINDING_HANDLE Binding,RPC_WSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,RPC_AUTH_IDENTITY_HANDLE *AuthIdentity,unsigned long *AuthzSvc);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingSetAuthInfoA(RPC_BINDING_HANDLE Binding,RPC_CSTR ServerPrincName,unsigned long AuthnLevel,unsigned long AuthnSvc,RPC_AUTH_IDENTITY_HANDLE AuthIdentity,unsigned long AuthzSvc);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingSetAuthInfoExA(RPC_BINDING_HANDLE Binding,RPC_CSTR ServerPrincName,unsigned long AuthnLevel,unsigned long AuthnSvc,RPC_AUTH_IDENTITY_HANDLE AuthIdentity,unsigned long AuthzSvc,RPC_SECURITY_QOS *SecurityQos);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingSetAuthInfoW(RPC_BINDING_HANDLE Binding,RPC_WSTR ServerPrincName,unsigned long AuthnLevel,unsigned long AuthnSvc,RPC_AUTH_IDENTITY_HANDLE AuthIdentity,unsigned long AuthzSvc);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingSetAuthInfoExW(RPC_BINDING_HANDLE Binding,RPC_WSTR ServerPrincName,unsigned long AuthnLevel,unsigned long AuthnSvc,RPC_AUTH_IDENTITY_HANDLE AuthIdentity,unsigned long AuthzSvc,RPC_SECURITY_QOS *SecurityQOS);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthInfoExA(RPC_BINDING_HANDLE Binding,RPC_CSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,RPC_AUTH_IDENTITY_HANDLE *AuthIdentity,unsigned long *AuthzSvc,unsigned long RpcQosVersion,RPC_SECURITY_QOS *SecurityQOS);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingInqAuthInfoExW(RPC_BINDING_HANDLE Binding,RPC_WSTR *ServerPrincName,unsigned long *AuthnLevel,unsigned long *AuthnSvc,RPC_AUTH_IDENTITY_HANDLE *AuthIdentity,unsigned long *AuthzSvc,unsigned long RpcQosVersion,RPC_SECURITY_QOS *SecurityQOS);
  typedef void (__attribute__((__stdcall__)) *RPC_AUTH_KEY_RETRIEVAL_FN)(void *Arg,unsigned short *ServerPrincName,unsigned long KeyVer,void **Key,RPC_STATUS *Status);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerRegisterAuthInfoA(RPC_CSTR ServerPrincName,unsigned long AuthnSvc,RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,void *Arg);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerRegisterAuthInfoW(RPC_WSTR ServerPrincName,unsigned long AuthnSvc,RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,void *Arg);
#define RpcBindingInqAuthClient __MINGW_NAME_AW(RpcBindingInqAuthClient)
#define RpcBindingInqAuthClientEx __MINGW_NAME_AW(RpcBindingInqAuthClientEx)
#define RpcBindingInqAuthInfo __MINGW_NAME_AW(RpcBindingInqAuthInfo)
#define RpcBindingSetAuthInfo __MINGW_NAME_AW(RpcBindingSetAuthInfo)
#define RpcServerRegisterAuthInfo __MINGW_NAME_AW(RpcServerRegisterAuthInfo)
#define RpcBindingInqAuthInfoEx __MINGW_NAME_AW(RpcBindingInqAuthInfoEx)
#define RpcBindingSetAuthInfoEx __MINGW_NAME_AW(RpcBindingSetAuthInfoEx)
  typedef struct {
    unsigned char *UserName;
    unsigned char *ComputerName;
    unsigned short Privilege;
    unsigned long AuthFlags;
  } RPC_CLIENT_INFORMATION1,*PRPC_CLIENT_INFORMATION1;
#define UuidFromString __MINGW_NAME_AW(UuidFromString)
#define UuidToString __MINGW_NAME_AW(UuidToString)
#define RpcEpRegisterNoReplace __MINGW_NAME_AW(RpcEpRegisterNoReplace)
#define RpcEpRegister __MINGW_NAME_AW(RpcEpRegister)
#define DceErrorInqText __MINGW_NAME_AW(DceErrorInqText)
#define DCE_C_ERROR_STRING_LEN 256
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcBindingServerFromClient(RPC_BINDING_HANDLE ClientBinding,RPC_BINDING_HANDLE *ServerBinding);
  __attribute__((dllimport)) __attribute__((noreturn)) void __attribute__((__stdcall__)) RpcRaiseException(RPC_STATUS exception);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcTestCancel(void);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerTestCancel(RPC_BINDING_HANDLE BindingHandle);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcCancelThread(void *Thread);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcCancelThreadEx(void *Thread,long Timeout);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) UuidCreate(UUID *Uuid);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) UuidCreateSequential(UUID *Uuid);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) UuidToStringA(UUID *Uuid,RPC_CSTR *StringUuid);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) UuidFromStringA(RPC_CSTR StringUuid,UUID *Uuid);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) UuidToStringW(UUID *Uuid,RPC_WSTR *StringUuid);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) UuidFromStringW(RPC_WSTR StringUuid,UUID *Uuid);
  __attribute__((dllimport)) signed int __attribute__((__stdcall__)) UuidCompare(UUID *Uuid1,UUID *Uuid2,RPC_STATUS *Status);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) UuidCreateNil(UUID *NilUuid);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) UuidEqual(UUID *Uuid1,UUID *Uuid2,RPC_STATUS *Status);
  __attribute__((dllimport)) unsigned short __attribute__((__stdcall__)) UuidHash(UUID *Uuid,RPC_STATUS *Status);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) UuidIsNil(UUID *Uuid,RPC_STATUS *Status);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcEpRegisterNoReplaceA(RPC_IF_HANDLE IfSpec,RPC_BINDING_VECTOR *BindingVector,UUID_VECTOR *UuidVector,RPC_CSTR Annotation);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcEpRegisterNoReplaceW(RPC_IF_HANDLE IfSpec,RPC_BINDING_VECTOR *BindingVector,UUID_VECTOR *UuidVector,RPC_WSTR Annotation);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcEpRegisterA(RPC_IF_HANDLE IfSpec,RPC_BINDING_VECTOR *BindingVector,UUID_VECTOR *UuidVector,RPC_CSTR Annotation);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcEpRegisterW(RPC_IF_HANDLE IfSpec,RPC_BINDING_VECTOR *BindingVector,UUID_VECTOR *UuidVector,RPC_WSTR Annotation);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcEpUnregister(RPC_IF_HANDLE IfSpec,RPC_BINDING_VECTOR *BindingVector,UUID_VECTOR *UuidVector);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) DceErrorInqTextA(RPC_STATUS RpcStatus,RPC_CSTR ErrorText);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) DceErrorInqTextW(RPC_STATUS RpcStatus,RPC_WSTR ErrorText);
  typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE;
#define RPC_C_EP_ALL_ELTS 0
#define RPC_C_EP_MATCH_BY_IF 1
#define RPC_C_EP_MATCH_BY_OBJ 2
#define RPC_C_EP_MATCH_BY_BOTH 3
#define RPC_C_VERS_ALL 1
#define RPC_C_VERS_COMPATIBLE 2
#define RPC_C_VERS_EXACT 3
#define RPC_C_VERS_MAJOR_ONLY 4
#define RPC_C_VERS_UPTO 5
#define RpcMgmtEpEltInqNext __MINGW_NAME_AW(RpcMgmtEpEltInqNext)
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE EpBinding,unsigned long InquiryType,RPC_IF_ID *IfId,unsigned long VersOption,UUID *ObjectUuid,RPC_EP_INQ_HANDLE *InquiryContext);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtEpEltInqDone(RPC_EP_INQ_HANDLE *InquiryContext);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtEpEltInqNextA(RPC_EP_INQ_HANDLE InquiryContext,RPC_IF_ID *IfId,RPC_BINDING_HANDLE *Binding,UUID *ObjectUuid,RPC_CSTR *Annotation);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtEpEltInqNextW(RPC_EP_INQ_HANDLE InquiryContext,RPC_IF_ID *IfId,RPC_BINDING_HANDLE *Binding,UUID *ObjectUuid,RPC_WSTR *Annotation);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtEpUnregister(RPC_BINDING_HANDLE EpBinding,RPC_IF_ID *IfId,RPC_BINDING_HANDLE Binding,UUID *ObjectUuid);
  typedef int (__attribute__((__stdcall__)) *RPC_MGMT_AUTHORIZATION_FN)(RPC_BINDING_HANDLE ClientBinding,unsigned long RequestedMgmtOperation,RPC_STATUS *Status);
#define RPC_C_MGMT_INQ_IF_IDS 0
#define RPC_C_MGMT_INQ_PRINC_NAME 1
#define RPC_C_MGMT_INQ_STATS 2
#define RPC_C_MGMT_IS_SERVER_LISTEN 3
#define RPC_C_MGMT_STOP_SERVER_LISTEN 4
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN AuthorizationFn);
#define RPC_C_PARM_MAX_PACKET_LENGTH 1
#define RPC_C_PARM_BUFFER_LENGTH 2
#define RPC_IF_AUTOLISTEN 0x0001
#define RPC_IF_OLE 0x0002
#define RPC_IF_ALLOW_UNKNOWN_AUTHORITY 0x0004
#define RPC_IF_ALLOW_SECURE_ONLY 0x0008
#define RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH 0x0010
#define RPC_IF_ALLOW_LOCAL_ONLY 0x0020
#define RPC_IF_SEC_NO_CACHE 0x0040
typedef struct _RPC_BINDING_HANDLE_OPTIONS_V1 {
  unsigned long Version;
  unsigned long Flags;
  unsigned long ComTimeout;
  unsigned long CallTimeout;
} RPC_BINDING_HANDLE_OPTIONS_V1, RPC_BINDING_HANDLE_OPTIONS;
typedef struct {
  unsigned long Version;
  unsigned short *ServerPrincName;
  unsigned long AuthnLevel;
  unsigned long AuthnSvc;
  SEC_WINNT_AUTH_IDENTITY_A *AuthIdentity;
  RPC_SECURITY_QOS *SecurityQos;
} RPC_BINDING_HANDLE_SECURITY_V1, RPC_BINDING_HANDLE_SECURITY;
typedef struct _RPC_BINDING_HANDLE_TEMPLATE {
  unsigned long Version;
  unsigned long Flags;
  unsigned long ProtocolSequence;
  unsigned short *NetworkAddress;
  unsigned short *StringEndpoint;
  union {
    unsigned short *Reserved;
  } u1;
  UUID ObjectUuid;
} RPC_BINDING_HANDLE_TEMPLATE_V1, RPC_BINDING_HANDLE_TEMPLATE;
#define RPC_CALL_STATUS_IN_PROGRESS 0x01
#define RPC_CALL_STATUS_CANCELLED 0x02
#define RPC_CALL_STATUS_DISCONNECTED 0x03
RPC_STATUS __attribute__((__stdcall__)) RpcBindingCreateA(
  RPC_BINDING_HANDLE_TEMPLATE *Template,
  RPC_BINDING_HANDLE_SECURITY *Security,
  RPC_BINDING_HANDLE_OPTIONS *Options,
  RPC_BINDING_HANDLE *Binding
);
RPC_STATUS __attribute__((__stdcall__)) RpcBindingCreateW(
  RPC_BINDING_HANDLE_TEMPLATE *Template,
  RPC_BINDING_HANDLE_SECURITY *Security,
  RPC_BINDING_HANDLE_OPTIONS *Options,
  RPC_BINDING_HANDLE *Binding
);
#define RpcBindingCreate __MINGW_NAME_AW(RpcBindingCreate)
RPC_STATUS RpcServerInqBindingHandle(
    RPC_BINDING_HANDLE *Binding
);
#define __RPCDCEP_H__ 
  typedef struct _RPC_VERSION {
    unsigned short MajorVersion;
    unsigned short MinorVersion;
  } RPC_VERSION;
  typedef struct _RPC_SYNTAX_IDENTIFIER {
    GUID SyntaxGUID;
    RPC_VERSION SyntaxVersion;
  } RPC_SYNTAX_IDENTIFIER,*PRPC_SYNTAX_IDENTIFIER;
  typedef struct _RPC_MESSAGE {
    RPC_BINDING_HANDLE Handle;
    unsigned long DataRepresentation;
    void *Buffer;
    unsigned int BufferLength;
    unsigned int ProcNum;
    PRPC_SYNTAX_IDENTIFIER TransferSyntax;
    void *RpcInterfaceInformation;
    void *ReservedForRuntime;
    void *ManagerEpv;
    void *ImportContext;
    unsigned long RpcFlags;
  } RPC_MESSAGE,*PRPC_MESSAGE;
  typedef RPC_STATUS __attribute__((__stdcall__)) RPC_FORWARD_FUNCTION(UUID *InterfaceId,RPC_VERSION *InterfaceVersion,UUID *ObjectId,unsigned char *Rpcpro,void **ppDestEndpoint);
  enum RPC_ADDRESS_CHANGE_TYPE {
    PROTOCOL_NOT_LOADED = 1,PROTOCOL_LOADED,PROTOCOL_ADDRESS_CHANGE
  };
  typedef void __attribute__((__stdcall__)) RPC_ADDRESS_CHANGE_FN(void *arg);
#define RPC_CONTEXT_HANDLE_DEFAULT_GUARD ((void *) -4083)
#define RPC_CONTEXT_HANDLE_DEFAULT_FLAGS __MSABI_LONG(0x00000000U)
#define RPC_CONTEXT_HANDLE_FLAGS __MSABI_LONG(0x30000000U)
#define RPC_CONTEXT_HANDLE_SERIALIZE __MSABI_LONG(0x10000000U)
#define RPC_CONTEXT_HANDLE_DONT_SERIALIZE __MSABI_LONG(0x20000000U)
#define RPC_NCA_FLAGS_DEFAULT 0x00000000
#define RPC_NCA_FLAGS_IDEMPOTENT 0x00000001
#define RPC_NCA_FLAGS_BROADCAST 0x00000002
#define RPC_NCA_FLAGS_MAYBE 0x00000004
#define RPC_BUFFER_COMPLETE 0x00001000
#define RPC_BUFFER_PARTIAL 0x00002000
#define RPC_BUFFER_EXTRA 0x00004000
#define RPC_BUFFER_ASYNC 0x00008000
#define RPC_BUFFER_NONOTIFY 0x00010000
#define RPCFLG_MESSAGE __MSABI_LONG(0x01000000U)
#define RPCFLG_AUTO_COMPLETE __MSABI_LONG(0x08000000U)
#define RPCFLG_LOCAL_CALL __MSABI_LONG(0x10000000U)
#define RPCFLG_INPUT_SYNCHRONOUS __MSABI_LONG(0x20000000U)
#define RPCFLG_ASYNCHRONOUS __MSABI_LONG(0x40000000U)
#define RPCFLG_NON_NDR __MSABI_LONG(0x80000000U)
#define RPCFLG_HAS_MULTI_SYNTAXES __MSABI_LONG(0x02000000U)
#define RPCFLG_HAS_CALLBACK __MSABI_LONG(0x04000000U)
#define RPC_FLAGS_VALID_BIT 0x00008000
  typedef void (__attribute__((__stdcall__)) *RPC_DISPATCH_FUNCTION)(PRPC_MESSAGE Message);
  typedef struct {
    unsigned int DispatchTableCount;
    RPC_DISPATCH_FUNCTION *DispatchTable;
    LONG_PTR Reserved;
  } RPC_DISPATCH_TABLE,*PRPC_DISPATCH_TABLE;
  typedef struct _RPC_PROTSEQ_ENDPOINT {
    unsigned char *RpcProtocolSequence;
    unsigned char *Endpoint;
  } RPC_PROTSEQ_ENDPOINT,*PRPC_PROTSEQ_ENDPOINT;
#define NT351_INTERFACE_SIZE 0x40
#define RPC_INTERFACE_HAS_PIPES 0x0001
  typedef struct _RPC_SERVER_INTERFACE {
    unsigned int Length;
    RPC_SYNTAX_IDENTIFIER InterfaceId;
    RPC_SYNTAX_IDENTIFIER TransferSyntax;
    PRPC_DISPATCH_TABLE DispatchTable;
    unsigned int RpcProtseqEndpointCount;
    PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
    void *DefaultManagerEpv;
    void const *InterpreterInfo;
    unsigned int Flags;
  } RPC_SERVER_INTERFACE,*PRPC_SERVER_INTERFACE;
  typedef struct _RPC_CLIENT_INTERFACE {
    unsigned int Length;
    RPC_SYNTAX_IDENTIFIER InterfaceId;
    RPC_SYNTAX_IDENTIFIER TransferSyntax;
    PRPC_DISPATCH_TABLE DispatchTable;
    unsigned int RpcProtseqEndpointCount;
    PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
    ULONG_PTR Reserved;
    void const *InterpreterInfo;
    unsigned int Flags;
  } RPC_CLIENT_INTERFACE,*PRPC_CLIENT_INTERFACE;
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcNegotiateTransferSyntax(RPC_MESSAGE *Message);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcGetBuffer(RPC_MESSAGE *Message);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcGetBufferWithObject(RPC_MESSAGE *Message,UUID *ObjectUuid);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcSendReceive(RPC_MESSAGE *Message);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcFreeBuffer(RPC_MESSAGE *Message);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcSend(PRPC_MESSAGE Message);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcReceive(PRPC_MESSAGE Message,unsigned int Size);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcFreePipeBuffer(RPC_MESSAGE *Message);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcReallocPipeBuffer(PRPC_MESSAGE Message,unsigned int NewSize);
  typedef void *I_RPC_MUTEX;
#define I_RpcNsBindingSetEntryName __MINGW_NAME_AW(I_RpcNsBindingSetEntryName)
#define I_RpcServerUseProtseqEp2 __MINGW_NAME_AW(I_RpcServerUseProtseqEp2)
#define I_RpcServerUseProtseq2 __MINGW_NAME_AW(I_RpcServerUseProtseq2)
#define I_RpcBindingInqDynamicEndpoint __MINGW_NAME_AW(I_RpcBindingInqDynamicEndpoint)
  __attribute__((dllimport)) void __attribute__((__stdcall__)) I_RpcRequestMutex(I_RPC_MUTEX *Mutex);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) I_RpcClearMutex(I_RPC_MUTEX Mutex);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) I_RpcDeleteMutex(I_RPC_MUTEX Mutex);
  __attribute__((dllimport)) void *__attribute__((__stdcall__)) I_RpcAllocate(unsigned int Size);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) I_RpcFree(void *Object);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) I_RpcPauseExecution(unsigned long Milliseconds);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcGetExtendedError(void);
  typedef void (__attribute__((__stdcall__)) *PRPC_RUNDOWN)(void *AssociationContext);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcMonitorAssociation(RPC_BINDING_HANDLE Handle,PRPC_RUNDOWN RundownRoutine,void *Context);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcStopMonitorAssociation(RPC_BINDING_HANDLE Handle);
  __attribute__((dllimport)) RPC_BINDING_HANDLE __attribute__((__stdcall__)) I_RpcGetCurrentCallHandle(void);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcGetAssociationContext(RPC_BINDING_HANDLE BindingHandle,void **AssociationContext);
  __attribute__((dllimport)) void *__attribute__((__stdcall__)) I_RpcGetServerContextList(RPC_BINDING_HANDLE BindingHandle);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) I_RpcSetServerContextList(RPC_BINDING_HANDLE BindingHandle,void *ServerContextList);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcNsInterfaceExported(unsigned long EntryNameSyntax,unsigned short *EntryName,RPC_SERVER_INTERFACE *RpcInterfaceInformation);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcNsInterfaceUnexported(unsigned long EntryNameSyntax,unsigned short *EntryName,RPC_SERVER_INTERFACE *RpcInterfaceInformation);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingToStaticStringBindingW(RPC_BINDING_HANDLE Binding,unsigned short **StringBinding);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqSecurityContext(RPC_BINDING_HANDLE Binding,void **SecurityContextHandle);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqWireIdForSnego(RPC_BINDING_HANDLE Binding,RPC_CSTR WireId);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqMarshalledTargetInfo (RPC_BINDING_HANDLE Binding,unsigned long *MarshalledTargetInfoLength,RPC_CSTR *MarshalledTargetInfo);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqLocalClientPID(RPC_BINDING_HANDLE Binding,unsigned long *Pid);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingHandleToAsyncHandle(RPC_BINDING_HANDLE Binding,void **AsyncHandle);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcNsBindingSetEntryNameW(RPC_BINDING_HANDLE Binding,unsigned long EntryNameSyntax,RPC_WSTR EntryName);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcNsBindingSetEntryNameA(RPC_BINDING_HANDLE Binding,unsigned long EntryNameSyntax,RPC_CSTR EntryName);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerUseProtseqEp2A(RPC_CSTR NetworkAddress,RPC_CSTR Protseq,unsigned int MaxCalls,RPC_CSTR Endpoint,void *SecurityDescriptor,void *Policy);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerUseProtseqEp2W(RPC_WSTR NetworkAddress,RPC_WSTR Protseq,unsigned int MaxCalls,RPC_WSTR Endpoint,void *SecurityDescriptor,void *Policy);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerUseProtseq2W(RPC_WSTR NetworkAddress,RPC_WSTR Protseq,unsigned int MaxCalls,void *SecurityDescriptor,void *Policy);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerUseProtseq2A(RPC_CSTR NetworkAddress,RPC_CSTR Protseq,unsigned int MaxCalls,void *SecurityDescriptor,void *Policy);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqDynamicEndpointW(RPC_BINDING_HANDLE Binding,RPC_WSTR *DynamicEndpoint);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqDynamicEndpointA(RPC_BINDING_HANDLE Binding,RPC_CSTR *DynamicEndpoint);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerCheckClientRestriction(RPC_BINDING_HANDLE Context);
#define TRANSPORT_TYPE_CN 0x01
#define TRANSPORT_TYPE_DG 0x02
#define TRANSPORT_TYPE_LPC 0x04
#define TRANSPORT_TYPE_WMSG 0x08
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqTransportType(RPC_BINDING_HANDLE Binding,unsigned int *Type);
  typedef struct _RPC_TRANSFER_SYNTAX {
    UUID Uuid;
    unsigned short VersMajor;
    unsigned short VersMinor;
  } RPC_TRANSFER_SYNTAX;
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcIfInqTransferSyntaxes(RPC_IF_HANDLE RpcIfHandle,RPC_TRANSFER_SYNTAX *TransferSyntaxes,unsigned int TransferSyntaxSize,unsigned int *TransferSyntaxCount);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_UuidCreate(UUID *Uuid);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingCopy(RPC_BINDING_HANDLE SourceBinding,RPC_BINDING_HANDLE *DestinationBinding);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingIsClientLocal(RPC_BINDING_HANDLE BindingHandle,unsigned int *ClientLocalFlag);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcBindingInqConnId(RPC_BINDING_HANDLE Binding,void **ConnId,int *pfFirstCall);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) I_RpcSsDontSerializeContext(void);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcLaunchDatagramReceiveThread(void *pAddress);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerRegisterForwardFunction(RPC_FORWARD_FUNCTION *pForwardFunction);
  RPC_ADDRESS_CHANGE_FN *__attribute__((__stdcall__)) I_RpcServerInqAddressChangeFn(void);
  RPC_STATUS __attribute__((__stdcall__)) I_RpcServerSetAddressChangeFn(RPC_ADDRESS_CHANGE_FN *pAddressChangeFn);
#define RPC_P_ADDR_FORMAT_TCP_IPV4 1
#define RPC_P_ADDR_FORMAT_TCP_IPV6 2
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerInqLocalConnAddress(RPC_BINDING_HANDLE Binding,void *Buffer,unsigned long *BufferSize,unsigned long *AddressFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) I_RpcSessionStrictContextHandle(void);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcTurnOnEEInfoPropagation(void);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcConnectionInqSockBuffSize(unsigned long *RecvBuffSize,unsigned long *SendBuffSize);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcConnectionSetSockBuffSize(unsigned long RecvBuffSize,unsigned long SendBuffSize);
  typedef void (*RPCLT_PDU_FILTER_FUNC)(void *Buffer,unsigned int BufferLength,int fDatagram);
  typedef void (__attribute__((__cdecl__)) *RPC_SETFILTER_FUNC)(RPCLT_PDU_FILTER_FUNC pfnFilter);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcServerInqTransportType(unsigned int *Type);
  __attribute__((dllimport)) long __attribute__((__stdcall__)) I_RpcMapWin32Status(RPC_STATUS Status);
  typedef struct _RPC_C_OPT_METADATA_DESCRIPTOR {
    unsigned long BufferSize;
    char *Buffer;
  } RPC_C_OPT_METADATA_DESCRIPTOR;
  typedef struct _RDR_CALLOUT_STATE {
    RPC_STATUS LastError;
    void *LastEEInfo;
    RPC_HTTP_REDIRECTOR_STAGE LastCalledStage;
    unsigned short *ServerName;
    unsigned short *ServerPort;
    unsigned short *RemoteUser;
    unsigned short *AuthType;
    unsigned char ResourceTypePresent;
    unsigned char MetadataPresent;
    unsigned char SessionIdPresent;
    unsigned char InterfacePresent;
    UUID ResourceType;
    RPC_C_OPT_METADATA_DESCRIPTOR Metadata;
    UUID SessionId;
    RPC_SYNTAX_IDENTIFIER Interface;
    void *CertContext;
  } RDR_CALLOUT_STATE;
  typedef RPC_STATUS (__attribute__((__stdcall__)) *I_RpcProxyIsValidMachineFn)(char *pszMachine,char *pszDotMachine,unsigned long dwPortNumber);
  typedef RPC_STATUS (__attribute__((__stdcall__)) *I_RpcProxyGetClientAddressFn)(void *Context,char *Buffer,unsigned long *BufferLength);
  typedef RPC_STATUS (__attribute__((__stdcall__)) *I_RpcProxyGetConnectionTimeoutFn)(unsigned long *ConnectionTimeout);
  typedef RPC_STATUS (__attribute__((__stdcall__)) *I_RpcPerformCalloutFn)(void *Context,RDR_CALLOUT_STATE *CallOutState,RPC_HTTP_REDIRECTOR_STAGE Stage);
  typedef void (__attribute__((__stdcall__)) *I_RpcFreeCalloutStateFn)(RDR_CALLOUT_STATE *CallOutState);
  typedef struct tagI_RpcProxyCallbackInterface {
    I_RpcProxyIsValidMachineFn IsValidMachineFn;
    I_RpcProxyGetClientAddressFn GetClientAddressFn;
    I_RpcProxyGetConnectionTimeoutFn GetConnectionTimeoutFn;
    I_RpcPerformCalloutFn PerformCalloutFn;
    I_RpcFreeCalloutStateFn FreeCalloutStateFn;
  } I_RpcProxyCallbackInterface;
#define RPC_PROXY_CONNECTION_TYPE_IN_PROXY 0
#define RPC_PROXY_CONNECTION_TYPE_OUT_PROXY 1
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcProxyNewConnection(unsigned long ConnectionType,unsigned short *ServerAddress,unsigned short *ServerPort,unsigned short *MinConnTimeout,void *ConnectionParameter,RDR_CALLOUT_STATE *CallOutState,I_RpcProxyCallbackInterface *ProxyCallbackInterface);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcReplyToClientWithStatus(void *ConnectionParameter,RPC_STATUS RpcStatus);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) I_RpcRecordCalloutFailure(RPC_STATUS RpcStatus,RDR_CALLOUT_STATE *CallOutState,unsigned short *DllName);
#define __RPCNSI_H__ 
typedef void *RPC_NS_HANDLE;
#define RPC_C_NS_SYNTAX_DEFAULT 0
#define RPC_C_NS_SYNTAX_DCE 3
#define RPC_C_PROFILE_DEFAULT_ELT 0
#define RPC_C_PROFILE_ALL_ELT 1
#define RPC_C_PROFILE_ALL_ELTS RPC_C_PROFILE_ALL_ELT
#define RPC_C_PROFILE_MATCH_BY_IF 2
#define RPC_C_PROFILE_MATCH_BY_MBR 3
#define RPC_C_PROFILE_MATCH_BY_BOTH 4
#define RPC_C_NS_DEFAULT_EXP_AGE -1
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingExportA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_HANDLE IfSpec,RPC_BINDING_VECTOR *BindingVec,UUID_VECTOR *ObjectUuidVec);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingUnexportA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_HANDLE IfSpec,UUID_VECTOR *ObjectUuidVec);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingExportW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_HANDLE IfSpec,RPC_BINDING_VECTOR *BindingVec,UUID_VECTOR *ObjectUuidVec);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingUnexportW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_HANDLE IfSpec,UUID_VECTOR *ObjectUuidVec);
RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingExportPnPA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_HANDLE IfSpec,UUID_VECTOR *ObjectVector);
RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingUnexportPnPA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_HANDLE IfSpec,UUID_VECTOR *ObjectVector);
RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingExportPnPW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_HANDLE IfSpec,UUID_VECTOR *ObjectVector);
RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingUnexportPnPW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_HANDLE IfSpec,UUID_VECTOR *ObjectVector);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingLookupBeginA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_HANDLE IfSpec,UUID *ObjUuid,unsigned long BindingMaxCount,RPC_NS_HANDLE *LookupContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingLookupBeginW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_HANDLE IfSpec,UUID *ObjUuid,unsigned long BindingMaxCount,RPC_NS_HANDLE *LookupContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingLookupNext(RPC_NS_HANDLE LookupContext,RPC_BINDING_VECTOR **BindingVec);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingLookupDone(RPC_NS_HANDLE *LookupContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupDeleteA(unsigned long GroupNameSyntax,RPC_CSTR GroupName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrAddA(unsigned long GroupNameSyntax,RPC_CSTR GroupName,unsigned long MemberNameSyntax,RPC_CSTR MemberName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrRemoveA(unsigned long GroupNameSyntax,RPC_CSTR GroupName,unsigned long MemberNameSyntax,RPC_CSTR MemberName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrInqBeginA(unsigned long GroupNameSyntax,RPC_CSTR GroupName,unsigned long MemberNameSyntax,RPC_NS_HANDLE *InquiryContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrInqNextA(RPC_NS_HANDLE InquiryContext,RPC_CSTR *MemberName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupDeleteW(unsigned long GroupNameSyntax,RPC_WSTR GroupName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrAddW(unsigned long GroupNameSyntax,RPC_WSTR GroupName,unsigned long MemberNameSyntax,RPC_WSTR MemberName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrRemoveW(unsigned long GroupNameSyntax,RPC_WSTR GroupName,unsigned long MemberNameSyntax,RPC_WSTR MemberName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrInqBeginW(unsigned long GroupNameSyntax,RPC_WSTR GroupName,unsigned long MemberNameSyntax,RPC_NS_HANDLE *InquiryContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrInqNextW(RPC_NS_HANDLE InquiryContext,RPC_WSTR *MemberName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsGroupMbrInqDone(RPC_NS_HANDLE *InquiryContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileDeleteA(unsigned long ProfileNameSyntax,RPC_CSTR ProfileName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltAddA(unsigned long ProfileNameSyntax,RPC_CSTR ProfileName,RPC_IF_ID *IfId,unsigned long MemberNameSyntax,RPC_CSTR MemberName,unsigned long Priority,RPC_CSTR Annotation);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltRemoveA(unsigned long ProfileNameSyntax,RPC_CSTR ProfileName,RPC_IF_ID *IfId,unsigned long MemberNameSyntax,RPC_CSTR MemberName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltInqBeginA(unsigned long ProfileNameSyntax,RPC_CSTR ProfileName,unsigned long InquiryType,RPC_IF_ID *IfId,unsigned long VersOption,unsigned long MemberNameSyntax,RPC_CSTR MemberName,RPC_NS_HANDLE *InquiryContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltInqNextA(RPC_NS_HANDLE InquiryContext,RPC_IF_ID *IfId,RPC_CSTR *MemberName,unsigned long *Priority,RPC_CSTR *Annotation);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileDeleteW(unsigned long ProfileNameSyntax,RPC_WSTR ProfileName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltAddW(unsigned long ProfileNameSyntax,RPC_WSTR ProfileName,RPC_IF_ID *IfId,unsigned long MemberNameSyntax,RPC_WSTR MemberName,unsigned long Priority,RPC_WSTR Annotation);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltRemoveW(unsigned long ProfileNameSyntax,RPC_WSTR ProfileName,RPC_IF_ID *IfId,unsigned long MemberNameSyntax,RPC_WSTR MemberName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltInqBeginW(unsigned long ProfileNameSyntax,RPC_WSTR ProfileName,unsigned long InquiryType,RPC_IF_ID *IfId,unsigned long VersOption,unsigned long MemberNameSyntax,RPC_WSTR MemberName,RPC_NS_HANDLE *InquiryContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltInqNextW(RPC_NS_HANDLE InquiryContext,RPC_IF_ID *IfId,RPC_WSTR *MemberName,unsigned long *Priority,RPC_WSTR *Annotation);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsProfileEltInqDone(RPC_NS_HANDLE *InquiryContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsEntryObjectInqBeginA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_NS_HANDLE *InquiryContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsEntryObjectInqBeginW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_NS_HANDLE *InquiryContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsEntryObjectInqNext(RPC_NS_HANDLE InquiryContext,UUID *ObjUuid);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsEntryObjectInqDone(RPC_NS_HANDLE *InquiryContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsEntryExpandNameA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_CSTR *ExpandedName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtBindingUnexportA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_ID *IfId,unsigned long VersOption,UUID_VECTOR *ObjectUuidVec);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtEntryCreateA(unsigned long EntryNameSyntax,RPC_CSTR EntryName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtEntryDeleteA(unsigned long EntryNameSyntax,RPC_CSTR EntryName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtEntryInqIfIdsA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_ID_VECTOR **IfIdVec);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtHandleSetExpAge(RPC_NS_HANDLE NsHandle,unsigned long ExpirationAge);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtInqExpAge(unsigned long *ExpirationAge);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtSetExpAge(unsigned long ExpirationAge);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsEntryExpandNameW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_WSTR *ExpandedName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtBindingUnexportW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_ID *IfId,unsigned long VersOption,UUID_VECTOR *ObjectUuidVec);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtEntryCreateW(unsigned long EntryNameSyntax,RPC_WSTR EntryName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtEntryDeleteW(unsigned long EntryNameSyntax,RPC_WSTR EntryName);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsMgmtEntryInqIfIdsW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_ID_VECTOR **IfIdVec);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingImportBeginA(unsigned long EntryNameSyntax,RPC_CSTR EntryName,RPC_IF_HANDLE IfSpec,UUID *ObjUuid,RPC_NS_HANDLE *ImportContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingImportBeginW(unsigned long EntryNameSyntax,RPC_WSTR EntryName,RPC_IF_HANDLE IfSpec,UUID *ObjUuid,RPC_NS_HANDLE *ImportContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingImportNext(RPC_NS_HANDLE ImportContext,RPC_BINDING_HANDLE *Binding);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingImportDone(RPC_NS_HANDLE *ImportContext);
__attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcNsBindingSelect(RPC_BINDING_VECTOR *BindingVec,RPC_BINDING_HANDLE *Binding);
#define RpcNsBindingLookupBegin __MINGW_NAME_AW(RpcNsBindingLookupBegin)
#define RpcNsBindingImportBegin __MINGW_NAME_AW(RpcNsBindingImportBegin)
#define RpcNsBindingExport __MINGW_NAME_AW(RpcNsBindingExport)
#define RpcNsBindingUnexport __MINGW_NAME_AW(RpcNsBindingUnexport)
#define RpcNsGroupDelete __MINGW_NAME_AW(RpcNsGroupDelete)
#define RpcNsGroupMbrAdd __MINGW_NAME_AW(RpcNsGroupMbrAdd)
#define RpcNsGroupMbrRemove __MINGW_NAME_AW(RpcNsGroupMbrRemove)
#define RpcNsGroupMbrInqBegin __MINGW_NAME_AW(RpcNsGroupMbrInqBegin)
#define RpcNsGroupMbrInqNext __MINGW_NAME_AW(RpcNsGroupMbrInqNext)
#define RpcNsEntryExpandName __MINGW_NAME_AW(RpcNsEntryExpandName)
#define RpcNsEntryObjectInqBegin __MINGW_NAME_AW(RpcNsEntryObjectInqBegin)
#define RpcNsMgmtBindingUnexport __MINGW_NAME_AW(RpcNsMgmtBindingUnexport)
#define RpcNsMgmtEntryCreate __MINGW_NAME_AW(RpcNsMgmtEntryCreate)
#define RpcNsMgmtEntryDelete __MINGW_NAME_AW(RpcNsMgmtEntryDelete)
#define RpcNsMgmtEntryInqIfIds __MINGW_NAME_AW(RpcNsMgmtEntryInqIfIds)
#define RpcNsProfileDelete __MINGW_NAME_AW(RpcNsProfileDelete)
#define RpcNsProfileEltAdd __MINGW_NAME_AW(RpcNsProfileEltAdd)
#define RpcNsProfileEltRemove __MINGW_NAME_AW(RpcNsProfileEltRemove)
#define RpcNsProfileEltInqBegin __MINGW_NAME_AW(RpcNsProfileEltInqBegin)
#define RpcNsProfileEltInqNext __MINGW_NAME_AW(RpcNsProfileEltInqNext)
#define RpcNsBindingExportPnP __MINGW_NAME_AW(RpcNsBindingExportPnP)
#define RpcNsBindingUnexportPnP __MINGW_NAME_AW(RpcNsBindingUnexportPnP)
#define __RPCNTERR_H__ 
#define RPC_S_OK ERROR_SUCCESS
#define RPC_S_INVALID_ARG ERROR_INVALID_PARAMETER
#define RPC_S_OUT_OF_MEMORY ERROR_OUTOFMEMORY
#define RPC_S_OUT_OF_THREADS ERROR_MAX_THRDS_REACHED
#define RPC_S_INVALID_LEVEL ERROR_INVALID_PARAMETER
#define RPC_S_BUFFER_TOO_SMALL ERROR_INSUFFICIENT_BUFFER
#define RPC_S_INVALID_SECURITY_DESC ERROR_INVALID_SECURITY_DESCR
#define RPC_S_ACCESS_DENIED ERROR_ACCESS_DENIED
#define RPC_S_SERVER_OUT_OF_MEMORY ERROR_NOT_ENOUGH_SERVER_MEMORY
#define RPC_S_ASYNC_CALL_PENDING ERROR_IO_PENDING
#define RPC_S_UNKNOWN_PRINCIPAL ERROR_NONE_MAPPED
#define RPC_S_TIMEOUT ERROR_TIMEOUT
#define RPC_X_NO_MEMORY RPC_S_OUT_OF_MEMORY
#define RPC_X_INVALID_BOUND RPC_S_INVALID_BOUND
#define RPC_X_INVALID_TAG RPC_S_INVALID_TAG
#define RPC_X_ENUM_VALUE_TOO_LARGE RPC_X_ENUM_VALUE_OUT_OF_RANGE
#define RPC_X_SS_CONTEXT_MISMATCH ERROR_INVALID_HANDLE
#define RPC_X_INVALID_BUFFER ERROR_INVALID_USER_BUFFER
#define RPC_X_PIPE_APP_MEMORY ERROR_OUTOFMEMORY
#define RPC_X_INVALID_PIPE_OPERATION RPC_X_WRONG_PIPE_ORDER
#define RpcTryExcept __try {
#define RpcExcept(expr) } __except(expr) {
#define RpcEndExcept }
#define RpcTryFinally __try {
#define RpcFinally } __finally {
#define RpcEndFinally }
#define RpcExceptionCode() GetExceptionCode()
#define RpcAbnormalTermination() AbnormalTermination()
#define __RPCASYNC_H__ 
#define RPC_ASYNC_VERSION_1_0 sizeof(RPC_ASYNC_STATE)
  typedef enum _RPC_NOTIFICATION_TYPES {
    RpcNotificationTypeNone,RpcNotificationTypeEvent,RpcNotificationTypeApc,RpcNotificationTypeIoc,RpcNotificationTypeHwnd,
    RpcNotificationTypeCallback
  } RPC_NOTIFICATION_TYPES;
  typedef enum _RPC_ASYNC_EVENT {
    RpcCallComplete,RpcSendComplete,RpcReceiveComplete
  } RPC_ASYNC_EVENT;
  struct _RPC_ASYNC_STATE;
  typedef void __attribute__((__stdcall__)) RPCNOTIFICATION_ROUTINE(struct _RPC_ASYNC_STATE *pAsync,void *Context,RPC_ASYNC_EVENT Event);
  typedef RPCNOTIFICATION_ROUTINE *PFN_RPCNOTIFICATION_ROUTINE;
  typedef struct _RPC_ASYNC_STATE {
    unsigned int Size;
    unsigned long Signature;
    long Lock;
    unsigned long Flags;
    void *StubInfo;
    void *UserInfo;
    void *RuntimeInfo;
    RPC_ASYNC_EVENT Event;
    RPC_NOTIFICATION_TYPES NotificationType;
    union {
      struct {
 PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
 HANDLE hThread;
      } APC;
      struct {
 HANDLE hIOPort;
 DWORD dwNumberOfBytesTransferred;
 DWORD_PTR dwCompletionKey;
 LPOVERLAPPED lpOverlapped;
      } IOC;
      struct {
 HWND hWnd;
 UINT Msg;
      } HWND;
      HANDLE hEvent;
      PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
    } u;
    LONG_PTR Reserved[4];
  } RPC_ASYNC_STATE,*PRPC_ASYNC_STATE;
#define RPC_C_NOTIFY_ON_SEND_COMPLETE 0x1
#define RPC_C_INFINITE_TIMEOUT INFINITE
#define RpcAsyncGetCallHandle(pAsync) (((PRPC_ASYNC_STATE) pAsync)->RuntimeInfo)
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcAsyncInitializeHandle(PRPC_ASYNC_STATE pAsync,unsigned int Size);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcAsyncRegisterInfo(PRPC_ASYNC_STATE pAsync);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcAsyncGetCallStatus(PRPC_ASYNC_STATE pAsync);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcAsyncCompleteCall(PRPC_ASYNC_STATE pAsync,void *Reply);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcAsyncAbortCall(PRPC_ASYNC_STATE pAsync,unsigned long ExceptionCode);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcAsyncCancelCall(PRPC_ASYNC_STATE pAsync,WINBOOL fAbort);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcAsyncCleanupThread(DWORD dwTimeout);
  typedef enum tagExtendedErrorParamTypes {
    eeptAnsiString = 1,eeptUnicodeString,eeptLongVal,eeptShortVal,eeptPointerVal,eeptNone,eeptBinary
  } ExtendedErrorParamTypes;
#define MaxNumberOfEEInfoParams 4
#define RPC_EEINFO_VERSION 1
  typedef struct tagBinaryParam {
    void *Buffer;
    short Size;
  } BinaryParam;
  typedef struct tagRPC_EE_INFO_PARAM {
    ExtendedErrorParamTypes ParameterType;
    union {
      LPSTR AnsiString;
      LPWSTR UnicodeString;
      long LVal;
      short SVal;
      ULONGLONG PVal;
      BinaryParam BVal;
    } u;
  } RPC_EE_INFO_PARAM;
#define EEInfoPreviousRecordsMissing 1
#define EEInfoNextRecordsMissing 2
#define EEInfoUseFileTime 4
#define EEInfoGCCOM 11
#define EEInfoGCFRS 12
  typedef struct tagRPC_EXTENDED_ERROR_INFO {
    ULONG Version;
    LPWSTR ComputerName;
    ULONG ProcessID;
    union {
      SYSTEMTIME SystemTime;
      FILETIME FileTime;
    } u;
    ULONG GeneratingComponent;
    ULONG Status;
    USHORT DetectionLocation;
    USHORT Flags;
    int NumberOfParameters;
    RPC_EE_INFO_PARAM Parameters[4];
  } RPC_EXTENDED_ERROR_INFO;
  typedef struct tagRPC_ERROR_ENUM_HANDLE {
    ULONG Signature;
    void *CurrentPos;
    void *Head;
  } RPC_ERROR_ENUM_HANDLE;
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcErrorStartEnumeration(RPC_ERROR_ENUM_HANDLE *EnumHandle);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcErrorGetNextRecord(RPC_ERROR_ENUM_HANDLE *EnumHandle,WINBOOL CopyStrings,RPC_EXTENDED_ERROR_INFO *ErrorInfo);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcErrorEndEnumeration(RPC_ERROR_ENUM_HANDLE *EnumHandle);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcErrorResetEnumeration(RPC_ERROR_ENUM_HANDLE *EnumHandle);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcErrorGetNumberOfRecords(RPC_ERROR_ENUM_HANDLE *EnumHandle,int *Records);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcErrorSaveErrorInfo(RPC_ERROR_ENUM_HANDLE *EnumHandle,PVOID *ErrorBlob,size_t *BlobSize);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcErrorLoadErrorInfo(PVOID ErrorBlob,size_t BlobSize,RPC_ERROR_ENUM_HANDLE *EnumHandle);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcErrorAddRecord(RPC_EXTENDED_ERROR_INFO *ErrorInfo);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) RpcErrorClearInformation(void);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcGetAuthorizationContextForClient(RPC_BINDING_HANDLE ClientBinding,WINBOOL ImpersonateOnReturn,PVOID Reserved1,PLARGE_INTEGER pExpirationTime,LUID Reserved2,DWORD Reserved3,PVOID Reserved4,PVOID *pAuthzClientContext);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcFreeAuthorizationContext(PVOID *pAuthzClientContext);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcSsContextLockExclusive(RPC_BINDING_HANDLE ServerBindingHandle,PVOID UserContext);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcSsContextLockShared(RPC_BINDING_HANDLE ServerBindingHandle,PVOID UserContext);
#define RPC_CALL_ATTRIBUTES_VERSION (1)
#define RPC_QUERY_SERVER_PRINCIPAL_NAME (2)
#define RPC_QUERY_CLIENT_PRINCIPAL_NAME (4)
  typedef struct tagRPC_CALL_ATTRIBUTES_V1_W {
    unsigned int Version;
    unsigned long Flags;
    unsigned long ServerPrincipalNameBufferLength;
    unsigned short *ServerPrincipalName;
    unsigned long ClientPrincipalNameBufferLength;
    unsigned short *ClientPrincipalName;
    unsigned long AuthenticationLevel;
    unsigned long AuthenticationService;
    WINBOOL NullSession;
  } RPC_CALL_ATTRIBUTES_V1_W;
  typedef struct tagRPC_CALL_ATTRIBUTES_V1_A {
    unsigned int Version;
    unsigned long Flags;
    unsigned long ServerPrincipalNameBufferLength;
    unsigned char *ServerPrincipalName;
    unsigned long ClientPrincipalNameBufferLength;
    unsigned char *ClientPrincipalName;
    unsigned long AuthenticationLevel;
    unsigned long AuthenticationService;
    WINBOOL NullSession;
  } RPC_CALL_ATTRIBUTES_V1_A;
#define RPC_CALL_ATTRIBUTES_V1 __MINGW_NAME_UAW(RPC_CALL_ATTRIBUTES_V1)
#define RpcServerInqCallAttributes __MINGW_NAME_AW(RpcServerInqCallAttributes)
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerInqCallAttributesW(RPC_BINDING_HANDLE ClientBinding,void *RpcCallAttributes);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcServerInqCallAttributesA(RPC_BINDING_HANDLE ClientBinding,void *RpcCallAttributes);
  typedef RPC_CALL_ATTRIBUTES_V1_A RPC_CALL_ATTRIBUTES;
  RPC_STATUS __attribute__((__stdcall__)) I_RpcAsyncSetHandle(PRPC_MESSAGE Message,PRPC_ASYNC_STATE pAsync);
  RPC_STATUS __attribute__((__stdcall__)) I_RpcAsyncAbortCall(PRPC_ASYNC_STATE pAsync,unsigned long ExceptionCode);
  int __attribute__((__stdcall__)) I_RpcExceptionFilter(unsigned long ExceptionCode);
typedef union _RPC_ASYNC_NOTIFICATION_INFO {
  struct {
    PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
    HANDLE hThread;
  } APC;
  struct {
    HANDLE hIOPort;
    DWORD dwNumberOfBytesTransferred;
    DWORD_PTR dwCompletionKey;
    LPOVERLAPPED lpOverlapped;
  } IOC;
  struct {
    HWND hWnd;
    UINT Msg;
  } HWND;
  HANDLE hEvent;
  PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
} RPC_ASYNC_NOTIFICATION_INFO, *PRPC_ASYNC_NOTIFICATION_INFO;
RPC_STATUS __attribute__((__stdcall__)) RpcBindingBind(
  PRPC_ASYNC_STATE pAsync,
  RPC_BINDING_HANDLE Binding,
  RPC_IF_HANDLE IfSpec
);
RPC_STATUS __attribute__((__stdcall__)) RpcBindingUnbind(
  RPC_BINDING_HANDLE Binding
);
typedef enum _RpcCallType {
  rctInvalid,
  rctNormal,
  rctTraining,
  rctGuaranteed
} RpcCallType;
typedef enum _RpcLocalAddressFormat {
  rlafInvalid,
  rlafIPv4,
  rlafIPv6
} RpcLocalAddressFormat;
typedef enum _RPC_NOTIFICATIONS {
  RpcNotificationCallNone = 0,
  RpcNotificationClientDisconnect = 1,
  RpcNotificationCallCancel = 2
} RPC_NOTIFICATIONS;
typedef enum _RpcCallClientLocality {
  rcclInvalid,
  rcclLocal,
  rcclRemote,
  rcclClientUnknownLocality
} RpcCallClientLocality;
RPC_STATUS __attribute__((__stdcall__)) RpcServerSubscribeForNotification(
  RPC_BINDING_HANDLE Binding,
  DWORD Notification,
  RPC_NOTIFICATION_TYPES NotificationType,
  RPC_ASYNC_NOTIFICATION_INFO *NotificationInfo
);
RPC_STATUS __attribute__((__stdcall__)) RpcServerUnsubscribeForNotification(
  RPC_BINDING_HANDLE Binding,
  RPC_NOTIFICATIONS Notification,
  unsigned long *NotificationsQueued
);
typedef struct tagRPC_CALL_LOCAL_ADDRESS_V1_A {
  unsigned int Version;
  void *Buffer;
  unsigned long BufferSize;
  RpcLocalAddressFormat AddressFormat;
} RPC_CALL_LOCAL_ADDRESS_V1_A, RPC_CALL_LOCAL_ADDRESS_A;
typedef struct tagRPC_CALL_LOCAL_ADDRESS_V1_W {
  unsigned int Version;
  void *Buffer;
  unsigned long BufferSize;
  RpcLocalAddressFormat AddressFormat;
} RPC_CALL_LOCAL_ADDRESS_V1_W, RPC_CALL_LOCAL_ADDRESS_W;
#define RPC_CALL_LOCAL_ADDRESS_V1 __MINGW_NAME_AW(RPC_CALL_LOCAL_ADDRESS_V1_)
#define RPC_CALL_LOCAL_ADDRESS __MINGW_NAME_AW(RPC_CALL_LOCAL_ADDRESS_)
typedef struct tagRPC_CALL_ATTRIBUTES_V2A {
  unsigned int Version;
  unsigned long Flags;
  unsigned long ServerPrincipalNameBufferLength;
  unsigned short *ServerPrincipalName;
  unsigned long ClientPrincipalNameBufferLength;
  unsigned short *ClientPrincipalName;
  unsigned long AuthenticationLevel;
  unsigned long AuthenticationService;
  WINBOOL NullSession;
  WINBOOL KernelMode;
  unsigned long ProtocolSequence;
  RpcCallClientLocality IsClientLocal;
  HANDLE ClientPID;
  unsigned long CallStatus;
  RpcCallType CallType;
  RPC_CALL_LOCAL_ADDRESS_A *CallLocalAddress;
  unsigned short OpNum;
  UUID InterfaceUuid;
} RPC_CALL_ATTRIBUTES_V2_A, RPC_CALL_ATTRIBUTES_A;
typedef struct tagRPC_CALL_ATTRIBUTES_V2W {
  unsigned int Version;
  unsigned long Flags;
  unsigned long ServerPrincipalNameBufferLength;
  unsigned short *ServerPrincipalName;
  unsigned long ClientPrincipalNameBufferLength;
  unsigned short *ClientPrincipalName;
  unsigned long AuthenticationLevel;
  unsigned long AuthenticationService;
  WINBOOL NullSession;
  WINBOOL KernelMode;
  unsigned long ProtocolSequence;
  RpcCallClientLocality IsClientLocal;
  HANDLE ClientPID;
  unsigned long CallStatus;
  RpcCallType CallType;
  RPC_CALL_LOCAL_ADDRESS_W *CallLocalAddress;
  unsigned short OpNum;
  UUID InterfaceUuid;
} RPC_CALL_ATTRIBUTES_V2_W, RPC_CALL_ATTRIBUTES_W;
#define RPC_CALL_ATTRIBUTES_V2 __MINGW_NAME_AW(RPC_CALL_ATTRIBUTES_V2_)
RPC_STATUS __attribute__((__stdcall__)) RpcDiagnoseError(
  RPC_BINDING_HANDLE BindingHandle,
  RPC_IF_HANDLE IfSpec,
  RPC_STATUS RpcStatus,
  RPC_ERROR_ENUM_HANDLE *EnumHandle,
  ULONG Options,
  HWND ParentWindow
);
#define _INC_SHELLAPI 
#define WINSHELLAPI DECLSPEC_IMPORT
#define SHSTDAPI DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
#define SHSTDAPI_(type) DECLSPEC_IMPORT type STDAPICALLTYPE
#define SHDOCAPI DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
#define SHDOCAPI_(type) DECLSPEC_IMPORT type STDAPICALLTYPE
#pragma pack(push,1)
  struct HDROP__ { int unused; }; typedef struct HDROP__ *HDROP;
#define DragQueryFile __MINGW_NAME_AW(DragQueryFile)
#define ShellExecute __MINGW_NAME_AW(ShellExecute)
#define FindExecutable __MINGW_NAME_AW(FindExecutable)
#define ShellAbout __MINGW_NAME_AW(ShellAbout)
#define ExtractAssociatedIcon __MINGW_NAME_AW(ExtractAssociatedIcon)
#define ExtractAssociatedIconEx __MINGW_NAME_AW(ExtractAssociatedIconEx)
#define ExtractIcon __MINGW_NAME_AW(ExtractIcon)
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) DragQueryFileA (HDROP hDrop, UINT iFile, LPSTR lpszFile, UINT cch);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) DragQueryFileW (HDROP hDrop, UINT iFile, LPWSTR lpszFile, UINT cch);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DragQueryPoint (HDROP hDrop, POINT *ppt);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) DragFinish (HDROP hDrop);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) DragAcceptFiles (HWND hWnd, WINBOOL fAccept);
  __attribute__((dllimport)) HINSTANCE __attribute__((__stdcall__)) ShellExecuteA (HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd);
  __attribute__((dllimport)) HINSTANCE __attribute__((__stdcall__)) ShellExecuteW (HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd);
  __attribute__((dllimport)) HINSTANCE __attribute__((__stdcall__)) FindExecutableA (LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult);
  __attribute__((dllimport)) HINSTANCE __attribute__((__stdcall__)) FindExecutableW (LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) ShellAboutA (HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) ShellAboutW (HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon);
  __attribute__((dllimport)) HICON __attribute__((__stdcall__)) DuplicateIcon (HINSTANCE hInst, HICON hIcon);
  __attribute__((dllimport)) HICON __attribute__((__stdcall__)) ExtractAssociatedIconA (HINSTANCE hInst, LPSTR pszIconPath, WORD *piIcon);
  __attribute__((dllimport)) HICON __attribute__((__stdcall__)) ExtractAssociatedIconW (HINSTANCE hInst, LPWSTR pszIconPath, WORD *piIcon);
  __attribute__((dllimport)) HICON __attribute__((__stdcall__)) ExtractAssociatedIconExA (HINSTANCE hInst, LPSTR pszIconPath, WORD *piIconIndex, WORD *piIconId);
  __attribute__((dllimport)) HICON __attribute__((__stdcall__)) ExtractAssociatedIconExW (HINSTANCE hInst, LPWSTR pszIconPath, WORD *piIconIndex, WORD *piIconId);
  __attribute__((dllimport)) HICON __attribute__((__stdcall__)) ExtractIconA (HINSTANCE hInst, LPCSTR pszExeFileName, UINT nIconIndex);
  __attribute__((dllimport)) HICON __attribute__((__stdcall__)) ExtractIconW (HINSTANCE hInst, LPCWSTR pszExeFileName, UINT nIconIndex);
  typedef struct _DRAGINFOA {
    UINT uSize;
    POINT pt;
    WINBOOL fNC;
    LPSTR lpFileList;
    DWORD grfKeyState;
  } DRAGINFOA,*LPDRAGINFOA;
  typedef struct _DRAGINFOW {
    UINT uSize;
    POINT pt;
    WINBOOL fNC;
    LPWSTR lpFileList;
    DWORD grfKeyState;
  } DRAGINFOW,*LPDRAGINFOW;
  typedef DRAGINFOA DRAGINFO;
  typedef LPDRAGINFOA LPDRAGINFO;
#define ABM_NEW 0x00000000
#define ABM_REMOVE 0x00000001
#define ABM_QUERYPOS 0x00000002
#define ABM_SETPOS 0x00000003
#define ABM_GETSTATE 0x00000004
#define ABM_GETTASKBARPOS 0x00000005
#define ABM_ACTIVATE 0x00000006
#define ABM_GETAUTOHIDEBAR 0x00000007
#define ABM_SETAUTOHIDEBAR 0x00000008
#define ABM_WINDOWPOSCHANGED 0x0000009
#define ABM_SETSTATE 0x0000000a
#define ABN_STATECHANGE 0x0000000
#define ABN_POSCHANGED 0x0000001
#define ABN_FULLSCREENAPP 0x0000002
#define ABN_WINDOWARRANGE 0x0000003
#define ABS_AUTOHIDE 0x0000001
#define ABS_ALWAYSONTOP 0x0000002
#define ABE_LEFT 0
#define ABE_TOP 1
#define ABE_RIGHT 2
#define ABE_BOTTOM 3
  typedef struct _AppBarData {
    DWORD cbSize;
    HWND hWnd;
    UINT uCallbackMessage;
    UINT uEdge;
    RECT rc;
    LPARAM lParam;
  } APPBARDATA,*PAPPBARDATA;
  __attribute__((dllimport)) UINT_PTR __attribute__((__stdcall__)) SHAppBarMessage (DWORD dwMessage, PAPPBARDATA pData);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) DoEnvironmentSubstA (LPSTR pszSrc, UINT cchSrc);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) DoEnvironmentSubstW (LPWSTR pszSrc, UINT cchSrc);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) ExtractIconExA (LPCSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons);
  __attribute__((dllimport)) UINT __attribute__((__stdcall__)) ExtractIconExW (LPCWSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons);
#define DoEnvironmentSubst __MINGW_NAME_AW(DoEnvironmentSubst)
#define ExtractIconEx __MINGW_NAME_AW(ExtractIconEx)
#define EIRESID(x) (-1 * (int)(x))
#define FO_MOVE 0x1
#define FO_COPY 0x2
#define FO_DELETE 0x3
#define FO_RENAME 0x4
#define FOF_MULTIDESTFILES 0x1
#define FOF_CONFIRMMOUSE 0x2
#define FOF_SILENT 0x4
#define FOF_RENAMEONCOLLISION 0x8
#define FOF_NOCONFIRMATION 0x10
#define FOF_WANTMAPPINGHANDLE 0x20
#define FOF_ALLOWUNDO 0x40
#define FOF_FILESONLY 0x80
#define FOF_SIMPLEPROGRESS 0x100
#define FOF_NOCONFIRMMKDIR 0x200
#define FOF_NOERRORUI 0x400
#define FOF_NOCOPYSECURITYATTRIBS 0x800
#define FOF_NORECURSION 0x1000
#define FOF_NO_CONNECTED_ELEMENTS 0x2000
#define FOF_WANTNUKEWARNING 0x4000
#define FOF_NORECURSEREPARSE 0x8000
#define FOF_NO_UI (FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR)
  typedef WORD FILEOP_FLAGS;
#define PO_DELETE 0x0013
#define PO_RENAME 0x0014
#define PO_PORTCHANGE 0x0020
#define PO_REN_PORT 0x0034
  typedef WORD PRINTEROP_FLAGS;
  typedef struct _SHFILEOPSTRUCTA {
    HWND hwnd;
    UINT wFunc;
    LPCSTR pFrom;
    LPCSTR pTo;
    FILEOP_FLAGS fFlags;
    WINBOOL fAnyOperationsAborted;
    LPVOID hNameMappings;
    PCSTR lpszProgressTitle;
  } SHFILEOPSTRUCTA,*LPSHFILEOPSTRUCTA;
  typedef struct _SHFILEOPSTRUCTW {
    HWND hwnd;
    UINT wFunc;
    LPCWSTR pFrom;
    LPCWSTR pTo;
    FILEOP_FLAGS fFlags;
    WINBOOL fAnyOperationsAborted;
    LPVOID hNameMappings;
    PCWSTR lpszProgressTitle;
  } SHFILEOPSTRUCTW,*LPSHFILEOPSTRUCTW;
  typedef SHFILEOPSTRUCTA SHFILEOPSTRUCT;
  typedef LPSHFILEOPSTRUCTA LPSHFILEOPSTRUCT;
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SHFileOperationA (LPSHFILEOPSTRUCTA lpFileOp);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) SHFileOperationW (LPSHFILEOPSTRUCTW lpFileOp);
#define SHFileOperation __MINGW_NAME_AW(SHFileOperation)
  __attribute__((dllimport)) void __attribute__((__stdcall__)) SHFreeNameMappings (HANDLE hNameMappings);
  typedef struct _SHNAMEMAPPINGA {
    LPSTR pszOldPath;
    LPSTR pszNewPath;
    int cchOldPath;
    int cchNewPath;
  } SHNAMEMAPPINGA,*LPSHNAMEMAPPINGA;
  typedef struct _SHNAMEMAPPINGW {
    LPWSTR pszOldPath;
    LPWSTR pszNewPath;
    int cchOldPath;
    int cchNewPath;
  } SHNAMEMAPPINGW,*LPSHNAMEMAPPINGW;
  typedef SHNAMEMAPPINGA SHNAMEMAPPING;
  typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING;
#define SE_ERR_FNF 2
#define SE_ERR_PNF 3
#define SE_ERR_ACCESSDENIED 5
#define SE_ERR_OOM 8
#define SE_ERR_DLLNOTFOUND 32
#define SE_ERR_SHARE 26
#define SE_ERR_ASSOCINCOMPLETE 27
#define SE_ERR_DDETIMEOUT 28
#define SE_ERR_DDEFAIL 29
#define SE_ERR_DDEBUSY 30
#define SE_ERR_NOASSOC 31
#define SEE_MASK_DEFAULT 0x0
#define SEE_MASK_CLASSNAME 0x1
#define SEE_MASK_CLASSKEY 0x3
#define SEE_MASK_IDLIST 0x4
#define SEE_MASK_INVOKEIDLIST 0xc
#define SEE_MASK_HOTKEY 0x20
#define SEE_MASK_NOCLOSEPROCESS 0x40
#define SEE_MASK_CONNECTNETDRV 0x80
#define SEE_MASK_NOASYNC 0x100
#define SEE_MASK_FLAG_DDEWAIT SEE_MASK_NOASYNC
#define SEE_MASK_DOENVSUBST 0x200
#define SEE_MASK_FLAG_NO_UI 0x400
#define SEE_MASK_UNICODE 0x4000
#define SEE_MASK_NO_CONSOLE 0x8000
#define SEE_MASK_ASYNCOK 0x100000
#define SEE_MASK_HMONITOR 0x200000
#define SEE_MASK_NOZONECHECKS 0x800000
#define SEE_MASK_NOQUERYCLASSSTORE 0x1000000
#define SEE_MASK_WAITFORINPUTIDLE 0x2000000
#define SEE_MASK_FLAG_LOG_USAGE 0x4000000
  typedef struct _SHELLEXECUTEINFOA {
    DWORD cbSize;
    ULONG fMask;
    HWND hwnd;
    LPCSTR lpVerb;
    LPCSTR lpFile;
    LPCSTR lpParameters;
    LPCSTR lpDirectory;
    int nShow;
    HINSTANCE hInstApp;
    void *lpIDList;
    LPCSTR lpClass;
    HKEY hkeyClass;
    DWORD dwHotKey;
    __extension__ union {
      HANDLE hIcon;
      HANDLE hMonitor;
    } ;
    HANDLE hProcess;
  } SHELLEXECUTEINFOA,*LPSHELLEXECUTEINFOA;
  typedef struct _SHELLEXECUTEINFOW {
    DWORD cbSize;
    ULONG fMask;
    HWND hwnd;
    LPCWSTR lpVerb;
    LPCWSTR lpFile;
    LPCWSTR lpParameters;
    LPCWSTR lpDirectory;
    int nShow;
    HINSTANCE hInstApp;
    void *lpIDList;
    LPCWSTR lpClass;
    HKEY hkeyClass;
    DWORD dwHotKey;
    __extension__ union {
      HANDLE hIcon;
      HANDLE hMonitor;
    } ;
    HANDLE hProcess;
  } SHELLEXECUTEINFOW,*LPSHELLEXECUTEINFOW;
  typedef SHELLEXECUTEINFOA SHELLEXECUTEINFO;
  typedef LPSHELLEXECUTEINFOA LPSHELLEXECUTEINFO;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ShellExecuteExA (SHELLEXECUTEINFOA *pExecInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ShellExecuteExW (SHELLEXECUTEINFOW *pExecInfo);
#define ShellExecuteEx __MINGW_NAME_AW(ShellExecuteEx)
  typedef struct _SHCREATEPROCESSINFOW {
    DWORD cbSize;
    ULONG fMask;
    HWND hwnd;
    LPCWSTR pszFile;
    LPCWSTR pszParameters;
    LPCWSTR pszCurrentDirectory;
    HANDLE hUserToken;
    LPSECURITY_ATTRIBUTES lpProcessAttributes;
    LPSECURITY_ATTRIBUTES lpThreadAttributes;
    WINBOOL bInheritHandles;
    DWORD dwCreationFlags;
    LPSTARTUPINFOW lpStartupInfo;
    LPPROCESS_INFORMATION lpProcessInformation;
  } SHCREATEPROCESSINFOW,*PSHCREATEPROCESSINFOW;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SHCreateProcessAsUserW (PSHCREATEPROCESSINFOW pscpi);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SHEvaluateSystemCommandTemplate (PCWSTR pszCmdTemplate, PWSTR *ppszApplication, PWSTR *ppszCommandLine, PWSTR *ppszParameters);
  typedef enum ASSOCCLASS {
    ASSOCCLASS_SHELL_KEY = 0,
    ASSOCCLASS_PROGID_KEY,
    ASSOCCLASS_PROGID_STR,
    ASSOCCLASS_CLSID_KEY,
    ASSOCCLASS_CLSID_STR,
    ASSOCCLASS_APP_KEY,
    ASSOCCLASS_APP_STR,
    ASSOCCLASS_SYSTEM_STR,
    ASSOCCLASS_FOLDER,
    ASSOCCLASS_STAR,
  } ASSOCCLASS;
  typedef struct ASSOCIATIONELEMENT {
    ASSOCCLASS ac;
    HKEY hkClass;
    PCWSTR pszClass;
  } ASSOCIATIONELEMENT;
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) AssocCreateForClasses (const ASSOCIATIONELEMENT *rgClasses, ULONG cClasses, const IID *const riid, void **ppv);
  typedef struct _SHQUERYRBINFO {
    DWORD cbSize;
    __extension__ long long i64Size;
    __extension__ long long i64NumItems;
  } SHQUERYRBINFO,*LPSHQUERYRBINFO;
#define SHERB_NOCONFIRMATION 0x00000001
#define SHERB_NOPROGRESSUI 0x00000002
#define SHERB_NOSOUND 0x00000004
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SHQueryRecycleBinA (LPCSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SHQueryRecycleBinW (LPCWSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo);
#define SHQueryRecycleBin __MINGW_NAME_AW(SHQueryRecycleBin)
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SHEmptyRecycleBinA (HWND hwnd, LPCSTR pszRootPath, DWORD dwFlags);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SHEmptyRecycleBinW (HWND hwnd, LPCWSTR pszRootPath, DWORD dwFlags);
#define SHEmptyRecycleBin __MINGW_NAME_AW(SHEmptyRecycleBin)
  typedef enum {
    QUNS_NOT_PRESENT = 1,
    QUNS_BUSY = 2,
    QUNS_RUNNING_D3D_FULL_SCREEN = 3,
    QUNS_PRESENTATION_MODE = 4,
    QUNS_ACCEPTS_NOTIFICATIONS = 5
  } QUERY_USER_NOTIFICATION_STATE;
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SHQueryUserNotificationState (QUERY_USER_NOTIFICATION_STATE *pquns);
  typedef struct _NOTIFYICONDATAA {
    DWORD cbSize;
    HWND hWnd;
    UINT uID;
    UINT uFlags;
    UINT uCallbackMessage;
    HICON hIcon;
    CHAR szTip[128];
    DWORD dwState;
    DWORD dwStateMask;
    CHAR szInfo[256];
    __extension__ union {
      UINT uTimeout;
      UINT uVersion;
    } ;
    CHAR szInfoTitle[64];
    DWORD dwInfoFlags;
    GUID guidItem;
    HICON hBalloonIcon;
  } NOTIFYICONDATAA,*PNOTIFYICONDATAA;
  typedef struct _NOTIFYICONDATAW {
    DWORD cbSize;
    HWND hWnd;
    UINT uID;
    UINT uFlags;
    UINT uCallbackMessage;
    HICON hIcon;
    WCHAR szTip[128];
    DWORD dwState;
    DWORD dwStateMask;
    WCHAR szInfo[256];
    __extension__ union {
      UINT uTimeout;
      UINT uVersion;
    } ;
    WCHAR szInfoTitle[64];
    DWORD dwInfoFlags;
    GUID guidItem;
    HICON hBalloonIcon;
  } NOTIFYICONDATAW,*PNOTIFYICONDATAW;
  typedef NOTIFYICONDATAA NOTIFYICONDATA;
  typedef PNOTIFYICONDATAA PNOTIFYICONDATA;
#define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET (NOTIFYICONDATAA, szTip[64])
#define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET (NOTIFYICONDATAW, szTip[64])
#define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET (NOTIFYICONDATAA, guidItem)
#define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET (NOTIFYICONDATAW, guidItem)
#define NOTIFYICONDATAA_V3_SIZE FIELD_OFFSET (NOTIFYICONDATAA, hBalloonIcon)
#define NOTIFYICONDATAW_V3_SIZE FIELD_OFFSET (NOTIFYICONDATAW, hBalloonIcon)
#define NOTIFYICONDATA_V1_SIZE __MINGW_NAME_AW_EXT(NOTIFYICONDATA,_V1_SIZE)
#define NOTIFYICONDATA_V2_SIZE __MINGW_NAME_AW_EXT(NOTIFYICONDATA,_V2_SIZE)
#define NOTIFYICONDATA_V3_SIZE __MINGW_NAME_AW_EXT(NOTIFYICONDATA,_V3_SIZE)
#define NIN_SELECT (WM_USER + 0)
#define NINF_KEY 0x1
#define NIN_KEYSELECT (NIN_SELECT | NINF_KEY)
#define NIN_BALLOONSHOW (WM_USER + 2)
#define NIN_BALLOONHIDE (WM_USER + 3)
#define NIN_BALLOONTIMEOUT (WM_USER + 4)
#define NIN_BALLOONUSERCLICK (WM_USER + 5)
#define NIN_POPUPOPEN (WM_USER + 6)
#define NIN_POPUPCLOSE (WM_USER + 7)
#define NIM_ADD 0x00000000
#define NIM_MODIFY 0x00000001
#define NIM_DELETE 0x00000002
#define NIM_SETFOCUS 0x00000003
#define NIM_SETVERSION 0x00000004
#define NOTIFYICON_VERSION 3
#define NOTIFYICON_VERSION_4 4
#define NIF_MESSAGE 0x00000001
#define NIF_ICON 0x00000002
#define NIF_TIP 0x00000004
#define NIF_STATE 0x00000008
#define NIF_INFO 0x00000010
#define NIF_GUID 0x00000020
#define NIF_REALTIME 0x00000040
#define NIF_SHOWTIP 0x00000080
#define NIS_HIDDEN 0x00000001
#define NIS_SHAREDICON 0x00000002
#define NIIF_NONE 0x00000000
#define NIIF_INFO 0x00000001
#define NIIF_WARNING 0x00000002
#define NIIF_ERROR 0x00000003
#define NIIF_USER 0x00000004
#define NIIF_ICON_MASK 0x0000000f
#define NIIF_NOSOUND 0x00000010
#define NIIF_LARGE_ICON 0x00000020
  typedef struct _NOTIFYICONIDENTIFIER {
    DWORD cbSize;
    HWND hWnd;
    UINT uID;
    GUID guidItem;
  } NOTIFYICONIDENTIFIER,*PNOTIFYICONIDENTIFIER;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Shell_NotifyIconA (DWORD dwMessage, PNOTIFYICONDATAA lpData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) Shell_NotifyIconW (DWORD dwMessage, PNOTIFYICONDATAW lpData);
#define Shell_NotifyIcon __MINGW_NAME_AW(Shell_NotifyIcon)
#define SHFILEINFO_DEFINED 
  typedef struct _SHFILEINFOA {
    HICON hIcon;
    int iIcon;
    DWORD dwAttributes;
    CHAR szDisplayName[260];
    CHAR szTypeName[80];
  } SHFILEINFOA;
  typedef struct _SHFILEINFOW {
    HICON hIcon;
    int iIcon;
    DWORD dwAttributes;
    WCHAR szDisplayName[260];
    WCHAR szTypeName[80];
  } SHFILEINFOW;
  typedef SHFILEINFOA SHFILEINFO;
#define SHGFI_ICON 0x000000100
#define SHGFI_DISPLAYNAME 0x000000200
#define SHGFI_TYPENAME 0x000000400
#define SHGFI_ATTRIBUTES 0x000000800
#define SHGFI_ICONLOCATION 0x000001000
#define SHGFI_EXETYPE 0x000002000
#define SHGFI_SYSICONINDEX 0x000004000
#define SHGFI_LINKOVERLAY 0x000008000
#define SHGFI_SELECTED 0x000010000
#define SHGFI_ATTR_SPECIFIED 0x000020000
#define SHGFI_LARGEICON 0x000000000
#define SHGFI_SMALLICON 0x000000001
#define SHGFI_OPENICON 0x000000002
#define SHGFI_SHELLICONSIZE 0x000000004
#define SHGFI_PIDL 0x000000008
#define SHGFI_USEFILEATTRIBUTES 0x000000010
#define SHGFI_ADDOVERLAYS 0x000000020
#define SHGFI_OVERLAYINDEX 0x000000040
  __attribute__((dllimport)) DWORD_PTR __attribute__((__stdcall__)) SHGetFileInfoA (LPCSTR pszPath, DWORD dwFileAttributes, SHFILEINFOA *psfi, UINT cbFileInfo, UINT uFlags);
  __attribute__((dllimport)) DWORD_PTR __attribute__((__stdcall__)) SHGetFileInfoW (LPCWSTR pszPath, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT cbFileInfo, UINT uFlags);
#define SHGetFileInfo __MINGW_NAME_AW(SHGetFileInfo)
  typedef struct _SHSTOCKICONINFO {
    DWORD cbSize;
    HICON hIcon;
    int iSysImageIndex;
    int iIcon;
    WCHAR szPath[260];
  } SHSTOCKICONINFO;
#define SHGSI_ICONLOCATION 0
#define SHGSI_ICON SHGFI_ICON
#define SHGSI_SYSICONINDEX SHGFI_SYSICONINDEX
#define SHGSI_LINKOVERLAY SHGFI_LINKOVERLAY
#define SHGSI_SELECTED SHGFI_SELECTED
#define SHGSI_LARGEICON SHGFI_LARGEICON
#define SHGSI_SMALLICON SHGFI_SMALLICON
#define SHGSI_SHELLICONSIZE SHGFI_SHELLICONSIZE
  typedef enum SHSTOCKICONID {
    SIID_DOCNOASSOC = 0,
    SIID_DOCASSOC = 1,
    SIID_APPLICATION = 2,
    SIID_FOLDER = 3,
    SIID_FOLDEROPEN = 4,
    SIID_DRIVE525 = 5,
    SIID_DRIVE35 = 6,
    SIID_DRIVEREMOVE = 7,
    SIID_DRIVEFIXED = 8,
    SIID_DRIVENET = 9,
    SIID_DRIVENETDISABLED = 10,
    SIID_DRIVECD = 11,
    SIID_DRIVERAM = 12,
    SIID_WORLD = 13,
    SIID_SERVER = 15,
    SIID_PRINTER = 16,
    SIID_MYNETWORK = 17,
    SIID_FIND = 22,
    SIID_HELP = 23,
    SIID_SHARE = 28,
    SIID_LINK = 29,
    SIID_SLOWFILE = 30,
    SIID_RECYCLER = 31,
    SIID_RECYCLERFULL = 32,
    SIID_MEDIACDAUDIO = 40,
    SIID_LOCK = 47,
    SIID_AUTOLIST = 49,
    SIID_PRINTERNET = 50,
    SIID_SERVERSHARE = 51,
    SIID_PRINTERFAX = 52,
    SIID_PRINTERFAXNET = 53,
    SIID_PRINTERFILE = 54,
    SIID_STACK = 55,
    SIID_MEDIASVCD = 56,
    SIID_STUFFEDFOLDER = 57,
    SIID_DRIVEUNKNOWN = 58,
    SIID_DRIVEDVD = 59,
    SIID_MEDIADVD = 60,
    SIID_MEDIADVDRAM = 61,
    SIID_MEDIADVDRW = 62,
    SIID_MEDIADVDR = 63,
    SIID_MEDIADVDROM = 64,
    SIID_MEDIACDAUDIOPLUS = 65,
    SIID_MEDIACDRW = 66,
    SIID_MEDIACDR = 67,
    SIID_MEDIACDBURN = 68,
    SIID_MEDIABLANKCD = 69,
    SIID_MEDIACDROM = 70,
    SIID_AUDIOFILES = 71,
    SIID_IMAGEFILES = 72,
    SIID_VIDEOFILES = 73,
    SIID_MIXEDFILES = 74,
    SIID_FOLDERBACK = 75,
    SIID_FOLDERFRONT = 76,
    SIID_SHIELD = 77,
    SIID_WARNING = 78,
    SIID_INFO = 79,
    SIID_ERROR = 80,
    SIID_KEY = 81,
    SIID_SOFTWARE = 82,
    SIID_RENAME = 83,
    SIID_DELETE = 84,
    SIID_MEDIAAUDIODVD = 85,
    SIID_MEDIAMOVIEDVD = 86,
    SIID_MEDIAENHANCEDCD = 87,
    SIID_MEDIAENHANCEDDVD = 88,
    SIID_MEDIAHDDVD = 89,
    SIID_MEDIABLURAY = 90,
    SIID_MEDIAVCD = 91,
    SIID_MEDIADVDPLUSR = 92,
    SIID_MEDIADVDPLUSRW = 93,
    SIID_DESKTOPPC = 94,
    SIID_MOBILEPC = 95,
    SIID_USERS = 96,
    SIID_MEDIASMARTMEDIA = 97,
    SIID_MEDIACOMPACTFLASH = 98,
    SIID_DEVICECELLPHONE = 99,
    SIID_DEVICECAMERA = 100,
    SIID_DEVICEVIDEOCAMERA = 101,
    SIID_DEVICEAUDIOPLAYER = 102,
    SIID_NETWORKCONNECT = 103,
    SIID_INTERNET = 104,
    SIID_ZIPFILE = 105,
    SIID_SETTINGS = 106,
    SIID_DRIVEHDDVD = 132,
    SIID_DRIVEBD = 133,
    SIID_MEDIAHDDVDROM = 134,
    SIID_MEDIAHDDVDR = 135,
    SIID_MEDIAHDDVDRAM = 136,
    SIID_MEDIABDROM = 137,
    SIID_MEDIABDR = 138,
    SIID_MEDIABDRE = 139,
    SIID_CLUSTEREDDRIVE = 140,
    SIID_MAX_ICONS = 175
  } SHSTOCKICONID;
#define SIID_INVALID ((SHSTOCKICONID)-1)
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SHGetStockIconInfo (SHSTOCKICONID siid, UINT uFlags, SHSTOCKICONINFO *psii);
#define SHGetDiskFreeSpace SHGetDiskFreeSpaceEx
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SHGetDiskFreeSpaceExA (LPCSTR pszDirectoryName, ULARGE_INTEGER *pulFreeBytesAvailableToCaller, ULARGE_INTEGER *pulTotalNumberOfBytes, ULARGE_INTEGER *pulTotalNumberOfFreeBytes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SHGetDiskFreeSpaceExW (LPCWSTR pszDirectoryName, ULARGE_INTEGER *pulFreeBytesAvailableToCaller, ULARGE_INTEGER *pulTotalNumberOfBytes, ULARGE_INTEGER *pulTotalNumberOfFreeBytes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SHGetNewLinkInfoA (LPCSTR pszLinkTo, LPCSTR pszDir, LPSTR pszName, WINBOOL *pfMustCopy, UINT uFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SHGetNewLinkInfoW (LPCWSTR pszLinkTo, LPCWSTR pszDir, LPWSTR pszName, WINBOOL *pfMustCopy, UINT uFlags);
#define SHGetDiskFreeSpaceEx __MINGW_NAME_AW(SHGetDiskFreeSpaceEx)
#define SHGetNewLinkInfo __MINGW_NAME_AW(SHGetNewLinkInfo)
#define SHGNLI_PIDL 0x000000001
#define SHGNLI_PREFIXNAME 0x000000002
#define SHGNLI_NOUNIQUE 0x000000004
#define SHGNLI_NOLNK 0x000000008
#define SHGNLI_NOLOCNAME 0x000000010
#define PRINTACTION_OPEN 0
#define PRINTACTION_PROPERTIES 1
#define PRINTACTION_NETINSTALL 2
#define PRINTACTION_NETINSTALLLINK 3
#define PRINTACTION_TESTPAGE 4
#define PRINTACTION_OPENNETPRN 5
#define PRINTACTION_DOCUMENTDEFAULTS 6
#define PRINTACTION_SERVERPROPERTIES 7
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SHInvokePrinterCommandA (HWND hwnd, UINT uAction, LPCSTR lpBuf1, LPCSTR lpBuf2, WINBOOL fModal);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SHInvokePrinterCommandW (HWND hwnd, UINT uAction, LPCWSTR lpBuf1, LPCWSTR lpBuf2, WINBOOL fModal);
#define SHInvokePrinterCommand __MINGW_NAME_AW(SHInvokePrinterCommand)
  typedef struct _OPEN_PRINTER_PROPS_INFOA {
    DWORD dwSize;
    LPSTR pszSheetName;
    UINT uSheetIndex;
    DWORD dwFlags;
    WINBOOL bModal;
  } OPEN_PRINTER_PROPS_INFOA,*POPEN_PRINTER_PROPS_INFOA;
  typedef struct _OPEN_PRINTER_PROPS_INFOW {
    DWORD dwSize;
    LPWSTR pszSheetName;
    UINT uSheetIndex;
    DWORD dwFlags;
    WINBOOL bModal;
  } OPEN_PRINTER_PROPS_INFOW,*POPEN_PRINTER_PROPS_INFOW;
  typedef OPEN_PRINTER_PROPS_INFOA OPEN_PRINTER_PROPS_INFO;
  typedef POPEN_PRINTER_PROPS_INFOA POPEN_PRINTER_PROPS_INFO;
#define PRINT_PROP_FORCE_NAME 0x01
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SHLoadNonloadedIconOverlayIdentifiers (void);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SHIsFileAvailableOffline (PCWSTR pwszPath, DWORD *pdwStatus);
#define OFFLINE_STATUS_LOCAL 0x0001
#define OFFLINE_STATUS_REMOTE 0x0002
#define OFFLINE_STATUS_INCOMPLETE 0x0004
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SHSetLocalizedName (PCWSTR pszPath, PCWSTR pszResModule, int idsRes);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SHRemoveLocalizedName (PCWSTR pszPath);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SHGetLocalizedName (PCWSTR pszPath, PWSTR pszResModule, UINT cch, int *pidsRes);
#define LWSTDAPIV_(type) EXTERN_C DECLSPEC_IMPORT type STDAPIVCALLTYPE
  extern __attribute__((dllimport)) int __attribute__((__cdecl__)) ShellMessageBoxA (HINSTANCE hAppInst, HWND hWnd, LPCSTR lpcText, LPCSTR lpcTitle, UINT fuStyle,...);
  extern __attribute__((dllimport)) int __attribute__((__cdecl__)) ShellMessageBoxW (HINSTANCE hAppInst, HWND hWnd, LPCWSTR lpcText, LPCWSTR lpcTitle, UINT fuStyle,...);
#define ShellMessageBox __MINGW_NAME_AW(ShellMessageBox)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsLFNDriveA (LPCSTR pszPath);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsLFNDriveW (LPCWSTR pszPath);
#define IsLFNDrive __MINGW_NAME_AW(IsLFNDrive)
  extern HRESULT __attribute__((__stdcall__)) SHEnumerateUnreadMailAccountsA (HKEY hKeyUser, DWORD dwIndex, LPSTR pszMailAddress, int cchMailAddress);
  extern HRESULT __attribute__((__stdcall__)) SHEnumerateUnreadMailAccountsW (HKEY hKeyUser, DWORD dwIndex, LPWSTR pszMailAddress, int cchMailAddress);
  extern HRESULT __attribute__((__stdcall__)) SHGetUnreadMailCountA (HKEY hKeyUser, LPCSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPSTR pszShellExecuteCommand, int cchShellExecuteCommand);
  extern HRESULT __attribute__((__stdcall__)) SHGetUnreadMailCountW (HKEY hKeyUser, LPCWSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPWSTR pszShellExecuteCommand, int cchShellExecuteCommand);
  extern HRESULT __attribute__((__stdcall__)) SHSetUnreadMailCountA (LPCSTR pszMailAddress, DWORD dwCount, LPCSTR pszShellExecuteCommand);
  extern HRESULT __attribute__((__stdcall__)) SHSetUnreadMailCountW (LPCWSTR pszMailAddress, DWORD dwCount, LPCWSTR pszShellExecuteCommand);
#define SHEnumerateUnreadMailAccounts __MINGW_NAME_AW(SHEnumerateUnreadMailAccounts)
#define SHGetUnreadMailCount __MINGW_NAME_AW(SHGetUnreadMailCount)
#define SHSetUnreadMailCount __MINGW_NAME_AW(SHSetUnreadMailCount)
  extern WINBOOL __attribute__((__stdcall__)) SHTestTokenMembership (HANDLE hToken, ULONG ulRID);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SHGetImageList (int iImageList, const IID *const riid, void **ppvObj);
#define SHIL_LARGE 0
#define SHIL_SMALL 1
#define SHIL_EXTRALARGE 2
#define SHIL_SYSSMALL 3
#define SHIL_JUMBO 4
#define SHIL_LAST SHIL_JUMBO
  typedef HRESULT (__attribute__((__stdcall__)) *PFNCANSHAREFOLDERW) (PCWSTR pszPath);
  typedef HRESULT (__attribute__((__stdcall__)) *PFNSHOWSHAREFOLDERUIW) (HWND hwndParent, PCWSTR pszPath);
  __attribute__((dllimport)) LPWSTR * __attribute__((__stdcall__)) CommandLineToArgvW (LPCWSTR lpCmdLine, int *pNumArgs);
#pragma pack(pop)
#define WC_NETADDRESS L"msctls_netaddress"
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) InitNetworkAddressControl (void);
#define NCM_GETADDRESS (WM_USER+1)
#define NetAddr_GetAddress(hwnd,pv) (HRESULT)SNDMSG (hwnd, NCM_GETADDRESS, 0,(LPARAM)pv)
typedef struct tagNC_ADDRESS {
  struct NET_ADDRESS_INFO_ *pAddrInfo;
  USHORT PortNumber;
  BYTE PrefixLength;
} NC_ADDRESS,*PNC_ADDRESS;
#define NCM_SETALLOWTYPE (WM_USER+2)
#define NetAddr_SetAllowType(hwnd,addrMask) (HRESULT)SNDMSG (hwnd, NCM_SETALLOWTYPE,(WPARAM)addrMask, 0)
#define NCM_GETALLOWTYPE (WM_USER+3)
#define NetAddr_GetAllowType(hwnd) (DWORD)SNDMSG (hwnd, NCM_GETALLOWTYPE, 0, 0)
#define NCM_DISPLAYERRORTIP (WM_USER+4)
#define NetAddr_DisplayErrorTip(hwnd) (HRESULT)SNDMSG (hwnd, NCM_DISPLAYERRORTIP, 0, 0)
extern HRESULT __attribute__((__stdcall__)) SHGetDriveMedia (PCWSTR pszDrive, DWORD *pdwMediaContent);
#define _WINPERF_ 
#pragma pack(push,8)
#define PERF_DATA_VERSION 1
#define PERF_DATA_REVISION 1
typedef struct _PERF_DATA_BLOCK {
  WCHAR Signature[4];
  DWORD LittleEndian;
  DWORD Version;
  DWORD Revision;
  DWORD TotalByteLength;
  DWORD HeaderLength;
  DWORD NumObjectTypes;
  LONG DefaultObject;
  SYSTEMTIME SystemTime;
  LARGE_INTEGER PerfTime;
  LARGE_INTEGER PerfFreq;
  LARGE_INTEGER PerfTime100nSec;
  DWORD SystemNameLength;
  DWORD SystemNameOffset;
} PERF_DATA_BLOCK,*PPERF_DATA_BLOCK;
typedef struct _PERF_OBJECT_TYPE {
  DWORD TotalByteLength;
  DWORD DefinitionLength;
  DWORD HeaderLength;
  DWORD ObjectNameTitleIndex;
  LPWSTR ObjectNameTitle;
  DWORD ObjectHelpTitleIndex;
  LPWSTR ObjectHelpTitle;
  DWORD DetailLevel;
  DWORD NumCounters;
  LONG DefaultCounter;
  LONG NumInstances;
  DWORD CodePage;
  LARGE_INTEGER PerfTime;
  LARGE_INTEGER PerfFreq;
} PERF_OBJECT_TYPE,*PPERF_OBJECT_TYPE;
#define PERF_NO_INSTANCES -1
#define PERF_SIZE_DWORD 0x00000000
#define PERF_SIZE_LARGE 0x00000100
#define PERF_SIZE_ZERO 0x00000200
#define PERF_SIZE_VARIABLE_LEN 0x00000300
#define PERF_TYPE_NUMBER 0x00000000
#define PERF_TYPE_COUNTER 0x00000400
#define PERF_TYPE_TEXT 0x00000800
#define PERF_TYPE_ZERO 0x00000C00
#define PERF_NUMBER_HEX 0x00000000
#define PERF_NUMBER_DECIMAL 0x00010000
#define PERF_NUMBER_DEC_1000 0x00020000
#define PERF_COUNTER_VALUE 0x00000000
#define PERF_COUNTER_RATE 0x00010000
#define PERF_COUNTER_FRACTION 0x00020000
#define PERF_COUNTER_BASE 0x00030000
#define PERF_COUNTER_ELAPSED 0x00040000
#define PERF_COUNTER_QUEUELEN 0x00050000
#define PERF_COUNTER_HISTOGRAM 0x00060000
#define PERF_COUNTER_PRECISION 0x00070000
#define PERF_TEXT_UNICODE 0x00000000
#define PERF_TEXT_ASCII 0x00010000
#define PERF_TIMER_TICK 0x00000000
#define PERF_TIMER_100NS 0x00100000
#define PERF_OBJECT_TIMER 0x00200000
#define PERF_DELTA_COUNTER 0x00400000
#define PERF_DELTA_BASE 0x00800000
#define PERF_INVERSE_COUNTER 0x01000000
#define PERF_MULTI_COUNTER 0x02000000
#define PERF_DISPLAY_NO_SUFFIX 0x00000000
#define PERF_DISPLAY_PER_SEC 0x10000000
#define PERF_DISPLAY_PERCENT 0x20000000
#define PERF_DISPLAY_SECONDS 0x30000000
#define PERF_DISPLAY_NOSHOW 0x40000000
#define PERF_COUNTER_COUNTER (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_PER_SEC)
#define PERF_COUNTER_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_PERCENT)
#define PERF_COUNTER_QUEUELEN_TYPE (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_QUEUELEN | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX)
#define PERF_COUNTER_LARGE_QUEUELEN_TYPE (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_QUEUELEN | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX)
#define PERF_COUNTER_100NS_QUEUELEN_TYPE (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_QUEUELEN | PERF_TIMER_100NS | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX)
#define PERF_COUNTER_OBJ_TIME_QUEUELEN_TYPE (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_QUEUELEN | PERF_OBJECT_TIMER | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX)
#define PERF_COUNTER_BULK_COUNT (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_PER_SEC)
#define PERF_COUNTER_TEXT (PERF_SIZE_VARIABLE_LEN | PERF_TYPE_TEXT | PERF_TEXT_UNICODE | PERF_DISPLAY_NO_SUFFIX)
#define PERF_COUNTER_RAWCOUNT (PERF_SIZE_DWORD | PERF_TYPE_NUMBER | PERF_NUMBER_DECIMAL | PERF_DISPLAY_NO_SUFFIX)
#define PERF_COUNTER_LARGE_RAWCOUNT (PERF_SIZE_LARGE | PERF_TYPE_NUMBER | PERF_NUMBER_DECIMAL | PERF_DISPLAY_NO_SUFFIX)
#define PERF_COUNTER_RAWCOUNT_HEX (PERF_SIZE_DWORD | PERF_TYPE_NUMBER | PERF_NUMBER_HEX | PERF_DISPLAY_NO_SUFFIX)
#define PERF_COUNTER_LARGE_RAWCOUNT_HEX (PERF_SIZE_LARGE | PERF_TYPE_NUMBER | PERF_NUMBER_HEX | PERF_DISPLAY_NO_SUFFIX)
#define PERF_SAMPLE_FRACTION (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_FRACTION | PERF_DELTA_COUNTER | PERF_DELTA_BASE | PERF_DISPLAY_PERCENT)
#define PERF_SAMPLE_COUNTER (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX)
#define PERF_COUNTER_NODATA (PERF_SIZE_ZERO | PERF_DISPLAY_NOSHOW)
#define PERF_COUNTER_TIMER_INV (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_INVERSE_COUNTER | PERF_DISPLAY_PERCENT)
#define PERF_SAMPLE_BASE (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_BASE | PERF_DISPLAY_NOSHOW | 0x00000001)
#define PERF_AVERAGE_TIMER (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_FRACTION | PERF_DISPLAY_SECONDS)
#define PERF_AVERAGE_BASE (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_BASE | PERF_DISPLAY_NOSHOW | 0x00000002)
#define PERF_AVERAGE_BULK (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_FRACTION | PERF_DISPLAY_NOSHOW)
#define PERF_OBJ_TIME_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_OBJECT_TIMER | PERF_DELTA_COUNTER | PERF_DISPLAY_PERCENT)
#define PERF_100NSEC_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_100NS | PERF_DELTA_COUNTER | PERF_DISPLAY_PERCENT)
#define PERF_100NSEC_TIMER_INV (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_100NS | PERF_DELTA_COUNTER | PERF_INVERSE_COUNTER | PERF_DISPLAY_PERCENT)
#define PERF_COUNTER_MULTI_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_DELTA_COUNTER | PERF_TIMER_TICK | PERF_MULTI_COUNTER | PERF_DISPLAY_PERCENT)
#define PERF_COUNTER_MULTI_TIMER_INV (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_RATE | PERF_DELTA_COUNTER | PERF_MULTI_COUNTER | PERF_TIMER_TICK | PERF_INVERSE_COUNTER | PERF_DISPLAY_PERCENT)
#define PERF_COUNTER_MULTI_BASE (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_BASE | PERF_MULTI_COUNTER | PERF_DISPLAY_NOSHOW)
#define PERF_100NSEC_MULTI_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_DELTA_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_100NS | PERF_MULTI_COUNTER | PERF_DISPLAY_PERCENT)
#define PERF_100NSEC_MULTI_TIMER_INV (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_DELTA_COUNTER | PERF_COUNTER_RATE | PERF_TIMER_100NS | PERF_MULTI_COUNTER | PERF_INVERSE_COUNTER | PERF_DISPLAY_PERCENT)
#define PERF_RAW_FRACTION (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_FRACTION | PERF_DISPLAY_PERCENT)
#define PERF_LARGE_RAW_FRACTION (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_FRACTION | PERF_DISPLAY_PERCENT)
#define PERF_RAW_BASE (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_BASE | PERF_DISPLAY_NOSHOW | 0x00000003)
#define PERF_LARGE_RAW_BASE (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_BASE | PERF_DISPLAY_NOSHOW)
#define PERF_ELAPSED_TIME (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_ELAPSED | PERF_OBJECT_TIMER | PERF_DISPLAY_SECONDS)
#define PERF_COUNTER_HISTOGRAM_TYPE 0x80000000
#define PERF_COUNTER_DELTA (PERF_SIZE_DWORD | PERF_TYPE_COUNTER | PERF_COUNTER_VALUE | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX)
#define PERF_COUNTER_LARGE_DELTA (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_VALUE | PERF_DELTA_COUNTER | PERF_DISPLAY_NO_SUFFIX)
#define PERF_PRECISION_SYSTEM_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_PRECISION | PERF_TIMER_TICK | PERF_DELTA_COUNTER | PERF_DISPLAY_PERCENT)
#define PERF_PRECISION_100NS_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_PRECISION | PERF_TIMER_100NS | PERF_DELTA_COUNTER | PERF_DISPLAY_PERCENT)
#define PERF_PRECISION_OBJECT_TIMER (PERF_SIZE_LARGE | PERF_TYPE_COUNTER | PERF_COUNTER_PRECISION | PERF_OBJECT_TIMER | PERF_DELTA_COUNTER | PERF_DISPLAY_PERCENT)
#define PERF_PRECISION_TIMESTAMP PERF_LARGE_RAW_BASE
#define PERF_DETAIL_NOVICE 100
#define PERF_DETAIL_ADVANCED 200
#define PERF_DETAIL_EXPERT 300
#define PERF_DETAIL_WIZARD 400
typedef struct _PERF_COUNTER_DEFINITION {
  DWORD ByteLength;
  DWORD CounterNameTitleIndex;
  LPWSTR CounterNameTitle;
  DWORD CounterHelpTitleIndex;
  LPWSTR CounterHelpTitle;
  LONG DefaultScale;
  DWORD DetailLevel;
  DWORD CounterType;
  DWORD CounterSize;
  DWORD CounterOffset;
} PERF_COUNTER_DEFINITION,*PPERF_COUNTER_DEFINITION;
#define PERF_NO_UNIQUE_ID -1
typedef struct _PERF_INSTANCE_DEFINITION {
  DWORD ByteLength;
  DWORD ParentObjectTitleIndex;
  DWORD ParentObjectInstance;
  LONG UniqueID;
  DWORD NameOffset;
  DWORD NameLength;
} PERF_INSTANCE_DEFINITION,*PPERF_INSTANCE_DEFINITION;
typedef struct _PERF_COUNTER_BLOCK {
  DWORD ByteLength;
} PERF_COUNTER_BLOCK,*PPERF_COUNTER_BLOCK;
#define PERF_QUERY_OBJECTS ((LONG)0x80000000)
#define PERF_QUERY_GLOBAL ((LONG)0x80000001)
#define PERF_QUERY_COSTLY ((LONG)0x80000002)
typedef DWORD (__attribute__((__stdcall__)) PM_OPEN_PROC)(LPWSTR);
typedef DWORD (__attribute__((__stdcall__)) PM_COLLECT_PROC)(LPWSTR,LPVOID *,LPDWORD,LPDWORD);
typedef DWORD (__attribute__((__stdcall__)) PM_CLOSE_PROC)(void);
typedef DWORD (__attribute__((__stdcall__)) PM_QUERY_PROC)(LPDWORD,LPVOID *,LPDWORD,LPDWORD);
#define MAX_PERF_OBJECTS_IN_QUERY_FUNCTION (__MSABI_LONG(64))
#define WINPERF_LOG_NONE 0
#define WINPERF_LOG_USER 1
#define WINPERF_LOG_DEBUG 2
#define WINPERF_LOG_VERBOSE 3
#pragma pack(pop)
#define __WINCRYPT_H__ 
#undef DEFINE_GUID
#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name
#define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46)
#define WINIMPM DECLSPEC_IMPORT
#define WINCRYPT32API WINIMPM
#define WINCRYPT32STRINGAPI WINIMPM
#define GET_ALG_CLASS(x) (x & (7 << 13))
#define GET_ALG_TYPE(x) (x & (15 << 9))
#define GET_ALG_SID(x) (x & 511)
#define ALG_CLASS_ANY (0)
#define ALG_CLASS_SIGNATURE (1 << 13)
#define ALG_CLASS_MSG_ENCRYPT (2 << 13)
#define ALG_CLASS_DATA_ENCRYPT (3 << 13)
#define ALG_CLASS_HASH (4 << 13)
#define ALG_CLASS_KEY_EXCHANGE (5 << 13)
#define ALG_CLASS_ALL (7 << 13)
#define ALG_TYPE_ANY (0)
#define ALG_TYPE_DSS (1 << 9)
#define ALG_TYPE_RSA (2 << 9)
#define ALG_TYPE_BLOCK (3 << 9)
#define ALG_TYPE_STREAM (4 << 9)
#define ALG_TYPE_DH (5 << 9)
#define ALG_TYPE_SECURECHANNEL (6 << 9)
#define ALG_TYPE_ECDH (7 << 9)
#define ALG_SID_ANY (0)
#define ALG_SID_RSA_ANY 0
#define ALG_SID_RSA_PKCS 1
#define ALG_SID_RSA_MSATWORK 2
#define ALG_SID_RSA_ENTRUST 3
#define ALG_SID_RSA_PGP 4
#define ALG_SID_DSS_ANY 0
#define ALG_SID_DSS_PKCS 1
#define ALG_SID_DSS_DMS 2
#define ALG_SID_ECDSA 3
#define ALG_SID_DES 1
#define ALG_SID_3DES 3
#define ALG_SID_DESX 4
#define ALG_SID_IDEA 5
#define ALG_SID_CAST 6
#define ALG_SID_SAFERSK64 7
#define ALG_SID_SAFERSK128 8
#define ALG_SID_3DES_112 9
#define ALG_SID_SKIPJACK 10
#define ALG_SID_TEK 11
#define ALG_SID_CYLINK_MEK 12
#define ALG_SID_RC5 13
#define ALG_SID_AES_128 14
#define ALG_SID_AES_192 15
#define ALG_SID_AES_256 16
#define ALG_SID_AES 17
#define CRYPT_MODE_CBCI 6
#define CRYPT_MODE_CFBP 7
#define CRYPT_MODE_OFBP 8
#define CRYPT_MODE_CBCOFM 9
#define CRYPT_MODE_CBCOFMI 10
#define ALG_SID_RC2 2
#define ALG_SID_RC4 1
#define ALG_SID_SEAL 2
#define ALG_SID_DH_SANDF 1
#define ALG_SID_DH_EPHEM 2
#define ALG_SID_AGREED_KEY_ANY 3
#define ALG_SID_KEA 4
#define ALG_SID_ECDH 5
#define ALG_SID_ECDH_EPHEM 6
#define ALG_SID_MD2 1
#define ALG_SID_MD4 2
#define ALG_SID_MD5 3
#define ALG_SID_SHA 4
#define ALG_SID_SHA1 4
#define ALG_SID_MAC 5
#define ALG_SID_RIPEMD 6
#define ALG_SID_RIPEMD160 7
#define ALG_SID_SSL3SHAMD5 8
#define ALG_SID_HMAC 9
#define ALG_SID_TLS1PRF 10
#define ALG_SID_HASH_REPLACE_OWF 11
#define ALG_SID_SHA_256 12
#define ALG_SID_SHA_384 13
#define ALG_SID_SHA_512 14
#define ALG_SID_SSL3_MASTER 1
#define ALG_SID_SCHANNEL_MASTER_HASH 2
#define ALG_SID_SCHANNEL_MAC_KEY 3
#define ALG_SID_PCT1_MASTER 4
#define ALG_SID_SSL2_MASTER 5
#define ALG_SID_TLS1_MASTER 6
#define ALG_SID_SCHANNEL_ENC_KEY 7
#define ALG_SID_ECMQV 1
#define ALG_SID_EXAMPLE 80
#define ALGIDDEF 
  typedef unsigned int ALG_ID;
#define CALG_MD2 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD2)
#define CALG_MD4 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD4)
#define CALG_MD5 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MD5)
#define CALG_SHA (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA)
#define CALG_SHA1 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA1)
#define CALG_MAC (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_MAC)
#define CALG_RSA_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY)
#define CALG_DSS_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY)
#define CALG_NO_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_ANY | ALG_SID_ANY)
#define CALG_RSA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_RSA|ALG_SID_RSA_ANY)
#define CALG_DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DES)
#define CALG_3DES_112 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_3DES_112)
#define CALG_3DES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_3DES)
#define CALG_DESX (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_DESX)
#define CALG_RC2 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC2)
#define CALG_RC4 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_RC4)
#define CALG_SEAL (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_STREAM|ALG_SID_SEAL)
#define CALG_DH_SF (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_DH_SANDF)
#define CALG_DH_EPHEM (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_DH_EPHEM)
#define CALG_AGREEDKEY_ANY (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_AGREED_KEY_ANY)
#define CALG_KEA_KEYX (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_DH|ALG_SID_KEA)
#define CALG_HUGHES_MD5 (ALG_CLASS_KEY_EXCHANGE|ALG_TYPE_ANY|ALG_SID_MD5)
#define CALG_SKIPJACK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_SKIPJACK)
#define CALG_TEK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_TEK)
#define CALG_CYLINK_MEK (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_CYLINK_MEK)
#define CALG_SSL3_SHAMD5 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SSL3SHAMD5)
#define CALG_SSL3_MASTER (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SSL3_MASTER)
#define CALG_SCHANNEL_MASTER_HASH (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_MASTER_HASH)
#define CALG_SCHANNEL_MAC_KEY (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_MAC_KEY)
#define CALG_SCHANNEL_ENC_KEY (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SCHANNEL_ENC_KEY)
#define CALG_PCT1_MASTER (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_PCT1_MASTER)
#define CALG_SSL2_MASTER (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_SSL2_MASTER)
#define CALG_TLS1_MASTER (ALG_CLASS_MSG_ENCRYPT|ALG_TYPE_SECURECHANNEL|ALG_SID_TLS1_MASTER)
#define CALG_RC5 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_RC5)
#define CALG_HMAC (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HMAC)
#define CALG_TLS1PRF (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_TLS1PRF)
#define CALG_HASH_REPLACE_OWF (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_HASH_REPLACE_OWF)
#define CALG_AES_128 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_128)
#define CALG_AES_192 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_192)
#define CALG_AES_256 (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES_256)
#define CALG_AES (ALG_CLASS_DATA_ENCRYPT|ALG_TYPE_BLOCK|ALG_SID_AES)
#define CALG_SHA_256 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_256)
#define CALG_SHA_384 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_384)
#define CALG_SHA_512 (ALG_CLASS_HASH | ALG_TYPE_ANY | ALG_SID_SHA_512)
#define CALG_ECDH (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_ECDH)
#define CALG_ECDH_EPHEM (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ECDH | ALG_SID_ECDH_EPHEM)
#define CALG_ECMQV (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ANY | ALG_SID_ECMQV)
#define CALG_ECDSA (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_ECDSA)
#define CALG_NULLCIPHER (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_ANY | 0)
#define HCRYPTPROV_DEFINED 
  typedef ULONG_PTR HCRYPTHASH;
  typedef ULONG_PTR HCRYPTKEY;
  typedef ULONG_PTR HCRYPTPROV;
#define CRYPT_VERIFYCONTEXT 0xf0000000
#define CRYPT_NEWKEYSET 0x8
#define CRYPT_DELETEKEYSET 0x10
#define CRYPT_MACHINE_KEYSET 0x20
#define CRYPT_SILENT 0x40
#define CRYPT_DEFAULT_CONTAINER_OPTIONAL 0x80
#define CRYPT_EXPORTABLE 0x1
#define CRYPT_USER_PROTECTED 0x2
#define CRYPT_CREATE_SALT 0x4
#define CRYPT_UPDATE_KEY 0x8
#define CRYPT_NO_SALT 0x10
#define CRYPT_PREGEN 0x40
#define CRYPT_RECIPIENT 0x10
#define CRYPT_INITIATOR 0x40
#define CRYPT_ONLINE 0x80
#define CRYPT_SF 0x100
#define CRYPT_CREATE_IV 0x200
#define CRYPT_KEK 0x400
#define CRYPT_DATA_KEY 0x800
#define CRYPT_VOLATILE 0x1000
#define CRYPT_SGCKEY 0x2000
#define CRYPT_ARCHIVABLE 0x4000
#define CRYPT_FORCE_KEY_PROTECTION_HIGH 0x8000
#define CRYPT_USER_PROTECTED_STRONG 0x100000
#define RSA1024BIT_KEY 0x4000000
#define CRYPT_SERVER 0x400
#define KEY_LENGTH_MASK 0xffff0000
#define CRYPT_Y_ONLY 0x1
#define CRYPT_SSL2_FALLBACK 0x2
#define CRYPT_DESTROYKEY 0x4
#define CRYPT_DECRYPT_RSA_NO_PADDING_CHECK 0x20
#define CRYPT_OAEP 0x40
#define CRYPT_BLOB_VER3 0x80
#define CRYPT_IPSEC_HMAC_KEY 0x100
#define CRYPT_SECRETDIGEST 0x1
#define CRYPT_OWF_REPL_LM_HASH 0x1
#define CRYPT_LITTLE_ENDIAN 0x1
#define CRYPT_NOHASHOID 0x1
#define CRYPT_TYPE2_FORMAT 0x2
#define CRYPT_X931_FORMAT 0x4
#define CRYPT_MACHINE_DEFAULT 0x1
#define CRYPT_USER_DEFAULT 0x2
#define CRYPT_DELETE_DEFAULT 0x4
#define SIMPLEBLOB 0x1
#define PUBLICKEYBLOB 0x6
#define PRIVATEKEYBLOB 0x7
#define PLAINTEXTKEYBLOB 0x8
#define OPAQUEKEYBLOB 0x9
#define PUBLICKEYBLOBEX 0xa
#define SYMMETRICWRAPKEYBLOB 0xb
#define KEYSTATEBLOB 0xc
#define AT_KEYEXCHANGE 1
#define AT_SIGNATURE 2
#define CRYPT_USERDATA 1
#define KP_IV 1
#define KP_SALT 2
#define KP_PADDING 3
#define KP_MODE 4
#define KP_MODE_BITS 5
#define KP_PERMISSIONS 6
#define KP_ALGID 7
#define KP_BLOCKLEN 8
#define KP_KEYLEN 9
#define KP_SALT_EX 10
#define KP_P 11
#define KP_G 12
#define KP_Q 13
#define KP_X 14
#define KP_Y 15
#define KP_RA 16
#define KP_RB 17
#define KP_INFO 18
#define KP_EFFECTIVE_KEYLEN 19
#define KP_SCHANNEL_ALG 20
#define KP_CLIENT_RANDOM 21
#define KP_SERVER_RANDOM 22
#define KP_RP 23
#define KP_PRECOMP_MD5 24
#define KP_PRECOMP_SHA 25
#define KP_CERTIFICATE 26
#define KP_CLEAR_KEY 27
#define KP_PUB_EX_LEN 28
#define KP_PUB_EX_VAL 29
#define KP_KEYVAL 30
#define KP_ADMIN_PIN 31
#define KP_KEYEXCHANGE_PIN 32
#define KP_SIGNATURE_PIN 33
#define KP_PREHASH 34
#define KP_ROUNDS 35
#define KP_OAEP_PARAMS 36
#define KP_CMS_KEY_INFO 37
#define KP_CMS_DH_KEY_INFO 38
#define KP_PUB_PARAMS 39
#define KP_VERIFY_PARAMS 40
#define KP_HIGHEST_VERSION 41
#define KP_GET_USE_COUNT 42
#define KP_PIN_ID 43
#define KP_PIN_INFO 44
#define PKCS5_PADDING 1
#define RANDOM_PADDING 2
#define ZERO_PADDING 3
#define CRYPT_MODE_CBC 1
#define CRYPT_MODE_ECB 2
#define CRYPT_MODE_OFB 3
#define CRYPT_MODE_CFB 4
#define CRYPT_MODE_CTS 5
#define CRYPT_ENCRYPT 0x1
#define CRYPT_DECRYPT 0x2
#define CRYPT_EXPORT 0x4
#define CRYPT_READ 0x8
#define CRYPT_WRITE 0x10
#define CRYPT_MAC 0x20
#define CRYPT_EXPORT_KEY 0x40
#define CRYPT_IMPORT_KEY 0x80
#define CRYPT_ARCHIVE 0x100
#define HP_ALGID 0x1
#define HP_HASHVAL 0x2
#define HP_HASHSIZE 0x4
#define HP_HMAC_INFO 0x5
#define HP_TLS1PRF_LABEL 0x6
#define HP_TLS1PRF_SEED 0x7
#define CRYPT_FAILED FALSE
#define CRYPT_SUCCEED TRUE
#define RCRYPT_SUCCEEDED(RT) ((RT) == CRYPT_SUCCEED)
#define RCRYPT_FAILED(RT) ((RT) == CRYPT_FAILED)
#define PP_ENUMALGS 1
#define PP_ENUMCONTAINERS 2
#define PP_IMPTYPE 3
#define PP_NAME 4
#define PP_VERSION 5
#define PP_CONTAINER 6
#define PP_CHANGE_PASSWORD 7
#define PP_KEYSET_SEC_DESCR 8
#define PP_CERTCHAIN 9
#define PP_KEY_TYPE_SUBTYPE 10
#define PP_PROVTYPE 16
#define PP_KEYSTORAGE 17
#define PP_APPLI_CERT 18
#define PP_SYM_KEYSIZE 19
#define PP_SESSION_KEYSIZE 20
#define PP_UI_PROMPT 21
#define PP_ENUMALGS_EX 22
#define PP_ENUMMANDROOTS 25
#define PP_ENUMELECTROOTS 26
#define PP_KEYSET_TYPE 27
#define PP_ADMIN_PIN 31
#define PP_KEYEXCHANGE_PIN 32
#define PP_SIGNATURE_PIN 33
#define PP_SIG_KEYSIZE_INC 34
#define PP_KEYX_KEYSIZE_INC 35
#define PP_UNIQUE_CONTAINER 36
#define PP_SGC_INFO 37
#define PP_USE_HARDWARE_RNG 38
#define PP_KEYSPEC 39
#define PP_ENUMEX_SIGNING_PROT 40
#define PP_CRYPT_COUNT_KEY_USE 41
#define PP_USER_CERTSTORE 42
#define PP_SMARTCARD_READER 43
#define PP_SMARTCARD_GUID 45
#define PP_ROOT_CERTSTORE 46
#define CRYPT_FIRST 1
#define CRYPT_NEXT 2
#define CRYPT_SGC_ENUM 4
#define CRYPT_IMPL_HARDWARE 1
#define CRYPT_IMPL_SOFTWARE 2
#define CRYPT_IMPL_MIXED 3
#define CRYPT_IMPL_UNKNOWN 4
#define CRYPT_IMPL_REMOVABLE 8
#define CRYPT_SEC_DESCR 0x1
#define CRYPT_PSTORE 0x2
#define CRYPT_UI_PROMPT 0x4
#define CRYPT_FLAG_PCT1 0x1
#define CRYPT_FLAG_SSL2 0x2
#define CRYPT_FLAG_SSL3 0x4
#define CRYPT_FLAG_TLS1 0x8
#define CRYPT_FLAG_IPSEC 0x10
#define CRYPT_FLAG_SIGNING 0x20
#define CRYPT_SGC 0x1
#define CRYPT_FASTSGC 0x2
#define PP_CLIENT_HWND 1
#define PP_CONTEXT_INFO 11
#define PP_KEYEXCHANGE_KEYSIZE 12
#define PP_SIGNATURE_KEYSIZE 13
#define PP_KEYEXCHANGE_ALG 14
#define PP_SIGNATURE_ALG 15
#define PP_DELETEKEY 24
#define PP_PIN_PROMPT_STRING 44
#define PP_SECURE_KEYEXCHANGE_PIN 47
#define PP_SECURE_SIGNATURE_PIN 48
#define PROV_RSA_FULL 1
#define PROV_RSA_SIG 2
#define PROV_DSS 3
#define PROV_FORTEZZA 4
#define PROV_MS_EXCHANGE 5
#define PROV_SSL 6
#define PROV_STT_MER 7
#define PROV_STT_ACQ 8
#define PROV_STT_BRND 9
#define PROV_STT_ROOT 10
#define PROV_STT_ISS 11
#define PROV_RSA_SCHANNEL 12
#define PROV_DSS_DH 13
#define PROV_EC_ECDSA_SIG 14
#define PROV_EC_ECNRA_SIG 15
#define PROV_EC_ECDSA_FULL 16
#define PROV_EC_ECNRA_FULL 17
#define PROV_DH_SCHANNEL 18
#define PROV_SPYRUS_LYNKS 20
#define PROV_RNG 21
#define PROV_INTEL_SEC 22
#define PROV_REPLACE_OWF 23
#define PROV_RSA_AES 24
#define MS_DEF_PROV __MINGW_NAME_UAW(MS_DEF_PROV)
#define MS_ENHANCED_PROV __MINGW_NAME_UAW(MS_ENHANCED_PROV)
#define MS_STRONG_PROV __MINGW_NAME_UAW(MS_STRONG_PROV)
#define MS_DEF_RSA_SIG_PROV __MINGW_NAME_UAW(MS_DEF_RSA_SIG_PROV)
#define MS_DEF_RSA_SCHANNEL_PROV __MINGW_NAME_UAW(MS_DEF_RSA_SCHANNEL_PROV)
#define MS_DEF_DSS_PROV __MINGW_NAME_UAW(MS_DEF_DSS_PROV)
#define MS_DEF_DSS_DH_PROV __MINGW_NAME_UAW(MS_DEF_DSS_DH_PROV)
#define MS_ENH_DSS_DH_PROV __MINGW_NAME_UAW(MS_ENH_DSS_DH_PROV)
#define MS_DEF_DH_SCHANNEL_PROV __MINGW_NAME_UAW(MS_DEF_DH_SCHANNEL_PROV)
#define MS_SCARD_PROV __MINGW_NAME_UAW(MS_SCARD_PROV)
#define MS_ENH_RSA_AES_PROV_XP __MINGW_NAME_UAW(MS_ENH_RSA_AES_PROV_XP)
#define MS_ENH_RSA_AES_PROV __MINGW_NAME_UAW(MS_ENH_RSA_AES_PROV)
#define MS_DEF_PROV_A "Microsoft Base Cryptographic Provider v1.0"
#define MS_DEF_PROV_W L"Microsoft Base Cryptographic Provider v1.0"
#define MS_ENHANCED_PROV_A "Microsoft Enhanced Cryptographic Provider v1.0"
#define MS_ENHANCED_PROV_W L"Microsoft Enhanced Cryptographic Provider v1.0"
#define MS_STRONG_PROV_A "Microsoft Strong Cryptographic Provider"
#define MS_STRONG_PROV_W L"Microsoft Strong Cryptographic Provider"
#define MS_DEF_RSA_SIG_PROV_A "Microsoft RSA Signature Cryptographic Provider"
#define MS_DEF_RSA_SIG_PROV_W L"Microsoft RSA Signature Cryptographic Provider"
#define MS_DEF_RSA_SCHANNEL_PROV_A "Microsoft RSA SChannel Cryptographic Provider"
#define MS_DEF_RSA_SCHANNEL_PROV_W L"Microsoft RSA SChannel Cryptographic Provider"
#define MS_DEF_DSS_PROV_A "Microsoft Base DSS Cryptographic Provider"
#define MS_DEF_DSS_PROV_W L"Microsoft Base DSS Cryptographic Provider"
#define MS_DEF_DSS_DH_PROV_A "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
#define MS_DEF_DSS_DH_PROV_W L"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider"
#define MS_ENH_DSS_DH_PROV_A "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
#define MS_ENH_DSS_DH_PROV_W L"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider"
#define MS_DEF_DH_SCHANNEL_PROV_A "Microsoft DH SChannel Cryptographic Provider"
#define MS_DEF_DH_SCHANNEL_PROV_W L"Microsoft DH SChannel Cryptographic Provider"
#define MS_SCARD_PROV_A "Microsoft Base Smart Card Crypto Provider"
#define MS_SCARD_PROV_W L"Microsoft Base Smart Card Crypto Provider"
#define MS_ENH_RSA_AES_PROV_A "Microsoft Enhanced RSA and AES Cryptographic Provider"
#define MS_ENH_RSA_AES_PROV_W L"Microsoft Enhanced RSA and AES Cryptographic Provider"
#define MS_ENH_RSA_AES_PROV_XP_A "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
#define MS_ENH_RSA_AES_PROV_XP_W L"Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)"
#define MAXUIDLEN 64
#define EXPO_OFFLOAD_REG_VALUE "ExpoOffload"
#define EXPO_OFFLOAD_FUNC_NAME "OffloadModExpo"
#define szKEY_CRYPTOAPI_PRIVATE_KEY_OPTIONS "Software\\Policies\\Microsoft\\Cryptography"
#define szKEY_CACHE_ENABLED "CachePrivateKeys"
#define szKEY_CACHE_SECONDS "PrivateKeyLifetimeSeconds"
#define szPRIV_KEY_CACHE_MAX_ITEMS "PrivKeyCacheMaxItems"
#define cPRIV_KEY_CACHE_MAX_ITEMS_DEFAULT 20
#define szPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS "PrivKeyCachePurgeIntervalSeconds"
#define cPRIV_KEY_CACHE_PURGE_INTERVAL_SECONDS_DEFAULT 86400
#define CUR_BLOB_VERSION 2
  typedef struct _CMS_KEY_INFO {
    DWORD dwVersion;
    ALG_ID Algid;
    BYTE *pbOID;
    DWORD cbOID;
  } CMS_KEY_INFO,*PCMS_KEY_INFO;
  typedef struct _HMAC_Info {
    ALG_ID HashAlgid;
    BYTE *pbInnerString;
    DWORD cbInnerString;
    BYTE *pbOuterString;
    DWORD cbOuterString;
  } HMAC_INFO,*PHMAC_INFO;
  typedef struct _SCHANNEL_ALG {
    DWORD dwUse;
    ALG_ID Algid;
    DWORD cBits;
    DWORD dwFlags;
    DWORD dwReserved;
  } SCHANNEL_ALG,*PSCHANNEL_ALG;
#define SCHANNEL_MAC_KEY 0x0
#define SCHANNEL_ENC_KEY 0x1
#define INTERNATIONAL_USAGE 0x1
  typedef struct _PROV_ENUMALGS {
    ALG_ID aiAlgid;
    DWORD dwBitLen;
    DWORD dwNameLen;
    CHAR szName[20];
  } PROV_ENUMALGS;
  typedef struct _PROV_ENUMALGS_EX {
    ALG_ID aiAlgid;
    DWORD dwDefaultLen;
    DWORD dwMinLen;
    DWORD dwMaxLen;
    DWORD dwProtocols;
    DWORD dwNameLen;
    CHAR szName[20];
    DWORD dwLongNameLen;
    CHAR szLongName[40];
  } PROV_ENUMALGS_EX;
  typedef struct _PUBLICKEYSTRUC {
    BYTE bType;
    BYTE bVersion;
    WORD reserved;
    ALG_ID aiKeyAlg;
  } BLOBHEADER,PUBLICKEYSTRUC;
  typedef struct _RSAPUBKEY {
    DWORD magic;
    DWORD bitlen;
    DWORD pubexp;
  } RSAPUBKEY;
  typedef struct _PUBKEY {
    DWORD magic;
    DWORD bitlen;
  } DHPUBKEY,DSSPUBKEY,KEAPUBKEY,TEKPUBKEY;
  typedef struct _DSSSEED {
    DWORD counter;
    BYTE seed[20];
  } DSSSEED;
  typedef struct _PUBKEYVER3 {
    DWORD magic;
    DWORD bitlenP;
    DWORD bitlenQ;
    DWORD bitlenJ;
    DSSSEED DSSSeed;
  } DHPUBKEY_VER3, DSSPUBKEY_VER3;
  typedef struct _PRIVKEYVER3 {
    DWORD magic;
    DWORD bitlenP;
    DWORD bitlenQ;
    DWORD bitlenJ;
    DWORD bitlenX;
    DSSSEED DSSSeed;
  } DHPRIVKEY_VER3,DSSPRIVKEY_VER3;
  typedef struct _KEY_TYPE_SUBTYPE {
    DWORD dwKeySpec;
    GUID Type;
    GUID Subtype;
  } KEY_TYPE_SUBTYPE,*PKEY_TYPE_SUBTYPE;
  typedef struct _CERT_FORTEZZA_DATA_PROP {
    unsigned char SerialNumber[8];
    int CertIndex;
    unsigned char CertLabel[36];
  } CERT_FORTEZZA_DATA_PROP;
  typedef struct _CRYPT_RC4_KEY_STATE {
    unsigned char Key[16];
    unsigned char SBox[256];
    unsigned char i;
    unsigned char j;
  } CRYPT_RC4_KEY_STATE,*PCRYPT_RC4_KEY_STATE;
  typedef struct _CRYPT_DES_KEY_STATE {
    unsigned char Key[8];
    unsigned char IV[8];
    unsigned char Feedback[8];
  } CRYPT_DES_KEY_STATE,*PCRYPT_DES_KEY_STATE;
  typedef struct _CRYPT_3DES_KEY_STATE {
    unsigned char Key[24];
    unsigned char IV[8];
    unsigned char Feedback[8];
  } CRYPT_3DES_KEY_STATE,*PCRYPT_3DES_KEY_STATE;
  typedef struct _CRYPT_AES_128_KEY_STATE {
    unsigned char Key[16];
    unsigned char IV[16];
    unsigned char EncryptionState[11][16];
    unsigned char DecryptionState[11][16];
    unsigned char Feedback[16];
  } CRYPT_AES_128_KEY_STATE,*PCRYPT_AES_128_KEY_STATE;
  typedef struct _CRYPT_AES_256_KEY_STATE {
    unsigned char Key[32];
    unsigned char IV[16];
    unsigned char EncryptionState[15][16];
    unsigned char DecryptionState[15][16];
    unsigned char Feedback[16];
  } CRYPT_AES_256_KEY_STATE,*PCRYPT_AES_256_KEY_STATE;
#define CRYPTO_BLOBS_DEFINED 
  typedef struct _CRYPTOAPI_BLOB {
    DWORD cbData;
    BYTE *pbData;
  } CRYPT_INTEGER_BLOB,*PCRYPT_INTEGER_BLOB,CRYPT_UINT_BLOB,*PCRYPT_UINT_BLOB,CRYPT_OBJID_BLOB,*PCRYPT_OBJID_BLOB,CERT_NAME_BLOB,*PCERT_NAME_BLOB,CERT_RDN_VALUE_BLOB,*PCERT_RDN_VALUE_BLOB,CERT_BLOB,*PCERT_BLOB,CRL_BLOB,*PCRL_BLOB,DATA_BLOB,*PDATA_BLOB,CRYPT_DATA_BLOB,*PCRYPT_DATA_BLOB,CRYPT_HASH_BLOB,*PCRYPT_HASH_BLOB,CRYPT_DIGEST_BLOB,*PCRYPT_DIGEST_BLOB,CRYPT_DER_BLOB,*PCRYPT_DER_BLOB,CRYPT_ATTR_BLOB,*PCRYPT_ATTR_BLOB;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptAcquireContextA (HCRYPTPROV *phProv, LPCSTR szContainer, LPCSTR szProvider, DWORD dwProvType, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptAcquireContextW (HCRYPTPROV *phProv, LPCWSTR szContainer, LPCWSTR szProvider, DWORD dwProvType, DWORD dwFlags);
#define CryptAcquireContext __MINGW_NAME_AW(CryptAcquireContext)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGenRandom (HCRYPTPROV hProv, DWORD dwLen, BYTE *pbBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptReleaseContext (HCRYPTPROV hProv, DWORD dwFlags);
  typedef struct _CMS_DH_KEY_INFO {
    DWORD dwVersion;
    ALG_ID Algid;
    LPSTR pszContentEncObjId;
    CRYPT_DATA_BLOB PubInfo;
    void *pReserved;
  } CMS_DH_KEY_INFO,*PCMS_DH_KEY_INFO;
#define CryptSignHash __MINGW_NAME_AW(CryptSignHash)
#define CryptVerifySignature __MINGW_NAME_AW(CryptVerifySignature)
#define CryptSetProvider __MINGW_NAME_AW(CryptSetProvider)
#define CryptSetProviderEx __MINGW_NAME_AW(CryptSetProviderEx)
#define CryptGetDefaultProvider __MINGW_NAME_AW(CryptGetDefaultProvider)
#define CryptEnumProviderTypes __MINGW_NAME_AW(CryptEnumProviderTypes)
#define CryptEnumProviders __MINGW_NAME_AW(CryptEnumProviders)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGenKey (HCRYPTPROV hProv, ALG_ID Algid, DWORD dwFlags, HCRYPTKEY *phKey);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptDeriveKey (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTHASH hBaseData, DWORD dwFlags, HCRYPTKEY *phKey);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptDestroyKey (HCRYPTKEY hKey);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSetKeyParam (HCRYPTKEY hKey, DWORD dwParam, const BYTE *pbData, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGetKeyParam (HCRYPTKEY hKey, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSetHashParam (HCRYPTHASH hHash, DWORD dwParam, const BYTE *pbData, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGetHashParam (HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSetProvParam (HCRYPTPROV hProv, DWORD dwParam, const BYTE *pbData, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGetProvParam (HCRYPTPROV hProv, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGetUserKey (HCRYPTPROV hProv, DWORD dwKeySpec, HCRYPTKEY *phUserKey);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptExportKey (HCRYPTKEY hKey, HCRYPTKEY hExpKey, DWORD dwBlobType, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptImportKey (HCRYPTPROV hProv, const BYTE *pbData, DWORD dwDataLen, HCRYPTKEY hPubKey, DWORD dwFlags, HCRYPTKEY *phKey);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptEncrypt (HCRYPTKEY hKey, HCRYPTHASH hHash, WINBOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen, DWORD dwBufLen);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptDecrypt (HCRYPTKEY hKey, HCRYPTHASH hHash, WINBOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptCreateHash (HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, DWORD dwFlags, HCRYPTHASH *phHash);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptHashData (HCRYPTHASH hHash, const BYTE *pbData, DWORD dwDataLen, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptHashSessionKey (HCRYPTHASH hHash, HCRYPTKEY hKey, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptDestroyHash (HCRYPTHASH hHash);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSignHashA (HCRYPTHASH hHash, DWORD dwKeySpec, LPCSTR szDescription, DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSignHashW (HCRYPTHASH hHash, DWORD dwKeySpec, LPCWSTR szDescription, DWORD dwFlags, BYTE *pbSignature, DWORD *pdwSigLen);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptVerifySignatureA (HCRYPTHASH hHash, const BYTE *pbSignature, DWORD dwSigLen, HCRYPTKEY hPubKey, LPCSTR szDescription, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptVerifySignatureW (HCRYPTHASH hHash, const BYTE *pbSignature, DWORD dwSigLen, HCRYPTKEY hPubKey, LPCWSTR szDescription, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSetProviderA (LPCSTR pszProvName, DWORD dwProvType);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSetProviderW (LPCWSTR pszProvName, DWORD dwProvType);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSetProviderExA (LPCSTR pszProvName, DWORD dwProvType, DWORD *pdwReserved, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSetProviderExW (LPCWSTR pszProvName, DWORD dwProvType, DWORD *pdwReserved, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGetDefaultProviderA (DWORD dwProvType, DWORD *pdwReserved, DWORD dwFlags, LPSTR pszProvName, DWORD *pcbProvName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGetDefaultProviderW (DWORD dwProvType, DWORD *pdwReserved, DWORD dwFlags, LPWSTR pszProvName, DWORD *pcbProvName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptEnumProviderTypesA (DWORD dwIndex, DWORD *pdwReserved, DWORD dwFlags, DWORD *pdwProvType, LPSTR szTypeName, DWORD *pcbTypeName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptEnumProviderTypesW (DWORD dwIndex, DWORD *pdwReserved, DWORD dwFlags, DWORD *pdwProvType, LPWSTR szTypeName, DWORD *pcbTypeName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptEnumProvidersA (DWORD dwIndex, DWORD *pdwReserved, DWORD dwFlags, DWORD *pdwProvType, LPSTR szProvName, DWORD *pcbProvName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptEnumProvidersW (DWORD dwIndex, DWORD *pdwReserved, DWORD dwFlags, DWORD *pdwProvType, LPWSTR szProvName, DWORD *pcbProvName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptContextAddRef (HCRYPTPROV hProv, DWORD *pdwReserved, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptDuplicateKey (HCRYPTKEY hKey, DWORD *pdwReserved, DWORD dwFlags, HCRYPTKEY *phKey);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptDuplicateHash (HCRYPTHASH hHash, DWORD *pdwReserved, DWORD dwFlags, HCRYPTHASH *phHash);
  WINBOOL __attribute__((__cdecl__)) GetEncSChannel (BYTE **pData, DWORD *dwDecSize);
  typedef ULONG_PTR HCRYPTPROV_OR_NCRYPT_KEY_HANDLE;
  typedef ULONG_PTR HCRYPTPROV_LEGACY;
#define __BCRYPT_H__ 
#define _NTSTATUS_PSDK 
  typedef LONG NTSTATUS,*PNTSTATUS;
#define BCRYPT_SUCCESS(Status) (((NTSTATUS) (Status)) >= 0)
#define BCRYPT_OBJECT_ALIGNMENT 16
#define BCRYPT_STRUCT_ALIGNMENT 
#define BCRYPT_KDF_HASH L"HASH"
#define BCRYPT_KDF_HMAC L"HMAC"
#define BCRYPT_KDF_TLS_PRF L"TLS_PRF"
#define BCRYPT_KDF_SP80056A_CONCAT L"SP800_56A_CONCAT"
#define KDF_HASH_ALGORITHM 0x0
#define KDF_SECRET_PREPEND 0x1
#define KDF_SECRET_APPEND 0x2
#define KDF_HMAC_KEY 0x3
#define KDF_TLS_PRF_LABEL 0x4
#define KDF_TLS_PRF_SEED 0x5
#define KDF_SECRET_HANDLE 0x6
#define KDF_USE_SECRET_AS_HMAC_KEY_FLAG 1
#define BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION 1
#define BCRYPT_AUTH_MODE_CHAIN_CALLS_FLAG 0x00000001
#define BCRYPT_AUTH_MODE_IN_PROGRESS_FLAG 0x00000002
#define BCRYPT_INIT_AUTH_MODE_INFO(_AUTH_INFO_STRUCT_) RtlZeroMemory ((&_AUTH_INFO_STRUCT_), sizeof (BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO)); (_AUTH_INFO_STRUCT_).cbSize = sizeof (BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO); (_AUTH_INFO_STRUCT_).dwInfoVersion = BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO_VERSION;
#define BCRYPT_OPAQUE_KEY_BLOB L"OpaqueKeyBlob"
#define BCRYPT_KEY_DATA_BLOB L"KeyDataBlob"
#define BCRYPT_ALGORITHM_NAME L"AlgorithmName"
#define BCRYPT_AUTH_TAG_LENGTH L"AuthTagLength"
#define BCRYPT_BLOCK_LENGTH L"BlockLength"
#define BCRYPT_BLOCK_SIZE_LIST L"BlockSizeList"
#define BCRYPT_CHAINING_MODE L"ChainingMode"
#define BCRYPT_CHAIN_MODE_CBC L"ChainingModeCBC"
#define BCRYPT_CHAIN_MODE_CCM L"ChainingModeCCM"
#define BCRYPT_CHAIN_MODE_CFB L"ChainingModeCFB"
#define BCRYPT_CHAIN_MODE_ECB L"ChainingModeECB"
#define BCRYPT_CHAIN_MODE_GCM L"ChainingModeGCM"
#define BCRYPT_CHAIN_MODE_NA L"ChainingModeN/A"
#define BCRYPT_EFFECTIVE_KEY_LENGTH L"EffectiveKeyLength"
#define BCRYPT_HASH_BLOCK_LENGTH L"HashBlockLength"
#define BCRYPT_HASH_LENGTH L"HashDigestLength"
#define BCRYPT_HASH_OID_LIST L"HashOIDList"
#define BCRYPT_INITIALIZATION_VECTOR L"IV"
#define BCRYPT_IS_KEYED_HASH L"IsKeyedHash"
#define BCRYPT_IS_REUSABLE_HASH L"IsReusableHash"
#define BCRYPT_KEY_LENGTH L"KeyLength"
#define BCRYPT_KEY_LENGTHS L"KeyLengths"
#define BCRYPT_KEY_OBJECT_LENGTH L"KeyObjectLength"
#define BCRYPT_KEY_STRENGTH L"KeyStrength"
#define BCRYPT_MESSAGE_BLOCK_LENGTH L"MessageBlockLength"
#define BCRYPT_OBJECT_LENGTH L"ObjectLength"
#define BCRYPT_PADDING_SCHEMES L"PaddingSchemes"
#define BCRYPT_PCP_PLATFORM_TYPE_PROPERTY L"PCP_PLATFORM_TYPE"
#define BCRYPT_PCP_PROVIDER_VERSION_PROPERTY L"PCP_PROVIDER_VERSION"
#define BCRYPT_PRIMITIVE_TYPE L"PrimitiveType"
#define BCRYPT_PROVIDER_HANDLE L"ProviderHandle"
#define BCRYPT_PUBLIC_KEY_LENGTH L"PublicKeyLength"
#define BCRYPT_SIGNATURE_LENGTH L"SignatureLength"
#define BCRYPT_SUPPORTED_PAD_ROUTER 0x00000001
#define BCRYPT_SUPPORTED_PAD_PKCS1_ENC 0x00000002
#define BCRYPT_SUPPORTED_PAD_PKCS1_SIG 0x00000004
#define BCRYPT_SUPPORTED_PAD_OAEP 0x00000008
#define BCRYPT_SUPPORTED_PAD_PSS 0x00000010
#define BCRYPT_PROV_DISPATCH 0x00000001
#define BCRYPT_BLOCK_PADDING 0x00000001
#define BCRYPT_PAD_NONE 0x00000001
#define BCRYPT_PAD_PKCS1 0x00000002
#define BCRYPT_PAD_OAEP 0x00000004
#define BCRYPT_PAD_PSS 0x00000008
#define BCRYPTBUFFER_VERSION 0
  typedef struct __BCRYPT_KEY_LENGTHS_STRUCT {
    ULONG dwMinLength;
    ULONG dwMaxLength;
    ULONG dwIncrement;
  } BCRYPT_KEY_LENGTHS_STRUCT;
  typedef BCRYPT_KEY_LENGTHS_STRUCT BCRYPT_AUTH_TAG_LENGTHS_STRUCT;
  typedef struct _BCRYPT_OID {
    ULONG cbOID;
    PUCHAR pbOID;
  } BCRYPT_OID;
  typedef struct _BCRYPT_OID_LIST {
    ULONG dwOIDCount;
    BCRYPT_OID *pOIDs;
  } BCRYPT_OID_LIST;
  typedef struct _BCRYPT_PKCS1_PADDING_INFO {
    LPCWSTR pszAlgId;
  } BCRYPT_PKCS1_PADDING_INFO;
  typedef struct _BCRYPT_PSS_PADDING_INFO {
    LPCWSTR pszAlgId;
    ULONG cbSalt;
  } BCRYPT_PSS_PADDING_INFO;
  typedef struct _BCRYPT_OAEP_PADDING_INFO {
    LPCWSTR pszAlgId;
    PUCHAR pbLabel;
    ULONG cbLabel;
  } BCRYPT_OAEP_PADDING_INFO;
  typedef struct _BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO {
    ULONG cbSize;
    ULONG dwInfoVersion;
    PUCHAR pbNonce;
    ULONG cbNonce;
    PUCHAR pbAuthData;
    ULONG cbAuthData;
    PUCHAR pbTag;
    ULONG cbTag;
    PUCHAR pbMacContext;
    ULONG cbMacContext;
    ULONG cbAAD;
    ULONGLONG cbData;
    ULONG dwFlags;
  } BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO,*PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO;
  typedef struct _BCryptBuffer {
    ULONG cbBuffer;
    ULONG BufferType;
    PVOID pvBuffer;
  } BCryptBuffer,*PBCryptBuffer;
  typedef struct _BCryptBufferDesc {
    ULONG ulVersion;
    ULONG cBuffers;
    PBCryptBuffer pBuffers;
  } BCryptBufferDesc,*PBCryptBufferDesc;
#define BCRYPT_PUBLIC_KEY_BLOB L"PUBLICBLOB"
#define BCRYPT_PRIVATE_KEY_BLOB L"PRIVATEBLOB"
#define BCRYPT_RSAPUBLIC_BLOB L"RSAPUBLICBLOB"
#define BCRYPT_RSAPRIVATE_BLOB L"RSAPRIVATEBLOB"
#define LEGACY_RSAPUBLIC_BLOB L"CAPIPUBLICBLOB"
#define LEGACY_RSAPRIVATE_BLOB L"CAPIPRIVATEBLOB"
#define BCRYPT_RSAPUBLIC_MAGIC 0x31415352
#define BCRYPT_RSAPRIVATE_MAGIC 0x32415352
#define BCRYPT_RSAFULLPRIVATE_BLOB L"RSAFULLPRIVATEBLOB"
#define BCRYPT_RSAFULLPRIVATE_MAGIC 0x33415352
#define BCRYPT_ECCPUBLIC_BLOB L"ECCPUBLICBLOB"
#define BCRYPT_ECCPRIVATE_BLOB L"ECCPRIVATEBLOB"
#define BCRYPT_ECDH_PUBLIC_P256_MAGIC 0x314b4345
#define BCRYPT_ECDH_PRIVATE_P256_MAGIC 0x324b4345
#define BCRYPT_ECDH_PUBLIC_P384_MAGIC 0x334b4345
#define BCRYPT_ECDH_PRIVATE_P384_MAGIC 0x344b4345
#define BCRYPT_ECDH_PUBLIC_P521_MAGIC 0x354b4345
#define BCRYPT_ECDH_PRIVATE_P521_MAGIC 0x364b4345
#define BCRYPT_ECDSA_PUBLIC_P256_MAGIC 0x31534345
#define BCRYPT_ECDSA_PRIVATE_P256_MAGIC 0x32534345
#define BCRYPT_ECDSA_PUBLIC_P384_MAGIC 0x33534345
#define BCRYPT_ECDSA_PRIVATE_P384_MAGIC 0x34534345
#define BCRYPT_ECDSA_PUBLIC_P521_MAGIC 0x35534345
#define BCRYPT_ECDSA_PRIVATE_P521_MAGIC 0x36534345
#define BCRYPT_DH_PUBLIC_BLOB L"DHPUBLICBLOB"
#define BCRYPT_DH_PRIVATE_BLOB L"DHPRIVATEBLOB"
#define LEGACY_DH_PUBLIC_BLOB L"CAPIDHPUBLICBLOB"
#define LEGACY_DH_PRIVATE_BLOB L"CAPIDHPRIVATEBLOB"
#define BCRYPT_DH_PUBLIC_MAGIC 0x42504844
#define BCRYPT_DH_PRIVATE_MAGIC 0x56504844
#define BCRYPT_DH_PARAMETERS L"DHParameters"
#define BCRYPT_DH_PARAMETERS_MAGIC 0x4d504844
#define BCRYPT_DSA_PUBLIC_BLOB L"DSAPUBLICBLOB"
#define BCRYPT_DSA_PRIVATE_BLOB L"DSAPRIVATEBLOB"
#define LEGACY_DSA_PUBLIC_BLOB L"CAPIDSAPUBLICBLOB"
#define LEGACY_DSA_PRIVATE_BLOB L"CAPIDSAPRIVATEBLOB"
#define LEGACY_DSA_V2_PUBLIC_BLOB L"V2CAPIDSAPUBLICBLOB"
#define LEGACY_DSA_V2_PRIVATE_BLOB L"V2CAPIDSAPRIVATEBLOB"
#define BCRYPT_DSA_PUBLIC_MAGIC 0x42505344
#define BCRYPT_DSA_PRIVATE_MAGIC 0x56505344
#define BCRYPT_DSA_PUBLIC_MAGIC_V2 0x32425044
#define BCRYPT_DSA_PRIVATE_MAGIC_V2 0x32565044
#define BCRYPT_KEY_DATA_BLOB_MAGIC 0x4d42444b
#define BCRYPT_KEY_DATA_BLOB_VERSION1 0x1
#define BCRYPT_DSA_PARAMETERS L"DSAParameters"
#define BCRYPT_DSA_PARAMETERS_MAGIC 0x4d505344
#define BCRYPT_DSA_PARAMETERS_MAGIC_V2 0x324d5044
#define MS_PRIMITIVE_PROVIDER L"Microsoft Primitive Provider"
#define MS_PLATFORM_CRYPTO_PROVIDER L"Microsoft Platform Crypto Provider"
#define BCRYPT_RSA_ALGORITHM L"RSA"
#define BCRYPT_RSA_SIGN_ALGORITHM L"RSA_SIGN"
#define BCRYPT_DH_ALGORITHM L"DH"
#define BCRYPT_DSA_ALGORITHM L"DSA"
#define BCRYPT_RC2_ALGORITHM L"RC2"
#define BCRYPT_RC4_ALGORITHM L"RC4"
#define BCRYPT_AES_ALGORITHM L"AES"
#define BCRYPT_DES_ALGORITHM L"DES"
#define BCRYPT_DESX_ALGORITHM L"DESX"
#define BCRYPT_3DES_ALGORITHM L"3DES"
#define BCRYPT_3DES_112_ALGORITHM L"3DES_112"
#define BCRYPT_MD2_ALGORITHM L"MD2"
#define BCRYPT_MD4_ALGORITHM L"MD4"
#define BCRYPT_MD5_ALGORITHM L"MD5"
#define BCRYPT_SHA1_ALGORITHM L"SHA1"
#define BCRYPT_SHA256_ALGORITHM L"SHA256"
#define BCRYPT_SHA384_ALGORITHM L"SHA384"
#define BCRYPT_SHA512_ALGORITHM L"SHA512"
#define BCRYPT_AES_GMAC_ALGORITHM L"AES-GMAC"
#define BCRYPT_AES_CMAC_ALGORITHM L"AES-CMAC"
#define BCRYPT_ECDSA_P256_ALGORITHM L"ECDSA_P256"
#define BCRYPT_ECDSA_P384_ALGORITHM L"ECDSA_P384"
#define BCRYPT_ECDSA_P521_ALGORITHM L"ECDSA_P521"
#define BCRYPT_ECDH_P256_ALGORITHM L"ECDH_P256"
#define BCRYPT_ECDH_P384_ALGORITHM L"ECDH_P384"
#define BCRYPT_ECDH_P521_ALGORITHM L"ECDH_P521"
#define BCRYPT_RNG_ALGORITHM L"RNG"
#define BCRYPT_RNG_FIPS186_DSA_ALGORITHM L"FIPS186DSARNG"
#define BCRYPT_RNG_DUAL_EC_ALGORITHM L"DUALECRNG"
#define BCRYPT_SP800108_CTR_HMAC_ALGORITHM L"SP800_108_CTR_HMAC"
#define BCRYPT_SP80056A_CONCAT_ALGORITHM L"SP800_56A_CONCAT"
#define BCRYPT_PBKDF2_ALGORITHM L"PBKDF2"
#define BCRYPT_CAPI_KDF_ALGORITHM L"CAPI_KDF"
#define BCRYPT_CIPHER_INTERFACE 0x00000001
#define BCRYPT_HASH_INTERFACE 0x00000002
#define BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE 0x00000003
#define BCRYPT_SECRET_AGREEMENT_INTERFACE 0x00000004
#define BCRYPT_SIGNATURE_INTERFACE 0x00000005
#define BCRYPT_RNG_INTERFACE 0x00000006
#define BCRYPT_KEY_DERIVATION_INTERFACE 0x00000007
#define BCRYPT_ALG_HANDLE_HMAC_FLAG 0x00000008
#define BCRYPT_CAPI_AES_FLAG 0x00000010
#define BCRYPT_HASH_REUSABLE_FLAG 0x00000020
#define BCRYPT_BUFFERS_LOCKED_FLAG 0x00000040
#define BCRYPT_CIPHER_OPERATION 0x00000001
#define BCRYPT_HASH_OPERATION 0x00000002
#define BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION 0x00000004
#define BCRYPT_SECRET_AGREEMENT_OPERATION 0x00000008
#define BCRYPT_SIGNATURE_OPERATION 0x00000010
#define BCRYPT_RNG_OPERATION 0x00000020
#define BCRYPT_KEY_DERIVATION_OPERATION 0x00000040
#define BCRYPT_PUBLIC_KEY_FLAG 0x00000001
#define BCRYPT_PRIVATE_KEY_FLAG 0x00000002
#define BCRYPT_NO_KEY_VALIDATION 0x00000008
#define BCRYPT_RNG_USE_ENTROPY_IN_BUFFER 0x00000001
#define BCRYPT_USE_SYSTEM_PREFERRED_RNG 0x00000002
#define BCRYPT_MAKE_INTERFACE_VERSION(major,minor) { (USHORT)major,(USHORT)minor}
#define BCRYPT_IS_INTERFACE_VERSION_COMPATIBLE(loader,provider) ((loader).MajorVersion <= (provider).MajorVersion)
#define BCRYPT_CIPHER_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0)
#define BCRYPT_HASH_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0)
#define BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0)
#define BCRYPT_SECRET_AGREEMENT_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0)
#define BCRYPT_SIGNATURE_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0)
#define BCRYPT_RNG_INTERFACE_VERSION_1 BCRYPT_MAKE_INTERFACE_VERSION (1, 0)
#define CRYPT_MIN_DEPENDENCIES (0x00000001)
#define CRYPT_PROCESS_ISOLATE (0x00010000)
#define CRYPT_UM (0x00000001)
#define CRYPT_KM (0x00000002)
#define CRYPT_MM (0x00000003)
#define CRYPT_ANY (0x00000004)
#define CRYPT_OVERWRITE (0x00000001)
#define CRYPT_LOCAL (0x00000001)
#define CRYPT_DOMAIN (0x00000002)
#define CRYPT_EXCLUSIVE (0x00000001)
#define CRYPT_OVERRIDE (0x00010000)
#define CRYPT_ALL_FUNCTIONS (0x00000001)
#define CRYPT_ALL_PROVIDERS (0x00000002)
#define CRYPT_PRIORITY_TOP (0x00000000)
#define CRYPT_PRIORITY_BOTTOM (0xffffffff)
#define CRYPT_DEFAULT_CONTEXT L"Default"
typedef PVOID BCRYPT_HANDLE;
  typedef PVOID BCRYPT_ALG_HANDLE;
  typedef PVOID BCRYPT_KEY_HANDLE;
  typedef PVOID BCRYPT_HASH_HANDLE;
  typedef PVOID BCRYPT_SECRET_HANDLE;
  typedef struct _BCRYPT_KEY_BLOB {
    ULONG Magic;
  } BCRYPT_KEY_BLOB;
  typedef struct _BCRYPT_RSAKEY_BLOB {
    ULONG Magic;
    ULONG BitLength;
    ULONG cbPublicExp;
    ULONG cbModulus;
    ULONG cbPrime1;
    ULONG cbPrime2;
  } BCRYPT_RSAKEY_BLOB;
  typedef struct _BCRYPT_ECCKEY_BLOB {
    ULONG dwMagic;
    ULONG cbKey;
  } BCRYPT_ECCKEY_BLOB,*PBCRYPT_ECCKEY_BLOB;
  typedef struct _BCRYPT_DH_KEY_BLOB {
    ULONG dwMagic;
    ULONG cbKey;
  } BCRYPT_DH_KEY_BLOB,*PBCRYPT_DH_KEY_BLOB;
  typedef struct _BCRYPT_DH_PARAMETER_HEADER {
    ULONG cbLength;
    ULONG dwMagic;
    ULONG cbKeyLength;
  } BCRYPT_DH_PARAMETER_HEADER;
  typedef struct _BCRYPT_DSA_KEY_BLOB {
    ULONG dwMagic;
    ULONG cbKey;
    UCHAR Count[4];
    UCHAR Seed[20];
    UCHAR q[20];
  } BCRYPT_DSA_KEY_BLOB,*PBCRYPT_DSA_KEY_BLOB;
  typedef enum {
    DSA_HASH_ALGORITHM_SHA1,
    DSA_HASH_ALGORITHM_SHA256,
    DSA_HASH_ALGORITHM_SHA512
  } HASHALGORITHM_ENUM;
  typedef enum {
    DSA_FIPS186_2,
    DSA_FIPS186_3
  } DSAFIPSVERSION_ENUM;
  typedef struct _BCRYPT_DSA_KEY_BLOB_V2 {
    ULONG dwMagic;
    ULONG cbKey;
    HASHALGORITHM_ENUM hashAlgorithm;
    DSAFIPSVERSION_ENUM standardVersion;
    ULONG cbSeedLength;
    ULONG cbGroupSize;
    UCHAR Count[4];
  } BCRYPT_DSA_KEY_BLOB_V2,*PBCRYPT_DSA_KEY_BLOB_V2;
  typedef struct _BCRYPT_KEY_DATA_BLOB_HEADER {
    ULONG dwMagic;
    ULONG dwVersion;
    ULONG cbKeyData;
  } BCRYPT_KEY_DATA_BLOB_HEADER,*PBCRYPT_KEY_DATA_BLOB_HEADER;
  typedef struct _BCRYPT_DSA_PARAMETER_HEADER {
    ULONG cbLength;
    ULONG dwMagic;
    ULONG cbKeyLength;
    UCHAR Count[4];
    UCHAR Seed[20];
    UCHAR q[20];
  } BCRYPT_DSA_PARAMETER_HEADER;
  typedef struct _BCRYPT_DSA_PARAMETER_HEADER_V2 {
    ULONG cbLength;
    ULONG dwMagic;
    ULONG cbKeyLength;
    HASHALGORITHM_ENUM hashAlgorithm;
    DSAFIPSVERSION_ENUM standardVersion;
    ULONG cbSeedLength;
    ULONG cbGroupSize;
    UCHAR Count[4];
  } BCRYPT_DSA_PARAMETER_HEADER_V2;
  typedef struct _BCRYPT_ECC_CURVE_NAMES {
    ULONG dwEccCurveNames;
    LPWSTR *pEccCurveNames;
  } BCRYPT_ECC_CURVE_NAMES;
  typedef enum {
    BCRYPT_HASH_OPERATION_HASH_DATA = 1,
    BCRYPT_HASH_OPERATION_FINISH_HASH = 2
  } BCRYPT_HASH_OPERATION_TYPE;
  typedef struct _BCRYPT_MULTI_HASH_OPERATION {
    ULONG iHash;
    BCRYPT_HASH_OPERATION_TYPE hashOperation;
    PUCHAR pbBuffer;
    ULONG cbBuffer;
  } BCRYPT_MULTI_HASH_OPERATION;
  typedef enum {
    BCRYPT_OPERATION_TYPE_HASH = 1
  } BCRYPT_MULTI_OPERATION_TYPE;
  typedef struct _BCRYPT_MULTI_OBJECT_LENGTH_STRUCT {
    ULONG cbPerObject;
    ULONG cbPerElement;
  } BCRYPT_MULTI_OBJECT_LENGTH_STRUCT;
  typedef struct _BCRYPT_ALGORITHM_IDENTIFIER {
    LPWSTR pszName;
    ULONG dwClass;
    ULONG dwFlags;
  } BCRYPT_ALGORITHM_IDENTIFIER;
  typedef struct _BCRYPT_PROVIDER_NAME {
    LPWSTR pszProviderName;
  } BCRYPT_PROVIDER_NAME;
  typedef struct _BCRYPT_INTERFACE_VERSION {
    USHORT MajorVersion;
    USHORT MinorVersion;
  } BCRYPT_INTERFACE_VERSION,*PBCRYPT_INTERFACE_VERSION;
  typedef struct _CRYPT_INTERFACE_REG {
    ULONG dwInterface;
    ULONG dwFlags;
    ULONG cFunctions;
    PWSTR *rgpszFunctions;
  } CRYPT_INTERFACE_REG,*PCRYPT_INTERFACE_REG;
  typedef struct _CRYPT_IMAGE_REG {
    PWSTR pszImage;
    ULONG cInterfaces;
    PCRYPT_INTERFACE_REG *rgpInterfaces;
  } CRYPT_IMAGE_REG,*PCRYPT_IMAGE_REG;
  typedef struct _CRYPT_PROVIDER_REG {
    ULONG cAliases;
    PWSTR *rgpszAliases;
    PCRYPT_IMAGE_REG pUM;
    PCRYPT_IMAGE_REG pKM;
  } CRYPT_PROVIDER_REG,*PCRYPT_PROVIDER_REG;
  typedef struct _CRYPT_PROVIDERS {
    ULONG cProviders;
    PWSTR *rgpszProviders;
  } CRYPT_PROVIDERS,*PCRYPT_PROVIDERS;
  typedef struct _CRYPT_CONTEXT_CONFIG {
    ULONG dwFlags;
    ULONG dwReserved;
  } CRYPT_CONTEXT_CONFIG,*PCRYPT_CONTEXT_CONFIG;
  typedef struct _CRYPT_CONTEXT_FUNCTION_CONFIG {
    ULONG dwFlags;
    ULONG dwReserved;
  } CRYPT_CONTEXT_FUNCTION_CONFIG,*PCRYPT_CONTEXT_FUNCTION_CONFIG;
  typedef struct _CRYPT_CONTEXTS {
    ULONG cContexts;
    PWSTR *rgpszContexts;
  } CRYPT_CONTEXTS,*PCRYPT_CONTEXTS;
  typedef struct _CRYPT_CONTEXT_FUNCTIONS {
    ULONG cFunctions;
    PWSTR *rgpszFunctions;
  } CRYPT_CONTEXT_FUNCTIONS,*PCRYPT_CONTEXT_FUNCTIONS;
  typedef struct _CRYPT_CONTEXT_FUNCTION_PROVIDERS {
    ULONG cProviders;
    PWSTR *rgpszProviders;
  } CRYPT_CONTEXT_FUNCTION_PROVIDERS,*PCRYPT_CONTEXT_FUNCTION_PROVIDERS;
  typedef struct _CRYPT_PROPERTY_REF {
    PWSTR pszProperty;
    ULONG cbValue;
    PUCHAR pbValue;
  } CRYPT_PROPERTY_REF,*PCRYPT_PROPERTY_REF;
  typedef struct _CRYPT_IMAGE_REF {
    PWSTR pszImage;
    ULONG dwFlags;
  } CRYPT_IMAGE_REF,*PCRYPT_IMAGE_REF;
  typedef struct _CRYPT_PROVIDER_REF {
    ULONG dwInterface;
    PWSTR pszFunction;
    PWSTR pszProvider;
    ULONG cProperties;
    PCRYPT_PROPERTY_REF *rgpProperties;
    PCRYPT_IMAGE_REF pUM;
    PCRYPT_IMAGE_REF pKM;
  } CRYPT_PROVIDER_REF,*PCRYPT_PROVIDER_REF;
  typedef struct _CRYPT_PROVIDER_REFS {
    ULONG cProviders;
    PCRYPT_PROVIDER_REF *rgpProviders;
  } CRYPT_PROVIDER_REFS,*PCRYPT_PROVIDER_REFS;
  NTSTATUS __attribute__((__stdcall__)) BCryptOpenAlgorithmProvider (BCRYPT_ALG_HANDLE *phAlgorithm, LPCWSTR pszAlgId, LPCWSTR pszImplementation, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptEnumAlgorithms (ULONG dwAlgOperations, ULONG *pAlgCount, BCRYPT_ALGORITHM_IDENTIFIER **ppAlgList, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptEnumProviders (LPCWSTR pszAlgId, ULONG *pImplCount, BCRYPT_PROVIDER_NAME **ppImplList, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptGetProperty (BCRYPT_HANDLE hObject, LPCWSTR pszProperty, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptSetProperty (BCRYPT_HANDLE hObject, LPCWSTR pszProperty, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptCloseAlgorithmProvider (BCRYPT_ALG_HANDLE hAlgorithm, ULONG dwFlags);
  void __attribute__((__stdcall__)) BCryptFreeBuffer (PVOID pvBuffer);
  NTSTATUS __attribute__((__stdcall__)) BCryptGenerateSymmetricKey (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE *phKey, PUCHAR pbKeyObject, ULONG cbKeyObject, PUCHAR pbSecret, ULONG cbSecret, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptGenerateKeyPair (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE *phKey, ULONG dwLength, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptEncrypt (BCRYPT_KEY_HANDLE hKey, PUCHAR pbInput, ULONG cbInput, void *pPaddingInfo, PUCHAR pbIV, ULONG cbIV, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptDecrypt (BCRYPT_KEY_HANDLE hKey, PUCHAR pbInput, ULONG cbInput, void *pPaddingInfo, PUCHAR pbIV, ULONG cbIV, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptExportKey (BCRYPT_KEY_HANDLE hKey, BCRYPT_KEY_HANDLE hExportKey, LPCWSTR pszBlobType, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptImportKey (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE hImportKey, LPCWSTR pszBlobType, BCRYPT_KEY_HANDLE *phKey, PUCHAR pbKeyObject, ULONG cbKeyObject, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptImportKeyPair (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_KEY_HANDLE hImportKey, LPCWSTR pszBlobType, BCRYPT_KEY_HANDLE *phKey, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptDuplicateKey (BCRYPT_KEY_HANDLE hKey, BCRYPT_KEY_HANDLE *phNewKey, PUCHAR pbKeyObject, ULONG cbKeyObject, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptFinalizeKeyPair (BCRYPT_KEY_HANDLE hKey, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptDestroyKey (BCRYPT_KEY_HANDLE hKey);
  NTSTATUS __attribute__((__stdcall__)) BCryptDestroySecret (BCRYPT_SECRET_HANDLE hSecret);
  NTSTATUS __attribute__((__stdcall__)) BCryptSignHash (BCRYPT_KEY_HANDLE hKey, void *pPaddingInfo, PUCHAR pbInput, ULONG cbInput, PUCHAR pbOutput, ULONG cbOutput, ULONG *pcbResult, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptVerifySignature (BCRYPT_KEY_HANDLE hKey, void *pPaddingInfo, PUCHAR pbHash, ULONG cbHash, PUCHAR pbSignature, ULONG cbSignature, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptSecretAgreement (BCRYPT_KEY_HANDLE hPrivKey, BCRYPT_KEY_HANDLE hPubKey, BCRYPT_SECRET_HANDLE *phAgreedSecret, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptDeriveKey (BCRYPT_SECRET_HANDLE hSharedSecret, LPCWSTR pwszKDF, BCryptBufferDesc *pParameterList, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG *pcbResult, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptKeyDerivation (BCRYPT_KEY_HANDLE hKey, BCryptBufferDesc *pParameterList, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG *pcbResult, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptCreateHash (BCRYPT_ALG_HANDLE hAlgorithm, BCRYPT_HASH_HANDLE *phHash, PUCHAR pbHashObject, ULONG cbHashObject, PUCHAR pbSecret, ULONG cbSecret, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptHashData (BCRYPT_HASH_HANDLE hHash, PUCHAR pbInput, ULONG cbInput, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptFinishHash (BCRYPT_HASH_HANDLE hHash, PUCHAR pbOutput, ULONG cbOutput, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptDuplicateHash (BCRYPT_HASH_HANDLE hHash, BCRYPT_HASH_HANDLE *phNewHash, PUCHAR pbHashObject, ULONG cbHashObject, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptDestroyHash (BCRYPT_HASH_HANDLE hHash);
  NTSTATUS __attribute__((__stdcall__)) BCryptGenRandom (BCRYPT_ALG_HANDLE hAlgorithm, PUCHAR pbBuffer, ULONG cbBuffer, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptDeriveKeyCapi (BCRYPT_HASH_HANDLE hHash, BCRYPT_ALG_HANDLE hTargetAlg, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptDeriveKeyPBKDF2 (BCRYPT_ALG_HANDLE hPrf, PUCHAR pbPassword, ULONG cbPassword, PUCHAR pbSalt, ULONG cbSalt, ULONGLONG cIterations, PUCHAR pbDerivedKey, ULONG cbDerivedKey, ULONG dwFlags);
  NTSTATUS __attribute__((__stdcall__)) BCryptResolveProviders (LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, LPCWSTR pszProvider, ULONG dwMode, ULONG dwFlags, ULONG *pcbBuffer, PCRYPT_PROVIDER_REFS *ppBuffer);
  NTSTATUS __attribute__((__stdcall__)) BCryptGetFipsAlgorithmMode (BOOLEAN *pfEnabled);
  NTSTATUS __attribute__((__stdcall__)) BCryptQueryProviderRegistration (LPCWSTR pszProvider, ULONG dwMode, ULONG dwInterface, ULONG *pcbBuffer, PCRYPT_PROVIDER_REG *ppBuffer);
  NTSTATUS __attribute__((__stdcall__)) BCryptEnumRegisteredProviders (ULONG *pcbBuffer, PCRYPT_PROVIDERS *ppBuffer);
  NTSTATUS __attribute__((__stdcall__)) BCryptCreateContext (ULONG dwTable, LPCWSTR pszContext, PCRYPT_CONTEXT_CONFIG pConfig);
  NTSTATUS __attribute__((__stdcall__)) BCryptDeleteContext (ULONG dwTable, LPCWSTR pszContext);
  NTSTATUS __attribute__((__stdcall__)) BCryptEnumContexts (ULONG dwTable, ULONG *pcbBuffer, PCRYPT_CONTEXTS *ppBuffer);
  NTSTATUS __attribute__((__stdcall__)) BCryptConfigureContext (ULONG dwTable, LPCWSTR pszContext, PCRYPT_CONTEXT_CONFIG pConfig);
  NTSTATUS __attribute__((__stdcall__)) BCryptQueryContextConfiguration (ULONG dwTable, LPCWSTR pszContext, ULONG *pcbBuffer, PCRYPT_CONTEXT_CONFIG *ppBuffer);
  NTSTATUS __attribute__((__stdcall__)) BCryptAddContextFunction (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, ULONG dwPosition);
  NTSTATUS __attribute__((__stdcall__)) BCryptRemoveContextFunction (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction);
  NTSTATUS __attribute__((__stdcall__)) BCryptEnumContextFunctions (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, ULONG *pcbBuffer, PCRYPT_CONTEXT_FUNCTIONS *ppBuffer);
  NTSTATUS __attribute__((__stdcall__)) BCryptConfigureContextFunction (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, PCRYPT_CONTEXT_FUNCTION_CONFIG pConfig);
  NTSTATUS __attribute__((__stdcall__)) BCryptQueryContextFunctionConfiguration (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, ULONG *pcbBuffer, PCRYPT_CONTEXT_FUNCTION_CONFIG *ppBuffer);
  NTSTATUS __attribute__((__stdcall__)) BCryptEnumContextFunctionProviders (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, ULONG *pcbBuffer, PCRYPT_CONTEXT_FUNCTION_PROVIDERS *ppBuffer);
  NTSTATUS __attribute__((__stdcall__)) BCryptSetContextFunctionProperty (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, LPCWSTR pszProperty, ULONG cbValue, PUCHAR pbValue);
  NTSTATUS __attribute__((__stdcall__)) BCryptQueryContextFunctionProperty (ULONG dwTable, LPCWSTR pszContext, ULONG dwInterface, LPCWSTR pszFunction, LPCWSTR pszProperty, ULONG *pcbValue, PUCHAR *ppbValue);
  NTSTATUS __attribute__((__stdcall__)) BCryptRegisterConfigChangeNotify (HANDLE *phEvent);
  NTSTATUS __attribute__((__stdcall__)) BCryptUnregisterConfigChangeNotify (HANDLE hEvent);
#define __NCRYPT_H__ 
  typedef LONG SECURITY_STATUS;
#define __SECSTATUS_DEFINED__ 
#define NCRYPT_MAX_KEY_NAME_LENGTH 512
#define NCRYPT_MAX_ALG_ID_LENGTH 512
#define MS_KEY_STORAGE_PROVIDER L"Microsoft Software Key Storage Provider"
#define MS_SMART_CARD_KEY_STORAGE_PROVIDER L"Microsoft Smart Card Key Storage Provider"
#define MS_PLATFORM_KEY_STORAGE_PROVIDER L"Microsoft Platform Crypto Provider"
#define NCRYPT_RSA_ALGORITHM BCRYPT_RSA_ALGORITHM
#define NCRYPT_RSA_SIGN_ALGORITHM BCRYPT_RSA_SIGN_ALGORITHM
#define NCRYPT_DH_ALGORITHM BCRYPT_DH_ALGORITHM
#define NCRYPT_DSA_ALGORITHM BCRYPT_DSA_ALGORITHM
#define NCRYPT_MD2_ALGORITHM BCRYPT_MD2_ALGORITHM
#define NCRYPT_MD4_ALGORITHM BCRYPT_MD4_ALGORITHM
#define NCRYPT_MD5_ALGORITHM BCRYPT_MD5_ALGORITHM
#define NCRYPT_SHA1_ALGORITHM BCRYPT_SHA1_ALGORITHM
#define NCRYPT_SHA256_ALGORITHM BCRYPT_SHA256_ALGORITHM
#define NCRYPT_SHA384_ALGORITHM BCRYPT_SHA384_ALGORITHM
#define NCRYPT_SHA512_ALGORITHM BCRYPT_SHA512_ALGORITHM
#define NCRYPT_ECDSA_P256_ALGORITHM BCRYPT_ECDSA_P256_ALGORITHM
#define NCRYPT_ECDSA_P384_ALGORITHM BCRYPT_ECDSA_P384_ALGORITHM
#define NCRYPT_ECDSA_P521_ALGORITHM BCRYPT_ECDSA_P521_ALGORITHM
#define NCRYPT_ECDH_P256_ALGORITHM BCRYPT_ECDH_P256_ALGORITHM
#define NCRYPT_ECDH_P384_ALGORITHM BCRYPT_ECDH_P384_ALGORITHM
#define NCRYPT_ECDH_P521_ALGORITHM BCRYPT_ECDH_P521_ALGORITHM
#define NCRYPT_KEY_STORAGE_ALGORITHM L"KEY_STORAGE"
#define NCRYPT_CIPHER_INTERFACE BCRYPT_CIPHER_INTERFACE
#define NCRYPT_HASH_INTERFACE BCRYPT_HASH_INTERFACE
#define NCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE BCRYPT_ASYMMETRIC_ENCRYPTION_INTERFACE
#define NCRYPT_SECRET_AGREEMENT_INTERFACE BCRYPT_SECRET_AGREEMENT_INTERFACE
#define NCRYPT_SIGNATURE_INTERFACE BCRYPT_SIGNATURE_INTERFACE
#define NCRYPT_KEY_STORAGE_INTERFACE 0x00010001
#define NCRYPT_SCHANNEL_INTERFACE 0x00010002
#define NCRYPT_SCHANNEL_SIGNATURE_INTERFACE 0x00010003
#define NCRYPT_RSA_ALGORITHM_GROUP NCRYPT_RSA_ALGORITHM
#define NCRYPT_DH_ALGORITHM_GROUP NCRYPT_DH_ALGORITHM
#define NCRYPT_DSA_ALGORITHM_GROUP NCRYPT_DSA_ALGORITHM
#define NCRYPT_ECDSA_ALGORITHM_GROUP L"ECDSA"
#define NCRYPT_ECDH_ALGORITHM_GROUP L"ECDH"
#define NCRYPTBUFFER_VERSION 0
#define NCRYPTBUFFER_EMPTY 0
#define NCRYPTBUFFER_DATA 1
#define NCRYPTBUFFER_PROTECTION_DESCRIPTOR_STRING 3
#define NCRYPTBUFFER_PROTECTION_FLAGS 4
#define NCRYPTBUFFER_SSL_CLIENT_RANDOM 20
#define NCRYPTBUFFER_SSL_SERVER_RANDOM 21
#define NCRYPTBUFFER_SSL_HIGHEST_VERSION 22
#define NCRYPTBUFFER_SSL_CLEAR_KEY 23
#define NCRYPTBUFFER_SSL_KEY_ARG_DATA 24
#define NCRYPTBUFFER_PKCS_OID 40
#define NCRYPTBUFFER_PKCS_ALG_OID 41
#define NCRYPTBUFFER_PKCS_ALG_PARAM 42
#define NCRYPTBUFFER_PKCS_ALG_ID 43
#define NCRYPTBUFFER_PKCS_ATTRS 44
#define NCRYPTBUFFER_PKCS_KEY_NAME 45
#define NCRYPTBUFFER_PKCS_SECRET 46
#define NCRYPTBUFFER_CERT_BLOB 47
#define NCRYPT_NO_PADDING_FLAG 0x1
#define NCRYPT_PAD_PKCS1_FLAG 0x2
#define NCRYPT_PAD_OAEP_FLAG 0x4
#define NCRYPT_PAD_PSS_FLAG 0x8
  typedef LPVOID (__attribute__((__stdcall__)) *PFN_NCRYPT_ALLOC) (SIZE_T cbSize);
  typedef void (__attribute__((__stdcall__)) *PFN_NCRYPT_FREE) (LPVOID pv);
  typedef struct NCRYPT_ALLOC_PARA {
    DWORD cbSize;
    PFN_NCRYPT_ALLOC pfnAlloc;
    PFN_NCRYPT_FREE pfnFree;
  } NCRYPT_ALLOC_PARA;
  typedef BCryptBuffer NCryptBuffer;
  typedef BCryptBuffer *PNCryptBuffer;
  typedef BCryptBufferDesc NCryptBufferDesc;
  typedef BCryptBufferDesc *PNCryptBufferDesc;
  typedef ULONG_PTR NCRYPT_HANDLE;
  typedef ULONG_PTR NCRYPT_PROV_HANDLE;
  typedef ULONG_PTR NCRYPT_KEY_HANDLE;
  typedef ULONG_PTR NCRYPT_HASH_HANDLE;
  typedef ULONG_PTR NCRYPT_SECRET_HANDLE;
#define NCRYPT_NO_KEY_VALIDATION BCRYPT_NO_KEY_VALIDATION
#define NCRYPT_MACHINE_KEY_FLAG 0x20
#define NCRYPT_SILENT_FLAG 0x40
#define NCRYPT_OVERWRITE_KEY_FLAG 0x80
#define NCRYPT_WRITE_KEY_TO_LEGACY_STORE_FLAG 0x200
#define NCRYPT_DO_NOT_FINALIZE_FLAG 0x400
#define NCRYPT_PERSIST_ONLY_FLAG 0x40000000
#define NCRYPT_PERSIST_FLAG 0x80000000
#define NCRYPT_REGISTER_NOTIFY_FLAG 0x1
#define NCRYPT_UNREGISTER_NOTIFY_FLAG 0x2
#define NCRYPT_CIPHER_OPERATION BCRYPT_CIPHER_OPERATION
#define NCRYPT_HASH_OPERATION BCRYPT_HASH_OPERATION
#define NCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION
#define NCRYPT_SECRET_AGREEMENT_OPERATION BCRYPT_SECRET_AGREEMENT_OPERATION
#define NCRYPT_SIGNATURE_OPERATION BCRYPT_SIGNATURE_OPERATION
#define NCRYPT_RNG_OPERATION BCRYPT_RNG_OPERATION
#define NCRYPT_MACHINE_KEY_FLAG 0x20
#define NCRYPT_MACHINE_KEY_FLAG 0x20
#define NCRYPT_SILENT_FLAG 0x40
#define NCRYPT_MACHINE_KEY_FLAG 0x20
#define NCRYPT_OVERWRITE_KEY_FLAG 0x80
  typedef struct _NCryptAlgorithmName {
    LPWSTR pszName;
    DWORD dwClass;
    DWORD dwAlgOperations;
    DWORD dwFlags;
  } NCryptAlgorithmName;
  typedef struct NCryptKeyName {
    LPWSTR pszName;
    LPWSTR pszAlgid;
    DWORD dwLegacyKeySpec;
    DWORD dwFlags;
  } NCryptKeyName;
  typedef struct NCryptProviderName {
    LPWSTR pszName;
    LPWSTR pszComment;
  } NCryptProviderName;
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptOpenStorageProvider (NCRYPT_PROV_HANDLE *phProvider, LPCWSTR pszProviderName, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptEnumAlgorithms (NCRYPT_PROV_HANDLE hProvider, DWORD dwAlgOperations, DWORD *pdwAlgCount, NCryptAlgorithmName **ppAlgList, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptIsAlgSupported (NCRYPT_PROV_HANDLE hProvider, LPCWSTR pszAlgId, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptEnumKeys (NCRYPT_PROV_HANDLE hProvider, LPCWSTR pszScope, NCryptKeyName **ppKeyName, PVOID *ppEnumState, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptEnumStorageProviders (DWORD *pdwProviderCount, NCryptProviderName **ppProviderList, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptFreeBuffer (PVOID pvInput);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptOpenKey (NCRYPT_PROV_HANDLE hProvider, NCRYPT_KEY_HANDLE *phKey, LPCWSTR pszKeyName, DWORD dwLegacyKeySpec, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptCreatePersistedKey (NCRYPT_PROV_HANDLE hProvider, NCRYPT_KEY_HANDLE *phKey, LPCWSTR pszAlgId, LPCWSTR pszKeyName, DWORD dwLegacyKeySpec, DWORD dwFlags);
#define NCRYPT_NAME_PROPERTY L"Name"
#define NCRYPT_UNIQUE_NAME_PROPERTY L"Unique Name"
#define NCRYPT_ALGORITHM_PROPERTY L"Algorithm Name"
#define NCRYPT_LENGTH_PROPERTY L"Length"
#define NCRYPT_LENGTHS_PROPERTY L"Lengths"
#define NCRYPT_BLOCK_LENGTH_PROPERTY L"Block Length"
#define NCRYPT_UI_POLICY_PROPERTY L"UI Policy"
#define NCRYPT_EXPORT_POLICY_PROPERTY L"Export Policy"
#define NCRYPT_WINDOW_HANDLE_PROPERTY L"HWND Handle"
#define NCRYPT_USE_CONTEXT_PROPERTY L"Use Context"
#define NCRYPT_IMPL_TYPE_PROPERTY L"Impl Type"
#define NCRYPT_KEY_USAGE_PROPERTY L"Key Usage"
#define NCRYPT_KEY_TYPE_PROPERTY L"Key Type"
#define NCRYPT_VERSION_PROPERTY L"Version"
#define NCRYPT_SECURITY_DESCR_SUPPORT_PROPERTY L"Security Descr Support"
#define NCRYPT_SECURITY_DESCR_PROPERTY L"Security Descr"
#define NCRYPT_USE_COUNT_ENABLED_PROPERTY L"Enabled Use Count"
#define NCRYPT_USE_COUNT_PROPERTY L"Use Count"
#define NCRYPT_LAST_MODIFIED_PROPERTY L"Modified"
#define NCRYPT_MAX_NAME_LENGTH_PROPERTY L"Max Name Length"
#define NCRYPT_ALGORITHM_GROUP_PROPERTY L"Algorithm Group"
#define NCRYPT_DH_PARAMETERS_PROPERTY BCRYPT_DH_PARAMETERS
#define NCRYPT_PROVIDER_HANDLE_PROPERTY L"Provider Handle"
#define NCRYPT_PIN_PROPERTY L"SmartCardPin"
#define NCRYPT_READER_PROPERTY L"SmartCardReader"
#define NCRYPT_SMARTCARD_GUID_PROPERTY L"SmartCardGuid"
#define NCRYPT_CERTIFICATE_PROPERTY L"SmartCardKeyCertificate"
#define NCRYPT_PIN_PROMPT_PROPERTY L"SmartCardPinPrompt"
#define NCRYPT_USER_CERTSTORE_PROPERTY L"SmartCardUserCertStore"
#define NCRYPT_ROOT_CERTSTORE_PROPERTY L"SmartcardRootCertStore"
#define NCRYPT_SECURE_PIN_PROPERTY L"SmartCardSecurePin"
#define NCRYPT_ASSOCIATED_ECDH_KEY L"SmartCardAssociatedECDHKey"
#define NCRYPT_SCARD_PIN_ID L"SmartCardPinId"
#define NCRYPT_SCARD_PIN_INFO L"SmartCardPinInfo"
#define NCRYPT_MAX_PROPERTY_NAME 64
#define NCRYPT_MAX_PROPERTY_DATA 0x100000
#define NCRYPT_ALLOW_EXPORT_FLAG 0x1
#define NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG 0x2
#define NCRYPT_ALLOW_ARCHIVING_FLAG 0x00000004
#define NCRYPT_ALLOW_PLAINTEXT_ARCHIVING_FLAG 0x00000008
#define NCRYPT_IMPL_HARDWARE_FLAG 0x1
#define NCRYPT_IMPL_SOFTWARE_FLAG 0x2
#define NCRYPT_IMPL_REMOVABLE_FLAG 0x00000008
#define NCRYPT_IMPL_HARDWARE_RNG_FLAG 0x00000010
#define NCRYPT_ALLOW_DECRYPT_FLAG 0x1
#define NCRYPT_ALLOW_SIGNING_FLAG 0x2
#define NCRYPT_ALLOW_KEY_AGREEMENT_FLAG 0x00000004
#define NCRYPT_ALLOW_ALL_USAGES 0x00ffffff
#define NCRYPT_UI_PROTECT_KEY_FLAG 0x1
#define NCRYPT_UI_FORCE_HIGH_PROTECTION_FLAG 0x2
#define NCRYPT_PERSIST_ONLY_FLAG 0x40000000
#define NCRYPT_PERSIST_FLAG 0x80000000
#define NCRYPT_PERSIST_ONLY_FLAG 0x40000000
typedef struct __NCRYPT_UI_POLICY {
    DWORD dwVersion;
    DWORD dwFlags;
    LPCWSTR pszCreationTitle;
    LPCWSTR pszFriendlyName;
    LPCWSTR pszDescription;
  } NCRYPT_UI_POLICY;
  typedef struct __NCRYPT_SUPPORTED_LENGTHS {
    DWORD dwMinLength;
    DWORD dwMaxLength;
    DWORD dwIncrement;
    DWORD dwDefaultLength;
  } NCRYPT_SUPPORTED_LENGTHS;
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptGetProperty (NCRYPT_HANDLE hObject, LPCWSTR pszProperty, PBYTE pbOutput, DWORD cbOutput, DWORD *pcbResult, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptSetProperty (NCRYPT_HANDLE hObject, LPCWSTR pszProperty, PBYTE pbInput, DWORD cbInput, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptFinalizeKey (NCRYPT_KEY_HANDLE hKey, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptEncrypt (NCRYPT_KEY_HANDLE hKey, PBYTE pbInput, DWORD cbInput, void *pPaddingInfo, PBYTE pbOutput, DWORD cbOutput, DWORD *pcbResult, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptDecrypt (NCRYPT_KEY_HANDLE hKey, PBYTE pbInput, DWORD cbInput, void *pPaddingInfo, PBYTE pbOutput, DWORD cbOutput, DWORD *pcbResult, DWORD dwFlags);
#define NCRYPT_PKCS7_ENVELOPE_BLOB L"PKCS7_ENVELOPE"
#define NCRYPT_PKCS8_PRIVATE_KEY_BLOB L"PKCS8_PRIVATEKEY"
#define NCRYPT_OPAQUETRANSPORT_BLOB L"OpaqueTransport"
#define NCRYPT_MACHINE_KEY_FLAG 0x20
#define NCRYPT_EXPORT_LEGACY_FLAG 0x00000800
#define NCRYPT_REGISTER_NOTIFY_FLAG 0x1
#define NCRYPT_UNREGISTER_NOTIFY_FLAG 0x2
#define NCRYPT_MACHINE_KEY_FLAG 0x20
#define NCRYPT_KEY_STORAGE_INTERFACE_VERSION BCRYPT_MAKE_INTERFACE_VERSION (1, 0)
#define NCRYPT_KEY_STORAGE_INTERFACE_VERSION_2 BCRYPT_MAKE_INTERFACE_VERSION (2, 0)
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptImportKey (NCRYPT_PROV_HANDLE hProvider, NCRYPT_KEY_HANDLE hImportKey, LPCWSTR pszBlobType, NCryptBufferDesc *pParameterList, NCRYPT_KEY_HANDLE *phKey, PBYTE pbData, DWORD cbData, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptExportKey (NCRYPT_KEY_HANDLE hKey, NCRYPT_KEY_HANDLE hExportKey, LPCWSTR pszBlobType, NCryptBufferDesc *pParameterList, PBYTE pbOutput, DWORD cbOutput, DWORD *pcbResult, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptSignHash (NCRYPT_KEY_HANDLE hKey, void *pPaddingInfo, PBYTE pbHashValue, DWORD cbHashValue, PBYTE pbSignature, DWORD cbSignature, DWORD *pcbResult, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptVerifySignature (NCRYPT_KEY_HANDLE hKey, void *pPaddingInfo, PBYTE pbHashValue, DWORD cbHashValue, PBYTE pbSignature, DWORD cbSignature, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptDeleteKey (NCRYPT_KEY_HANDLE hKey, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptFreeObject (NCRYPT_HANDLE hObject);
  WINBOOL __attribute__((__stdcall__)) NCryptIsKeyHandle (NCRYPT_KEY_HANDLE hKey);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptTranslateHandle (NCRYPT_PROV_HANDLE *phProvider, NCRYPT_KEY_HANDLE *phKey, HCRYPTPROV hLegacyProv, HCRYPTKEY hLegacyKey, DWORD dwLegacyKeySpec, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptNotifyChangeKey (NCRYPT_PROV_HANDLE hProvider, HANDLE *phEvent, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptSecretAgreement (NCRYPT_KEY_HANDLE hPrivKey, NCRYPT_KEY_HANDLE hPubKey, NCRYPT_SECRET_HANDLE *phAgreedSecret, DWORD dwFlags);
  SECURITY_STATUS __attribute__((__stdcall__)) NCryptDeriveKey (NCRYPT_SECRET_HANDLE hSharedSecret, LPCWSTR pwszKDF, NCryptBufferDesc *pParameterList, PBYTE pbDerivedKey, DWORD cbDerivedKey, DWORD *pcbResult, ULONG dwFlags);
  typedef struct _CRYPT_BIT_BLOB {
    DWORD cbData;
    BYTE *pbData;
    DWORD cUnusedBits;
  } CRYPT_BIT_BLOB,*PCRYPT_BIT_BLOB;
  typedef struct _CRYPT_ALGORITHM_IDENTIFIER {
    LPSTR pszObjId;
    CRYPT_OBJID_BLOB Parameters;
  } CRYPT_ALGORITHM_IDENTIFIER,*PCRYPT_ALGORITHM_IDENTIFIER;
#define szOID_RSA "1.2.840.113549"
#define szOID_PKCS "1.2.840.113549.1"
#define szOID_RSA_HASH "1.2.840.113549.2"
#define szOID_RSA_ENCRYPT "1.2.840.113549.3"
#define szOID_PKCS_1 "1.2.840.113549.1.1"
#define szOID_PKCS_2 "1.2.840.113549.1.2"
#define szOID_PKCS_3 "1.2.840.113549.1.3"
#define szOID_PKCS_4 "1.2.840.113549.1.4"
#define szOID_PKCS_5 "1.2.840.113549.1.5"
#define szOID_PKCS_6 "1.2.840.113549.1.6"
#define szOID_PKCS_7 "1.2.840.113549.1.7"
#define szOID_PKCS_8 "1.2.840.113549.1.8"
#define szOID_PKCS_9 "1.2.840.113549.1.9"
#define szOID_PKCS_10 "1.2.840.113549.1.10"
#define szOID_PKCS_12 "1.2.840.113549.1.12"
#define szOID_RSA_RSA "1.2.840.113549.1.1.1"
#define szOID_RSA_MD2RSA "1.2.840.113549.1.1.2"
#define szOID_RSA_MD4RSA "1.2.840.113549.1.1.3"
#define szOID_RSA_MD5RSA "1.2.840.113549.1.1.4"
#define szOID_RSA_SHA1RSA "1.2.840.113549.1.1.5"
#define szOID_RSA_SETOAEP_RSA "1.2.840.113549.1.1.6"
#define szOID_RSAES_OAEP "1.2.840.113549.1.1.7"
#define szOID_RSA_MGF1 "1.2.840.113549.1.1.8"
#define szOID_RSA_PSPECIFIED "1.2.840.113549.1.1.9"
#define szOID_RSA_SSA_PSS "1.2.840.113549.1.1.10"
#define szOID_RSA_SHA256RSA "1.2.840.113549.1.1.11"
#define szOID_RSA_SHA384RSA "1.2.840.113549.1.1.12"
#define szOID_RSA_SHA512RSA "1.2.840.113549.1.1.13"
#define szOID_RSA_DH "1.2.840.113549.1.3.1"
#define szOID_RSA_data "1.2.840.113549.1.7.1"
#define szOID_RSA_signedData "1.2.840.113549.1.7.2"
#define szOID_RSA_envelopedData "1.2.840.113549.1.7.3"
#define szOID_RSA_signEnvData "1.2.840.113549.1.7.4"
#define szOID_RSA_digestedData "1.2.840.113549.1.7.5"
#define szOID_RSA_hashedData "1.2.840.113549.1.7.5"
#define szOID_RSA_encryptedData "1.2.840.113549.1.7.6"
#define szOID_RSA_emailAddr "1.2.840.113549.1.9.1"
#define szOID_RSA_unstructName "1.2.840.113549.1.9.2"
#define szOID_RSA_contentType "1.2.840.113549.1.9.3"
#define szOID_RSA_messageDigest "1.2.840.113549.1.9.4"
#define szOID_RSA_signingTime "1.2.840.113549.1.9.5"
#define szOID_RSA_counterSign "1.2.840.113549.1.9.6"
#define szOID_RSA_challengePwd "1.2.840.113549.1.9.7"
#define szOID_RSA_unstructAddr "1.2.840.113549.1.9.8"
#define szOID_RSA_extCertAttrs "1.2.840.113549.1.9.9"
#define szOID_RSA_certExtensions "1.2.840.113549.1.9.14"
#define szOID_RSA_SMIMECapabilities "1.2.840.113549.1.9.15"
#define szOID_RSA_preferSignedData "1.2.840.113549.1.9.15.1"
#define szOID_TIMESTAMP_TOKEN "1.2.840.113549.1.9.16.1.4"
#define szOID_RFC3161_counterSign "1.3.6.1.4.1.311.3.3.1"
#define szOID_RSA_SMIMEalg "1.2.840.113549.1.9.16.3"
#define szOID_RSA_SMIMEalgESDH "1.2.840.113549.1.9.16.3.5"
#define szOID_RSA_SMIMEalgCMS3DESwrap "1.2.840.113549.1.9.16.3.6"
#define szOID_RSA_SMIMEalgCMSRC2wrap "1.2.840.113549.1.9.16.3.7"
#define szOID_RSA_MD2 "1.2.840.113549.2.2"
#define szOID_RSA_MD4 "1.2.840.113549.2.4"
#define szOID_RSA_MD5 "1.2.840.113549.2.5"
#define szOID_RSA_RC2CBC "1.2.840.113549.3.2"
#define szOID_RSA_RC4 "1.2.840.113549.3.4"
#define szOID_RSA_DES_EDE3_CBC "1.2.840.113549.3.7"
#define szOID_RSA_RC5_CBCPad "1.2.840.113549.3.9"
#define szOID_ANSI_X942 "1.2.840.10046"
#define szOID_ANSI_X942_DH "1.2.840.10046.2.1"
#define szOID_X957 "1.2.840.10040"
#define szOID_X957_DSA "1.2.840.10040.4.1"
#define szOID_X957_SHA1DSA "1.2.840.10040.4.3"
#define szOID_ECC_PUBLIC_KEY "1.2.840.10045.2.1"
#define szOID_ECC_CURVE_P256 "1.2.840.10045.3.1.7"
#define szOID_ECC_CURVE_P384 "1.3.132.0.34"
#define szOID_ECC_CURVE_P521 "1.3.132.0.35"
#define szOID_ECC_CURVE_BRAINPOOLP160R1 "1.3.36.3.3.2.8.1.1.1"
#define szOID_ECC_CURVE_BRAINPOOLP160T1 "1.3.36.3.3.2.8.1.1.2"
#define szOID_ECC_CURVE_BRAINPOOLP192R1 "1.3.36.3.3.2.8.1.1.3"
#define szOID_ECC_CURVE_BRAINPOOLP192T1 "1.3.36.3.3.2.8.1.1.4"
#define szOID_ECC_CURVE_BRAINPOOLP224R1 "1.3.36.3.3.2.8.1.1.5"
#define szOID_ECC_CURVE_BRAINPOOLP224T1 "1.3.36.3.3.2.8.1.1.6"
#define szOID_ECC_CURVE_BRAINPOOLP256R1 "1.3.36.3.3.2.8.1.1.7"
#define szOID_ECC_CURVE_BRAINPOOLP256T1 "1.3.36.3.3.2.8.1.1.8"
#define szOID_ECC_CURVE_BRAINPOOLP320R1 "1.3.36.3.3.2.8.1.1.9"
#define szOID_ECC_CURVE_BRAINPOOLP320T1 "1.3.36.3.3.2.8.1.1.10"
#define szOID_ECC_CURVE_BRAINPOOLP384R1 "1.3.36.3.3.2.8.1.1.11"
#define szOID_ECC_CURVE_BRAINPOOLP384T1 "1.3.36.3.3.2.8.1.1.12"
#define szOID_ECC_CURVE_BRAINPOOLP512R1 "1.3.36.3.3.2.8.1.1.13"
#define szOID_ECC_CURVE_BRAINPOOLP512T1 "1.3.36.3.3.2.8.1.1.14"
#define szOID_ECC_CURVE_EC192WAPI "1.2.156.11235.1.1.2.1"
#define szOID_CN_ECDSA_SHA256 "1.2.156.11235.1.1.1"
#define szOID_ECC_CURVE_NISTP192 "1.2.840.10045.3.1.1"
#define szOID_ECC_CURVE_NISTP224 "1.3.132.0.33"
#define szOID_ECC_CURVE_NISTP256 szOID_ECC_CURVE_P256
#define szOID_ECC_CURVE_NISTP384 szOID_ECC_CURVE_P384
#define szOID_ECC_CURVE_NISTP521 szOID_ECC_CURVE_P521
#define szOID_ECC_CURVE_SECP160K1 "1.3.132.0.9"
#define szOID_ECC_CURVE_SECP160R1 "1.3.132.0.8"
#define szOID_ECC_CURVE_SECP160R2 "1.3.132.0.30"
#define szOID_ECC_CURVE_SECP192K1 "1.3.132.0.31"
#define szOID_ECC_CURVE_SECP192R1 szOID_ECC_CURVE_NISTP192
#define szOID_ECC_CURVE_SECP224K1 "1.3.132.0.32"
#define szOID_ECC_CURVE_SECP224R1 szOID_ECC_CURVE_NISTP224
#define szOID_ECC_CURVE_SECP256K1 "1.3.132.0.10"
#define szOID_ECC_CURVE_SECP256R1 szOID_ECC_CURVE_P256
#define szOID_ECC_CURVE_SECP384R1 szOID_ECC_CURVE_P384
#define szOID_ECC_CURVE_SECP521R1 szOID_ECC_CURVE_P521
#define szOID_ECC_CURVE_WTLS7 szOID_ECC_CURVE_SECP160R2
#define szOID_ECC_CURVE_WTLS9 "2.23.43.1.4.9"
#define szOID_ECC_CURVE_WTLS12 szOID_ECC_CURVE_NISTP224
#define szOID_ECC_CURVE_X962P192V1 "1.2.840.10045.3.1.1"
#define szOID_ECC_CURVE_X962P192V2 "1.2.840.10045.3.1.2"
#define szOID_ECC_CURVE_X962P192V3 "1.2.840.10045.3.1.3"
#define szOID_ECC_CURVE_X962P239V1 "1.2.840.10045.3.1.4"
#define szOID_ECC_CURVE_X962P239V2 "1.2.840.10045.3.1.5"
#define szOID_ECC_CURVE_X962P239V3 "1.2.840.10045.3.1.6"
#define szOID_ECC_CURVE_X962P256V1 szOID_ECC_CURVE_P256
#define szOID_ECDSA_SHA1 "1.2.840.10045.4.1"
#define szOID_ECDSA_SPECIFIED "1.2.840.10045.4.3"
#define szOID_ECDSA_SHA256 "1.2.840.10045.4.3.2"
#define szOID_ECDSA_SHA384 "1.2.840.10045.4.3.3"
#define szOID_ECDSA_SHA512 "1.2.840.10045.4.3.4"
#define szOID_NIST_AES128_CBC "2.16.840.1.101.3.4.1.2"
#define szOID_NIST_AES192_CBC "2.16.840.1.101.3.4.1.22"
#define szOID_NIST_AES256_CBC "2.16.840.1.101.3.4.1.42"
#define szOID_NIST_AES128_WRAP "2.16.840.1.101.3.4.1.5"
#define szOID_NIST_AES192_WRAP "2.16.840.1.101.3.4.1.25"
#define szOID_NIST_AES256_WRAP "2.16.840.1.101.3.4.1.45"
#define szOID_DH_SINGLE_PASS_STDDH_SHA1_KDF "1.3.133.16.840.63.0.2"
#define szOID_DH_SINGLE_PASS_STDDH_SHA256_KDF "1.3.132.1.11.1"
#define szOID_DH_SINGLE_PASS_STDDH_SHA384_KDF "1.3.132.1.11.2"
#define szOID_DS "2.5"
#define szOID_DSALG "2.5.8"
#define szOID_DSALG_CRPT "2.5.8.1"
#define szOID_DSALG_HASH "2.5.8.2"
#define szOID_DSALG_SIGN "2.5.8.3"
#define szOID_DSALG_RSA "2.5.8.1.1"
#define szOID_OIW "1.3.14"
#define szOID_OIWSEC "1.3.14.3.2"
#define szOID_OIWSEC_md4RSA "1.3.14.3.2.2"
#define szOID_OIWSEC_md5RSA "1.3.14.3.2.3"
#define szOID_OIWSEC_md4RSA2 "1.3.14.3.2.4"
#define szOID_OIWSEC_desECB "1.3.14.3.2.6"
#define szOID_OIWSEC_desCBC "1.3.14.3.2.7"
#define szOID_OIWSEC_desOFB "1.3.14.3.2.8"
#define szOID_OIWSEC_desCFB "1.3.14.3.2.9"
#define szOID_OIWSEC_desMAC "1.3.14.3.2.10"
#define szOID_OIWSEC_rsaSign "1.3.14.3.2.11"
#define szOID_OIWSEC_dsa "1.3.14.3.2.12"
#define szOID_OIWSEC_shaDSA "1.3.14.3.2.13"
#define szOID_OIWSEC_mdc2RSA "1.3.14.3.2.14"
#define szOID_OIWSEC_shaRSA "1.3.14.3.2.15"
#define szOID_OIWSEC_dhCommMod "1.3.14.3.2.16"
#define szOID_OIWSEC_desEDE "1.3.14.3.2.17"
#define szOID_OIWSEC_sha "1.3.14.3.2.18"
#define szOID_OIWSEC_mdc2 "1.3.14.3.2.19"
#define szOID_OIWSEC_dsaComm "1.3.14.3.2.20"
#define szOID_OIWSEC_dsaCommSHA "1.3.14.3.2.21"
#define szOID_OIWSEC_rsaXchg "1.3.14.3.2.22"
#define szOID_OIWSEC_keyHashSeal "1.3.14.3.2.23"
#define szOID_OIWSEC_md2RSASign "1.3.14.3.2.24"
#define szOID_OIWSEC_md5RSASign "1.3.14.3.2.25"
#define szOID_OIWSEC_sha1 "1.3.14.3.2.26"
#define szOID_OIWSEC_dsaSHA1 "1.3.14.3.2.27"
#define szOID_OIWSEC_dsaCommSHA1 "1.3.14.3.2.28"
#define szOID_OIWSEC_sha1RSASign "1.3.14.3.2.29"
#define szOID_OIWDIR "1.3.14.7.2"
#define szOID_OIWDIR_CRPT "1.3.14.7.2.1"
#define szOID_OIWDIR_HASH "1.3.14.7.2.2"
#define szOID_OIWDIR_SIGN "1.3.14.7.2.3"
#define szOID_OIWDIR_md2 "1.3.14.7.2.2.1"
#define szOID_OIWDIR_md2RSA "1.3.14.7.2.3.1"
#define szOID_INFOSEC "2.16.840.1.101.2.1"
#define szOID_INFOSEC_sdnsSignature "2.16.840.1.101.2.1.1.1"
#define szOID_INFOSEC_mosaicSignature "2.16.840.1.101.2.1.1.2"
#define szOID_INFOSEC_sdnsConfidentiality "2.16.840.1.101.2.1.1.3"
#define szOID_INFOSEC_mosaicConfidentiality "2.16.840.1.101.2.1.1.4"
#define szOID_INFOSEC_sdnsIntegrity "2.16.840.1.101.2.1.1.5"
#define szOID_INFOSEC_mosaicIntegrity "2.16.840.1.101.2.1.1.6"
#define szOID_INFOSEC_sdnsTokenProtection "2.16.840.1.101.2.1.1.7"
#define szOID_INFOSEC_mosaicTokenProtection "2.16.840.1.101.2.1.1.8"
#define szOID_INFOSEC_sdnsKeyManagement "2.16.840.1.101.2.1.1.9"
#define szOID_INFOSEC_mosaicKeyManagement "2.16.840.1.101.2.1.1.10"
#define szOID_INFOSEC_sdnsKMandSig "2.16.840.1.101.2.1.1.11"
#define szOID_INFOSEC_mosaicKMandSig "2.16.840.1.101.2.1.1.12"
#define szOID_INFOSEC_SuiteASignature "2.16.840.1.101.2.1.1.13"
#define szOID_INFOSEC_SuiteAConfidentiality "2.16.840.1.101.2.1.1.14"
#define szOID_INFOSEC_SuiteAIntegrity "2.16.840.1.101.2.1.1.15"
#define szOID_INFOSEC_SuiteATokenProtection "2.16.840.1.101.2.1.1.16"
#define szOID_INFOSEC_SuiteAKeyManagement "2.16.840.1.101.2.1.1.17"
#define szOID_INFOSEC_SuiteAKMandSig "2.16.840.1.101.2.1.1.18"
#define szOID_INFOSEC_mosaicUpdatedSig "2.16.840.1.101.2.1.1.19"
#define szOID_INFOSEC_mosaicKMandUpdSig "2.16.840.1.101.2.1.1.20"
#define szOID_INFOSEC_mosaicUpdatedInteg "2.16.840.1.101.2.1.1.21"
#define szOID_NIST_sha256 "2.16.840.1.101.3.4.2.1"
#define szOID_NIST_sha384 "2.16.840.1.101.3.4.2.2"
#define szOID_NIST_sha512 "2.16.840.1.101.3.4.2.3"
  typedef struct _CRYPT_OBJID_TABLE {
    DWORD dwAlgId;
    LPCSTR pszObjId;
  } CRYPT_OBJID_TABLE,*PCRYPT_OBJID_TABLE;
  typedef struct _CRYPT_HASH_INFO {
    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
    CRYPT_HASH_BLOB Hash;
  } CRYPT_HASH_INFO,*PCRYPT_HASH_INFO;
  typedef struct _CERT_EXTENSION {
    LPSTR pszObjId;
    WINBOOL fCritical;
    CRYPT_OBJID_BLOB Value;
  } CERT_EXTENSION,*PCERT_EXTENSION;
  typedef const CERT_EXTENSION *PCCERT_EXTENSION;
  typedef struct _CRYPT_ATTRIBUTE_TYPE_VALUE {
    LPSTR pszObjId;
    CRYPT_OBJID_BLOB Value;
  } CRYPT_ATTRIBUTE_TYPE_VALUE,*PCRYPT_ATTRIBUTE_TYPE_VALUE;
  typedef struct _CRYPT_ATTRIBUTE {
    LPSTR pszObjId;
    DWORD cValue;
    PCRYPT_ATTR_BLOB rgValue;
  } CRYPT_ATTRIBUTE,*PCRYPT_ATTRIBUTE;
  typedef struct _CRYPT_ATTRIBUTES {
    DWORD cAttr;
    PCRYPT_ATTRIBUTE rgAttr;
  } CRYPT_ATTRIBUTES,*PCRYPT_ATTRIBUTES;
  typedef struct _CERT_RDN_ATTR {
    LPSTR pszObjId;
    DWORD dwValueType;
    CERT_RDN_VALUE_BLOB Value;
  } CERT_RDN_ATTR,*PCERT_RDN_ATTR;
#define szOID_COMMON_NAME "2.5.4.3"
#define szOID_SUR_NAME "2.5.4.4"
#define szOID_DEVICE_SERIAL_NUMBER "2.5.4.5"
#define szOID_COUNTRY_NAME "2.5.4.6"
#define szOID_LOCALITY_NAME "2.5.4.7"
#define szOID_STATE_OR_PROVINCE_NAME "2.5.4.8"
#define szOID_STREET_ADDRESS "2.5.4.9"
#define szOID_ORGANIZATION_NAME "2.5.4.10"
#define szOID_ORGANIZATIONAL_UNIT_NAME "2.5.4.11"
#define szOID_TITLE "2.5.4.12"
#define szOID_DESCRIPTION "2.5.4.13"
#define szOID_SEARCH_GUIDE "2.5.4.14"
#define szOID_BUSINESS_CATEGORY "2.5.4.15"
#define szOID_POSTAL_ADDRESS "2.5.4.16"
#define szOID_POSTAL_CODE "2.5.4.17"
#define szOID_POST_OFFICE_BOX "2.5.4.18"
#define szOID_PHYSICAL_DELIVERY_OFFICE_NAME "2.5.4.19"
#define szOID_TELEPHONE_NUMBER "2.5.4.20"
#define szOID_TELEX_NUMBER "2.5.4.21"
#define szOID_TELETEXT_TERMINAL_IDENTIFIER "2.5.4.22"
#define szOID_FACSIMILE_TELEPHONE_NUMBER "2.5.4.23"
#define szOID_X21_ADDRESS "2.5.4.24"
#define szOID_INTERNATIONAL_ISDN_NUMBER "2.5.4.25"
#define szOID_REGISTERED_ADDRESS "2.5.4.26"
#define szOID_DESTINATION_INDICATOR "2.5.4.27"
#define szOID_PREFERRED_DELIVERY_METHOD "2.5.4.28"
#define szOID_PRESENTATION_ADDRESS "2.5.4.29"
#define szOID_SUPPORTED_APPLICATION_CONTEXT "2.5.4.30"
#define szOID_MEMBER "2.5.4.31"
#define szOID_OWNER "2.5.4.32"
#define szOID_ROLE_OCCUPANT "2.5.4.33"
#define szOID_SEE_ALSO "2.5.4.34"
#define szOID_USER_PASSWORD "2.5.4.35"
#define szOID_USER_CERTIFICATE "2.5.4.36"
#define szOID_CA_CERTIFICATE "2.5.4.37"
#define szOID_AUTHORITY_REVOCATION_LIST "2.5.4.38"
#define szOID_CERTIFICATE_REVOCATION_LIST "2.5.4.39"
#define szOID_CROSS_CERTIFICATE_PAIR "2.5.4.40"
#define szOID_GIVEN_NAME "2.5.4.42"
#define szOID_INITIALS "2.5.4.43"
#define szOID_DN_QUALIFIER "2.5.4.46"
#define szOID_DOMAIN_COMPONENT "0.9.2342.19200300.100.1.25"
#define szOID_PKCS_12_FRIENDLY_NAME_ATTR "1.2.840.113549.1.9.20"
#define szOID_PKCS_12_LOCAL_KEY_ID "1.2.840.113549.1.9.21"
#define szOID_PKCS_12_KEY_PROVIDER_NAME_ATTR "1.3.6.1.4.1.311.17.1"
#define szOID_LOCAL_MACHINE_KEYSET "1.3.6.1.4.1.311.17.2"
#define szOID_PKCS_12_EXTENDED_ATTRIBUTES "1.3.6.1.4.1.311.17.3"
#define szOID_PKCS_12_PROTECTED_PASSWORD_SECRET_BAG_TYPE_ID "1.3.6.1.4.1.311.17.4"
#define szOID_KEYID_RDN "1.3.6.1.4.1.311.10.7.1"
#define szOID_EV_RDN_LOCALE "1.3.6.1.4.1.311.60.2.1.1"
#define szOID_EV_RDN_STATE_OR_PROVINCE "1.3.6.1.4.1.311.60.2.1.2"
#define szOID_EV_RDN_COUNTRY "1.3.6.1.4.1.311.60.2.1.3"
#define CERT_RDN_ANY_TYPE 0
#define CERT_RDN_ENCODED_BLOB 1
#define CERT_RDN_OCTET_STRING 2
#define CERT_RDN_NUMERIC_STRING 3
#define CERT_RDN_PRINTABLE_STRING 4
#define CERT_RDN_TELETEX_STRING 5
#define CERT_RDN_T61_STRING 5
#define CERT_RDN_VIDEOTEX_STRING 6
#define CERT_RDN_IA5_STRING 7
#define CERT_RDN_GRAPHIC_STRING 8
#define CERT_RDN_VISIBLE_STRING 9
#define CERT_RDN_ISO646_STRING 9
#define CERT_RDN_GENERAL_STRING 10
#define CERT_RDN_UNIVERSAL_STRING 11
#define CERT_RDN_INT4_STRING 11
#define CERT_RDN_BMP_STRING 12
#define CERT_RDN_UNICODE_STRING 12
#define CERT_RDN_UTF8_STRING 13
#define CERT_RDN_TYPE_MASK 0x000000ff
#define CERT_RDN_FLAGS_MASK 0xff000000
#define CERT_RDN_ENABLE_T61_UNICODE_FLAG 0x80000000
#define CERT_RDN_ENABLE_UTF8_UNICODE_FLAG 0x20000000
#define CERT_RDN_FORCE_UTF8_UNICODE_FLAG 0x10000000
#define CERT_RDN_DISABLE_CHECK_TYPE_FLAG 0x40000000
#define CERT_RDN_DISABLE_IE4_UTF8_FLAG 0x1000000
#define CERT_RDN_ENABLE_PUNYCODE_FLAG 0x2000000
#define IS_CERT_RDN_CHAR_STRING(X) (((X) & CERT_RDN_TYPE_MASK) >= CERT_RDN_NUMERIC_STRING)
  typedef struct _CERT_RDN {
    DWORD cRDNAttr;
    PCERT_RDN_ATTR rgRDNAttr;
  } CERT_RDN,*PCERT_RDN;
  typedef struct _CERT_NAME_INFO {
    DWORD cRDN;
    PCERT_RDN rgRDN;
  } CERT_NAME_INFO,*PCERT_NAME_INFO;
  typedef struct _CERT_NAME_VALUE {
    DWORD dwValueType;
    CERT_RDN_VALUE_BLOB Value;
  } CERT_NAME_VALUE,*PCERT_NAME_VALUE;
  typedef struct _CERT_PUBLIC_KEY_INFO {
    CRYPT_ALGORITHM_IDENTIFIER Algorithm;
    CRYPT_BIT_BLOB PublicKey;
  } CERT_PUBLIC_KEY_INFO,*PCERT_PUBLIC_KEY_INFO;
#define CERT_RSA_PUBLIC_KEY_OBJID szOID_RSA_RSA
#define CERT_DEFAULT_OID_PUBLIC_KEY_SIGN szOID_RSA_RSA
#define CERT_DEFAULT_OID_PUBLIC_KEY_XCHG szOID_RSA_RSA
  typedef struct _CRYPT_ECC_PRIVATE_KEY_INFO {
    DWORD dwVersion;
    CRYPT_DER_BLOB PrivateKey;
    LPSTR szCurveOid;
    CRYPT_BIT_BLOB PublicKey;
  } CRYPT_ECC_PRIVATE_KEY_INFO,*PCRYPT_ECC_PRIVATE_KEY_INFO;
#define CRYPT_ECC_PRIVATE_KEY_INFO_v1 1
  typedef struct _CRYPT_PRIVATE_KEY_INFO {
    DWORD Version;
    CRYPT_ALGORITHM_IDENTIFIER Algorithm;
    CRYPT_DER_BLOB PrivateKey;
    PCRYPT_ATTRIBUTES pAttributes;
  } CRYPT_PRIVATE_KEY_INFO,*PCRYPT_PRIVATE_KEY_INFO;
  typedef struct _CRYPT_ENCRYPTED_PRIVATE_KEY_INFO {
    CRYPT_ALGORITHM_IDENTIFIER EncryptionAlgorithm;
    CRYPT_DATA_BLOB EncryptedPrivateKey;
  } CRYPT_ENCRYPTED_PRIVATE_KEY_INFO,*PCRYPT_ENCRYPTED_PRIVATE_KEY_INFO;
  typedef WINBOOL (__attribute__((__stdcall__)) *PCRYPT_DECRYPT_PRIVATE_KEY_FUNC) (CRYPT_ALGORITHM_IDENTIFIER Algorithm, CRYPT_DATA_BLOB EncryptedPrivateKey, BYTE *pbClearTextKey, DWORD *pcbClearTextKey, LPVOID pVoidDecryptFunc);
  typedef WINBOOL (__attribute__((__stdcall__)) *PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC) (CRYPT_ALGORITHM_IDENTIFIER *pAlgorithm, CRYPT_DATA_BLOB *pClearTextPrivateKey, BYTE *pbEncryptedKey, DWORD *pcbEncryptedKey, LPVOID pVoidEncryptFunc);
  typedef WINBOOL (__attribute__((__stdcall__)) *PCRYPT_RESOLVE_HCRYPTPROV_FUNC) (CRYPT_PRIVATE_KEY_INFO *pPrivateKeyInfo, HCRYPTPROV *phCryptProv, LPVOID pVoidResolveFunc);
  typedef struct _CRYPT_PKCS8_IMPORT_PARAMS {
    CRYPT_DIGEST_BLOB PrivateKey;
    PCRYPT_RESOLVE_HCRYPTPROV_FUNC pResolvehCryptProvFunc;
    LPVOID pVoidResolveFunc;
    PCRYPT_DECRYPT_PRIVATE_KEY_FUNC pDecryptPrivateKeyFunc;
    LPVOID pVoidDecryptFunc;
  } CRYPT_PKCS8_IMPORT_PARAMS,*PCRYPT_PKCS8_IMPORT_PARAMS, CRYPT_PRIVATE_KEY_BLOB_AND_PARAMS,*PCRYPT_PRIVATE_KEY_BLOB_AND_PARAMS;
  typedef struct _CRYPT_PKCS8_EXPORT_PARAMS {
    HCRYPTPROV hCryptProv;
    DWORD dwKeySpec;
    LPSTR pszPrivateKeyObjId;
    PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC pEncryptPrivateKeyFunc;
    LPVOID pVoidEncryptFunc;
  } CRYPT_PKCS8_EXPORT_PARAMS,*PCRYPT_PKCS8_EXPORT_PARAMS;
  typedef struct _CERT_INFO {
    DWORD dwVersion;
    CRYPT_INTEGER_BLOB SerialNumber;
    CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
    CERT_NAME_BLOB Issuer;
    FILETIME NotBefore;
    FILETIME NotAfter;
    CERT_NAME_BLOB Subject;
    CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
    CRYPT_BIT_BLOB IssuerUniqueId;
    CRYPT_BIT_BLOB SubjectUniqueId;
    DWORD cExtension;
    PCERT_EXTENSION rgExtension;
  } CERT_INFO,*PCERT_INFO;
#define CERT_V1 0
#define CERT_V2 1
#define CERT_V3 2
#define CERT_INFO_VERSION_FLAG 1
#define CERT_INFO_SERIAL_NUMBER_FLAG 2
#define CERT_INFO_SIGNATURE_ALGORITHM_FLAG 3
#define CERT_INFO_ISSUER_FLAG 4
#define CERT_INFO_NOT_BEFORE_FLAG 5
#define CERT_INFO_NOT_AFTER_FLAG 6
#define CERT_INFO_SUBJECT_FLAG 7
#define CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG 8
#define CERT_INFO_ISSUER_UNIQUE_ID_FLAG 9
#define CERT_INFO_SUBJECT_UNIQUE_ID_FLAG 10
#define CERT_INFO_EXTENSION_FLAG 11
  typedef struct _CRL_ENTRY {
    CRYPT_INTEGER_BLOB SerialNumber;
    FILETIME RevocationDate;
    DWORD cExtension;
    PCERT_EXTENSION rgExtension;
  } CRL_ENTRY,*PCRL_ENTRY;
  typedef struct _CRL_INFO {
    DWORD dwVersion;
    CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
    CERT_NAME_BLOB Issuer;
    FILETIME ThisUpdate;
    FILETIME NextUpdate;
    DWORD cCRLEntry;
    PCRL_ENTRY rgCRLEntry;
    DWORD cExtension;
    PCERT_EXTENSION rgExtension;
  } CRL_INFO,*PCRL_INFO;
#define CRL_V1 0
#define CRL_V2 1
#define CERT_BUNDLE_CERTIFICATE 0
#define CERT_BUNDLE_CRL 1
  typedef struct _CERT_OR_CRL_BLOB {
    DWORD dwChoice;
    DWORD cbEncoded;
    BYTE *pbEncoded;
  } CERT_OR_CRL_BLOB,*PCERT_OR_CRL_BLOB;
  typedef struct _CERT_OR_CRL_BUNDLE {
    DWORD cItem;
    PCERT_OR_CRL_BLOB rgItem;
  } CERT_OR_CRL_BUNDLE,*PCERT_OR_CRL_BUNDLE;
  typedef struct _CERT_REQUEST_INFO {
    DWORD dwVersion;
    CERT_NAME_BLOB Subject;
    CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
    DWORD cAttribute;
    PCRYPT_ATTRIBUTE rgAttribute;
  } CERT_REQUEST_INFO,*PCERT_REQUEST_INFO;
#define CERT_REQUEST_V1 0
  typedef struct _CERT_KEYGEN_REQUEST_INFO {
    DWORD dwVersion;
    CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
    LPWSTR pwszChallengeString;
  } CERT_KEYGEN_REQUEST_INFO,*PCERT_KEYGEN_REQUEST_INFO;
#define CERT_KEYGEN_REQUEST_V1 0
  typedef struct _CERT_SIGNED_CONTENT_INFO {
    CRYPT_DER_BLOB ToBeSigned;
    CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
    CRYPT_BIT_BLOB Signature;
  } CERT_SIGNED_CONTENT_INFO,*PCERT_SIGNED_CONTENT_INFO;
  typedef struct _CTL_USAGE {
    DWORD cUsageIdentifier;
    LPSTR *rgpszUsageIdentifier;
  } CTL_USAGE,*PCTL_USAGE,CERT_ENHKEY_USAGE,*PCERT_ENHKEY_USAGE;
  typedef const CTL_USAGE *PCCTL_USAGE;
  typedef const CERT_ENHKEY_USAGE *PCCERT_ENHKEY_USAGE;
  typedef struct _CTL_ENTRY {
    CRYPT_DATA_BLOB SubjectIdentifier;
    DWORD cAttribute;
    PCRYPT_ATTRIBUTE rgAttribute;
  } CTL_ENTRY,*PCTL_ENTRY;
  typedef struct _CTL_INFO {
    DWORD dwVersion;
    CTL_USAGE SubjectUsage;
    CRYPT_DATA_BLOB ListIdentifier;
    CRYPT_INTEGER_BLOB SequenceNumber;
    FILETIME ThisUpdate;
    FILETIME NextUpdate;
    CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm;
    DWORD cCTLEntry;
    PCTL_ENTRY rgCTLEntry;
    DWORD cExtension;
    PCERT_EXTENSION rgExtension;
  } CTL_INFO,*PCTL_INFO;
#define CTL_V1 0
  typedef struct _CRYPT_TIME_STAMP_REQUEST_INFO {
    LPSTR pszTimeStampAlgorithm;
    LPSTR pszContentType;
    CRYPT_OBJID_BLOB Content;
    DWORD cAttribute;
    PCRYPT_ATTRIBUTE rgAttribute;
  } CRYPT_TIME_STAMP_REQUEST_INFO,*PCRYPT_TIME_STAMP_REQUEST_INFO;
  typedef struct _CRYPT_ENROLLMENT_NAME_VALUE_PAIR {
    LPWSTR pwszName;
    LPWSTR pwszValue;
  } CRYPT_ENROLLMENT_NAME_VALUE_PAIR,*PCRYPT_ENROLLMENT_NAME_VALUE_PAIR;
  typedef struct _CRYPT_CSP_PROVIDER {
    DWORD dwKeySpec;
    LPWSTR pwszProviderName;
    CRYPT_BIT_BLOB Signature;
  } CRYPT_CSP_PROVIDER,*PCRYPT_CSP_PROVIDER;
#define CERT_ENCODING_TYPE_MASK 0x0000ffff
#define CMSG_ENCODING_TYPE_MASK 0xffff0000
#define GET_CERT_ENCODING_TYPE(T) (T & CERT_ENCODING_TYPE_MASK)
#define GET_CMSG_ENCODING_TYPE(T) (T & CMSG_ENCODING_TYPE_MASK)
#define CRYPT_ASN_ENCODING 0x1
#define CRYPT_NDR_ENCODING 0x2
#define X509_ASN_ENCODING 0x1
#define X509_NDR_ENCODING 0x2
#define PKCS_7_ASN_ENCODING 0x10000
#define PKCS_7_NDR_ENCODING 0x20000
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptFormatObject (DWORD dwCertEncodingType, DWORD dwFormatType, DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat);
#define CRYPT_FORMAT_STR_MULTI_LINE 0x1
#define CRYPT_FORMAT_STR_NO_HEX 0x10
#define CRYPT_FORMAT_SIMPLE 0x1
#define CRYPT_FORMAT_X509 0x2
#define CRYPT_FORMAT_OID 0x4
#define CRYPT_FORMAT_RDN_SEMICOLON 0x100
#define CRYPT_FORMAT_RDN_CRLF 0x200
#define CRYPT_FORMAT_RDN_UNQUOTE 0x400
#define CRYPT_FORMAT_RDN_REVERSE 0x800
#define CRYPT_FORMAT_COMMA 0x1000
#define CRYPT_FORMAT_SEMICOLON CRYPT_FORMAT_RDN_SEMICOLON
#define CRYPT_FORMAT_CRLF CRYPT_FORMAT_RDN_CRLF
  typedef LPVOID (__attribute__((__stdcall__)) *PFN_CRYPT_ALLOC)(size_t cbSize);
  typedef void (__attribute__((__stdcall__)) *PFN_CRYPT_FREE)(LPVOID pv);
  typedef struct _CRYPT_ENCODE_PARA {
    DWORD cbSize;
    PFN_CRYPT_ALLOC pfnAlloc;
    PFN_CRYPT_FREE pfnFree;
  } CRYPT_ENCODE_PARA,*PCRYPT_ENCODE_PARA;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptEncodeObjectEx (DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, void *pvEncoded, DWORD *pcbEncoded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptEncodeObject (DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded);
#define CRYPT_ENCODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG 0x8
#define CRYPT_ENCODE_ALLOC_FLAG 0x8000
#define CRYPT_UNICODE_NAME_ENCODE_ENABLE_T61_UNICODE_FLAG CERT_RDN_ENABLE_T61_UNICODE_FLAG
#define CRYPT_UNICODE_NAME_ENCODE_ENABLE_UTF8_UNICODE_FLAG CERT_RDN_ENABLE_UTF8_UNICODE_FLAG
#define CRYPT_UNICODE_NAME_ENCODE_FORCE_UTF8_UNICODE_FLAG CERT_RDN_FORCE_UTF8_UNICODE_FLAG
#define CRYPT_UNICODE_NAME_ENCODE_DISABLE_CHECK_TYPE_FLAG CERT_RDN_DISABLE_CHECK_TYPE_FLAG
#define CRYPT_SORTED_CTL_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x10000
#define CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG 0x20000
#define CRYPT_ENCODE_ENABLE_UTF8PERCENT_FLAG 0x40000
#define CRYPT_ENCODE_ENABLE_IA5CONVERSION_FLAG (CRYPT_ENCODE_ENABLE_PUNYCODE_FLAG | CRYPT_ENCODE_ENABLE_UTF8PERCENT_FLAG)
  typedef struct _CRYPT_DECODE_PARA {
    DWORD cbSize;
    PFN_CRYPT_ALLOC pfnAlloc;
    PFN_CRYPT_FREE pfnFree;
  } CRYPT_DECODE_PARA,*PCRYPT_DECODE_PARA;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptDecodeObjectEx (DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptDecodeObject (DWORD dwCertEncodingType, LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo);
#define CRYPT_DECODE_NOCOPY_FLAG 0x1
#define CRYPT_DECODE_TO_BE_SIGNED_FLAG 0x2
#define CRYPT_DECODE_SHARE_OID_STRING_FLAG 0x4
#define CRYPT_DECODE_NO_SIGNATURE_BYTE_REVERSAL_FLAG 0x8
#define CRYPT_DECODE_ALLOC_FLAG 0x8000
#define CRYPT_UNICODE_NAME_DECODE_DISABLE_IE4_UTF8_FLAG CERT_RDN_DISABLE_IE4_UTF8_FLAG
#define CRYPT_DECODE_ENABLE_PUNYCODE_FLAG 0x2000000
#define CRYPT_DECODE_ENABLE_UTF8PERCENT_FLAG 0x4000000
#define CRYPT_DECODE_ENABLE_IA5CONVERSION_FLAG (CRYPT_DECODE_ENABLE_PUNYCODE_FLAG | CRYPT_DECODE_ENABLE_UTF8PERCENT_FLAG)
#define CRYPT_ENCODE_DECODE_NONE 0
#define X509_CERT ((LPCSTR) 1)
#define X509_CERT_TO_BE_SIGNED ((LPCSTR) 2)
#define X509_CERT_CRL_TO_BE_SIGNED ((LPCSTR) 3)
#define X509_CERT_REQUEST_TO_BE_SIGNED ((LPCSTR) 4)
#define X509_EXTENSIONS ((LPCSTR) 5)
#define X509_NAME_VALUE ((LPCSTR) 6)
#define X509_NAME ((LPCSTR) 7)
#define X509_PUBLIC_KEY_INFO ((LPCSTR) 8)
#define X509_AUTHORITY_KEY_ID ((LPCSTR) 9)
#define X509_KEY_ATTRIBUTES ((LPCSTR) 10)
#define X509_KEY_USAGE_RESTRICTION ((LPCSTR) 11)
#define X509_ALTERNATE_NAME ((LPCSTR) 12)
#define X509_BASIC_CONSTRAINTS ((LPCSTR) 13)
#define X509_KEY_USAGE ((LPCSTR) 14)
#define X509_BASIC_CONSTRAINTS2 ((LPCSTR) 15)
#define X509_CERT_POLICIES ((LPCSTR) 16)
#define PKCS_UTC_TIME ((LPCSTR) 17)
#define PKCS_TIME_REQUEST ((LPCSTR) 18)
#define RSA_CSP_PUBLICKEYBLOB ((LPCSTR) 19)
#define X509_UNICODE_NAME ((LPCSTR) 20)
#define X509_KEYGEN_REQUEST_TO_BE_SIGNED ((LPCSTR) 21)
#define PKCS_ATTRIBUTE ((LPCSTR) 22)
#define PKCS_CONTENT_INFO_SEQUENCE_OF_ANY ((LPCSTR) 23)
#define X509_UNICODE_NAME_VALUE ((LPCSTR) 24)
#define X509_ANY_STRING X509_NAME_VALUE
#define X509_UNICODE_ANY_STRING X509_UNICODE_NAME_VALUE
#define X509_OCTET_STRING ((LPCSTR) 25)
#define X509_BITS ((LPCSTR) 26)
#define X509_INTEGER ((LPCSTR) 27)
#define X509_MULTI_BYTE_INTEGER ((LPCSTR) 28)
#define X509_ENUMERATED ((LPCSTR) 29)
#define X509_CHOICE_OF_TIME ((LPCSTR) 30)
#define X509_AUTHORITY_KEY_ID2 ((LPCSTR) 31)
#define X509_AUTHORITY_INFO_ACCESS ((LPCSTR) 32)
#define X509_SUBJECT_INFO_ACCESS X509_AUTHORITY_INFO_ACCESS
#define X509_CRL_REASON_CODE X509_ENUMERATED
#define PKCS_CONTENT_INFO ((LPCSTR) 33)
#define X509_SEQUENCE_OF_ANY ((LPCSTR) 34)
#define X509_CRL_DIST_POINTS ((LPCSTR) 35)
#define X509_ENHANCED_KEY_USAGE ((LPCSTR) 36)
#define PKCS_CTL ((LPCSTR) 37)
#define X509_MULTI_BYTE_UINT ((LPCSTR) 38)
#define X509_DSS_PUBLICKEY X509_MULTI_BYTE_UINT
#define X509_DSS_PARAMETERS ((LPCSTR) 39)
#define X509_DSS_SIGNATURE ((LPCSTR) 40)
#define PKCS_RC2_CBC_PARAMETERS ((LPCSTR) 41)
#define PKCS_SMIME_CAPABILITIES ((LPCSTR) 42)
#define X509_QC_STATEMENTS_EXT ((LPCSTR) 42)
#define PKCS_RSA_PRIVATE_KEY ((LPCSTR) 43)
#define PKCS_PRIVATE_KEY_INFO ((LPCSTR) 44)
#define PKCS_ENCRYPTED_PRIVATE_KEY_INFO ((LPCSTR) 45)
#define X509_PKIX_POLICY_QUALIFIER_USERNOTICE ((LPCSTR) 46)
#define X509_DH_PUBLICKEY X509_MULTI_BYTE_UINT
#define X509_DH_PARAMETERS ((LPCSTR) 47)
#define X509_ECC_SIGNATURE ((LPCSTR) 47)
#define PKCS_ATTRIBUTES ((LPCSTR) 48)
#define PKCS_SORTED_CTL ((LPCSTR) 49)
#define X942_DH_PARAMETERS ((LPCSTR) 50)
#define X509_BITS_WITHOUT_TRAILING_ZEROES ((LPCSTR) 51)
#define X942_OTHER_INFO ((LPCSTR) 52)
#define X509_CERT_PAIR ((LPCSTR) 53)
#define X509_ISSUING_DIST_POINT ((LPCSTR) 54)
#define X509_NAME_CONSTRAINTS ((LPCSTR) 55)
#define X509_POLICY_MAPPINGS ((LPCSTR) 56)
#define X509_POLICY_CONSTRAINTS ((LPCSTR) 57)
#define X509_CROSS_CERT_DIST_POINTS ((LPCSTR) 58)
#define CMC_DATA ((LPCSTR) 59)
#define CMC_RESPONSE ((LPCSTR) 60)
#define CMC_STATUS ((LPCSTR) 61)
#define CMC_ADD_EXTENSIONS ((LPCSTR) 62)
#define CMC_ADD_ATTRIBUTES ((LPCSTR) 63)
#define X509_CERTIFICATE_TEMPLATE ((LPCSTR) 64)
#define OCSP_SIGNED_REQUEST ((LPCSTR) 65)
#define OCSP_REQUEST ((LPCSTR) 66)
#define OCSP_RESPONSE ((LPCSTR) 67)
#define OCSP_BASIC_SIGNED_RESPONSE ((LPCSTR) 68)
#define OCSP_BASIC_RESPONSE ((LPCSTR) 69)
#define X509_LOGOTYPE_EXT ((LPCSTR) 70)
#define X509_BIOMETRIC_EXT ((LPCSTR) 71)
#define CNG_RSA_PUBLIC_KEY_BLOB ((LPCSTR) 72)
#define X509_OBJECT_IDENTIFIER ((LPCSTR) 73)
#define X509_ALGORITHM_IDENTIFIER ((LPCSTR) 74)
#define PKCS_RSA_SSA_PSS_PARAMETERS ((LPCSTR) 75)
#define PKCS_RSAES_OAEP_PARAMETERS ((LPCSTR) 76)
#define ECC_CMS_SHARED_INFO ((LPCSTR) 77)
#define TIMESTAMP_REQUEST ((LPCSTR) 78)
#define TIMESTAMP_RESPONSE ((LPCSTR) 79)
#define TIMESTAMP_INFO ((LPCSTR) 80)
#define X509_CERT_BUNDLE ((LPCSTR) 81)
#define X509_ECC_PRIVATE_KEY ((LPCSTR) 82)
#define CNG_RSA_PRIVATE_KEY_BLOB ((LPCSTR) 83)
#define X509_SUBJECT_DIR_ATTRS ((LPCSTR) 84)
#define X509_ECC_PARAMETERS ((LPCSTR) 85)
#define PKCS7_SIGNER_INFO ((LPCSTR) 500)
#define CMS_SIGNER_INFO ((LPCSTR) 501)
#define szOID_AUTHORITY_KEY_IDENTIFIER "2.5.29.1"
#define szOID_KEY_ATTRIBUTES "2.5.29.2"
#define szOID_CERT_POLICIES_95 "2.5.29.3"
#define szOID_KEY_USAGE_RESTRICTION "2.5.29.4"
#define szOID_SUBJECT_ALT_NAME "2.5.29.7"
#define szOID_ISSUER_ALT_NAME "2.5.29.8"
#define szOID_BASIC_CONSTRAINTS "2.5.29.10"
#define szOID_KEY_USAGE "2.5.29.15"
#define szOID_PRIVATEKEY_USAGE_PERIOD "2.5.29.16"
#define szOID_BASIC_CONSTRAINTS2 "2.5.29.19"
#define szOID_CERT_POLICIES "2.5.29.32"
#define szOID_ANY_CERT_POLICY "2.5.29.32.0"
#define szOID_INHIBIT_ANY_POLICY "2.5.29.54"
#define szOID_AUTHORITY_KEY_IDENTIFIER2 "2.5.29.35"
#define szOID_SUBJECT_KEY_IDENTIFIER "2.5.29.14"
#define szOID_SUBJECT_ALT_NAME2 "2.5.29.17"
#define szOID_ISSUER_ALT_NAME2 "2.5.29.18"
#define szOID_CRL_REASON_CODE "2.5.29.21"
#define szOID_REASON_CODE_HOLD "2.5.29.23"
#define szOID_CRL_DIST_POINTS "2.5.29.31"
#define szOID_ENHANCED_KEY_USAGE "2.5.29.37"
#define szOID_ANY_ENHANCED_KEY_USAGE "2.5.29.37.0"
#define szOID_CRL_NUMBER "2.5.29.20"
#define szOID_DELTA_CRL_INDICATOR "2.5.29.27"
#define szOID_ISSUING_DIST_POINT "2.5.29.28"
#define szOID_FRESHEST_CRL "2.5.29.46"
#define szOID_NAME_CONSTRAINTS "2.5.29.30"
#define szOID_POLICY_MAPPINGS "2.5.29.33"
#define szOID_LEGACY_POLICY_MAPPINGS "2.5.29.5"
#define szOID_POLICY_CONSTRAINTS "2.5.29.36"
#define szOID_RENEWAL_CERTIFICATE "1.3.6.1.4.1.311.13.1"
#define szOID_ENROLLMENT_NAME_VALUE_PAIR "1.3.6.1.4.1.311.13.2.1"
#define szOID_ENROLLMENT_CSP_PROVIDER "1.3.6.1.4.1.311.13.2.2"
#define szOID_OS_VERSION "1.3.6.1.4.1.311.13.2.3"
#define szOID_ENROLLMENT_AGENT "1.3.6.1.4.1.311.20.2.1"
#define szOID_PKIX "1.3.6.1.5.5.7"
#define szOID_PKIX_PE "1.3.6.1.5.5.7.1"
#define szOID_AUTHORITY_INFO_ACCESS "1.3.6.1.5.5.7.1.1"
#define szOID_SUBJECT_INFO_ACCESS "1.3.6.1.5.5.7.1.11"
#define szOID_BIOMETRIC_EXT "1.3.6.1.5.5.7.1.2"
#define szOID_QC_STATEMENTS_EXT "1.3.6.1.5.5.7.1.3"
#define szOID_LOGOTYPE_EXT "1.3.6.1.5.5.7.1.12"
#define szOID_TLS_FEATURES_EXT "1.3.6.1.5.5.7.1.24"
#define szOID_CERT_EXTENSIONS "1.3.6.1.4.1.311.2.1.14"
#define szOID_NEXT_UPDATE_LOCATION "1.3.6.1.4.1.311.10.2"
#define szOID_REMOVE_CERTIFICATE "1.3.6.1.4.1.311.10.8.1"
#define szOID_CROSS_CERT_DIST_POINTS "1.3.6.1.4.1.311.10.9.1"
#define szOID_CTL "1.3.6.1.4.1.311.10.1"
#define szOID_SORTED_CTL "1.3.6.1.4.1.311.10.1.1"
#define szOID_SERIALIZED "1.3.6.1.4.1.311.10.3.3.1"
#define szOID_NT_PRINCIPAL_NAME "1.3.6.1.4.1.311.20.2.3"
#define szOID_INTERNATIONALIZED_EMAIL_ADDRESS "1.3.6.1.4.1.311.20.2.4"
#define szOID_PRODUCT_UPDATE "1.3.6.1.4.1.311.31.1"
#define szOID_ANY_APPLICATION_POLICY "1.3.6.1.4.1.311.10.12.1"
#define szOID_AUTO_ENROLL_CTL_USAGE "1.3.6.1.4.1.311.20.1"
#define szOID_ENROLL_CERTTYPE_EXTENSION "1.3.6.1.4.1.311.20.2"
#define szOID_CERT_MANIFOLD "1.3.6.1.4.1.311.20.3"
#define szOID_CERTSRV_CA_VERSION "1.3.6.1.4.1.311.21.1"
#define szOID_CERTSRV_PREVIOUS_CERT_HASH "1.3.6.1.4.1.311.21.2"
#define szOID_CRL_VIRTUAL_BASE "1.3.6.1.4.1.311.21.3"
#define szOID_CRL_NEXT_PUBLISH "1.3.6.1.4.1.311.21.4"
#define szOID_KP_CA_EXCHANGE "1.3.6.1.4.1.311.21.5"
#define szOID_KP_KEY_RECOVERY_AGENT "1.3.6.1.4.1.311.21.6"
#define szOID_CERTIFICATE_TEMPLATE "1.3.6.1.4.1.311.21.7"
#define szOID_ENTERPRISE_OID_ROOT "1.3.6.1.4.1.311.21.8"
#define szOID_RDN_DUMMY_SIGNER "1.3.6.1.4.1.311.21.9"
#define szOID_APPLICATION_CERT_POLICIES "1.3.6.1.4.1.311.21.10"
#define szOID_APPLICATION_POLICY_MAPPINGS "1.3.6.1.4.1.311.21.11"
#define szOID_APPLICATION_POLICY_CONSTRAINTS "1.3.6.1.4.1.311.21.12"
#define szOID_ARCHIVED_KEY_ATTR "1.3.6.1.4.1.311.21.13"
#define szOID_CRL_SELF_CDP "1.3.6.1.4.1.311.21.14"
#define szOID_REQUIRE_CERT_CHAIN_POLICY "1.3.6.1.4.1.311.21.15"
#define szOID_ARCHIVED_KEY_CERT_HASH "1.3.6.1.4.1.311.21.16"
#define szOID_ISSUED_CERT_HASH "1.3.6.1.4.1.311.21.17"
#define szOID_DS_EMAIL_REPLICATION "1.3.6.1.4.1.311.21.19"
#define szOID_REQUEST_CLIENT_INFO "1.3.6.1.4.1.311.21.20"
#define szOID_ENCRYPTED_KEY_HASH "1.3.6.1.4.1.311.21.21"
#define szOID_CERTSRV_CROSSCA_VERSION "1.3.6.1.4.1.311.21.22"
#define szOID_NTDS_REPLICATION "1.3.6.1.4.1.311.25.1"
#define szOID_SUBJECT_DIR_ATTRS "2.5.29.9"
#define szOID_PKIX_KP "1.3.6.1.5.5.7.3"
#define szOID_PKIX_KP_SERVER_AUTH "1.3.6.1.5.5.7.3.1"
#define szOID_PKIX_KP_CLIENT_AUTH "1.3.6.1.5.5.7.3.2"
#define szOID_PKIX_KP_CODE_SIGNING "1.3.6.1.5.5.7.3.3"
#define szOID_PKIX_KP_EMAIL_PROTECTION "1.3.6.1.5.5.7.3.4"
#define szOID_PKIX_KP_IPSEC_END_SYSTEM "1.3.6.1.5.5.7.3.5"
#define szOID_PKIX_KP_IPSEC_TUNNEL "1.3.6.1.5.5.7.3.6"
#define szOID_PKIX_KP_IPSEC_USER "1.3.6.1.5.5.7.3.7"
#define szOID_PKIX_KP_TIMESTAMP_SIGNING "1.3.6.1.5.5.7.3.8"
#define szOID_PKIX_KP_OCSP_SIGNING "1.3.6.1.5.5.7.3.9"
#define szOID_PKIX_OCSP_NONCE "1.3.6.1.5.5.7.48.1.2"
#define szOID_PKIX_OCSP_NOCHECK "1.3.6.1.5.5.7.48.1.5"
#define szOID_IPSEC_KP_IKE_INTERMEDIATE "1.3.6.1.5.5.8.2.2"
#define szOID_PKINIT_KP_KDC "1.3.6.1.5.2.3.5"
#define szOID_KP_CTL_USAGE_SIGNING "1.3.6.1.4.1.311.10.3.1"
#define szOID_KP_TIME_STAMP_SIGNING "1.3.6.1.4.1.311.10.3.2"
#define szOID_SERVER_GATED_CRYPTO "1.3.6.1.4.1.311.10.3.3"
#define szOID_SGC_NETSCAPE "2.16.840.1.113730.4.1"
#define szOID_KP_EFS "1.3.6.1.4.1.311.10.3.4"
#define szOID_EFS_RECOVERY "1.3.6.1.4.1.311.10.3.4.1"
#define szOID_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.5"
#define szOID_ATTEST_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.5.1"
#define szOID_NT5_CRYPTO "1.3.6.1.4.1.311.10.3.6"
#define szOID_OEM_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.7"
#define szOID_EMBEDDED_NT_CRYPTO "1.3.6.1.4.1.311.10.3.8"
#define szOID_ROOT_LIST_SIGNER "1.3.6.1.4.1.311.10.3.9"
#define szOID_KP_QUALIFIED_SUBORDINATION "1.3.6.1.4.1.311.10.3.10"
#define szOID_KP_KEY_RECOVERY "1.3.6.1.4.1.311.10.3.11"
#define szOID_KP_DOCUMENT_SIGNING "1.3.6.1.4.1.311.10.3.12"
#define szOID_KP_LIFETIME_SIGNING "1.3.6.1.4.1.311.10.3.13"
#define szOID_KP_MOBILE_DEVICE_SOFTWARE "1.3.6.1.4.1.311.10.3.14"
#define szOID_KP_SMART_DISPLAY "1.3.6.1.4.1.311.10.3.15"
#define szOID_KP_CSP_SIGNATURE "1.3.6.1.4.1.311.10.3.16"
#define szOID_KP_FLIGHT_SIGNING "1.3.6.1.4.1.311.10.3.27"
#define szOID_PLATFORM_MANIFEST_BINARY_ID "1.3.6.1.4.1.311.10.3.28"
#define szOID_DRM "1.3.6.1.4.1.311.10.5.1"
#define szOID_DRM_INDIVIDUALIZATION "1.3.6.1.4.1.311.10.5.2"
#define szOID_LICENSES "1.3.6.1.4.1.311.10.6.1"
#define szOID_LICENSE_SERVER "1.3.6.1.4.1.311.10.6.2"
#define szOID_KP_SMARTCARD_LOGON "1.3.6.1.4.1.311.20.2.2"
#define szOID_KP_KERNEL_MODE_CODE_SIGNING "1.3.6.1.4.1.311.61.1.1"
#define szOID_KP_KERNEL_MODE_TRUSTED_BOOT_SIGNING "1.3.6.1.4.1.311.61.4.1"
#define szOID_REVOKED_LIST_SIGNER "1.3.6.1.4.1.311.10.3.19"
#define szOID_WINDOWS_KITS_SIGNER "1.3.6.1.4.1.311.10.3.20"
#define szOID_WINDOWS_RT_SIGNER "1.3.6.1.4.1.311.10.3.21"
#define szOID_PROTECTED_PROCESS_LIGHT_SIGNER "1.3.6.1.4.1.311.10.3.22"
#define szOID_WINDOWS_TCB_SIGNER "1.3.6.1.4.1.311.10.3.23"
#define szOID_PROTECTED_PROCESS_SIGNER "1.3.6.1.4.1.311.10.3.24"
#define szOID_WINDOWS_THIRD_PARTY_COMPONENT_SIGNER "1.3.6.1.4.1.311.10.3.25"
#define szOID_WINDOWS_SOFTWARE_EXTENSION_SIGNER "1.3.6.1.4.1.311.10.3.26"
#define szOID_DISALLOWED_LIST "1.3.6.1.4.1.311.10.3.30"
#define szOID_PIN_RULES_SIGNER "1.3.6.1.4.1.311.10.3.31"
#define szOID_PIN_RULES_CTL "1.3.6.1.4.1.311.10.3.32"
#define szOID_PIN_RULES_EXT "1.3.6.1.4.1.311.10.3.33"
#define szOID_PIN_RULES_DOMAIN_NAME "1.3.6.1.4.1.311.10.3.34"
#define szOID_PIN_RULES_LOG_END_DATE_EXT "1.3.6.1.4.1.311.10.3.35"
#define szOID_IUM_SIGNING "1.3.6.1.4.1.311.10.3.37"
#define szOID_EV_WHQL_CRYPTO "1.3.6.1.4.1.311.10.3.39"
#define szOID_BIOMETRIC_SIGNING "1.3.6.1.4.1.311.10.3.41"
#define szOID_ENCLAVE_SIGNING "1.3.6.1.4.1.311.10.3.42"
#define szOID_SYNC_ROOT_CTL_EXT "1.3.6.1.4.1.311.10.3.50"
#define szOID_HPKP_DOMAIN_NAME_CTL "1.3.6.1.4.1.311.10.3.60"
#define szOID_HPKP_HEADER_VALUE_CTL "1.3.6.1.4.1.311.10.3.61"
#define szOID_KP_KERNEL_MODE_HAL_EXTENSION_SIGNING "1.3.6.1.4.1.311.61.5.1"
#define szOID_WINDOWS_STORE_SIGNER "1.3.6.1.4.1.311.76.3.1"
#define szOID_DYNAMIC_CODE_GEN_SIGNER "1.3.6.1.4.1.311.76.5.1"
#define szOID_MICROSOFT_PUBLISHER_SIGNER "1.3.6.1.4.1.311.76.8.1"
#define szOID_YESNO_TRUST_ATTR "1.3.6.1.4.1.311.10.4.1"
#define szOID_SITE_PIN_RULES_INDEX_ATTR "1.3.6.1.4.1.311.10.4.2"
#define szOID_SITE_PIN_RULES_FLAGS_ATTR "1.3.6.1.4.1.311.10.4.3"
#define SITE_PIN_RULES_ALL_SUBDOMAINS_FLAG 0x1
#define szOID_PKIX_POLICY_QUALIFIER_CPS "1.3.6.1.5.5.7.2.1"
#define szOID_PKIX_POLICY_QUALIFIER_USERNOTICE "1.3.6.1.5.5.7.2.2"
#define szOID_ROOT_PROGRAM_FLAGS "1.3.6.1.4.1.311.60.1.1"
#define CERT_ROOT_PROGRAM_FLAG_ORG 0x80
#define CERT_ROOT_PROGRAM_FLAG_LSC 0x40
#define CERT_ROOT_PROGRAM_FLAG_SUBJECT_LOGO 0x20
#define CERT_ROOT_PROGRAM_FLAG_OU 0x10
#define CERT_ROOT_PROGRAM_FLAG_ADDRESS 0x08
#define szOID_CERT_POLICIES_95_QUALIFIER1 "2.16.840.1.113733.1.7.1.1"
#define szOID_RDN_TPM_MANUFACTURER "2.23.133.2.1"
#define szOID_RDN_TPM_MODEL "2.23.133.2.2"
#define szOID_RDN_TPM_VERSION "2.23.133.2.3"
#define szOID_RDN_TCG_PLATFORM_MANUFACTURER "2.23.133.2.4"
#define szOID_RDN_TCG_PLATFORM_MODEL "2.23.133.2.5"
#define szOID_RDN_TCG_PLATFORM_VERSION "2.23.133.2.6"
#define szOID_CT_CERT_SCTLIST "1.3.6.1.4.1.11129.2.4.2"
#define szOID_ENROLL_EK_INFO "1.3.6.1.4.1.311.21.23"
#define szOID_ENROLL_AIK_INFO "1.3.6.1.4.1.311.21.39"
#define szOID_ENROLL_ATTESTATION_STATEMENT "1.3.6.1.4.1.311.21.24"
#define szOID_ENROLL_KSP_NAME "1.3.6.1.4.1.311.21.25"
#define szOID_ENROLL_EKPUB_CHALLENGE "1.3.6.1.4.1.311.21.26"
#define szOID_ENROLL_CAXCHGCERT_HASH "1.3.6.1.4.1.311.21.27"
#define szOID_ENROLL_ATTESTATION_CHALLENGE "1.3.6.1.4.1.311.21.28"
#define szOID_ENROLL_ENCRYPTION_ALGORITHM "1.3.6.1.4.1.311.21.29"
#define szOID_KP_TPM_EK_CERTIFICATE "2.23.133.8.1"
#define szOID_KP_TPM_PLATFORM_CERTIFICATE "2.23.133.8.2"
#define szOID_KP_TPM_AIK_CERTIFICATE "2.23.133.8.3"
#define szOID_ENROLL_EKVERIFYKEY "1.3.6.1.4.1.311.21.30"
#define szOID_ENROLL_EKVERIFYCERT "1.3.6.1.4.1.311.21.31"
#define szOID_ENROLL_EKVERIFYCREDS "1.3.6.1.4.1.311.21.32"
#define szOID_ENROLL_SCEP_ERROR "1.3.6.1.4.1.311.21.33"
#define szOID_ENROLL_SCEP_SERVER_STATE "1.3.6.1.4.1.311.21.34"
#define szOID_ENROLL_SCEP_CHALLENGE_ANSWER "1.3.6.1.4.1.311.21.35"
#define szOID_ENROLL_SCEP_CLIENT_REQUEST "1.3.6.1.4.1.311.21.37"
#define szOID_ENROLL_SCEP_SERVER_MESSAGE "1.3.6.1.4.1.311.21.38"
#define szOID_ENROLL_SCEP_SERVER_SECRET "1.3.6.1.4.1.311.21.40"
#define szOID_ENROLL_KEY_AFFINITY "1.3.6.1.4.1.311.21.41"
#define szOID_ENROLL_SCEP_SIGNER_HASH "1.3.6.1.4.1.311.21.42"
#define szOID_ENROLL_EK_CA_KEYID "1.3.6.1.4.1.311.21.43"
#define szOID_ATTR_SUPPORTED_ALGORITHMS "2.5.4.52"
#define szOID_ATTR_TPM_SPECIFICATION "2.23.133.2.16"
#define szOID_ATTR_PLATFORM_SPECIFICATION "2.23.133.2.17"
#define szOID_ATTR_TPM_SECURITY_ASSERTIONS "2.23.133.2.18"
  typedef struct _CERT_EXTENSIONS {
    DWORD cExtension;
    PCERT_EXTENSION rgExtension;
  } CERT_EXTENSIONS,*PCERT_EXTENSIONS;
#define CERT_UNICODE_RDN_ERR_INDEX_MASK 0x3ff
#define CERT_UNICODE_RDN_ERR_INDEX_SHIFT 22
#define CERT_UNICODE_ATTR_ERR_INDEX_MASK 0x3f
#define CERT_UNICODE_ATTR_ERR_INDEX_SHIFT 16
#define CERT_UNICODE_VALUE_ERR_INDEX_MASK 0xffff
#define CERT_UNICODE_VALUE_ERR_INDEX_SHIFT 0
#define GET_CERT_UNICODE_RDN_ERR_INDEX(X) ((X >> CERT_UNICODE_RDN_ERR_INDEX_SHIFT) &CERT_UNICODE_RDN_ERR_INDEX_MASK)
#define GET_CERT_UNICODE_ATTR_ERR_INDEX(X) ((X >> CERT_UNICODE_ATTR_ERR_INDEX_SHIFT) &CERT_UNICODE_ATTR_ERR_INDEX_MASK)
#define GET_CERT_UNICODE_VALUE_ERR_INDEX(X) (X &CERT_UNICODE_VALUE_ERR_INDEX_MASK)
  typedef struct _CERT_AUTHORITY_KEY_ID_INFO {
    CRYPT_DATA_BLOB KeyId;
    CERT_NAME_BLOB CertIssuer;
    CRYPT_INTEGER_BLOB CertSerialNumber;
  } CERT_AUTHORITY_KEY_ID_INFO,*PCERT_AUTHORITY_KEY_ID_INFO;
  typedef struct _CERT_PRIVATE_KEY_VALIDITY {
    FILETIME NotBefore;
    FILETIME NotAfter;
  } CERT_PRIVATE_KEY_VALIDITY,*PCERT_PRIVATE_KEY_VALIDITY;
  typedef struct _CERT_KEY_ATTRIBUTES_INFO {
    CRYPT_DATA_BLOB KeyId;
    CRYPT_BIT_BLOB IntendedKeyUsage;
    PCERT_PRIVATE_KEY_VALIDITY pPrivateKeyUsagePeriod;
  } CERT_KEY_ATTRIBUTES_INFO,*PCERT_KEY_ATTRIBUTES_INFO;
#define CERT_ENCIPHER_ONLY_KEY_USAGE 0x01
#define CERT_CRL_SIGN_KEY_USAGE 0x02
#define CERT_OFFLINE_CRL_SIGN_KEY_USAGE 0x02
#define CERT_KEY_CERT_SIGN_KEY_USAGE 0x04
#define CERT_KEY_AGREEMENT_KEY_USAGE 0x08
#define CERT_DATA_ENCIPHERMENT_KEY_USAGE 0x10
#define CERT_KEY_ENCIPHERMENT_KEY_USAGE 0x20
#define CERT_NON_REPUDIATION_KEY_USAGE 0x40
#define CERT_DIGITAL_SIGNATURE_KEY_USAGE 0x80
#define CERT_DECIPHER_ONLY_KEY_USAGE 0x80
  typedef struct _CERT_POLICY_ID {
    DWORD cCertPolicyElementId;
    LPSTR *rgpszCertPolicyElementId;
  } CERT_POLICY_ID,*PCERT_POLICY_ID;
  typedef struct _CERT_KEY_USAGE_RESTRICTION_INFO {
    DWORD cCertPolicyId;
    PCERT_POLICY_ID rgCertPolicyId;
    CRYPT_BIT_BLOB RestrictedKeyUsage;
  } CERT_KEY_USAGE_RESTRICTION_INFO,*PCERT_KEY_USAGE_RESTRICTION_INFO;
  typedef struct _CERT_OTHER_NAME {
    LPSTR pszObjId;
    CRYPT_OBJID_BLOB Value;
  } CERT_OTHER_NAME,*PCERT_OTHER_NAME;
  typedef struct _CERT_ALT_NAME_ENTRY {
    DWORD dwAltNameChoice;
    __extension__ union {
      PCERT_OTHER_NAME pOtherName;
      LPWSTR pwszRfc822Name;
      LPWSTR pwszDNSName;
      CERT_NAME_BLOB DirectoryName;
      LPWSTR pwszURL;
      CRYPT_DATA_BLOB IPAddress;
      LPSTR pszRegisteredID;
    };
  } CERT_ALT_NAME_ENTRY,*PCERT_ALT_NAME_ENTRY;
#define CERT_ALT_NAME_OTHER_NAME 1
#define CERT_ALT_NAME_RFC822_NAME 2
#define CERT_ALT_NAME_DNS_NAME 3
#define CERT_ALT_NAME_X400_ADDRESS 4
#define CERT_ALT_NAME_DIRECTORY_NAME 5
#define CERT_ALT_NAME_EDI_PARTY_NAME 6
#define CERT_ALT_NAME_URL 7
#define CERT_ALT_NAME_IP_ADDRESS 8
#define CERT_ALT_NAME_REGISTERED_ID 9
  typedef struct _CERT_ALT_NAME_INFO {
    DWORD cAltEntry;
    PCERT_ALT_NAME_ENTRY rgAltEntry;
  } CERT_ALT_NAME_INFO,*PCERT_ALT_NAME_INFO;
#define CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK 0xff
#define CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT 16
#define CERT_ALT_NAME_VALUE_ERR_INDEX_MASK 0x0000ffff
#define CERT_ALT_NAME_VALUE_ERR_INDEX_SHIFT 0
#define GET_CERT_ALT_NAME_ENTRY_ERR_INDEX(X) ((X >> CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT) &CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK)
#define GET_CERT_ALT_NAME_VALUE_ERR_INDEX(X) (X &CERT_ALT_NAME_VALUE_ERR_INDEX_MASK)
  typedef struct _CERT_BASIC_CONSTRAINTS_INFO {
    CRYPT_BIT_BLOB SubjectType;
    WINBOOL fPathLenConstraint;
    DWORD dwPathLenConstraint;
    DWORD cSubtreesConstraint;
    CERT_NAME_BLOB *rgSubtreesConstraint;
  } CERT_BASIC_CONSTRAINTS_INFO, *PCERT_BASIC_CONSTRAINTS_INFO;
#define CERT_CA_SUBJECT_FLAG 0x80
#define CERT_END_ENTITY_SUBJECT_FLAG 0x40
  typedef struct _CERT_BASIC_CONSTRAINTS2_INFO {
    WINBOOL fCA;
    WINBOOL fPathLenConstraint;
    DWORD dwPathLenConstraint;
  } CERT_BASIC_CONSTRAINTS2_INFO,*PCERT_BASIC_CONSTRAINTS2_INFO;
  typedef struct _CERT_POLICY_QUALIFIER_INFO {
    LPSTR pszPolicyQualifierId;
    CRYPT_OBJID_BLOB Qualifier;
  } CERT_POLICY_QUALIFIER_INFO,*PCERT_POLICY_QUALIFIER_INFO;
  typedef struct _CERT_POLICY_INFO {
    LPSTR pszPolicyIdentifier;
    DWORD cPolicyQualifier;
    CERT_POLICY_QUALIFIER_INFO *rgPolicyQualifier;
  } CERT_POLICY_INFO,*PCERT_POLICY_INFO;
  typedef struct _CERT_POLICIES_INFO {
    DWORD cPolicyInfo;
    CERT_POLICY_INFO *rgPolicyInfo;
  } CERT_POLICIES_INFO,*PCERT_POLICIES_INFO;
  typedef struct _CERT_POLICY_QUALIFIER_NOTICE_REFERENCE {
    LPSTR pszOrganization;
    DWORD cNoticeNumbers;
    int *rgNoticeNumbers;
  } CERT_POLICY_QUALIFIER_NOTICE_REFERENCE,*PCERT_POLICY_QUALIFIER_NOTICE_REFERENCE;
  typedef struct _CERT_POLICY_QUALIFIER_USER_NOTICE {
    CERT_POLICY_QUALIFIER_NOTICE_REFERENCE *pNoticeReference;
    LPWSTR pszDisplayText;
  } CERT_POLICY_QUALIFIER_USER_NOTICE,*PCERT_POLICY_QUALIFIER_USER_NOTICE;
  typedef struct _CPS_URLS {
    LPWSTR pszURL;
    CRYPT_ALGORITHM_IDENTIFIER *pAlgorithm;
    CRYPT_DATA_BLOB *pDigest;
  } CPS_URLS,*PCPS_URLS;
  typedef struct _CERT_POLICY95_QUALIFIER1 {
    LPWSTR pszPracticesReference;
    LPSTR pszNoticeIdentifier;
    LPSTR pszNSINoticeIdentifier;
    DWORD cCPSURLs;
    CPS_URLS *rgCPSURLs;
  } CERT_POLICY95_QUALIFIER1,*PCERT_POLICY95_QUALIFIER1;
  typedef struct _CERT_POLICY_MAPPING {
    LPSTR pszIssuerDomainPolicy;
    LPSTR pszSubjectDomainPolicy;
  } CERT_POLICY_MAPPING,*PCERT_POLICY_MAPPING;
  typedef struct _CERT_POLICY_MAPPINGS_INFO {
    DWORD cPolicyMapping;
    PCERT_POLICY_MAPPING rgPolicyMapping;
  } CERT_POLICY_MAPPINGS_INFO,*PCERT_POLICY_MAPPINGS_INFO;
  typedef struct _CERT_POLICY_CONSTRAINTS_INFO {
    WINBOOL fRequireExplicitPolicy;
    DWORD dwRequireExplicitPolicySkipCerts;
    WINBOOL fInhibitPolicyMapping;
    DWORD dwInhibitPolicyMappingSkipCerts;
  } CERT_POLICY_CONSTRAINTS_INFO,*PCERT_POLICY_CONSTRAINTS_INFO;
  typedef struct _CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY {
    LPSTR pszObjId;
    DWORD cValue;
    PCRYPT_DER_BLOB rgValue;
  } CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY,*PCRYPT_CONTENT_INFO_SEQUENCE_OF_ANY;
  typedef struct _CRYPT_CONTENT_INFO {
    LPSTR pszObjId;
    CRYPT_DER_BLOB Content;
  } CRYPT_CONTENT_INFO,*PCRYPT_CONTENT_INFO;
  typedef struct _CRYPT_SEQUENCE_OF_ANY {
    DWORD cValue;
    PCRYPT_DER_BLOB rgValue;
  } CRYPT_SEQUENCE_OF_ANY,*PCRYPT_SEQUENCE_OF_ANY;
  typedef struct _CERT_AUTHORITY_KEY_ID2_INFO {
    CRYPT_DATA_BLOB KeyId;
    CERT_ALT_NAME_INFO AuthorityCertIssuer;
    CRYPT_INTEGER_BLOB AuthorityCertSerialNumber;
  } CERT_AUTHORITY_KEY_ID2_INFO,*PCERT_AUTHORITY_KEY_ID2_INFO;
  typedef struct _CERT_ACCESS_DESCRIPTION {
    LPSTR pszAccessMethod;
    CERT_ALT_NAME_ENTRY AccessLocation;
  } CERT_ACCESS_DESCRIPTION,*PCERT_ACCESS_DESCRIPTION;
  typedef struct _CERT_AUTHORITY_INFO_ACCESS {
    DWORD cAccDescr;
    PCERT_ACCESS_DESCRIPTION rgAccDescr;
  } CERT_AUTHORITY_INFO_ACCESS,*PCERT_AUTHORITY_INFO_ACCESS;
  typedef CERT_AUTHORITY_INFO_ACCESS CERT_SUBJECT_INFO_ACCESS,*PCERT_SUBJECT_INFO_ACCESS;
#define szOID_PKIX_ACC_DESCR "1.3.6.1.5.5.7.48"
#define szOID_PKIX_OCSP "1.3.6.1.5.5.7.48.1"
#define szOID_PKIX_CA_ISSUERS "1.3.6.1.5.5.7.48.2"
#define szOID_PKIX_TIME_STAMPING "1.3.6.1.5.5.7.48.3"
#define szOID_PKIX_CA_REPOSITORY "1.3.6.1.5.5.7.48.5"
#define CRL_REASON_UNSPECIFIED 0
#define CRL_REASON_KEY_COMPROMISE 1
#define CRL_REASON_CA_COMPROMISE 2
#define CRL_REASON_AFFILIATION_CHANGED 3
#define CRL_REASON_SUPERSEDED 4
#define CRL_REASON_CESSATION_OF_OPERATION 5
#define CRL_REASON_CERTIFICATE_HOLD 6
#define CRL_REASON_REMOVE_FROM_CRL 8
#define CRL_REASON_PRIVILEGE_WITHDRAWN 9
#define CRL_REASON_AA_COMPROMISE 10
  typedef struct _CRL_DIST_POINT_NAME {
    DWORD dwDistPointNameChoice;
    __extension__ union {
      CERT_ALT_NAME_INFO FullName;
    };
  } CRL_DIST_POINT_NAME,*PCRL_DIST_POINT_NAME;
#define CRL_DIST_POINT_NO_NAME 0
#define CRL_DIST_POINT_FULL_NAME 1
#define CRL_DIST_POINT_ISSUER_RDN_NAME 2
  typedef struct _CRL_DIST_POINT {
    CRL_DIST_POINT_NAME DistPointName;
    CRYPT_BIT_BLOB ReasonFlags;
    CERT_ALT_NAME_INFO CRLIssuer;
  } CRL_DIST_POINT,*PCRL_DIST_POINT;
#define CRL_REASON_UNUSED_FLAG 0x80
#define CRL_REASON_KEY_COMPROMISE_FLAG 0x40
#define CRL_REASON_CA_COMPROMISE_FLAG 0x20
#define CRL_REASON_AFFILIATION_CHANGED_FLAG 0x10
#define CRL_REASON_SUPERSEDED_FLAG 0x08
#define CRL_REASON_CESSATION_OF_OPERATION_FLAG 0x04
#define CRL_REASON_CERTIFICATE_HOLD_FLAG 0x02
#define CRL_REASON_PRIVILEGE_WITHDRAWN_FLAG 0x01
#define CRL_REASON_AA_COMPROMISE_FLAG 0x80
  typedef struct _CRL_DIST_POINTS_INFO {
    DWORD cDistPoint;
    PCRL_DIST_POINT rgDistPoint;
  } CRL_DIST_POINTS_INFO,*PCRL_DIST_POINTS_INFO;
#define CRL_DIST_POINT_ERR_INDEX_MASK 0x7f
#define CRL_DIST_POINT_ERR_INDEX_SHIFT 24
#define GET_CRL_DIST_POINT_ERR_INDEX(X) ((X >> CRL_DIST_POINT_ERR_INDEX_SHIFT) &CRL_DIST_POINT_ERR_INDEX_MASK)
#define CRL_DIST_POINT_ERR_CRL_ISSUER_BIT __MSABI_LONG(0x80000000)
#define IS_CRL_DIST_POINT_ERR_CRL_ISSUER(X) (0 != (X & CRL_DIST_POINT_ERR_CRL_ISSUER_BIT))
  typedef struct _CROSS_CERT_DIST_POINTS_INFO {
    DWORD dwSyncDeltaTime;
    DWORD cDistPoint;
    PCERT_ALT_NAME_INFO rgDistPoint;
  } CROSS_CERT_DIST_POINTS_INFO,*PCROSS_CERT_DIST_POINTS_INFO;
#define CROSS_CERT_DIST_POINT_ERR_INDEX_MASK 0xff
#define CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT 24
#define GET_CROSS_CERT_DIST_POINT_ERR_INDEX(X) ((X >> CROSS_CERT_DIST_POINT_ERR_INDEX_SHIFT) &CROSS_CERT_DIST_POINT_ERR_INDEX_MASK)
  typedef struct _CERT_PAIR {
    CERT_BLOB Forward;
    CERT_BLOB Reverse;
  } CERT_PAIR,*PCERT_PAIR;
  typedef struct _CRL_ISSUING_DIST_POINT {
    CRL_DIST_POINT_NAME DistPointName;
    WINBOOL fOnlyContainsUserCerts;
    WINBOOL fOnlyContainsCACerts;
    CRYPT_BIT_BLOB OnlySomeReasonFlags;
    WINBOOL fIndirectCRL;
  } CRL_ISSUING_DIST_POINT,*PCRL_ISSUING_DIST_POINT;
  typedef struct _CERT_GENERAL_SUBTREE {
    CERT_ALT_NAME_ENTRY Base;
    DWORD dwMinimum;
    WINBOOL fMaximum;
    DWORD dwMaximum;
  } CERT_GENERAL_SUBTREE,*PCERT_GENERAL_SUBTREE;
  typedef struct _CERT_NAME_CONSTRAINTS_INFO {
    DWORD cPermittedSubtree;
    PCERT_GENERAL_SUBTREE rgPermittedSubtree;
    DWORD cExcludedSubtree;
    PCERT_GENERAL_SUBTREE rgExcludedSubtree;
  } CERT_NAME_CONSTRAINTS_INFO,*PCERT_NAME_CONSTRAINTS_INFO;
#define CERT_EXCLUDED_SUBTREE_BIT __MSABI_LONG(0x80000000)
#define IS_CERT_EXCLUDED_SUBTREE(X) (0!=(X & CERT_EXCLUDED_SUBTREE_BIT))
#define SORTED_CTL_EXT_FLAGS_OFFSET (0)
#define SORTED_CTL_EXT_COUNT_OFFSET (4)
#define SORTED_CTL_EXT_MAX_COLLISION_OFFSET (8)
#define SORTED_CTL_EXT_HASH_BUCKET_OFFSET (12)
#define SORTED_CTL_EXT_HASHED_SUBJECT_IDENTIFIER_FLAG 0x1
  typedef struct _CERT_DSS_PARAMETERS {
    CRYPT_UINT_BLOB p;
    CRYPT_UINT_BLOB q;
    CRYPT_UINT_BLOB g;
  } CERT_DSS_PARAMETERS,*PCERT_DSS_PARAMETERS;
#define CERT_DSS_R_LEN 20
#define CERT_DSS_S_LEN 20
#define CERT_DSS_SIGNATURE_LEN (CERT_DSS_R_LEN + CERT_DSS_S_LEN)
#define CERT_MAX_ASN_ENCODED_DSS_SIGNATURE_LEN (48)
  typedef struct _CERT_DH_PARAMETERS {
    CRYPT_UINT_BLOB p;
    CRYPT_UINT_BLOB g;
  } CERT_DH_PARAMETERS,*PCERT_DH_PARAMETERS;
  typedef struct _CERT_ECC_SIGNATURE {
    CRYPT_UINT_BLOB r;
    CRYPT_UINT_BLOB s;
  } CERT_ECC_SIGNATURE,*PCERT_ECC_SIGNATURE;
  typedef struct _CERT_X942_DH_VALIDATION_PARAMS {
    CRYPT_BIT_BLOB seed;
    DWORD pgenCounter;
  } CERT_X942_DH_VALIDATION_PARAMS,*PCERT_X942_DH_VALIDATION_PARAMS;
  typedef struct _CERT_X942_DH_PARAMETERS {
    CRYPT_UINT_BLOB p;
    CRYPT_UINT_BLOB g;
    CRYPT_UINT_BLOB q;
    CRYPT_UINT_BLOB j;
    PCERT_X942_DH_VALIDATION_PARAMS pValidationParams;
  } CERT_X942_DH_PARAMETERS,*PCERT_X942_DH_PARAMETERS;
#define CRYPT_X942_COUNTER_BYTE_LENGTH 4
#define CRYPT_X942_KEY_LENGTH_BYTE_LENGTH 4
#define CRYPT_X942_PUB_INFO_BYTE_LENGTH (512/8)
  typedef struct _CRYPT_X942_OTHER_INFO {
    LPSTR pszContentEncryptionObjId;
    BYTE rgbCounter[4];
    BYTE rgbKeyLength[4];
    CRYPT_DATA_BLOB PubInfo;
  } CRYPT_X942_OTHER_INFO,*PCRYPT_X942_OTHER_INFO;
#define CRYPT_ECC_CMS_SHARED_INFO_SUPPPUBINFO_BYTE_LENGTH 4
  typedef struct _CRYPT_ECC_CMS_SHARED_INFO {
    CRYPT_ALGORITHM_IDENTIFIER Algorithm;
    CRYPT_DATA_BLOB EntityUInfo;
    BYTE rgbSuppPubInfo[4];
  } CRYPT_ECC_CMS_SHARED_INFO,*PCRYPT_ECC_CMS_SHARED_INFO;
  typedef struct _CRYPT_RC2_CBC_PARAMETERS {
    DWORD dwVersion;
    WINBOOL fIV;
    BYTE rgbIV[8];
  } CRYPT_RC2_CBC_PARAMETERS,*PCRYPT_RC2_CBC_PARAMETERS;
#define CRYPT_RC2_40BIT_VERSION 160
#define CRYPT_RC2_56BIT_VERSION 52
#define CRYPT_RC2_64BIT_VERSION 120
#define CRYPT_RC2_128BIT_VERSION 58
  typedef struct _CRYPT_SMIME_CAPABILITY {
    LPSTR pszObjId;
    CRYPT_OBJID_BLOB Parameters;
  } CRYPT_SMIME_CAPABILITY,*PCRYPT_SMIME_CAPABILITY;
  typedef struct _CRYPT_SMIME_CAPABILITIES {
    DWORD cCapability;
    PCRYPT_SMIME_CAPABILITY rgCapability;
  } CRYPT_SMIME_CAPABILITIES,*PCRYPT_SMIME_CAPABILITIES;
  typedef struct _CERT_QC_STATEMENT {
    LPSTR pszStatementId;
    CRYPT_OBJID_BLOB StatementInfo;
  } CERT_QC_STATEMENT,*PCERT_QC_STATEMENT;
  typedef struct _CERT_QC_STATEMENTS_EXT_INFO {
    DWORD cStatement;
    PCERT_QC_STATEMENT rgStatement;
  } CERT_QC_STATEMENTS_EXT_INFO,*PCERT_QC_STATEMENTS_EXT_INFO;
#define szOID_QC_EU_COMPLIANCE "0.4.0.1862.1.1"
#define szOID_QC_SSCD "0.4.0.1862.1.4"
  typedef struct _CRYPT_MASK_GEN_ALGORITHM {
    LPSTR pszObjId;
    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
  } CRYPT_MASK_GEN_ALGORITHM,*PCRYPT_MASK_GEN_ALGORITHM;
  typedef struct _CRYPT_RSA_SSA_PSS_PARAMETERS {
    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
    CRYPT_MASK_GEN_ALGORITHM MaskGenAlgorithm;
    DWORD dwSaltLength;
    DWORD dwTrailerField;
  } CRYPT_RSA_SSA_PSS_PARAMETERS,*PCRYPT_RSA_SSA_PSS_PARAMETERS;
#define PKCS_RSA_SSA_PSS_TRAILER_FIELD_BC 1
  typedef struct _CRYPT_PSOURCE_ALGORITHM {
    LPSTR pszObjId;
    CRYPT_DATA_BLOB EncodingParameters;
  } CRYPT_PSOURCE_ALGORITHM,*PCRYPT_PSOURCE_ALGORITHM;
  typedef struct _CRYPT_RSAES_OAEP_PARAMETERS {
    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
    CRYPT_MASK_GEN_ALGORITHM MaskGenAlgorithm;
    CRYPT_PSOURCE_ALGORITHM PSourceAlgorithm;
  } CRYPT_RSAES_OAEP_PARAMETERS,*PCRYPT_RSAES_OAEP_PARAMETERS;
#define szOID_VERISIGN_PRIVATE_6_9 "2.16.840.1.113733.1.6.9"
#define szOID_VERISIGN_ONSITE_JURISDICTION_HASH "2.16.840.1.113733.1.6.11"
#define szOID_VERISIGN_BITSTRING_6_13 "2.16.840.1.113733.1.6.13"
#define szOID_VERISIGN_ISS_STRONG_CRYPTO "2.16.840.1.113733.1.8.1"
#define szOIDVerisign_MessageType "2.16.840.1.113733.1.9.2"
#define szOIDVerisign_PkiStatus "2.16.840.1.113733.1.9.3"
#define szOIDVerisign_FailInfo "2.16.840.1.113733.1.9.4"
#define szOIDVerisign_SenderNonce "2.16.840.1.113733.1.9.5"
#define szOIDVerisign_RecipientNonce "2.16.840.1.113733.1.9.6"
#define szOIDVerisign_TransactionID "2.16.840.1.113733.1.9.7"
#define szOID_NETSCAPE "2.16.840.1.113730"
#define szOID_NETSCAPE_CERT_EXTENSION "2.16.840.1.113730.1"
#define szOID_NETSCAPE_CERT_TYPE "2.16.840.1.113730.1.1"
#define szOID_NETSCAPE_BASE_URL "2.16.840.1.113730.1.2"
#define szOID_NETSCAPE_REVOCATION_URL "2.16.840.1.113730.1.3"
#define szOID_NETSCAPE_CA_REVOCATION_URL "2.16.840.1.113730.1.4"
#define szOID_NETSCAPE_CERT_RENEWAL_URL "2.16.840.1.113730.1.7"
#define szOID_NETSCAPE_CA_POLICY_URL "2.16.840.1.113730.1.8"
#define szOID_NETSCAPE_SSL_SERVER_NAME "2.16.840.1.113730.1.12"
#define szOID_NETSCAPE_COMMENT "2.16.840.1.113730.1.13"
#define szOID_NETSCAPE_DATA_TYPE "2.16.840.1.113730.2"
#define szOID_NETSCAPE_CERT_SEQUENCE "2.16.840.1.113730.2.5"
#define NETSCAPE_SIGN_CA_CERT_TYPE 0x01
#define NETSCAPE_SMIME_CA_CERT_TYPE 0x02
#define NETSCAPE_SSL_CA_CERT_TYPE 0x04
#define NETSCAPE_SIGN_CERT_TYPE 0x10
#define NETSCAPE_SMIME_CERT_TYPE 0x20
#define NETSCAPE_SSL_SERVER_AUTH_CERT_TYPE 0x40
#define NETSCAPE_SSL_CLIENT_AUTH_CERT_TYPE 0x80
#define szOID_CT_PKI_DATA "1.3.6.1.5.5.7.12.2"
#define szOID_CT_PKI_RESPONSE "1.3.6.1.5.5.7.12.3"
#define szOID_PKIX_NO_SIGNATURE "1.3.6.1.5.5.7.6.2"
#define szOID_CMC "1.3.6.1.5.5.7.7"
#define szOID_CMC_STATUS_INFO "1.3.6.1.5.5.7.7.1"
#define szOID_CMC_IDENTIFICATION "1.3.6.1.5.5.7.7.2"
#define szOID_CMC_IDENTITY_PROOF "1.3.6.1.5.5.7.7.3"
#define szOID_CMC_DATA_RETURN "1.3.6.1.5.5.7.7.4"
#define szOID_CMC_TRANSACTION_ID "1.3.6.1.5.5.7.7.5"
#define szOID_CMC_SENDER_NONCE "1.3.6.1.5.5.7.7.6"
#define szOID_CMC_RECIPIENT_NONCE "1.3.6.1.5.5.7.7.7"
#define szOID_CMC_ADD_EXTENSIONS "1.3.6.1.5.5.7.7.8"
#define szOID_CMC_ENCRYPTED_POP "1.3.6.1.5.5.7.7.9"
#define szOID_CMC_DECRYPTED_POP "1.3.6.1.5.5.7.7.10"
#define szOID_CMC_LRA_POP_WITNESS "1.3.6.1.5.5.7.7.11"
#define szOID_CMC_GET_CERT "1.3.6.1.5.5.7.7.15"
#define szOID_CMC_GET_CRL "1.3.6.1.5.5.7.7.16"
#define szOID_CMC_REVOKE_REQUEST "1.3.6.1.5.5.7.7.17"
#define szOID_CMC_REG_INFO "1.3.6.1.5.5.7.7.18"
#define szOID_CMC_RESPONSE_INFO "1.3.6.1.5.5.7.7.19"
#define szOID_CMC_QUERY_PENDING "1.3.6.1.5.5.7.7.21"
#define szOID_CMC_ID_POP_LINK_RANDOM "1.3.6.1.5.5.7.7.22"
#define szOID_CMC_ID_POP_LINK_WITNESS "1.3.6.1.5.5.7.7.23"
#define szOID_CMC_ID_CONFIRM_CERT_ACCEPTANCE "1.3.6.1.5.5.7.7.24"
#define szOID_CMC_ADD_ATTRIBUTES "1.3.6.1.4.1.311.10.10.1"
  typedef struct _CMC_TAGGED_ATTRIBUTE {
    DWORD dwBodyPartID;
    CRYPT_ATTRIBUTE Attribute;
  } CMC_TAGGED_ATTRIBUTE,*PCMC_TAGGED_ATTRIBUTE;
  typedef struct _CMC_TAGGED_CERT_REQUEST {
    DWORD dwBodyPartID;
    CRYPT_DER_BLOB SignedCertRequest;
  } CMC_TAGGED_CERT_REQUEST,*PCMC_TAGGED_CERT_REQUEST;
  typedef struct _CMC_TAGGED_REQUEST {
    DWORD dwTaggedRequestChoice;
    __extension__ union {
      PCMC_TAGGED_CERT_REQUEST pTaggedCertRequest;
    };
  } CMC_TAGGED_REQUEST,*PCMC_TAGGED_REQUEST;
#define CMC_TAGGED_CERT_REQUEST_CHOICE 1
  typedef struct _CMC_TAGGED_CONTENT_INFO {
    DWORD dwBodyPartID;
    CRYPT_DER_BLOB EncodedContentInfo;
  } CMC_TAGGED_CONTENT_INFO,*PCMC_TAGGED_CONTENT_INFO;
  typedef struct _CMC_TAGGED_OTHER_MSG {
    DWORD dwBodyPartID;
    LPSTR pszObjId;
    CRYPT_OBJID_BLOB Value;
  } CMC_TAGGED_OTHER_MSG,*PCMC_TAGGED_OTHER_MSG;
  typedef struct _CMC_DATA_INFO {
    DWORD cTaggedAttribute;
    PCMC_TAGGED_ATTRIBUTE rgTaggedAttribute;
    DWORD cTaggedRequest;
    PCMC_TAGGED_REQUEST rgTaggedRequest;
    DWORD cTaggedContentInfo;
    PCMC_TAGGED_CONTENT_INFO rgTaggedContentInfo;
    DWORD cTaggedOtherMsg;
    PCMC_TAGGED_OTHER_MSG rgTaggedOtherMsg;
  } CMC_DATA_INFO,*PCMC_DATA_INFO;
  typedef struct _CMC_RESPONSE_INFO {
    DWORD cTaggedAttribute;
    PCMC_TAGGED_ATTRIBUTE rgTaggedAttribute;
    DWORD cTaggedContentInfo;
    PCMC_TAGGED_CONTENT_INFO rgTaggedContentInfo;
    DWORD cTaggedOtherMsg;
    PCMC_TAGGED_OTHER_MSG rgTaggedOtherMsg;
  } CMC_RESPONSE_INFO,*PCMC_RESPONSE_INFO;
  typedef struct _CMC_PEND_INFO {
    CRYPT_DATA_BLOB PendToken;
    FILETIME PendTime;
  } CMC_PEND_INFO,*PCMC_PEND_INFO;
  typedef struct _CMC_STATUS_INFO {
    DWORD dwStatus;
    DWORD cBodyList;
    DWORD *rgdwBodyList;
    LPWSTR pwszStatusString;
    DWORD dwOtherInfoChoice;
    __extension__ union {
      DWORD dwFailInfo;
      PCMC_PEND_INFO pPendInfo;
    };
  } CMC_STATUS_INFO,*PCMC_STATUS_INFO;
#define CMC_OTHER_INFO_NO_CHOICE 0
#define CMC_OTHER_INFO_FAIL_CHOICE 1
#define CMC_OTHER_INFO_PEND_CHOICE 2
#define CMC_STATUS_SUCCESS 0
#define CMC_STATUS_FAILED 2
#define CMC_STATUS_PENDING 3
#define CMC_STATUS_NO_SUPPORT 4
#define CMC_STATUS_CONFIRM_REQUIRED 5
#define CMC_FAIL_BAD_ALG 0
#define CMC_FAIL_BAD_MESSAGE_CHECK 1
#define CMC_FAIL_BAD_REQUEST 2
#define CMC_FAIL_BAD_TIME 3
#define CMC_FAIL_BAD_CERT_ID 4
#define CMC_FAIL_UNSUPORTED_EXT 5
#define CMC_FAIL_MUST_ARCHIVE_KEYS 6
#define CMC_FAIL_BAD_IDENTITY 7
#define CMC_FAIL_POP_REQUIRED 8
#define CMC_FAIL_POP_FAILED 9
#define CMC_FAIL_NO_KEY_REUSE 10
#define CMC_FAIL_INTERNAL_CA_ERROR 11
#define CMC_FAIL_TRY_LATER 12
  typedef struct _CMC_ADD_EXTENSIONS_INFO {
    DWORD dwCmcDataReference;
    DWORD cCertReference;
    DWORD *rgdwCertReference;
    DWORD cExtension;
    PCERT_EXTENSION rgExtension;
  } CMC_ADD_EXTENSIONS_INFO,*PCMC_ADD_EXTENSIONS_INFO;
  typedef struct _CMC_ADD_ATTRIBUTES_INFO {
    DWORD dwCmcDataReference;
    DWORD cCertReference;
    DWORD *rgdwCertReference;
    DWORD cAttribute;
    PCRYPT_ATTRIBUTE rgAttribute;
  } CMC_ADD_ATTRIBUTES_INFO,*PCMC_ADD_ATTRIBUTES_INFO;
  typedef struct _CERT_TEMPLATE_EXT {
    LPSTR pszObjId;
    DWORD dwMajorVersion;
    WINBOOL fMinorVersion;
    DWORD dwMinorVersion;
  } CERT_TEMPLATE_EXT,*PCERT_TEMPLATE_EXT;
  typedef struct _CERT_HASHED_URL {
    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
    CRYPT_HASH_BLOB Hash;
    LPWSTR pwszUrl;
  } CERT_HASHED_URL,*PCERT_HASHED_URL;
  typedef struct _CERT_LOGOTYPE_DETAILS {
    LPWSTR pwszMimeType;
    DWORD cHashedUrl;
    PCERT_HASHED_URL rgHashedUrl;
  } CERT_LOGOTYPE_DETAILS,*PCERT_LOGOTYPE_DETAILS;
  typedef struct _CERT_LOGOTYPE_REFERENCE {
    DWORD cHashedUrl;
    PCERT_HASHED_URL rgHashedUrl;
  } CERT_LOGOTYPE_REFERENCE,*PCERT_LOGOTYPE_REFERENCE;
  typedef struct _CERT_LOGOTYPE_IMAGE_INFO {
    DWORD dwLogotypeImageInfoChoice;
    DWORD dwFileSize;
    DWORD dwXSize;
    DWORD dwYSize;
    DWORD dwLogotypeImageResolutionChoice;
    __extension__ union {
      DWORD dwNumBits;
      DWORD dwTableSize;
    };
    LPWSTR pwszLanguage;
  } CERT_LOGOTYPE_IMAGE_INFO,*PCERT_LOGOTYPE_IMAGE_INFO;
#define CERT_LOGOTYPE_GRAY_SCALE_IMAGE_INFO_CHOICE 1
#define CERT_LOGOTYPE_COLOR_IMAGE_INFO_CHOICE 2
#define CERT_LOGOTYPE_NO_IMAGE_RESOLUTION_CHOICE 0
#define CERT_LOGOTYPE_BITS_IMAGE_RESOLUTION_CHOICE 1
#define CERT_LOGOTYPE_TABLE_SIZE_IMAGE_RESOLUTION_CHOICE 2
  typedef struct _CERT_LOGOTYPE_IMAGE {
    CERT_LOGOTYPE_DETAILS LogotypeDetails;
    PCERT_LOGOTYPE_IMAGE_INFO pLogotypeImageInfo;
  } CERT_LOGOTYPE_IMAGE,*PCERT_LOGOTYPE_IMAGE;
  typedef struct _CERT_LOGOTYPE_AUDIO_INFO {
    DWORD dwFileSize;
    DWORD dwPlayTime;
    DWORD dwChannels;
    DWORD dwSampleRate;
    LPWSTR pwszLanguage;
  } CERT_LOGOTYPE_AUDIO_INFO,*PCERT_LOGOTYPE_AUDIO_INFO;
  typedef struct _CERT_LOGOTYPE_AUDIO {
    CERT_LOGOTYPE_DETAILS LogotypeDetails;
    PCERT_LOGOTYPE_AUDIO_INFO pLogotypeAudioInfo;
  } CERT_LOGOTYPE_AUDIO,*PCERT_LOGOTYPE_AUDIO;
  typedef struct _CERT_LOGOTYPE_DATA {
    DWORD cLogotypeImage;
    PCERT_LOGOTYPE_IMAGE rgLogotypeImage;
    DWORD cLogotypeAudio;
    PCERT_LOGOTYPE_AUDIO rgLogotypeAudio;
  } CERT_LOGOTYPE_DATA,*PCERT_LOGOTYPE_DATA;
  typedef struct _CERT_LOGOTYPE_INFO {
    DWORD dwLogotypeInfoChoice;
    __extension__ union {
      PCERT_LOGOTYPE_DATA pLogotypeDirectInfo;
      PCERT_LOGOTYPE_REFERENCE pLogotypeIndirectInfo;
    };
  } CERT_LOGOTYPE_INFO,*PCERT_LOGOTYPE_INFO;
#define CERT_LOGOTYPE_DIRECT_INFO_CHOICE 1
#define CERT_LOGOTYPE_INDIRECT_INFO_CHOICE 2
  typedef struct _CERT_OTHER_LOGOTYPE_INFO {
    LPSTR pszObjId;
    CERT_LOGOTYPE_INFO LogotypeInfo;
  } CERT_OTHER_LOGOTYPE_INFO,*PCERT_OTHER_LOGOTYPE_INFO;
#define szOID_LOYALTY_OTHER_LOGOTYPE "1.3.6.1.5.5.7.20.1"
#define szOID_BACKGROUND_OTHER_LOGOTYPE "1.3.6.1.5.5.7.20.2"
  typedef struct _CERT_LOGOTYPE_EXT_INFO {
    DWORD cCommunityLogo;
    PCERT_LOGOTYPE_INFO rgCommunityLogo;
    PCERT_LOGOTYPE_INFO pIssuerLogo;
    PCERT_LOGOTYPE_INFO pSubjectLogo;
    DWORD cOtherLogo;
    PCERT_OTHER_LOGOTYPE_INFO rgOtherLogo;
  } CERT_LOGOTYPE_EXT_INFO,*PCERT_LOGOTYPE_EXT_INFO;
  typedef struct _CERT_BIOMETRIC_DATA {
    DWORD dwTypeOfBiometricDataChoice;
    __extension__ union {
      DWORD dwPredefined;
      LPSTR pszObjId;
    };
    CERT_HASHED_URL HashedUrl;
  } CERT_BIOMETRIC_DATA,*PCERT_BIOMETRIC_DATA;
#define CERT_BIOMETRIC_PREDEFINED_DATA_CHOICE 1
#define CERT_BIOMETRIC_OID_DATA_CHOICE 2
#define CERT_BIOMETRIC_PICTURE_TYPE 0
#define CERT_BIOMETRIC_SIGNATURE_TYPE 1
  typedef struct _CERT_BIOMETRIC_EXT_INFO {
    DWORD cBiometricData;
    PCERT_BIOMETRIC_DATA rgBiometricData;
  } CERT_BIOMETRIC_EXT_INFO,*PCERT_BIOMETRIC_EXT_INFO;
  typedef struct _OCSP_SIGNATURE_INFO {
    CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
    CRYPT_BIT_BLOB Signature;
    DWORD cCertEncoded;
    PCERT_BLOB rgCertEncoded;
  } OCSP_SIGNATURE_INFO,*POCSP_SIGNATURE_INFO;
  typedef struct _OCSP_SIGNED_REQUEST_INFO {
    CRYPT_DER_BLOB ToBeSigned;
    POCSP_SIGNATURE_INFO pOptionalSignatureInfo;
  } OCSP_SIGNED_REQUEST_INFO,*POCSP_SIGNED_REQUEST_INFO;
  typedef struct _OCSP_CERT_ID {
    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
    CRYPT_HASH_BLOB IssuerNameHash;
    CRYPT_HASH_BLOB IssuerKeyHash;
    CRYPT_INTEGER_BLOB SerialNumber;
  } OCSP_CERT_ID,*POCSP_CERT_ID;
  typedef struct _OCSP_REQUEST_ENTRY {
    OCSP_CERT_ID CertId;
    DWORD cExtension;
    PCERT_EXTENSION rgExtension;
  } OCSP_REQUEST_ENTRY,*POCSP_REQUEST_ENTRY;
  typedef struct _OCSP_REQUEST_INFO {
    DWORD dwVersion;
    PCERT_ALT_NAME_ENTRY pRequestorName;
    DWORD cRequestEntry;
    POCSP_REQUEST_ENTRY rgRequestEntry;
    DWORD cExtension;
    PCERT_EXTENSION rgExtension;
  } OCSP_REQUEST_INFO,*POCSP_REQUEST_INFO;
#define OCSP_REQUEST_V1 0
  typedef struct _OCSP_RESPONSE_INFO {
    DWORD dwStatus;
    LPSTR pszObjId;
    CRYPT_OBJID_BLOB Value;
  } OCSP_RESPONSE_INFO,*POCSP_RESPONSE_INFO;
#define OCSP_SUCCESSFUL_RESPONSE 0
#define OCSP_MALFORMED_REQUEST_RESPONSE 1
#define OCSP_INTERNAL_ERROR_RESPONSE 2
#define OCSP_TRY_LATER_RESPONSE 3
#define OCSP_SIG_REQUIRED_RESPONSE 5
#define OCSP_UNAUTHORIZED_RESPONSE 6
#define szOID_PKIX_OCSP_BASIC_SIGNED_RESPONSE "1.3.6.1.5.5.7.48.1.1"
  typedef struct _OCSP_BASIC_SIGNED_RESPONSE_INFO {
    CRYPT_DER_BLOB ToBeSigned;
    OCSP_SIGNATURE_INFO SignatureInfo;
  } OCSP_BASIC_SIGNED_RESPONSE_INFO,*POCSP_BASIC_SIGNED_RESPONSE_INFO;
  typedef struct _OCSP_BASIC_REVOKED_INFO {
    FILETIME RevocationDate;
    DWORD dwCrlReasonCode;
  } OCSP_BASIC_REVOKED_INFO,*POCSP_BASIC_REVOKED_INFO;
  typedef struct _OCSP_BASIC_RESPONSE_ENTRY {
    OCSP_CERT_ID CertId;
    DWORD dwCertStatus;
    __extension__ union {
      POCSP_BASIC_REVOKED_INFO pRevokedInfo;
    };
    FILETIME ThisUpdate;
    FILETIME NextUpdate;
    DWORD cExtension;
    PCERT_EXTENSION rgExtension;
  } OCSP_BASIC_RESPONSE_ENTRY,*POCSP_BASIC_RESPONSE_ENTRY;
#define OCSP_BASIC_GOOD_CERT_STATUS 0
#define OCSP_BASIC_REVOKED_CERT_STATUS 1
#define OCSP_BASIC_UNKNOWN_CERT_STATUS 2
  typedef struct _OCSP_BASIC_RESPONSE_INFO {
    DWORD dwVersion;
    DWORD dwResponderIdChoice;
    __extension__ union {
      CERT_NAME_BLOB ByNameResponderId;
      CRYPT_HASH_BLOB ByKeyResponderId;
    };
    FILETIME ProducedAt;
    DWORD cResponseEntry;
    POCSP_BASIC_RESPONSE_ENTRY rgResponseEntry;
    DWORD cExtension;
    PCERT_EXTENSION rgExtension;
  } OCSP_BASIC_RESPONSE_INFO,*POCSP_BASIC_RESPONSE_INFO;
#define OCSP_BASIC_RESPONSE_V1 0
#define OCSP_BASIC_BY_NAME_RESPONDER_ID 1
#define OCSP_BASIC_BY_KEY_RESPONDER_ID 2
  typedef struct _CERT_SUPPORTED_ALGORITHM_INFO {
    CRYPT_ALGORITHM_IDENTIFIER Algorithm;
    CRYPT_BIT_BLOB IntendedKeyUsage;
    CERT_POLICIES_INFO IntendedCertPolicies;
  } CERT_SUPPORTED_ALGORITHM_INFO, *PCERT_SUPPORTED_ALGORITHM_INFO;
  typedef struct _CERT_TPM_SPECIFICATION_INFO {
    LPWSTR pwszFamily;
    DWORD dwLevel;
    DWORD dwRevision;
  } CERT_TPM_SPECIFICATION_INFO, *PCERT_TPM_SPECIFICATION_INFO;
  typedef void *HCRYPTOIDFUNCSET;
  typedef void *HCRYPTOIDFUNCADDR;
#define CRYPT_OID_ENCODE_OBJECT_FUNC "CryptDllEncodeObject"
#define CRYPT_OID_DECODE_OBJECT_FUNC "CryptDllDecodeObject"
#define CRYPT_OID_ENCODE_OBJECT_EX_FUNC "CryptDllEncodeObjectEx"
#define CRYPT_OID_DECODE_OBJECT_EX_FUNC "CryptDllDecodeObjectEx"
#define CRYPT_OID_CREATE_COM_OBJECT_FUNC "CryptDllCreateCOMObject"
#define CRYPT_OID_VERIFY_REVOCATION_FUNC "CertDllVerifyRevocation"
#define CRYPT_OID_VERIFY_CTL_USAGE_FUNC "CertDllVerifyCTLUsage"
#define CRYPT_OID_FORMAT_OBJECT_FUNC "CryptDllFormatObject"
#define CRYPT_OID_FIND_OID_INFO_FUNC "CryptDllFindOIDInfo"
#define CRYPT_OID_FIND_LOCALIZED_NAME_FUNC "CryptDllFindLocalizedName"
#define CRYPT_OID_REGPATH "Software\\Microsoft\\Cryptography\\OID"
#define CRYPT_OID_REG_ENCODING_TYPE_PREFIX "EncodingType "
#define CRYPT_OID_REG_DLL_VALUE_NAME L"Dll"
#define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME L"FuncName"
#define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME_A "FuncName"
#define CRYPT_OID_REG_FLAGS_VALUE_NAME L"CryptFlags"
#define CRYPT_DEFAULT_OID "DEFAULT"
  typedef struct _CRYPT_OID_FUNC_ENTRY {
    LPCSTR pszOID;
    void *pvFuncAddr;
  } CRYPT_OID_FUNC_ENTRY,*PCRYPT_OID_FUNC_ENTRY;
#define CRYPT_INSTALL_OID_FUNC_BEFORE_FLAG 1
#define CRYPT_GET_INSTALLED_OID_FUNC_FLAG 0x1
#define CRYPT_REGISTER_FIRST_INDEX 0
#define CRYPT_REGISTER_LAST_INDEX 0xffffffff
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptInstallOIDFunctionAddress (HMODULE hModule, DWORD dwEncodingType, LPCSTR pszFuncName, DWORD cFuncEntry, const CRYPT_OID_FUNC_ENTRY rgFuncEntry[], DWORD dwFlags);
  __attribute__((dllimport)) HCRYPTOIDFUNCSET __attribute__((__stdcall__)) CryptInitOIDFunctionSet (LPCSTR pszFuncName, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGetOIDFunctionAddress (HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, LPCSTR pszOID, DWORD dwFlags, void **ppvFuncAddr, HCRYPTOIDFUNCADDR *phFuncAddr);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGetDefaultOIDDllList (HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, WCHAR *pwszDllList, DWORD *pcchDllList);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGetDefaultOIDFunctionAddress (HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, LPCWSTR pwszDll, DWORD dwFlags, void **ppvFuncAddr, HCRYPTOIDFUNCADDR *phFuncAddr);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptFreeOIDFunctionAddress (HCRYPTOIDFUNCADDR hFuncAddr, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptRegisterOIDFunction (DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID, LPCWSTR pwszDll, LPCSTR pszOverrideFuncName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptUnregisterOIDFunction (DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptRegisterDefaultOIDFunction (DWORD dwEncodingType, LPCSTR pszFuncName, DWORD dwIndex, LPCWSTR pwszDll);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptUnregisterDefaultOIDFunction (DWORD dwEncodingType, LPCSTR pszFuncName, LPCWSTR pwszDll);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSetOIDFunctionValue (DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID, LPCWSTR pwszValueName, DWORD dwValueType, const BYTE *pbValueData, DWORD cbValueData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGetOIDFunctionValue (DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID, LPCWSTR pwszValueName, DWORD *pdwValueType, BYTE *pbValueData, DWORD *pcbValueData);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_ENUM_OID_FUNC) (DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID, DWORD cValue, const DWORD rgdwValueType[], LPCWSTR const rgpwszValueName[], const BYTE *const rgpbValueData[], const DWORD rgcbValueData[], void *pvArg);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptEnumOIDFunction (DWORD dwEncodingType, LPCSTR pszFuncName, LPCSTR pszOID, DWORD dwFlags, void *pvArg, PFN_CRYPT_ENUM_OID_FUNC pfnEnumOIDFunc);
#define CRYPT_MATCH_ANY_ENCODING_TYPE 0xffffffff
#define CALG_OID_INFO_CNG_ONLY 0xffffffff
#define CALG_OID_INFO_PARAMETERS 0xfffffffe
#define IS_SPECIAL_OID_INFO_ALGID(Algid) (Algid >= CALG_OID_INFO_PARAMETERS)
#define CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM L"CryptOIDInfoHashParameters"
#define CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM L"CryptOIDInfoECCParameters"
#define CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM L"CryptOIDInfoMgf1Parameters"
#define CRYPT_OID_INFO_NO_SIGN_ALGORITHM L"CryptOIDInfoNoSign"
#define CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM L"CryptOIDInfoOAEPParameters"
#define CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM L"CryptOIDInfoECCWrapParameters"
#define CRYPT_OID_INFO_NO_PARAMETERS_ALGORITHM L"CryptOIDInfoNoParameters"
  typedef struct _CRYPT_OID_INFO {
    DWORD cbSize;
    LPCSTR pszOID;
    LPCWSTR pwszName;
    DWORD dwGroupId;
    __extension__ union {
      DWORD dwValue;
      ALG_ID Algid;
      DWORD dwLength;
    };
    CRYPT_DATA_BLOB ExtraInfo;
  } CRYPT_OID_INFO,*PCRYPT_OID_INFO;
  typedef const CRYPT_OID_INFO CCRYPT_OID_INFO,*PCCRYPT_OID_INFO;
#define CRYPT_HASH_ALG_OID_GROUP_ID 1
#define CRYPT_ENCRYPT_ALG_OID_GROUP_ID 2
#define CRYPT_PUBKEY_ALG_OID_GROUP_ID 3
#define CRYPT_SIGN_ALG_OID_GROUP_ID 4
#define CRYPT_RDN_ATTR_OID_GROUP_ID 5
#define CRYPT_EXT_OR_ATTR_OID_GROUP_ID 6
#define CRYPT_ENHKEY_USAGE_OID_GROUP_ID 7
#define CRYPT_POLICY_OID_GROUP_ID 8
#define CRYPT_TEMPLATE_OID_GROUP_ID 9
#define CRYPT_KDF_OID_GROUP_ID 10
#define CRYPT_LAST_OID_GROUP_ID 10
#define CRYPT_FIRST_ALG_OID_GROUP_ID CRYPT_HASH_ALG_OID_GROUP_ID
#define CRYPT_LAST_ALG_OID_GROUP_ID CRYPT_SIGN_ALG_OID_GROUP_ID
#define CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG 0x1
#define CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG 0x2
#define CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG 0x4
#define CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG 0x40000000
#define CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG 0x80000000
#define CRYPT_OID_USE_CURVE_NAME_FOR_ENCODE_FLAG 0x20000000
#define CRYPT_OID_USE_CURVE_PARAMETERS_FOR_ENCODE_FLAG 0x10000000
  __attribute__((dllimport)) PCCRYPT_OID_INFO __attribute__((__stdcall__)) CryptFindOIDInfo (DWORD dwKeyType, void *pvKey, DWORD dwGroupId);
#define CRYPT_OID_INFO_OID_KEY 1
#define CRYPT_OID_INFO_NAME_KEY 2
#define CRYPT_OID_INFO_ALGID_KEY 3
#define CRYPT_OID_INFO_SIGN_KEY 4
#define CRYPT_OID_INFO_CNG_ALGID_KEY 5
#define CRYPT_OID_INFO_CNG_SIGN_KEY 6
#define CRYPT_OID_INFO_OID_KEY_FLAGS_MASK 0xffff0000
#define CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG 0x80000000
#define CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG 0x40000000
#define CRYPT_OID_DISABLE_SEARCH_DS_FLAG 0x80000000
#define CRYPT_OID_INFO_OID_GROUP_BIT_LEN_MASK 0x0fff0000
#define CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT 16
#define CRYPT_INSTALL_OID_INFO_BEFORE_FLAG 1
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_ENUM_OID_INFO) (PCCRYPT_OID_INFO pInfo, void *pvArg);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptRegisterOIDInfo (PCCRYPT_OID_INFO pInfo, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptUnregisterOIDInfo (PCCRYPT_OID_INFO pInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptEnumOIDInfo (DWORD dwGroupId, DWORD dwFlags, void *pvArg, PFN_CRYPT_ENUM_OID_INFO pfnEnumOIDInfo);
  __attribute__((dllimport)) LPCWSTR __attribute__((__stdcall__)) CryptFindLocalizedName (LPCWSTR pwszCryptName);
#define CRYPT_LOCALIZED_NAME_ENCODING_TYPE 0
#define CRYPT_LOCALIZED_NAME_OID "LocalizedNames"
#define CERT_STRONG_SIGN_ECDSA_ALGORITHM L"ECDSA"
  typedef struct _CERT_STRONG_SIGN_SERIALIZED_INFO {
    DWORD dwFlags;
    LPWSTR pwszCNGSignHashAlgids;
    LPWSTR pwszCNGPubKeyMinBitLengths;
  } CERT_STRONG_SIGN_SERIALIZED_INFO,*PCERT_STRONG_SIGN_SERIALIZED_INFO;
  typedef struct _CERT_STRONG_SIGN_PARA {
    DWORD cbSize;
    DWORD dwInfoChoice;
    __extension__ union {
      void *pvInfo;
      PCERT_STRONG_SIGN_SERIALIZED_INFO pSerializedInfo;
      LPSTR pszOID;
    };
  } CERT_STRONG_SIGN_PARA,*PCERT_STRONG_SIGN_PARA;
  typedef const CERT_STRONG_SIGN_PARA *PCCERT_STRONG_SIGN_PARA;
#define CERT_STRONG_SIGN_SERIALIZED_INFO_CHOICE 1
#define CERT_STRONG_SIGN_OID_INFO_CHOICE 2
#define CERT_STRONG_SIGN_ENABLE_CRL_CHECK 0x1
#define CERT_STRONG_SIGN_ENABLE_OCSP_CHECK 0x2
#define szOID_CERT_STRONG_SIGN_OS_PREFIX "1.3.6.1.4.1.311.72.1."
#define szOID_CERT_STRONG_SIGN_OS_1 "1.3.6.1.4.1.311.72.1.1"
#define szOID_CERT_STRONG_SIGN_OS_CURRENT szOID_CERT_STRONG_SIGN_OS_1
#define CERT_STRONG_SIGN_PARA_OS_1 { sizeof (CERT_STRONG_SIGN_PARA), CERT_STRONG_SIGN_OID_INFO_CHOICE, szOID_CERT_STRONG_SIGN_OS_1 }
#define CERT_STRONG_SIGN_PARA_OS_CURRENT { sizeof (CERT_STRONG_SIGN_PARA), CERT_STRONG_SIGN_OID_INFO_CHOICE, szOID_CERT_STRONG_SIGN_OS_CURRENT }
#define szOID_CERT_STRONG_KEY_OS_PREFIX "1.3.6.1.4.1.311.72.2."
#define szOID_CERT_STRONG_KEY_OS_1 "1.3.6.1.4.1.311.72.2.1"
#define szOID_CERT_STRONG_KEY_OS_CURRENT szOID_CERT_STRONG_KEY_OS_1
#define CERT_STRONG_KEY_PARA_OS_1 { sizeof (CERT_STRONG_SIGN_PARA), CERT_STRONG_SIGN_OID_INFO_CHOICE, szOID_CERT_STRONG_KEY_OS_1 }
#define CERT_STRONG_KEY_PARA_OS_CURRENT { sizeof (CERT_STRONG_SIGN_PARA), CERT_STRONG_SIGN_OID_INFO_CHOICE, szOID_CERT_STRONG_KEY_OS_CURRENT }
  typedef void *HCRYPTMSG;
#define szOID_PKCS_7_DATA "1.2.840.113549.1.7.1"
#define szOID_PKCS_7_SIGNED "1.2.840.113549.1.7.2"
#define szOID_PKCS_7_ENVELOPED "1.2.840.113549.1.7.3"
#define szOID_PKCS_7_SIGNEDANDENVELOPED "1.2.840.113549.1.7.4"
#define szOID_PKCS_7_DIGESTED "1.2.840.113549.1.7.5"
#define szOID_PKCS_7_ENCRYPTED "1.2.840.113549.1.7.6"
#define szOID_PKCS_9_CONTENT_TYPE "1.2.840.113549.1.9.3"
#define szOID_PKCS_9_MESSAGE_DIGEST "1.2.840.113549.1.9.4"
#define CMSG_DATA 1
#define CMSG_SIGNED 2
#define CMSG_ENVELOPED 3
#define CMSG_SIGNED_AND_ENVELOPED 4
#define CMSG_HASHED 5
#define CMSG_ENCRYPTED 6
#define CMSG_ALL_FLAGS (~__MSABI_LONG(0U))
#define CMSG_DATA_FLAG (1 << CMSG_DATA)
#define CMSG_SIGNED_FLAG (1 << CMSG_SIGNED)
#define CMSG_ENVELOPED_FLAG (1 << CMSG_ENVELOPED)
#define CMSG_SIGNED_AND_ENVELOPED_FLAG (1 << CMSG_SIGNED_AND_ENVELOPED)
#define CMSG_HASHED_FLAG (1 << CMSG_HASHED)
#define CMSG_ENCRYPTED_FLAG (1 << CMSG_ENCRYPTED)
  typedef struct _CERT_ISSUER_SERIAL_NUMBER {
    CERT_NAME_BLOB Issuer;
    CRYPT_INTEGER_BLOB SerialNumber;
  } CERT_ISSUER_SERIAL_NUMBER,*PCERT_ISSUER_SERIAL_NUMBER;
  typedef struct _CERT_ID {
    DWORD dwIdChoice;
    __extension__ union {
      CERT_ISSUER_SERIAL_NUMBER IssuerSerialNumber;
      CRYPT_HASH_BLOB KeyId;
      CRYPT_HASH_BLOB HashId;
    };
  } CERT_ID,*PCERT_ID;
#define CERT_ID_ISSUER_SERIAL_NUMBER 1
#define CERT_ID_KEY_IDENTIFIER 2
#define CERT_ID_SHA1_HASH 3
  typedef struct _CMSG_SIGNER_ENCODE_INFO {
    DWORD cbSize;
    PCERT_INFO pCertInfo;
    __extension__ union {
      HCRYPTPROV hCryptProv;
      NCRYPT_KEY_HANDLE hNCryptKey;
    };
    DWORD dwKeySpec;
    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
    void *pvHashAuxInfo;
    DWORD cAuthAttr;
    PCRYPT_ATTRIBUTE rgAuthAttr;
    DWORD cUnauthAttr;
    PCRYPT_ATTRIBUTE rgUnauthAttr;
  } CMSG_SIGNER_ENCODE_INFO,*PCMSG_SIGNER_ENCODE_INFO;
  typedef struct _CMSG_SIGNED_ENCODE_INFO {
    DWORD cbSize;
    DWORD cSigners;
    PCMSG_SIGNER_ENCODE_INFO rgSigners;
    DWORD cCertEncoded;
    PCERT_BLOB rgCertEncoded;
    DWORD cCrlEncoded;
    PCRL_BLOB rgCrlEncoded;
  } CMSG_SIGNED_ENCODE_INFO,*PCMSG_SIGNED_ENCODE_INFO;
  typedef struct _CMSG_RECIPIENT_ENCODE_INFO CMSG_RECIPIENT_ENCODE_INFO,*PCMSG_RECIPIENT_ENCODE_INFO;
  typedef struct _CMSG_ENVELOPED_ENCODE_INFO {
    DWORD cbSize;
    HCRYPTPROV_LEGACY hCryptProv;
    CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
    void *pvEncryptionAuxInfo;
    DWORD cRecipients;
    PCERT_INFO *rgpRecipients;
  } CMSG_ENVELOPED_ENCODE_INFO,*PCMSG_ENVELOPED_ENCODE_INFO;
  typedef struct _CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO {
    DWORD cbSize;
    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
    void *pvKeyEncryptionAuxInfo;
    HCRYPTPROV_LEGACY hCryptProv;
    CRYPT_BIT_BLOB RecipientPublicKey;
    CERT_ID RecipientId;
  } CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO,*PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO;
  typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO {
    DWORD cbSize;
    CRYPT_BIT_BLOB RecipientPublicKey;
    CERT_ID RecipientId;
    FILETIME Date;
    PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;
  } CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO,*PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO;
  typedef struct _CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO {
    DWORD cbSize;
    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
    void *pvKeyEncryptionAuxInfo;
    CRYPT_ALGORITHM_IDENTIFIER KeyWrapAlgorithm;
    void *pvKeyWrapAuxInfo;
    HCRYPTPROV_LEGACY hCryptProv;
    DWORD dwKeySpec;
    DWORD dwKeyChoice;
    __extension__ union {
      PCRYPT_ALGORITHM_IDENTIFIER pEphemeralAlgorithm;
      PCERT_ID pSenderId;
    };
    CRYPT_DATA_BLOB UserKeyingMaterial;
    DWORD cRecipientEncryptedKeys;
    PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO *rgpRecipientEncryptedKeys;
  } CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO,*PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO;
#define CMSG_KEY_AGREE_EPHEMERAL_KEY_CHOICE 1
#define CMSG_KEY_AGREE_STATIC_KEY_CHOICE 2
  typedef struct _CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO {
    DWORD cbSize;
    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
    void *pvKeyEncryptionAuxInfo;
    HCRYPTPROV hCryptProv;
    DWORD dwKeyChoice;
    __extension__ union {
      HCRYPTKEY hKeyEncryptionKey;
      void *pvKeyEncryptionKey;
    };
    CRYPT_DATA_BLOB KeyId;
    FILETIME Date;
    PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;
  } CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO,*PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO;
#define CMSG_MAIL_LIST_HANDLE_KEY_CHOICE 1
#define CMSG_KEY_TRANS_RECIPIENT 1
#define CMSG_KEY_AGREE_RECIPIENT 2
#define CMSG_MAIL_LIST_RECIPIENT 3
#define CMSG_RC4_NO_SALT_FLAG 0x40000000
#define CMSG_SP3_COMPATIBLE_ENCRYPT_FLAG 0x80000000
  struct _CMSG_RECIPIENT_ENCODE_INFO {
    DWORD dwRecipientChoice;
    __extension__ union {
      PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO pKeyTrans;
      PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgree;
      PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO pMailList;
    };
  };
  typedef struct _CMSG_RC2_AUX_INFO {
    DWORD cbSize;
    DWORD dwBitLen;
  } CMSG_RC2_AUX_INFO,*PCMSG_RC2_AUX_INFO;
  typedef struct _CMSG_SP3_COMPATIBLE_AUX_INFO {
    DWORD cbSize;
    DWORD dwFlags;
  } CMSG_SP3_COMPATIBLE_AUX_INFO,*PCMSG_SP3_COMPATIBLE_AUX_INFO;
  typedef struct _CMSG_RC4_AUX_INFO {
    DWORD cbSize;
    DWORD dwBitLen;
  } CMSG_RC4_AUX_INFO,*PCMSG_RC4_AUX_INFO;
  typedef struct _CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO {
    DWORD cbSize;
    CMSG_SIGNED_ENCODE_INFO SignedInfo;
    CMSG_ENVELOPED_ENCODE_INFO EnvelopedInfo;
  } CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO,*PCMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO;
  typedef struct _CMSG_HASHED_ENCODE_INFO {
    DWORD cbSize;
    HCRYPTPROV_LEGACY hCryptProv;
    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
    void *pvHashAuxInfo;
  } CMSG_HASHED_ENCODE_INFO,*PCMSG_HASHED_ENCODE_INFO;
  typedef struct _CMSG_ENCRYPTED_ENCODE_INFO {
    DWORD cbSize;
    CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
    void *pvEncryptionAuxInfo;
  } CMSG_ENCRYPTED_ENCODE_INFO,*PCMSG_ENCRYPTED_ENCODE_INFO;
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_STREAM_OUTPUT) (const void *pvArg, BYTE *pbData, DWORD cbData, WINBOOL fFinal);
#define CMSG_INDEFINITE_LENGTH (0xffffffff)
  typedef struct _CMSG_STREAM_INFO {
    DWORD cbContent;
    PFN_CMSG_STREAM_OUTPUT pfnStreamOutput;
    void *pvArg;
  } CMSG_STREAM_INFO,*PCMSG_STREAM_INFO;
#define CMSG_BARE_CONTENT_FLAG 0x1
#define CMSG_LENGTH_ONLY_FLAG 0x2
#define CMSG_DETACHED_FLAG 0x4
#define CMSG_AUTHENTICATED_ATTRIBUTES_FLAG 0x8
#define CMSG_CONTENTS_OCTETS_FLAG 0x10
#define CMSG_MAX_LENGTH_FLAG 0x20
#define CMSG_CMS_ENCAPSULATED_CONTENT_FLAG 0x40
#define CMSG_SIGNED_DATA_NO_SIGN_FLAG 0x80
#define CMSG_CRYPT_RELEASE_CONTEXT_FLAG 0x8000
  __attribute__((dllimport)) HCRYPTMSG __attribute__((__stdcall__)) CryptMsgOpenToEncode (DWORD dwMsgEncodingType, DWORD dwFlags, DWORD dwMsgType, void const *pvMsgEncodeInfo, LPSTR pszInnerContentObjID, PCMSG_STREAM_INFO pStreamInfo);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CryptMsgCalculateEncodedLength (DWORD dwMsgEncodingType, DWORD dwFlags, DWORD dwMsgType, void const *pvMsgEncodeInfo, LPSTR pszInnerContentObjID, DWORD cbData);
  __attribute__((dllimport)) HCRYPTMSG __attribute__((__stdcall__)) CryptMsgOpenToDecode (DWORD dwMsgEncodingType, DWORD dwFlags, DWORD dwMsgType, HCRYPTPROV_LEGACY hCryptProv, PCERT_INFO pRecipientInfo, PCMSG_STREAM_INFO pStreamInfo);
  __attribute__((dllimport)) HCRYPTMSG __attribute__((__stdcall__)) CryptMsgDuplicate (HCRYPTMSG hCryptMsg);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptMsgClose (HCRYPTMSG hCryptMsg);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptMsgUpdate (HCRYPTMSG hCryptMsg, const BYTE *pbData, DWORD cbData, WINBOOL fFinal);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptMsgGetParam (HCRYPTMSG hCryptMsg, DWORD dwParamType, DWORD dwIndex, void *pvData, DWORD *pcbData);
#define CMSG_TYPE_PARAM 1
#define CMSG_CONTENT_PARAM 2
#define CMSG_BARE_CONTENT_PARAM 3
#define CMSG_INNER_CONTENT_TYPE_PARAM 4
#define CMSG_SIGNER_COUNT_PARAM 5
#define CMSG_SIGNER_INFO_PARAM 6
#define CMSG_SIGNER_CERT_INFO_PARAM 7
#define CMSG_SIGNER_HASH_ALGORITHM_PARAM 8
#define CMSG_SIGNER_AUTH_ATTR_PARAM 9
#define CMSG_SIGNER_UNAUTH_ATTR_PARAM 10
#define CMSG_CERT_COUNT_PARAM 11
#define CMSG_CERT_PARAM 12
#define CMSG_CRL_COUNT_PARAM 13
#define CMSG_CRL_PARAM 14
#define CMSG_ENVELOPE_ALGORITHM_PARAM 15
#define CMSG_RECIPIENT_COUNT_PARAM 17
#define CMSG_RECIPIENT_INDEX_PARAM 18
#define CMSG_RECIPIENT_INFO_PARAM 19
#define CMSG_HASH_ALGORITHM_PARAM 20
#define CMSG_HASH_DATA_PARAM 21
#define CMSG_COMPUTED_HASH_PARAM 22
#define CMSG_ENCRYPT_PARAM 26
#define CMSG_ENCRYPTED_DIGEST 27
#define CMSG_ENCODED_SIGNER 28
#define CMSG_ENCODED_MESSAGE 29
#define CMSG_VERSION_PARAM 30
#define CMSG_ATTR_CERT_COUNT_PARAM 31
#define CMSG_ATTR_CERT_PARAM 32
#define CMSG_CMS_RECIPIENT_COUNT_PARAM 33
#define CMSG_CMS_RECIPIENT_INDEX_PARAM 34
#define CMSG_CMS_RECIPIENT_ENCRYPTED_KEY_INDEX_PARAM 35
#define CMSG_CMS_RECIPIENT_INFO_PARAM 36
#define CMSG_UNPROTECTED_ATTR_PARAM 37
#define CMSG_SIGNER_CERT_ID_PARAM 38
#define CMSG_CMS_SIGNER_INFO_PARAM 39
  typedef struct _CMSG_SIGNER_INFO {
    DWORD dwVersion;
    CERT_NAME_BLOB Issuer;
    CRYPT_INTEGER_BLOB SerialNumber;
    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
    CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
    CRYPT_DATA_BLOB EncryptedHash;
    CRYPT_ATTRIBUTES AuthAttrs;
    CRYPT_ATTRIBUTES UnauthAttrs;
  } CMSG_SIGNER_INFO,*PCMSG_SIGNER_INFO;
  typedef struct _CMSG_CMS_SIGNER_INFO {
    DWORD dwVersion;
    CERT_ID SignerId;
    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
    CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm;
    CRYPT_DATA_BLOB EncryptedHash;
    CRYPT_ATTRIBUTES AuthAttrs;
    CRYPT_ATTRIBUTES UnauthAttrs;
  } CMSG_CMS_SIGNER_INFO,*PCMSG_CMS_SIGNER_INFO;
  typedef CRYPT_ATTRIBUTES CMSG_ATTR;
  typedef CRYPT_ATTRIBUTES *PCMSG_ATTR;
#define CMSG_SIGNED_DATA_V1 1
#define CMSG_SIGNED_DATA_V3 3
#define CMSG_SIGNED_DATA_PKCS_1_5_VERSION CMSG_SIGNED_DATA_V1
#define CMSG_SIGNED_DATA_CMS_VERSION CMSG_SIGNED_DATA_V3
#define CMSG_SIGNER_INFO_V1 1
#define CMSG_SIGNER_INFO_V3 3
#define CMSG_SIGNER_INFO_PKCS_1_5_VERSION CMSG_SIGNER_INFO_V1
#define CMSG_SIGNER_INFO_CMS_VERSION CMSG_SIGNER_INFO_V3
#define CMSG_HASHED_DATA_V0 0
#define CMSG_HASHED_DATA_V2 2
#define CMSG_HASHED_DATA_PKCS_1_5_VERSION CMSG_HASHED_DATA_V0
#define CMSG_HASHED_DATA_CMS_VERSION CMSG_HASHED_DATA_V2
#define CMSG_ENVELOPED_DATA_V0 0
#define CMSG_ENVELOPED_DATA_V2 2
#define CMSG_ENVELOPED_DATA_PKCS_1_5_VERSION CMSG_ENVELOPED_DATA_V0
#define CMSG_ENVELOPED_DATA_CMS_VERSION CMSG_ENVELOPED_DATA_V2
  typedef struct _CMSG_KEY_TRANS_RECIPIENT_INFO {
    DWORD dwVersion;
    CERT_ID RecipientId;
    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
    CRYPT_DATA_BLOB EncryptedKey;
  } CMSG_KEY_TRANS_RECIPIENT_INFO,*PCMSG_KEY_TRANS_RECIPIENT_INFO;
  typedef struct _CMSG_RECIPIENT_ENCRYPTED_KEY_INFO {
    CERT_ID RecipientId;
    CRYPT_DATA_BLOB EncryptedKey;
    FILETIME Date;
    PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;
  } CMSG_RECIPIENT_ENCRYPTED_KEY_INFO,*PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO;
  typedef struct _CMSG_KEY_AGREE_RECIPIENT_INFO {
    DWORD dwVersion;
    DWORD dwOriginatorChoice;
    __extension__ union {
      CERT_ID OriginatorCertId;
      CERT_PUBLIC_KEY_INFO OriginatorPublicKeyInfo;
    };
    CRYPT_DATA_BLOB UserKeyingMaterial;
    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
    DWORD cRecipientEncryptedKeys;
    PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO *rgpRecipientEncryptedKeys;
  } CMSG_KEY_AGREE_RECIPIENT_INFO,*PCMSG_KEY_AGREE_RECIPIENT_INFO;
#define CMSG_KEY_AGREE_ORIGINATOR_CERT 1
#define CMSG_KEY_AGREE_ORIGINATOR_PUBLIC_KEY 2
  typedef struct _CMSG_MAIL_LIST_RECIPIENT_INFO {
    DWORD dwVersion;
    CRYPT_DATA_BLOB KeyId;
    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
    CRYPT_DATA_BLOB EncryptedKey;
    FILETIME Date;
    PCRYPT_ATTRIBUTE_TYPE_VALUE pOtherAttr;
  } CMSG_MAIL_LIST_RECIPIENT_INFO,*PCMSG_MAIL_LIST_RECIPIENT_INFO;
  typedef struct _CMSG_CMS_RECIPIENT_INFO {
    DWORD dwRecipientChoice;
    __extension__ union {
      PCMSG_KEY_TRANS_RECIPIENT_INFO pKeyTrans;
      PCMSG_KEY_AGREE_RECIPIENT_INFO pKeyAgree;
      PCMSG_MAIL_LIST_RECIPIENT_INFO pMailList;
    };
  } CMSG_CMS_RECIPIENT_INFO,*PCMSG_CMS_RECIPIENT_INFO;
#define CMSG_ENVELOPED_RECIPIENT_V0 0
#define CMSG_ENVELOPED_RECIPIENT_V2 2
#define CMSG_ENVELOPED_RECIPIENT_V3 3
#define CMSG_ENVELOPED_RECIPIENT_V4 4
#define CMSG_KEY_TRANS_PKCS_1_5_VERSION CMSG_ENVELOPED_RECIPIENT_V0
#define CMSG_KEY_TRANS_CMS_VERSION CMSG_ENVELOPED_RECIPIENT_V2
#define CMSG_KEY_AGREE_VERSION CMSG_ENVELOPED_RECIPIENT_V3
#define CMSG_MAIL_LIST_VERSION CMSG_ENVELOPED_RECIPIENT_V4
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptMsgControl (HCRYPTMSG hCryptMsg, DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara);
#define CMSG_CTRL_VERIFY_SIGNATURE 1
#define CMSG_CTRL_DECRYPT 2
#define CMSG_CTRL_VERIFY_HASH 5
#define CMSG_CTRL_ADD_SIGNER 6
#define CMSG_CTRL_DEL_SIGNER 7
#define CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR 8
#define CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR 9
#define CMSG_CTRL_ADD_CERT 10
#define CMSG_CTRL_DEL_CERT 11
#define CMSG_CTRL_ADD_CRL 12
#define CMSG_CTRL_DEL_CRL 13
#define CMSG_CTRL_ADD_ATTR_CERT 14
#define CMSG_CTRL_DEL_ATTR_CERT 15
#define CMSG_CTRL_KEY_TRANS_DECRYPT 16
#define CMSG_CTRL_KEY_AGREE_DECRYPT 17
#define CMSG_CTRL_MAIL_LIST_DECRYPT 18
#define CMSG_CTRL_VERIFY_SIGNATURE_EX 19
#define CMSG_CTRL_ADD_CMS_SIGNER_INFO 20
#define CMSG_CTRL_ENABLE_STRONG_SIGNATURE 21
  typedef struct _CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA {
    DWORD cbSize;
    HCRYPTPROV_LEGACY hCryptProv;
    DWORD dwSignerIndex;
    DWORD dwSignerType;
    void *pvSigner;
  } CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA,*PCMSG_CTRL_VERIFY_SIGNATURE_EX_PARA;
#define CMSG_VERIFY_SIGNER_PUBKEY 1
#define CMSG_VERIFY_SIGNER_CERT 2
#define CMSG_VERIFY_SIGNER_CHAIN 3
#define CMSG_VERIFY_SIGNER_NULL 4
  typedef struct _CMSG_CTRL_DECRYPT_PARA {
    DWORD cbSize;
    __extension__ union {
      HCRYPTPROV hCryptProv;
      NCRYPT_KEY_HANDLE hNCryptKey;
    };
    DWORD dwKeySpec;
    DWORD dwRecipientIndex;
  } CMSG_CTRL_DECRYPT_PARA,*PCMSG_CTRL_DECRYPT_PARA;
  typedef struct _CMSG_CTRL_KEY_TRANS_DECRYPT_PARA {
    DWORD cbSize;
    __extension__ union {
      HCRYPTPROV hCryptProv;
      NCRYPT_KEY_HANDLE hNCryptKey;
    };
    DWORD dwKeySpec;
    PCMSG_KEY_TRANS_RECIPIENT_INFO pKeyTrans;
    DWORD dwRecipientIndex;
  } CMSG_CTRL_KEY_TRANS_DECRYPT_PARA,*PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA;
  typedef struct _CMSG_CTRL_KEY_AGREE_DECRYPT_PARA {
    DWORD cbSize;
    __extension__ union {
      HCRYPTPROV hCryptProv;
      NCRYPT_KEY_HANDLE hNCryptKey;
    };
    DWORD dwKeySpec;
    PCMSG_KEY_AGREE_RECIPIENT_INFO pKeyAgree;
    DWORD dwRecipientIndex;
    DWORD dwRecipientEncryptedKeyIndex;
    CRYPT_BIT_BLOB OriginatorPublicKey;
  } CMSG_CTRL_KEY_AGREE_DECRYPT_PARA,*PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA;
  typedef struct _CMSG_CTRL_MAIL_LIST_DECRYPT_PARA {
    DWORD cbSize;
    HCRYPTPROV hCryptProv;
    PCMSG_MAIL_LIST_RECIPIENT_INFO pMailList;
    DWORD dwRecipientIndex;
    DWORD dwKeyChoice;
    __extension__ union {
      HCRYPTKEY hKeyEncryptionKey;
      void *pvKeyEncryptionKey;
    };
  } CMSG_CTRL_MAIL_LIST_DECRYPT_PARA,*PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA;
  typedef struct _CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA {
    DWORD cbSize;
    DWORD dwSignerIndex;
    CRYPT_DATA_BLOB blob;
  } CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA,*PCMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA;
  typedef struct _CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA {
    DWORD cbSize;
    DWORD dwSignerIndex;
    DWORD dwUnauthAttrIndex;
  } CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA,*PCMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA;
#define CMSG_VERIFY_COUNTER_SIGN_ENABLE_STRONG_FLAG 0x1
  WINBOOL __attribute__((__stdcall__)) CryptMsgVerifyCountersignatureEncoded (HCRYPTPROV_LEGACY hCryptProv, DWORD dwEncodingType, PBYTE pbSignerInfo, DWORD cbSignerInfo, PBYTE pbSignerInfoCountersignature, DWORD cbSignerInfoCountersignature, PCERT_INFO pciCountersigner);
  WINBOOL __attribute__((__stdcall__)) CryptMsgVerifyCountersignatureEncodedEx (HCRYPTPROV_LEGACY hCryptProv, DWORD dwEncodingType, PBYTE pbSignerInfo, DWORD cbSignerInfo, PBYTE pbSignerInfoCountersignature, DWORD cbSignerInfoCountersignature, DWORD dwSignerType, void *pvSigner, DWORD dwFlags, void *pvExtra);
  WINBOOL __attribute__((__stdcall__)) CryptMsgCountersign (HCRYPTMSG hCryptMsg, DWORD dwIndex, DWORD cCountersigners, PCMSG_SIGNER_ENCODE_INFO rgCountersigners);
  WINBOOL __attribute__((__stdcall__)) CryptMsgCountersignEncoded (DWORD dwEncodingType, PBYTE pbSignerInfo, DWORD cbSignerInfo, DWORD cCountersigners, PCMSG_SIGNER_ENCODE_INFO rgCountersigners, PBYTE pbCountersignature, PDWORD pcbCountersignature);
  typedef void *(__attribute__((__stdcall__)) *PFN_CMSG_ALLOC) (size_t cb);
  typedef void (__attribute__((__stdcall__)) *PFN_CMSG_FREE) (void *pv);
#define CMSG_OID_GEN_ENCRYPT_KEY_FUNC "CryptMsgDllGenEncryptKey"
#define CMSG_OID_EXPORT_ENCRYPT_KEY_FUNC "CryptMsgDllExportEncryptKey"
#define CMSG_OID_IMPORT_ENCRYPT_KEY_FUNC "CryptMsgDllImportEncryptKey"
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_GEN_ENCRYPT_KEY) (HCRYPTPROV *phCryptProv, PCRYPT_ALGORITHM_IDENTIFIER paiEncrypt, PVOID pvEncryptAuxInfo, PCERT_PUBLIC_KEY_INFO pPublicKeyInfo, PFN_CMSG_ALLOC pfnAlloc, HCRYPTKEY *phEncryptKey, PBYTE *ppbEncryptParameters, PDWORD pcbEncryptParameters);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_EXPORT_ENCRYPT_KEY) (HCRYPTPROV hCryptProv, HCRYPTKEY hEncryptKey, PCERT_PUBLIC_KEY_INFO pPublicKeyInfo, PBYTE pbData, PDWORD pcbData);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_IMPORT_ENCRYPT_KEY) (HCRYPTPROV hCryptProv, DWORD dwKeySpec, PCRYPT_ALGORITHM_IDENTIFIER paiEncrypt, PCRYPT_ALGORITHM_IDENTIFIER paiPubKey, PBYTE pbEncodedKey, DWORD cbEncodedKey, HCRYPTKEY *phEncryptKey);
#define CMSG_DEFAULT_INSTALLABLE_FUNC_OID ((LPCSTR) 1)
  typedef struct _CMSG_CONTENT_ENCRYPT_INFO {
    DWORD cbSize;
    HCRYPTPROV_LEGACY hCryptProv;
    CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
    void *pvEncryptionAuxInfo;
    DWORD cRecipients;
    PCMSG_RECIPIENT_ENCODE_INFO rgCmsRecipients;
    PFN_CMSG_ALLOC pfnAlloc;
    PFN_CMSG_FREE pfnFree;
    DWORD dwEncryptFlags;
    __extension__ union {
      HCRYPTKEY hContentEncryptKey;
      BCRYPT_KEY_HANDLE hCNGContentEncryptKey;
    };
    DWORD dwFlags;
    WINBOOL fCNG;
    BYTE *pbCNGContentEncryptKeyObject;
    BYTE *pbContentEncryptKey;
    DWORD cbContentEncryptKey;
  } CMSG_CONTENT_ENCRYPT_INFO,*PCMSG_CONTENT_ENCRYPT_INFO;
#define CMSG_CONTENT_ENCRYPT_PAD_ENCODED_LEN_FLAG 0x1
#define CMSG_CONTENT_ENCRYPT_FREE_PARA_FLAG 0x1
#define CMSG_CONTENT_ENCRYPT_FREE_OBJID_FLAG 0x2
#define CMSG_CONTENT_ENCRYPT_RELEASE_CONTEXT_FLAG 0x8000
#define CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC "CryptMsgDllGenContentEncryptKey"
#define CMSG_OID_CAPI1_GEN_CONTENT_ENCRYPT_KEY_FUNC CMSG_OID_GEN_CONTENT_ENCRYPT_KEY_FUNC
#define CMSG_OID_CNG_GEN_CONTENT_ENCRYPT_KEY_FUNC "CryptMsgDllCNGGenContentEncryptKey"
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY) (PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo, DWORD dwFlags, void *pvReserved);
  typedef struct _CMSG_KEY_TRANS_ENCRYPT_INFO {
    DWORD cbSize;
    DWORD dwRecipientIndex;
    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
    CRYPT_DATA_BLOB EncryptedKey;
    DWORD dwFlags;
  } CMSG_KEY_TRANS_ENCRYPT_INFO,*PCMSG_KEY_TRANS_ENCRYPT_INFO;
#define CMSG_KEY_TRANS_ENCRYPT_FREE_PARA_FLAG 0x1
#define CMSG_KEY_TRANS_ENCRYPT_FREE_OBJID_FLAG 0x2
#define CMSG_OID_EXPORT_KEY_TRANS_FUNC "CryptMsgDllExportKeyTrans"
#define CMSG_OID_CAPI1_EXPORT_KEY_TRANS_FUNC CMSG_OID_EXPORT_KEY_TRANS_FUNC
#define CMSG_OID_CNG_EXPORT_KEY_TRANS_FUNC "CryptMsgDllCNGExportKeyTrans"
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_EXPORT_KEY_TRANS) (PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo, PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO pKeyTransEncodeInfo, PCMSG_KEY_TRANS_ENCRYPT_INFO pKeyTransEncryptInfo, DWORD dwFlags, void *pvReserved);
  typedef struct _CMSG_KEY_AGREE_KEY_ENCRYPT_INFO {
    DWORD cbSize;
    CRYPT_DATA_BLOB EncryptedKey;
  } CMSG_KEY_AGREE_KEY_ENCRYPT_INFO,*PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO;
  typedef struct _CMSG_KEY_AGREE_ENCRYPT_INFO {
    DWORD cbSize;
    DWORD dwRecipientIndex;
    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
    CRYPT_DATA_BLOB UserKeyingMaterial;
    DWORD dwOriginatorChoice;
    __extension__ union {
      CERT_ID OriginatorCertId;
      CERT_PUBLIC_KEY_INFO OriginatorPublicKeyInfo;
    };
    DWORD cKeyAgreeKeyEncryptInfo;
    PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO *rgpKeyAgreeKeyEncryptInfo;
    DWORD dwFlags;
  } CMSG_KEY_AGREE_ENCRYPT_INFO,*PCMSG_KEY_AGREE_ENCRYPT_INFO;
#define CMSG_KEY_AGREE_ENCRYPT_FREE_PARA_FLAG 0x1
#define CMSG_KEY_AGREE_ENCRYPT_FREE_MATERIAL_FLAG 0x2
#define CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_ALG_FLAG 0x4
#define CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_PARA_FLAG 0x8
#define CMSG_KEY_AGREE_ENCRYPT_FREE_PUBKEY_BITS_FLAG 0x10
#define CMSG_KEY_AGREE_ENCRYPT_FREE_OBJID_FLAG 0x20
#define CMSG_OID_EXPORT_KEY_AGREE_FUNC "CryptMsgDllExportKeyAgree"
#define CMSG_OID_CAPI1_EXPORT_KEY_AGREE_FUNC CMSG_OID_EXPORT_KEY_AGREE_FUNC
#define CMSG_OID_CNG_EXPORT_KEY_AGREE_FUNC "CryptMsgDllCNGExportKeyAgree"
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_EXPORT_KEY_AGREE) (PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo, PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO pKeyAgreeEncodeInfo, PCMSG_KEY_AGREE_ENCRYPT_INFO pKeyAgreeEncryptInfo, DWORD dwFlags, void *pvReserved);
  typedef struct _CMSG_MAIL_LIST_ENCRYPT_INFO {
    DWORD cbSize;
    DWORD dwRecipientIndex;
    CRYPT_ALGORITHM_IDENTIFIER KeyEncryptionAlgorithm;
    CRYPT_DATA_BLOB EncryptedKey;
    DWORD dwFlags;
  } CMSG_MAIL_LIST_ENCRYPT_INFO,*PCMSG_MAIL_LIST_ENCRYPT_INFO;
#define CMSG_MAIL_LIST_ENCRYPT_FREE_PARA_FLAG 0x1
#define CMSG_MAIL_LIST_ENCRYPT_FREE_OBJID_FLAG 0x2
#define CMSG_OID_EXPORT_MAIL_LIST_FUNC "CryptMsgDllExportMailList"
#define CMSG_OID_CAPI1_EXPORT_MAIL_LIST_FUNC CMSG_OID_EXPORT_MAIL_LIST_FUNC
#define CMSG_OID_IMPORT_KEY_TRANS_FUNC "CryptMsgDllImportKeyTrans"
#define CMSG_OID_CAPI1_IMPORT_KEY_TRANS_FUNC CMSG_OID_IMPORT_KEY_TRANS_FUNC
#define CMSG_OID_IMPORT_KEY_AGREE_FUNC "CryptMsgDllImportKeyAgree"
#define CMSG_OID_CAPI1_IMPORT_KEY_AGREE_FUNC CMSG_OID_IMPORT_KEY_AGREE_FUNC
#define CMSG_OID_IMPORT_MAIL_LIST_FUNC "CryptMsgDllImportMailList"
#define CMSG_OID_CAPI1_IMPORT_MAIL_LIST_FUNC CMSG_OID_IMPORT_MAIL_LIST_FUNC
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_EXPORT_MAIL_LIST) (PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo, PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO pMailListEncodeInfo, PCMSG_MAIL_LIST_ENCRYPT_INFO pMailListEncryptInfo, DWORD dwFlags, void *pvReserved);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_IMPORT_KEY_TRANS) (PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm, PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA pKeyTransDecryptPara, DWORD dwFlags, void *pvReserved, HCRYPTKEY *phContentEncryptKey);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_IMPORT_KEY_AGREE) (PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm, PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA pKeyAgreeDecryptPara, DWORD dwFlags, void *pvReserved, HCRYPTKEY *phContentEncryptKey);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_IMPORT_MAIL_LIST) (PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm, PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA pMailListDecryptPara, DWORD dwFlags, void *pvReserved, HCRYPTKEY *phContentEncryptKey);
  typedef struct _CMSG_CNG_CONTENT_DECRYPT_INFO {
    DWORD cbSize;
    CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
    PFN_CMSG_ALLOC pfnAlloc;
    PFN_CMSG_FREE pfnFree;
    NCRYPT_KEY_HANDLE hNCryptKey;
    BYTE *pbContentEncryptKey;
    DWORD cbContentEncryptKey;
    BCRYPT_KEY_HANDLE hCNGContentEncryptKey;
    BYTE *pbCNGContentEncryptKeyObject;
  } CMSG_CNG_CONTENT_DECRYPT_INFO,*PCMSG_CNG_CONTENT_DECRYPT_INFO;
#define CMSG_OID_CNG_IMPORT_KEY_TRANS_FUNC "CryptMsgDllCNGImportKeyTrans"
#define CMSG_OID_CNG_IMPORT_KEY_AGREE_FUNC "CryptMsgDllCNGImportKeyAgree"
#define CMSG_OID_CNG_IMPORT_CONTENT_ENCRYPT_KEY_FUNC "CryptMsgDllCNGImportContentEncryptKey"
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_CNG_IMPORT_KEY_TRANS) (PCMSG_CNG_CONTENT_DECRYPT_INFO pCNGContentDecryptInfo, PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA pKeyTransDecryptPara, DWORD dwFlags, void *pvReserved);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_CNG_IMPORT_KEY_AGREE) (PCMSG_CNG_CONTENT_DECRYPT_INFO pCNGContentDecryptInfo, PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA pKeyAgreeDecryptPara, DWORD dwFlags, void *pvReserved);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY) (PCMSG_CNG_CONTENT_DECRYPT_INFO pCNGContentDecryptInfo, DWORD dwFlags, void *pvReserved);
  typedef void *HCERTSTORE;
  typedef struct _CERT_CONTEXT {
    DWORD dwCertEncodingType;
    BYTE *pbCertEncoded;
    DWORD cbCertEncoded;
    PCERT_INFO pCertInfo;
    HCERTSTORE hCertStore;
  } CERT_CONTEXT,*PCERT_CONTEXT;
  typedef const CERT_CONTEXT *PCCERT_CONTEXT;
  typedef struct _CRL_CONTEXT {
    DWORD dwCertEncodingType;
    BYTE *pbCrlEncoded;
    DWORD cbCrlEncoded;
    PCRL_INFO pCrlInfo;
    HCERTSTORE hCertStore;
  } CRL_CONTEXT,*PCRL_CONTEXT;
  typedef const CRL_CONTEXT *PCCRL_CONTEXT;
  typedef struct _CTL_CONTEXT {
    DWORD dwMsgAndCertEncodingType;
    BYTE *pbCtlEncoded;
    DWORD cbCtlEncoded;
    PCTL_INFO pCtlInfo;
    HCERTSTORE hCertStore;
    HCRYPTMSG hCryptMsg;
    BYTE *pbCtlContent;
    DWORD cbCtlContent;
  } CTL_CONTEXT,*PCTL_CONTEXT;
  typedef const CTL_CONTEXT *PCCTL_CONTEXT;
#define CERT_KEY_PROV_HANDLE_PROP_ID 1
#define CERT_KEY_PROV_INFO_PROP_ID 2
#define CERT_SHA1_HASH_PROP_ID 3
#define CERT_MD5_HASH_PROP_ID 4
#define CERT_HASH_PROP_ID CERT_SHA1_HASH_PROP_ID
#define CERT_KEY_CONTEXT_PROP_ID 5
#define CERT_KEY_SPEC_PROP_ID 6
#define CERT_IE30_RESERVED_PROP_ID 7
#define CERT_PUBKEY_HASH_RESERVED_PROP_ID 8
#define CERT_ENHKEY_USAGE_PROP_ID 9
#define CERT_CTL_USAGE_PROP_ID CERT_ENHKEY_USAGE_PROP_ID
#define CERT_NEXT_UPDATE_LOCATION_PROP_ID 10
#define CERT_FRIENDLY_NAME_PROP_ID 11
#define CERT_PVK_FILE_PROP_ID 12
#define CERT_DESCRIPTION_PROP_ID 13
#define CERT_ACCESS_STATE_PROP_ID 14
#define CERT_SIGNATURE_HASH_PROP_ID 15
#define CERT_SMART_CARD_DATA_PROP_ID 16
#define CERT_EFS_PROP_ID 17
#define CERT_FORTEZZA_DATA_PROP_ID 18
#define CERT_ARCHIVED_PROP_ID 19
#define CERT_KEY_IDENTIFIER_PROP_ID 20
#define CERT_AUTO_ENROLL_PROP_ID 21
#define CERT_PUBKEY_ALG_PARA_PROP_ID 22
#define CERT_CROSS_CERT_DIST_POINTS_PROP_ID 23
#define CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID 24
#define CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID 25
#define CERT_ENROLLMENT_PROP_ID 26
#define CERT_DATE_STAMP_PROP_ID 27
#define CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID 28
#define CERT_SUBJECT_NAME_MD5_HASH_PROP_ID 29
#define CERT_EXTENDED_ERROR_INFO_PROP_ID 30
#define CERT_RENEWAL_PROP_ID 64
#define CERT_ARCHIVED_KEY_HASH_PROP_ID 65
#define CERT_AUTO_ENROLL_RETRY_PROP_ID 66
#define CERT_AIA_URL_RETRIEVED_PROP_ID 67
#define CERT_AUTHORITY_INFO_ACCESS_PROP_ID 68
#define CERT_BACKED_UP_PROP_ID 69
#define CERT_OCSP_RESPONSE_PROP_ID 70
#define CERT_REQUEST_ORIGINATOR_PROP_ID 71
#define CERT_SOURCE_LOCATION_PROP_ID 72
#define CERT_SOURCE_URL_PROP_ID 73
#define CERT_NEW_KEY_PROP_ID 74
#define CERT_OCSP_CACHE_PREFIX_PROP_ID 75
#define CERT_SMART_CARD_ROOT_INFO_PROP_ID 76
#define CERT_NO_AUTO_EXPIRE_CHECK_PROP_ID 77
#define CERT_NCRYPT_KEY_HANDLE_PROP_ID 78
#define CERT_HCRYPTPROV_OR_NCRYPT_KEY_HANDLE_PROP_ID 79
#define CERT_SUBJECT_INFO_ACCESS_PROP_ID 80
#define CERT_CA_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID 81
#define CERT_CA_DISABLE_CRL_PROP_ID 82
#define CERT_ROOT_PROGRAM_CERT_POLICIES_PROP_ID 83
#define CERT_ROOT_PROGRAM_NAME_CONSTRAINTS_PROP_ID 84
#define CERT_SUBJECT_OCSP_AUTHORITY_INFO_ACCESS_PROP_ID 85
#define CERT_SUBJECT_DISABLE_CRL_PROP_ID 86
#define CERT_CEP_PROP_ID 87
#define CERT_SIGN_HASH_CNG_ALG_PROP_ID 89
#define CERT_SCARD_PIN_ID_PROP_ID 90
#define CERT_SCARD_PIN_INFO_PROP_ID 91
#define CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID 92
#define CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID 93
#define CERT_ISSUER_PUB_KEY_BIT_LENGTH_PROP_ID 94
#define CERT_ISSUER_CHAIN_SIGN_HASH_CNG_ALG_PROP_ID 95
#define CERT_ISSUER_CHAIN_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID 96
#define CERT_NO_EXPIRE_NOTIFICATION_PROP_ID 97
#define CERT_AUTH_ROOT_SHA256_HASH_PROP_ID 98
#define CERT_NCRYPT_KEY_HANDLE_TRANSFER_PROP_ID 99
#define CERT_HCRYPTPROV_TRANSFER_PROP_ID 100
#define CERT_SMART_CARD_READER_PROP_ID 101
#define CERT_SEND_AS_TRUSTED_ISSUER_PROP_ID 102
#define CERT_KEY_REPAIR_ATTEMPTED_PROP_ID 103
#define CERT_DISALLOWED_FILETIME_PROP_ID 104
#define CERT_ROOT_PROGRAM_CHAIN_POLICIES_PROP_ID 105
#define CERT_SMART_CARD_READER_NON_REMOVABLE_PROP_ID 106
#define CERT_SHA256_HASH_PROP_ID 107
#define CERT_SCEP_SERVER_CERTS_PROP_ID 108
#define CERT_SCEP_RA_SIGNATURE_CERT_PROP_ID 109
#define CERT_SCEP_RA_ENCRYPTION_CERT_PROP_ID 110
#define CERT_SCEP_CA_CERT_PROP_ID 111
#define CERT_SCEP_SIGNER_CERT_PROP_ID 112
#define CERT_SCEP_NONCE_PROP_ID 113
#define CERT_SCEP_ENCRYPT_HASH_CNG_ALG_PROP_ID 114
#define CERT_SCEP_FLAGS_PROP_ID 115
#define CERT_SCEP_GUID_PROP_ID 116
#define CERT_SERIALIZABLE_KEY_CONTEXT_PROP_ID 117
#define CERT_ISOLATED_KEY_PROP_ID 118
#define CERT_SERIAL_CHAIN_PROP_ID 119
#define CERT_KEY_CLASSIFICATION_PROP_ID 120
#define CERT_OCSP_MUST_STAPLE_PROP_ID 121
#define CERT_DISALLOWED_ENHKEY_USAGE_PROP_ID 122
#define CERT_NONCOMPLIANT_ROOT_URL_PROP_ID 123
#define CERT_PIN_SHA256_HASH_PROP_ID 124
#define CERT_CLR_DELETE_KEY_PROP_ID 125
#define CERT_NOT_BEFORE_FILETIME_PROP_ID 126
#define CERT_NOT_BEFORE_ENHKEY_USAGE_PROP_ID 127
#define CERT_FIRST_RESERVED_PROP_ID 107
#define CERT_LAST_RESERVED_PROP_ID 0x00007fff
#define CERT_FIRST_USER_PROP_ID 0x8000
#define CERT_LAST_USER_PROP_ID 0x0000ffff
#define WINCRYPT_DWORD_CPP_ONLY 
  typedef enum CertKeyType {
    KeyTypeOther = 0,
    KeyTypeVirtualSmartCard = 1,
    KeyTypePhysicalSmartCard = 2,
    KeyTypePassport = 3,
    KeyTypePassportRemote = 4,
    KeyTypePassportSmartCard = 5,
    KeyTypeHardware = 6,
    KeyTypeSoftware = 7,
    KeyTypeSelfSigned = 8
  } CertKeyType;
#define IS_CERT_HASH_PROP_ID(X) (CERT_SHA1_HASH_PROP_ID == (X) || CERT_MD5_HASH_PROP_ID == (X) || CERT_SIGNATURE_HASH_PROP_ID == (X))
#define IS_PUBKEY_HASH_PROP_ID(X) (CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID == (X) || CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID == (X))
#define IS_CHAIN_HASH_PROP_ID(X) (CERT_ISSUER_PUBLIC_KEY_MD5_HASH_PROP_ID == (X) || CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID == (X) || CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID == (X) || CERT_SUBJECT_NAME_MD5_HASH_PROP_ID == (X))
#define IS_STRONG_SIGN_PROP_ID(X) (CERT_SIGN_HASH_CNG_ALG_PROP_ID == (X) || CERT_SUBJECT_PUB_KEY_BIT_LENGTH_PROP_ID == (X) || CERT_PUB_KEY_CNG_ALG_BIT_LENGTH_PROP_ID == (X))
#define szOID_CERT_PROP_ID_PREFIX "1.3.6.1.4.1.311.10.11."
#define _szPROP_ID(PropId) #PropId
#define szOID_CERT_PROP_ID(PropId) szOID_CERT_PROP_ID_PREFIX _szPROP_ID (PropId)
#define __CRYPT32WTEXT(quote) L ##quote
#define _CRYPT32WTEXT(quote) __CRYPT32WTEXT (quote)
#define wszOID_CERT_PROP_ID(PropId) _CRYPT32WTEXT (szOID_CERT_PROP_ID_PREFIX) _CRYPT32WTEXT (_szPROP_ID (PropId))
#define szOID_CERT_KEY_IDENTIFIER_PROP_ID "1.3.6.1.4.1.311.10.11.20"
#define szOID_CERT_ISSUER_SERIAL_NUMBER_MD5_HASH_PROP_ID "1.3.6.1.4.1.311.10.11.28"
#define szOID_CERT_SUBJECT_NAME_MD5_HASH_PROP_ID "1.3.6.1.4.1.311.10.11.29"
#define szOID_CERT_MD5_HASH_PROP_ID "1.3.6.1.4.1.311.10.11.4"
#define szOID_CERT_SIGNATURE_HASH_PROP_ID "1.3.6.1.4.1.311.10.11.15"
#define szOID_DISALLOWED_HASH szOID_CERT_SIGNATURE_HASH_PROP_ID
#define szOID_CERT_DISALLOWED_FILETIME_PROP_ID "1.3.6.1.4.1.311.10.11.104"
#define CERT_ACCESS_STATE_WRITE_PERSIST_FLAG 0x1
#define CERT_ACCESS_STATE_SYSTEM_STORE_FLAG 0x2
#define CERT_ACCESS_STATE_LM_SYSTEM_STORE_FLAG 0x4
#define CERT_ACCESS_STATE_GP_SYSTEM_STORE_FLAG 0x8
#define CERT_ACCESS_STATE_SHARED_USER_FLAG 0x10
#define szOID_ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION "1.3.6.1.4.1.311.60.3.1"
#define szOID_ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION "1.3.6.1.4.1.311.60.3.2"
#define szOID_ROOT_PROGRAM_NO_OCSP_FAILOVER_TO_CRL "1.3.6.1.4.1.311.60.3.3"
  typedef struct _CRYPT_KEY_PROV_PARAM {
    DWORD dwParam;
    BYTE *pbData;
    DWORD cbData;
    DWORD dwFlags;
  } CRYPT_KEY_PROV_PARAM,*PCRYPT_KEY_PROV_PARAM;
  typedef struct _CRYPT_KEY_PROV_INFO {
    LPWSTR pwszContainerName;
    LPWSTR pwszProvName;
    DWORD dwProvType;
    DWORD dwFlags;
    DWORD cProvParam;
    PCRYPT_KEY_PROV_PARAM rgProvParam;
    DWORD dwKeySpec;
  } CRYPT_KEY_PROV_INFO,*PCRYPT_KEY_PROV_INFO;
#define CERT_SET_KEY_PROV_HANDLE_PROP_ID 0x1
#define CERT_SET_KEY_CONTEXT_PROP_ID 0x1
#define CERT_NCRYPT_KEY_SPEC 0xffffffff
  typedef struct _CERT_KEY_CONTEXT {
    DWORD cbSize;
    __extension__ union {
      HCRYPTPROV hCryptProv;
      NCRYPT_KEY_HANDLE hNCryptKey;
    };
    DWORD dwKeySpec;
  } CERT_KEY_CONTEXT,*PCERT_KEY_CONTEXT;
  typedef struct _ROOT_INFO_LUID {
    DWORD LowPart;
    LONG HighPart;
  } ROOT_INFO_LUID,*PROOT_INFO_LUID;
  typedef struct _CRYPT_SMART_CARD_ROOT_INFO {
    BYTE rgbCardID [16];
    ROOT_INFO_LUID luid;
  } CRYPT_SMART_CARD_ROOT_INFO,*PCRYPT_SMART_CARD_ROOT_INFO;
#define CERT_STORE_PROV_MSG ((LPCSTR) 1)
#define CERT_STORE_PROV_MEMORY ((LPCSTR) 2)
#define CERT_STORE_PROV_FILE ((LPCSTR) 3)
#define CERT_STORE_PROV_REG ((LPCSTR) 4)
#define CERT_STORE_PROV_PKCS7 ((LPCSTR) 5)
#define CERT_STORE_PROV_SERIALIZED ((LPCSTR) 6)
#define CERT_STORE_PROV_FILENAME_A ((LPCSTR) 7)
#define CERT_STORE_PROV_FILENAME_W ((LPCSTR) 8)
#define CERT_STORE_PROV_FILENAME CERT_STORE_PROV_FILENAME_W
#define CERT_STORE_PROV_SYSTEM_A ((LPCSTR) 9)
#define CERT_STORE_PROV_SYSTEM_W ((LPCSTR) 10)
#define CERT_STORE_PROV_SYSTEM CERT_STORE_PROV_SYSTEM_W
#define CERT_STORE_PROV_COLLECTION ((LPCSTR) 11)
#define CERT_STORE_PROV_SYSTEM_REGISTRY_A ((LPCSTR) 12)
#define CERT_STORE_PROV_SYSTEM_REGISTRY_W ((LPCSTR) 13)
#define CERT_STORE_PROV_SYSTEM_REGISTRY CERT_STORE_PROV_SYSTEM_REGISTRY_W
#define CERT_STORE_PROV_PHYSICAL_W ((LPCSTR) 14)
#define CERT_STORE_PROV_PHYSICAL CERT_STORE_PROV_PHYSICAL_W
#define CERT_STORE_PROV_SMART_CARD_W ((LPCSTR) 15)
#define CERT_STORE_PROV_SMART_CARD CERT_STORE_PROV_SMART_CARD_W
#define CERT_STORE_PROV_LDAP_W ((LPCSTR) 16)
#define CERT_STORE_PROV_LDAP CERT_STORE_PROV_LDAP_W
#define CERT_STORE_PROV_PKCS12 ((LPCSTR) 17)
#define sz_CERT_STORE_PROV_MEMORY "Memory"
#define sz_CERT_STORE_PROV_FILENAME_W "File"
#define sz_CERT_STORE_PROV_FILENAME sz_CERT_STORE_PROV_FILENAME_W
#define sz_CERT_STORE_PROV_SYSTEM_W "System"
#define sz_CERT_STORE_PROV_SYSTEM sz_CERT_STORE_PROV_SYSTEM_W
#define sz_CERT_STORE_PROV_PKCS7 "PKCS7"
#define sz_CERT_STORE_PROV_PKCS12 "PKCS12"
#define sz_CERT_STORE_PROV_SERIALIZED "Serialized"
#define sz_CERT_STORE_PROV_COLLECTION "Collection"
#define sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W "SystemRegistry"
#define sz_CERT_STORE_PROV_SYSTEM_REGISTRY sz_CERT_STORE_PROV_SYSTEM_REGISTRY_W
#define sz_CERT_STORE_PROV_PHYSICAL_W "Physical"
#define sz_CERT_STORE_PROV_PHYSICAL sz_CERT_STORE_PROV_PHYSICAL_W
#define sz_CERT_STORE_PROV_SMART_CARD_W "SmartCard"
#define sz_CERT_STORE_PROV_SMART_CARD sz_CERT_STORE_PROV_SMART_CARD_W
#define sz_CERT_STORE_PROV_LDAP_W "Ldap"
#define sz_CERT_STORE_PROV_LDAP sz_CERT_STORE_PROV_LDAP_W
#define CERT_STORE_SIGNATURE_FLAG 0x1
#define CERT_STORE_TIME_VALIDITY_FLAG 0x2
#define CERT_STORE_REVOCATION_FLAG 0x4
#define CERT_STORE_NO_CRL_FLAG 0x10000
#define CERT_STORE_NO_ISSUER_FLAG 0x20000
#define CERT_STORE_BASE_CRL_FLAG 0x100
#define CERT_STORE_DELTA_CRL_FLAG 0x200
#define CERT_STORE_NO_CRYPT_RELEASE_FLAG 0x1
#define CERT_STORE_SET_LOCALIZED_NAME_FLAG 0x2
#define CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG 0x4
#define CERT_STORE_DELETE_FLAG 0x10
#define CERT_STORE_UNSAFE_PHYSICAL_FLAG 0x20
#define CERT_STORE_SHARE_STORE_FLAG 0x40
#define CERT_STORE_SHARE_CONTEXT_FLAG 0x80
#define CERT_STORE_MANIFOLD_FLAG 0x100
#define CERT_STORE_ENUM_ARCHIVED_FLAG 0x200
#define CERT_STORE_UPDATE_KEYID_FLAG 0x400
#define CERT_STORE_BACKUP_RESTORE_FLAG 0x800
#define CERT_STORE_READONLY_FLAG 0x8000
#define CERT_STORE_OPEN_EXISTING_FLAG 0x4000
#define CERT_STORE_CREATE_NEW_FLAG 0x2000
#define CERT_STORE_MAXIMUM_ALLOWED_FLAG 0x1000
#define CERT_SYSTEM_STORE_MASK 0xffff0000
#define CERT_SYSTEM_STORE_RELOCATE_FLAG 0x80000000
  typedef struct _CERT_SYSTEM_STORE_RELOCATE_PARA {
    __extension__ union {
      HKEY hKeyBase;
      void *pvBase;
    };
    __extension__ union {
      void *pvSystemStore;
      LPCSTR pszSystemStore;
      LPCWSTR pwszSystemStore;
    };
  } CERT_SYSTEM_STORE_RELOCATE_PARA,*PCERT_SYSTEM_STORE_RELOCATE_PARA;
#define CERT_SYSTEM_STORE_DEFER_READ_FLAG 0x20000000
#define CERT_SYSTEM_STORE_UNPROTECTED_FLAG 0x40000000
#define CERT_SYSTEM_STORE_LOCATION_MASK 0x00ff0000
#define CERT_SYSTEM_STORE_LOCATION_SHIFT 16
#define CERT_SYSTEM_STORE_CURRENT_USER_ID 1
#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ID 2
#define CERT_SYSTEM_STORE_CURRENT_SERVICE_ID 4
#define CERT_SYSTEM_STORE_SERVICES_ID 5
#define CERT_SYSTEM_STORE_USERS_ID 6
#define CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID 7
#define CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID 8
#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID 9
#define CERT_SYSTEM_STORE_LOCAL_MACHINE_WCOS_ID 10
#define CERT_SYSTEM_STORE_CURRENT_USER (CERT_SYSTEM_STORE_CURRENT_USER_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
#define CERT_SYSTEM_STORE_LOCAL_MACHINE (CERT_SYSTEM_STORE_LOCAL_MACHINE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
#define CERT_SYSTEM_STORE_CURRENT_SERVICE (CERT_SYSTEM_STORE_CURRENT_SERVICE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
#define CERT_SYSTEM_STORE_SERVICES (CERT_SYSTEM_STORE_SERVICES_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
#define CERT_SYSTEM_STORE_USERS (CERT_SYSTEM_STORE_USERS_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
#define CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY (CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
#define CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY (CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
#define CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE (CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
#define CERT_SYSTEM_STORE_LOCAL_MACHINE_WCOS (CERT_SYSTEM_STORE_LOCAL_MACHINE_WCOS_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT)
#define CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"Software\\Policies\\Microsoft\\SystemCertificates"
#define CERT_EFSBLOB_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\EFS"
#define CERT_EFSBLOB_VALUE_NAME L"EFSBlob"
#define CERT_PROT_ROOT_FLAGS_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\Root\\ProtectedRoots"
#define CERT_PROT_ROOT_FLAGS_VALUE_NAME L"Flags"
#define CERT_PROT_ROOT_DISABLE_CURRENT_USER_FLAG 0x1
#define CERT_PROT_ROOT_INHIBIT_ADD_AT_INIT_FLAG 0x2
#define CERT_PROT_ROOT_INHIBIT_PURGE_LM_FLAG 0x4
#define CERT_PROT_ROOT_DISABLE_LM_AUTH_FLAG 0x8
#define CERT_PROT_ROOT_ONLY_LM_GPT_FLAG 0x8
#define CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG 0x10
#define CERT_PROT_ROOT_DISABLE_NOT_DEFINED_NAME_CONSTRAINT_FLAG 0x20
#define CERT_PROT_ROOT_DISABLE_PEER_TRUST 0x10000
#define CERT_PROT_ROOT_PEER_USAGES_VALUE_NAME L"PeerUsages"
#define CERT_PROT_ROOT_PEER_USAGES_VALUE_NAME_A "PeerUsages"
#define CERT_PROT_ROOT_PEER_USAGES_DEFAULT_A szOID_PKIX_KP_CLIENT_AUTH "\0" szOID_PKIX_KP_EMAIL_PROTECTION "\0" szOID_KP_EFS "\0"
#define CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer"
#define CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"Software\\Microsoft\\SystemCertificates"
#define CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer"
#define CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME L"AuthenticodeFlags"
#define CERT_TRUST_PUB_ALLOW_TRUST_MASK 0x3
#define CERT_TRUST_PUB_ALLOW_END_USER_TRUST 0x0
#define CERT_TRUST_PUB_ALLOW_MACHINE_ADMIN_TRUST 0x1
#define CERT_TRUST_PUB_ALLOW_ENTERPRISE_ADMIN_TRUST 0x2
#define CERT_TRUST_PUB_CHECK_PUBLISHER_REV_FLAG 0x100
#define CERT_TRUST_PUB_CHECK_TIMESTAMP_REV_FLAG 0x200
#define CERT_OCM_SUBCOMPONENTS_LOCAL_MACHINE_REGPATH L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\OC Manager\\Subcomponents"
#define CERT_OCM_SUBCOMPONENTS_ROOT_AUTO_UPDATE_VALUE_NAME L"RootAutoUpdate"
#define CERT_DISABLE_ROOT_AUTO_UPDATE_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\AuthRoot"
#define CERT_DISABLE_ROOT_AUTO_UPDATE_VALUE_NAME L"DisableRootAutoUpdate"
#define CERT_ENABLE_DISALLOWED_CERT_AUTO_UPDATE_VALUE_NAME L"EnableDisallowedCertAutoUpdate"
#define CERT_DISABLE_PIN_RULES_AUTO_UPDATE_VALUE_NAME L"DisablePinRulesAutoUpdate"
#define CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"\\AuthRoot\\AutoUpdate"
#define CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME L"RootDirUrl"
#define CERT_AUTO_UPDATE_SYNC_FROM_DIR_URL_VALUE_NAME L"SyncFromDirUrl"
#define CERT_AUTH_ROOT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH CERT_AUTO_UPDATE_LOCAL_MACHINE_REGPATH
#define CERT_AUTH_ROOT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME CERT_AUTO_UPDATE_ROOT_DIR_URL_VALUE_NAME
#define CERT_AUTH_ROOT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME L"SyncDeltaTime"
#define CERT_AUTH_ROOT_AUTO_UPDATE_FLAGS_VALUE_NAME L"Flags"
#define CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_UNTRUSTED_ROOT_LOGGING_FLAG 0x1
#define CERT_AUTH_ROOT_AUTO_UPDATE_DISABLE_PARTIAL_CHAIN_LOGGING_FLAG 0x2
#define CERT_AUTO_UPDATE_DISABLE_RANDOM_QUERY_STRING_FLAG 0x4
#define CERT_AUTH_ROOT_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME L"LastSyncTime"
#define CERT_AUTH_ROOT_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME L"EncodedCtl"
#define CERT_AUTH_ROOT_CTL_FILENAME L"authroot.stl"
#define CERT_AUTH_ROOT_CTL_FILENAME_A "authroot.stl"
#define CERT_AUTH_ROOT_CAB_FILENAME L"authrootstl.cab"
#define CERT_AUTH_ROOT_SEQ_FILENAME L"authrootseq.txt"
#define CERT_AUTH_ROOT_CERT_EXT L".crt"
#define CERT_DISALLOWED_CERT_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME L"DisallowedCertSyncDeltaTime"
#define CERT_DISALLOWED_CERT_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME L"DisallowedCertLastSyncTime"
#define CERT_DISALLOWED_CERT_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME L"DisallowedCertEncodedCtl"
#define CERT_DISALLOWED_CERT_CTL_FILENAME L"disallowedcert.stl"
#define CERT_DISALLOWED_CERT_CTL_FILENAME_A "disallowedcert.stl"
#define CERT_DISALLOWED_CERT_CAB_FILENAME L"disallowedcertstl.cab"
#define CERT_DISALLOWED_CERT_AUTO_UPDATE_LIST_IDENTIFIER L"DisallowedCert_AutoUpdate_1"
#define CERT_PIN_RULES_AUTO_UPDATE_SYNC_DELTA_TIME_VALUE_NAME L"PinRulesSyncDeltaTime"
#define CERT_PIN_RULES_AUTO_UPDATE_LAST_SYNC_TIME_VALUE_NAME L"PinRulesLastSyncTime"
#define CERT_PIN_RULES_AUTO_UPDATE_ENCODED_CTL_VALUE_NAME L"PinRulesEncodedCtl"
#define CERT_PIN_RULES_CTL_FILENAME L"pinrules.stl"
#define CERT_PIN_RULES_CTL_FILENAME_A "pinrules.stl"
#define CERT_PIN_RULES_CAB_FILENAME L"pinrulesstl.cab"
#define CERT_PIN_RULES_AUTO_UPDATE_LIST_IDENTIFIER L"PinRules_AutoUpdate_1"
#define CERT_REGISTRY_STORE_REMOTE_FLAG 0x10000
#define CERT_REGISTRY_STORE_SERIALIZED_FLAG 0x20000
#define CERT_REGISTRY_STORE_CLIENT_GPT_FLAG 0x80000000
#define CERT_REGISTRY_STORE_LM_GPT_FLAG 0x1000000
  typedef struct _CERT_REGISTRY_STORE_CLIENT_GPT_PARA {
    HKEY hKeyBase;
    LPWSTR pwszRegPath;
  } CERT_REGISTRY_STORE_CLIENT_GPT_PARA,*PCERT_REGISTRY_STORE_CLIENT_GPT_PARA;
#define CERT_REGISTRY_STORE_ROAMING_FLAG 0x40000
  typedef struct _CERT_REGISTRY_STORE_ROAMING_PARA {
    HKEY hKey;
    LPWSTR pwszStoreDirectory;
  } CERT_REGISTRY_STORE_ROAMING_PARA,*PCERT_REGISTRY_STORE_ROAMING_PARA;
#define CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG 0x80000
#define CERT_REGISTRY_STORE_EXTERNAL_FLAG 0x100000
#define CERT_IE_DIRTY_FLAGS_REGPATH L"Software\\Microsoft\\Cryptography\\IEDirtyFlags"
#define CERT_FILE_STORE_COMMIT_ENABLE_FLAG 0x10000
#define CERT_LDAP_STORE_SIGN_FLAG 0x10000
#define CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG 0x20000
#define CERT_LDAP_STORE_OPENED_FLAG 0x40000
  typedef struct _CERT_LDAP_STORE_OPENED_PARA {
    void *pvLdapSessionHandle;
    LPCWSTR pwszLdapUrl;
  } CERT_LDAP_STORE_OPENED_PARA,*PCERT_LDAP_STORE_OPENED_PARA;
#define CERT_LDAP_STORE_UNBIND_FLAG 0x80000
__attribute__((dllimport)) HCERTSTORE __attribute__((__stdcall__)) CertOpenStore (LPCSTR lpszStoreProvider, DWORD dwEncodingType, HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const void *pvPara);
  typedef void *HCERTSTOREPROV;
#define CRYPT_OID_OPEN_STORE_PROV_FUNC "CertDllOpenStoreProv"
  typedef struct _CERT_STORE_PROV_INFO {
    DWORD cbSize;
    DWORD cStoreProvFunc;
    void **rgpvStoreProvFunc;
    HCERTSTOREPROV hStoreProv;
    DWORD dwStoreProvFlags;
    HCRYPTOIDFUNCADDR hStoreProvFuncAddr2;
  } CERT_STORE_PROV_INFO,*PCERT_STORE_PROV_INFO;
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_DLL_OPEN_STORE_PROV_FUNC) (LPCSTR lpszStoreProvider, DWORD dwEncodingType, HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const void *pvPara, HCERTSTORE hCertStore, PCERT_STORE_PROV_INFO pStoreProvInfo);
#define CERT_STORE_PROV_EXTERNAL_FLAG 0x1
#define CERT_STORE_PROV_DELETED_FLAG 0x2
#define CERT_STORE_PROV_NO_PERSIST_FLAG 0x4
#define CERT_STORE_PROV_SYSTEM_STORE_FLAG 0x8
#define CERT_STORE_PROV_LM_SYSTEM_STORE_FLAG 0x10
#define CERT_STORE_PROV_GP_SYSTEM_STORE_FLAG 0x20
#define CERT_STORE_PROV_SHARED_USER_FLAG 0x40
#define CERT_STORE_PROV_CLOSE_FUNC 0
#define CERT_STORE_PROV_READ_CERT_FUNC 1
#define CERT_STORE_PROV_WRITE_CERT_FUNC 2
#define CERT_STORE_PROV_DELETE_CERT_FUNC 3
#define CERT_STORE_PROV_SET_CERT_PROPERTY_FUNC 4
#define CERT_STORE_PROV_READ_CRL_FUNC 5
#define CERT_STORE_PROV_WRITE_CRL_FUNC 6
#define CERT_STORE_PROV_DELETE_CRL_FUNC 7
#define CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC 8
#define CERT_STORE_PROV_READ_CTL_FUNC 9
#define CERT_STORE_PROV_WRITE_CTL_FUNC 10
#define CERT_STORE_PROV_DELETE_CTL_FUNC 11
#define CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC 12
#define CERT_STORE_PROV_CONTROL_FUNC 13
#define CERT_STORE_PROV_FIND_CERT_FUNC 14
#define CERT_STORE_PROV_FREE_FIND_CERT_FUNC 15
#define CERT_STORE_PROV_GET_CERT_PROPERTY_FUNC 16
#define CERT_STORE_PROV_FIND_CRL_FUNC 17
#define CERT_STORE_PROV_FREE_FIND_CRL_FUNC 18
#define CERT_STORE_PROV_GET_CRL_PROPERTY_FUNC 19
#define CERT_STORE_PROV_FIND_CTL_FUNC 20
#define CERT_STORE_PROV_FREE_FIND_CTL_FUNC 21
#define CERT_STORE_PROV_GET_CTL_PROPERTY_FUNC 22
#define CERT_STORE_PROV_WRITE_ADD_FLAG 0x1
  typedef void (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_CLOSE) (HCERTSTOREPROV hStoreProv, DWORD dwFlags);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_READ_CERT) (HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pStoreCertContext, DWORD dwFlags, PCCERT_CONTEXT *ppProvCertContext);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_WRITE_CERT) (HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwFlags);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_DELETE_CERT) (HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwFlags);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_SET_CERT_PROPERTY) (HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwPropId, DWORD dwFlags, const void *pvData);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_READ_CRL) (HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pStoreCrlContext, DWORD dwFlags, PCCRL_CONTEXT *ppProvCrlContext);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_WRITE_CRL) (HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, DWORD dwFlags);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_DELETE_CRL) (HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, DWORD dwFlags);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_SET_CRL_PROPERTY) (HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, DWORD dwPropId, DWORD dwFlags, const void *pvData);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_READ_CTL) (HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pStoreCtlContext, DWORD dwFlags, PCCTL_CONTEXT *ppProvCtlContext);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_WRITE_CTL) (HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwFlags);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_DELETE_CTL) (HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwFlags);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_SET_CTL_PROPERTY) (HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwPropId, DWORD dwFlags, const void *pvData);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_CONTROL) (HCERTSTOREPROV hStoreProv, DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara);
  typedef struct _CERT_STORE_PROV_FIND_INFO {
    DWORD cbSize;
    DWORD dwMsgAndCertEncodingType;
    DWORD dwFindFlags;
    DWORD dwFindType;
    const void *pvFindPara;
  } CERT_STORE_PROV_FIND_INFO,*PCERT_STORE_PROV_FIND_INFO;
  typedef const CERT_STORE_PROV_FIND_INFO CCERT_STORE_PROV_FIND_INFO,*PCCERT_STORE_PROV_FIND_INFO;
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_FIND_CERT) (HCERTSTOREPROV hStoreProv, PCCERT_STORE_PROV_FIND_INFO pFindInfo, PCCERT_CONTEXT pPrevCertContext, DWORD dwFlags, void **ppvStoreProvFindInfo, PCCERT_CONTEXT *ppProvCertContext);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_FREE_FIND_CERT) (HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, void *pvStoreProvFindInfo, DWORD dwFlags);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_GET_CERT_PROPERTY) (HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwPropId, DWORD dwFlags, void *pvData, DWORD *pcbData);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_FIND_CRL) (HCERTSTOREPROV hStoreProv, PCCERT_STORE_PROV_FIND_INFO pFindInfo, PCCRL_CONTEXT pPrevCrlContext, DWORD dwFlags, void **ppvStoreProvFindInfo, PCCRL_CONTEXT *ppProvCrlContext);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_FREE_FIND_CRL) (HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, void *pvStoreProvFindInfo, DWORD dwFlags);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_GET_CRL_PROPERTY) (HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, DWORD dwPropId, DWORD dwFlags, void *pvData, DWORD *pcbData);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_FIND_CTL) (HCERTSTOREPROV hStoreProv, PCCERT_STORE_PROV_FIND_INFO pFindInfo, PCCTL_CONTEXT pPrevCtlContext, DWORD dwFlags, void **ppvStoreProvFindInfo, PCCTL_CONTEXT *ppProvCtlContext);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_FREE_FIND_CTL) (HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, void *pvStoreProvFindInfo, DWORD dwFlags);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_STORE_PROV_GET_CTL_PROPERTY) (HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwPropId, DWORD dwFlags, void *pvData, DWORD *pcbData);
  __attribute__((dllimport)) HCERTSTORE __attribute__((__stdcall__)) CertDuplicateStore (HCERTSTORE hCertStore);
#define CERT_STORE_SAVE_AS_STORE 1
#define CERT_STORE_SAVE_AS_PKCS7 2
#define CERT_STORE_SAVE_AS_PKCS12 3
#define CERT_STORE_SAVE_TO_FILE 1
#define CERT_STORE_SAVE_TO_MEMORY 2
#define CERT_STORE_SAVE_TO_FILENAME_A 3
#define CERT_STORE_SAVE_TO_FILENAME_W 4
#define CERT_STORE_SAVE_TO_FILENAME CERT_STORE_SAVE_TO_FILENAME_W
#define CERT_CLOSE_STORE_FORCE_FLAG 0x1
#define CERT_CLOSE_STORE_CHECK_FLAG 0x2
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertSaveStore (HCERTSTORE hCertStore, DWORD dwEncodingType, DWORD dwSaveAs, DWORD dwSaveTo, void *pvSaveToPara, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertCloseStore (HCERTSTORE hCertStore, DWORD dwFlags);
  __attribute__((dllimport)) PCCERT_CONTEXT __attribute__((__stdcall__)) CertGetSubjectCertificateFromStore (HCERTSTORE hCertStore, DWORD dwCertEncodingType, PCERT_INFO pCertId);
  __attribute__((dllimport)) PCCERT_CONTEXT __attribute__((__stdcall__)) CertEnumCertificatesInStore (HCERTSTORE hCertStore, PCCERT_CONTEXT pPrevCertContext);
  __attribute__((dllimport)) PCCERT_CONTEXT __attribute__((__stdcall__)) CertFindCertificateInStore (HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, const void *pvFindPara, PCCERT_CONTEXT pPrevCertContext);
#define CERT_COMPARE_MASK 0xffff
#define CERT_COMPARE_SHIFT 16
#define CERT_COMPARE_ANY 0
#define CERT_COMPARE_SHA1_HASH 1
#define CERT_COMPARE_NAME 2
#define CERT_COMPARE_ATTR 3
#define CERT_COMPARE_MD5_HASH 4
#define CERT_COMPARE_PROPERTY 5
#define CERT_COMPARE_PUBLIC_KEY 6
#define CERT_COMPARE_HASH CERT_COMPARE_SHA1_HASH
#define CERT_COMPARE_NAME_STR_A 7
#define CERT_COMPARE_NAME_STR_W 8
#define CERT_COMPARE_KEY_SPEC 9
#define CERT_COMPARE_ENHKEY_USAGE 10
#define CERT_COMPARE_CTL_USAGE CERT_COMPARE_ENHKEY_USAGE
#define CERT_COMPARE_SUBJECT_CERT 11
#define CERT_COMPARE_ISSUER_OF 12
#define CERT_COMPARE_EXISTING 13
#define CERT_COMPARE_SIGNATURE_HASH 14
#define CERT_COMPARE_KEY_IDENTIFIER 15
#define CERT_COMPARE_CERT_ID 16
#define CERT_COMPARE_CROSS_CERT_DIST_POINTS 17
#define CERT_COMPARE_PUBKEY_MD5_HASH 18
#define CERT_COMPARE_SUBJECT_INFO_ACCESS 19
#define CERT_COMPARE_HASH_STR 20
#define CERT_COMPARE_HAS_PRIVATE_KEY 21
#define CERT_FIND_ANY (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT)
#define CERT_FIND_SHA1_HASH (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT)
#define CERT_FIND_MD5_HASH (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT)
#define CERT_FIND_SIGNATURE_HASH (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT)
#define CERT_FIND_KEY_IDENTIFIER (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT)
#define CERT_FIND_HASH CERT_FIND_SHA1_HASH
#define CERT_FIND_PROPERTY (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT)
#define CERT_FIND_PUBLIC_KEY (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT)
#define CERT_FIND_SUBJECT_NAME (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
#define CERT_FIND_SUBJECT_ATTR (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
#define CERT_FIND_ISSUER_NAME (CERT_COMPARE_NAME << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
#define CERT_FIND_ISSUER_ATTR (CERT_COMPARE_ATTR << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
#define CERT_FIND_SUBJECT_STR_A (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
#define CERT_FIND_SUBJECT_STR_W (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)
#define CERT_FIND_SUBJECT_STR CERT_FIND_SUBJECT_STR_W
#define CERT_FIND_ISSUER_STR_A (CERT_COMPARE_NAME_STR_A << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
#define CERT_FIND_ISSUER_STR_W (CERT_COMPARE_NAME_STR_W << CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)
#define CERT_FIND_ISSUER_STR CERT_FIND_ISSUER_STR_W
#define CERT_FIND_KEY_SPEC (CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT)
#define CERT_FIND_ENHKEY_USAGE (CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT)
#define CERT_FIND_CTL_USAGE CERT_FIND_ENHKEY_USAGE
#define CERT_FIND_SUBJECT_CERT (CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT)
#define CERT_FIND_ISSUER_OF (CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT)
#define CERT_FIND_EXISTING (CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT)
#define CERT_FIND_CERT_ID (CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT)
#define CERT_FIND_CROSS_CERT_DIST_POINTS (CERT_COMPARE_CROSS_CERT_DIST_POINTS << CERT_COMPARE_SHIFT)
#define CERT_FIND_PUBKEY_MD5_HASH (CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT)
#define CERT_FIND_SUBJECT_INFO_ACCESS (CERT_COMPARE_SUBJECT_INFO_ACCESS << CERT_COMPARE_SHIFT)
#define CERT_FIND_HASH_STR (CERT_COMPARE_HASH_STR << CERT_COMPARE_SHIFT)
#define CERT_FIND_HAS_PRIVATE_KEY (CERT_COMPARE_HAS_PRIVATE_KEY << CERT_COMPARE_SHIFT)
#define CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG 0x1
#define CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG 0x2
#define CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG 0x4
#define CERT_FIND_NO_ENHKEY_USAGE_FLAG 0x8
#define CERT_FIND_OR_ENHKEY_USAGE_FLAG 0x10
#define CERT_FIND_VALID_ENHKEY_USAGE_FLAG 0x20
#define CERT_FIND_OPTIONAL_CTL_USAGE_FLAG CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG
#define CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG
#define CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG
#define CERT_FIND_NO_CTL_USAGE_FLAG CERT_FIND_NO_ENHKEY_USAGE_FLAG
#define CERT_FIND_OR_CTL_USAGE_FLAG CERT_FIND_OR_ENHKEY_USAGE_FLAG
#define CERT_FIND_VALID_CTL_USAGE_FLAG CERT_FIND_VALID_ENHKEY_USAGE_FLAG
  __attribute__((dllimport)) PCCERT_CONTEXT __attribute__((__stdcall__)) CertGetIssuerCertificateFromStore (HCERTSTORE hCertStore, PCCERT_CONTEXT pSubjectContext, PCCERT_CONTEXT pPrevIssuerContext, DWORD *pdwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertVerifySubjectCertificateContext (PCCERT_CONTEXT pSubject, PCCERT_CONTEXT pIssuer, DWORD *pdwFlags);
  __attribute__((dllimport)) PCCERT_CONTEXT __attribute__((__stdcall__)) CertDuplicateCertificateContext (PCCERT_CONTEXT pCertContext);
  __attribute__((dllimport)) PCCERT_CONTEXT __attribute__((__stdcall__)) CertCreateCertificateContext (DWORD dwCertEncodingType, const BYTE *pbCertEncoded, DWORD cbCertEncoded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertFreeCertificateContext (PCCERT_CONTEXT pCertContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertSetCertificateContextProperty (PCCERT_CONTEXT pCertContext, DWORD dwPropId, DWORD dwFlags, const void *pvData);
  typedef struct _CRL_FIND_ISSUED_FOR_PARA {
    PCCERT_CONTEXT pSubjectCert;
    PCCERT_CONTEXT pIssuerCert;
  } CRL_FIND_ISSUED_FOR_PARA,*PCRL_FIND_ISSUED_FOR_PARA;
  typedef struct _CTL_ANY_SUBJECT_INFO {
    CRYPT_ALGORITHM_IDENTIFIER SubjectAlgorithm;
    CRYPT_DATA_BLOB SubjectIdentifier;
  } CTL_ANY_SUBJECT_INFO,*PCTL_ANY_SUBJECT_INFO;
#define CERT_SET_PROPERTY_INHIBIT_PERSIST_FLAG 0x40000000
#define CERT_SET_PROPERTY_IGNORE_PERSIST_ERROR_FLAG 0x80000000
#define CTL_ENTRY_FROM_PROP_CHAIN_FLAG 0x1
#define CRL_FIND_ANY 0
#define CRL_FIND_ISSUED_BY 1
#define CRL_FIND_EXISTING 2
#define CRL_FIND_ISSUED_FOR 3
#define CRL_FIND_ISSUED_BY_AKI_FLAG 0x1
#define CRL_FIND_ISSUED_BY_SIGNATURE_FLAG 0x2
#define CRL_FIND_ISSUED_BY_DELTA_FLAG 0x4
#define CRL_FIND_ISSUED_BY_BASE_FLAG 0x8
#define CRL_FIND_ISSUED_FOR_SET_STRONG_PROPERTIES_FLAG 0x10
#define CERT_STORE_ADD_NEW 1
#define CERT_STORE_ADD_USE_EXISTING 2
#define CERT_STORE_ADD_REPLACE_EXISTING 3
#define CERT_STORE_ADD_ALWAYS 4
#define CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES 5
#define CERT_STORE_ADD_NEWER 6
#define CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES 7
#define CERT_STORE_CERTIFICATE_CONTEXT 1
#define CERT_STORE_CRL_CONTEXT 2
#define CERT_STORE_CTL_CONTEXT 3
#define CERT_STORE_ALL_CONTEXT_FLAG (~__MSABI_LONG(0U))
#define CERT_STORE_CERTIFICATE_CONTEXT_FLAG (1 << CERT_STORE_CERTIFICATE_CONTEXT)
#define CERT_STORE_CRL_CONTEXT_FLAG (1 << CERT_STORE_CRL_CONTEXT)
#define CERT_STORE_CTL_CONTEXT_FLAG (1 << CERT_STORE_CTL_CONTEXT)
#define CTL_ANY_SUBJECT_TYPE 1
#define CTL_CERT_SUBJECT_TYPE 2
  __attribute__((dllimport)) PCCRL_CONTEXT __attribute__((__stdcall__)) CertEnumCRLsInStore (HCERTSTORE hCertStore, PCCRL_CONTEXT pPrevCrlContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertDeleteCRLFromStore (PCCRL_CONTEXT pCrlContext);
  __attribute__((dllimport)) PCCRL_CONTEXT __attribute__((__stdcall__)) CertDuplicateCRLContext (PCCRL_CONTEXT pCrlContext);
  __attribute__((dllimport)) PCCRL_CONTEXT __attribute__((__stdcall__)) CertFindCRLInStore (HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, const void *pvFindPara, PCCRL_CONTEXT pPrevCrlContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertFreeCRLContext (PCCRL_CONTEXT pCrlContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertGetCertificateContextProperty (PCCERT_CONTEXT pCertContext, DWORD dwPropId, void *pvData, DWORD *pcbData);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CertEnumCertificateContextProperties (PCCERT_CONTEXT pCertContext, DWORD dwPropId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertDeleteCertificateFromStore (PCCERT_CONTEXT pCertContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertCreateCTLEntryFromCertificateContextProperties (PCCERT_CONTEXT pCertContext, DWORD cOptAttr, PCRYPT_ATTRIBUTE rgOptAttr, DWORD dwFlags, void *pvReserved, PCTL_ENTRY pCtlEntry, DWORD *pcbCtlEntry);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertSetCertificateContextPropertiesFromCTLEntry (PCCERT_CONTEXT pCertContext, PCTL_ENTRY pCtlEntry, DWORD dwFlags);
  __attribute__((dllimport)) PCCRL_CONTEXT __attribute__((__stdcall__)) CertGetCRLFromStore (HCERTSTORE hCertStore, PCCERT_CONTEXT pIssuerContext, PCCRL_CONTEXT pPrevCrlContext, DWORD *pdwFlags);
  __attribute__((dllimport)) PCCRL_CONTEXT __attribute__((__stdcall__)) CertCreateCRLContext (DWORD dwCertEncodingType, const BYTE *pbCrlEncoded, DWORD cbCrlEncoded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertSetCRLContextProperty (PCCRL_CONTEXT pCrlContext, DWORD dwPropId, DWORD dwFlags, const void *pvData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertGetCRLContextProperty (PCCRL_CONTEXT pCrlContext, DWORD dwPropId, void *pvData, DWORD *pcbData);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CertEnumCRLContextProperties (PCCRL_CONTEXT pCrlContext, DWORD dwPropId);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertFindCertificateInCRL (PCCERT_CONTEXT pCert, PCCRL_CONTEXT pCrlContext, DWORD dwFlags, void *pvReserved, PCRL_ENTRY *ppCrlEntry);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertIsValidCRLForCertificate (PCCERT_CONTEXT pCert, PCCRL_CONTEXT pCrl, DWORD dwFlags, void *pvReserved);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertAddEncodedCertificateToStore (HCERTSTORE hCertStore, DWORD dwCertEncodingType, const BYTE *pbCertEncoded, DWORD cbCertEncoded, DWORD dwAddDisposition, PCCERT_CONTEXT *ppCertContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertAddCertificateContextToStore (HCERTSTORE hCertStore, PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition, PCCERT_CONTEXT *ppStoreContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertAddSerializedElementToStore (HCERTSTORE hCertStore, const BYTE *pbElement, DWORD cbElement, DWORD dwAddDisposition, DWORD dwFlags, DWORD dwContextTypeFlags, DWORD *pdwContextType, const void **ppvContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertAddEncodedCRLToStore (HCERTSTORE hCertStore, DWORD dwCertEncodingType, const BYTE *pbCrlEncoded, DWORD cbCrlEncoded, DWORD dwAddDisposition, PCCRL_CONTEXT *ppCrlContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertAddCRLContextToStore (HCERTSTORE hCertStore, PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition, PCCRL_CONTEXT *ppStoreContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertSerializeCertificateStoreElement (PCCERT_CONTEXT pCertContext, DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertSerializeCRLStoreElement (PCCRL_CONTEXT pCrlContext, DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement);
  __attribute__((dllimport)) PCCTL_CONTEXT __attribute__((__stdcall__)) CertDuplicateCTLContext (PCCTL_CONTEXT pCtlContext);
  __attribute__((dllimport)) PCCTL_CONTEXT __attribute__((__stdcall__)) CertCreateCTLContext (DWORD dwMsgAndCertEncodingType, const BYTE *pbCtlEncoded, DWORD cbCtlEncoded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertFreeCTLContext (PCCTL_CONTEXT pCtlContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertSetCTLContextProperty (PCCTL_CONTEXT pCtlContext, DWORD dwPropId, DWORD dwFlags, const void *pvData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertGetCTLContextProperty (PCCTL_CONTEXT pCtlContext, DWORD dwPropId, void *pvData, DWORD *pcbData);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CertEnumCTLContextProperties (PCCTL_CONTEXT pCtlContext, DWORD dwPropId);
  __attribute__((dllimport)) PCCTL_CONTEXT __attribute__((__stdcall__)) CertEnumCTLsInStore (HCERTSTORE hCertStore, PCCTL_CONTEXT pPrevCtlContext);
  __attribute__((dllimport)) PCTL_ENTRY __attribute__((__stdcall__)) CertFindSubjectInCTL (DWORD dwEncodingType, DWORD dwSubjectType, void *pvSubject, PCCTL_CONTEXT pCtlContext, DWORD dwFlags);
  __attribute__((dllimport)) PCCTL_CONTEXT __attribute__((__stdcall__)) CertFindCTLInStore (HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, const void *pvFindPara, PCCTL_CONTEXT pPrevCtlContext);
#define CTL_FIND_ANY 0
#define CTL_FIND_SHA1_HASH 1
#define CTL_FIND_MD5_HASH 2
#define CTL_FIND_USAGE 3
#define CTL_FIND_SUBJECT 4
#define CTL_FIND_EXISTING 5
#define CTL_FIND_SAME_USAGE_FLAG 0x1
#define CTL_FIND_NO_LIST_ID_CBDATA 0xffffffff
#define CTL_FIND_NO_SIGNER_PTR ((PCERT_INFO) -1)
#define CERT_STORE_CTRL_RESYNC 1
#define CERT_STORE_CTRL_NOTIFY_CHANGE 2
#define CERT_STORE_CTRL_COMMIT 3
#define CERT_STORE_CTRL_AUTO_RESYNC 4
#define CERT_STORE_CTRL_CANCEL_NOTIFY 5
#define CERT_STORE_CTRL_INHIBIT_DUPLICATE_HANDLE_FLAG 0x1
#define CERT_STORE_CTRL_COMMIT_FORCE_FLAG 0x1
#define CERT_STORE_CTRL_COMMIT_CLEAR_FLAG 0x2
#define CERT_STORE_LOCALIZED_NAME_PROP_ID 0x1000
#define CERT_CREATE_CONTEXT_NOCOPY_FLAG 0x1
#define CERT_CREATE_CONTEXT_SORTED_FLAG 0x2
#define CERT_CREATE_CONTEXT_NO_HCRYPTMSG_FLAG 0x4
#define CERT_CREATE_CONTEXT_NO_ENTRY_FLAG 0x8
#define CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG 0x1
#define CERT_PHYSICAL_STORE_OPEN_DISABLE_FLAG 0x2
#define CERT_PHYSICAL_STORE_REMOTE_OPEN_DISABLE_FLAG 0x4
#define CERT_PHYSICAL_STORE_INSERT_COMPUTER_NAME_ENABLE_FLAG 0x8
  typedef struct _CTL_FIND_USAGE_PARA {
    DWORD cbSize;
    CTL_USAGE SubjectUsage;
    CRYPT_DATA_BLOB ListIdentifier;
    PCERT_INFO pSigner;
  } CTL_FIND_USAGE_PARA,*PCTL_FIND_USAGE_PARA;
  typedef struct _CTL_FIND_SUBJECT_PARA {
    DWORD cbSize;
    PCTL_FIND_USAGE_PARA pUsagePara;
    DWORD dwSubjectType;
    void *pvSubject;
  } CTL_FIND_SUBJECT_PARA,*PCTL_FIND_SUBJECT_PARA;
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_CREATE_CONTEXT_SORT_FUNC) (DWORD cbTotalEncoded, DWORD cbRemainEncoded, DWORD cEntry, void *pvSort);
  typedef struct _CERT_CREATE_CONTEXT_PARA {
    DWORD cbSize;
    PFN_CRYPT_FREE pfnFree;
    void *pvFree;
    PFN_CERT_CREATE_CONTEXT_SORT_FUNC pfnSort;
    void *pvSort;
  } CERT_CREATE_CONTEXT_PARA,*PCERT_CREATE_CONTEXT_PARA;
  typedef struct _CERT_SYSTEM_STORE_INFO {
    DWORD cbSize;
  } CERT_SYSTEM_STORE_INFO,*PCERT_SYSTEM_STORE_INFO;
  typedef struct _CERT_PHYSICAL_STORE_INFO {
    DWORD cbSize;
    LPSTR pszOpenStoreProvider;
    DWORD dwOpenEncodingType;
    DWORD dwOpenFlags;
    CRYPT_DATA_BLOB OpenParameters;
    DWORD dwFlags;
    DWORD dwPriority;
  } CERT_PHYSICAL_STORE_INFO,*PCERT_PHYSICAL_STORE_INFO;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertAddEncodedCTLToStore (HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType, const BYTE *pbCtlEncoded, DWORD cbCtlEncoded, DWORD dwAddDisposition, PCCTL_CONTEXT *ppCtlContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertAddCTLContextToStore (HCERTSTORE hCertStore, PCCTL_CONTEXT pCtlContext, DWORD dwAddDisposition, PCCTL_CONTEXT *ppStoreContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertSerializeCTLStoreElement (PCCTL_CONTEXT pCtlContext, DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertDeleteCTLFromStore (PCCTL_CONTEXT pCtlContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertAddCertificateLinkToStore (HCERTSTORE hCertStore, PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition, PCCERT_CONTEXT *ppStoreContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertAddCRLLinkToStore (HCERTSTORE hCertStore, PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition, PCCRL_CONTEXT *ppStoreContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertAddCTLLinkToStore (HCERTSTORE hCertStore, PCCTL_CONTEXT pCtlContext, DWORD dwAddDisposition, PCCTL_CONTEXT *ppStoreContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertAddStoreToCollection (HCERTSTORE hCollectionStore, HCERTSTORE hSiblingStore, DWORD dwUpdateFlags, DWORD dwPriority);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CertRemoveStoreFromCollection (HCERTSTORE hCollectionStore, HCERTSTORE hSiblingStore);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertControlStore (HCERTSTORE hCertStore, DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertSetStoreProperty (HCERTSTORE hCertStore, DWORD dwPropId, DWORD dwFlags, const void *pvData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertGetStoreProperty (HCERTSTORE hCertStore, DWORD dwPropId, void *pvData, DWORD *pcbData);
  __attribute__((dllimport)) const void *__attribute__((__stdcall__)) CertCreateContext (DWORD dwContextType, DWORD dwEncodingType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, PCERT_CREATE_CONTEXT_PARA pCreatePara);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertRegisterSystemStore (const void *pvSystemStore, DWORD dwFlags, PCERT_SYSTEM_STORE_INFO pStoreInfo, void *pvReserved);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertRegisterPhysicalStore (const void *pvSystemStore, DWORD dwFlags, LPCWSTR pwszStoreName, PCERT_PHYSICAL_STORE_INFO pStoreInfo, void *pvReserved);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertUnregisterSystemStore (const void *pvSystemStore, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertUnregisterPhysicalStore (const void *pvSystemStore, DWORD dwFlags, LPCWSTR pwszStoreName);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_ENUM_SYSTEM_STORE_LOCATION) (LPCWSTR pwszStoreLocation, DWORD dwFlags, void *pvReserved, void *pvArg);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_ENUM_SYSTEM_STORE) (const void *pvSystemStore, DWORD dwFlags, PCERT_SYSTEM_STORE_INFO pStoreInfo, void *pvReserved, void *pvArg);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_ENUM_PHYSICAL_STORE) (const void *pvSystemStore, DWORD dwFlags, LPCWSTR pwszStoreName, PCERT_PHYSICAL_STORE_INFO pStoreInfo, void *pvReserved, void *pvArg);
#define CERT_PHYSICAL_STORE_PREDEFINED_ENUM_FLAG 0x1
#define CERT_PHYSICAL_STORE_DEFAULT_NAME L".Default"
#define CERT_PHYSICAL_STORE_GROUP_POLICY_NAME L".GroupPolicy"
#define CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME L".LocalMachine"
#define CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME L".UserCertificate"
#define CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME L".LocalMachineGroupPolicy"
#define CERT_PHYSICAL_STORE_ENTERPRISE_NAME L".Enterprise"
#define CERT_PHYSICAL_STORE_AUTH_ROOT_NAME L".AuthRoot"
#define CERT_PHYSICAL_STORE_SMART_CARD_NAME L".SmartCard"
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertEnumSystemStoreLocation (DWORD dwFlags, void *pvArg, PFN_CERT_ENUM_SYSTEM_STORE_LOCATION pfnEnum);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertEnumSystemStore (DWORD dwFlags, void *pvSystemStoreLocationPara, void *pvArg, PFN_CERT_ENUM_SYSTEM_STORE pfnEnum);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertEnumPhysicalStore (const void *pvSystemStore, DWORD dwFlags, void *pvArg, PFN_CERT_ENUM_PHYSICAL_STORE pfnEnum);
#define CRYPT_OID_OPEN_SYSTEM_STORE_PROV_FUNC "CertDllOpenSystemStoreProv"
#define CRYPT_OID_REGISTER_SYSTEM_STORE_FUNC "CertDllRegisterSystemStore"
#define CRYPT_OID_UNREGISTER_SYSTEM_STORE_FUNC "CertDllUnregisterSystemStore"
#define CRYPT_OID_ENUM_SYSTEM_STORE_FUNC "CertDllEnumSystemStore"
#define CRYPT_OID_REGISTER_PHYSICAL_STORE_FUNC "CertDllRegisterPhysicalStore"
#define CRYPT_OID_UNREGISTER_PHYSICAL_STORE_FUNC "CertDllUnregisterPhysicalStore"
#define CRYPT_OID_ENUM_PHYSICAL_STORE_FUNC "CertDllEnumPhysicalStore"
#define CRYPT_OID_SYSTEM_STORE_LOCATION_VALUE_NAME L"SystemStoreLocation"
#define CMSG_TRUSTED_SIGNER_FLAG 0x1
#define CMSG_SIGNER_ONLY_FLAG 0x2
#define CMSG_USE_SIGNER_INDEX_FLAG 0x4
#define CMSG_CMS_ENCAPSULATED_CTL_FLAG 0x8000
#define CMSG_ENCODE_SORTED_CTL_FLAG 0x1
#define CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x2
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertGetEnhancedKeyUsage (PCCERT_CONTEXT pCertContext, DWORD dwFlags, PCERT_ENHKEY_USAGE pUsage, DWORD *pcbUsage);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertSetEnhancedKeyUsage (PCCERT_CONTEXT pCertContext, PCERT_ENHKEY_USAGE pUsage);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertAddEnhancedKeyUsageIdentifier (PCCERT_CONTEXT pCertContext, LPCSTR pszUsageIdentifier);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertRemoveEnhancedKeyUsageIdentifier (PCCERT_CONTEXT pCertContext, LPCSTR pszUsageIdentifier);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertGetValidUsages (DWORD cCerts, PCCERT_CONTEXT *rghCerts, int *cNumOIDs, LPSTR *rghOIDs, DWORD *pcbOIDs);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptMsgGetAndVerifySigner (HCRYPTMSG hCryptMsg, DWORD cSignerStore, HCERTSTORE *rghSignerStore, DWORD dwFlags, PCCERT_CONTEXT *ppSigner, DWORD *pdwSignerIndex);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptMsgSignCTL (DWORD dwMsgEncodingType, BYTE *pbCtlContent, DWORD cbCtlContent, PCMSG_SIGNED_ENCODE_INFO pSignInfo, DWORD dwFlags, BYTE *pbEncoded, DWORD *pcbEncoded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptMsgEncodeAndSignCTL (DWORD dwMsgEncodingType, PCTL_INFO pCtlInfo, PCMSG_SIGNED_ENCODE_INFO pSignInfo, DWORD dwFlags, BYTE *pbEncoded, DWORD *pcbEncoded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertFindSubjectInSortedCTL (PCRYPT_DATA_BLOB pSubjectIdentifier, PCCTL_CONTEXT pCtlContext, DWORD dwFlags, void *pvReserved, PCRYPT_DER_BLOB pEncodedAttributes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertEnumSubjectInSortedCTL (PCCTL_CONTEXT pCtlContext, void **ppvNextSubject, PCRYPT_DER_BLOB pSubjectIdentifier, PCRYPT_DER_BLOB pEncodedAttributes);
  typedef struct _CTL_VERIFY_USAGE_PARA {
    DWORD cbSize;
    CRYPT_DATA_BLOB ListIdentifier;
    DWORD cCtlStore;
    HCERTSTORE *rghCtlStore;
    DWORD cSignerStore;
    HCERTSTORE *rghSignerStore;
  } CTL_VERIFY_USAGE_PARA,*PCTL_VERIFY_USAGE_PARA;
  typedef struct _CTL_VERIFY_USAGE_STATUS {
    DWORD cbSize;
    DWORD dwError;
    DWORD dwFlags;
    PCCTL_CONTEXT *ppCtl;
    DWORD dwCtlEntryIndex;
    PCCERT_CONTEXT *ppSigner;
    DWORD dwSignerIndex;
  } CTL_VERIFY_USAGE_STATUS,*PCTL_VERIFY_USAGE_STATUS;
#define CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG 0x1
#define CERT_VERIFY_TRUSTED_SIGNERS_FLAG 0x2
#define CERT_VERIFY_NO_TIME_CHECK_FLAG 0x4
#define CERT_VERIFY_ALLOW_MORE_USAGE_FLAG 0x8
#define CERT_VERIFY_UPDATED_CTL_FLAG 0x1
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertVerifyCTLUsage (DWORD dwEncodingType, DWORD dwSubjectType, void *pvSubject, PCTL_USAGE pSubjectUsage, DWORD dwFlags, PCTL_VERIFY_USAGE_PARA pVerifyUsagePara, PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus);
  typedef struct _CERT_REVOCATION_CRL_INFO {
    DWORD cbSize;
    PCCRL_CONTEXT pBaseCrlContext;
    PCCRL_CONTEXT pDeltaCrlContext;
    PCRL_ENTRY pCrlEntry;
    WINBOOL fDeltaCrlEntry;
  } CERT_REVOCATION_CRL_INFO,*PCERT_REVOCATION_CRL_INFO;
  typedef struct _CERT_REVOCATION_CHAIN_PARA CERT_REVOCATION_CHAIN_PARA,*PCERT_REVOCATION_CHAIN_PARA;
  typedef struct _CERT_REVOCATION_PARA {
    DWORD cbSize;
    PCCERT_CONTEXT pIssuerCert;
    DWORD cCertStore;
    HCERTSTORE *rgCertStore;
    HCERTSTORE hCrlStore;
    LPFILETIME pftTimeToUse;
  } CERT_REVOCATION_PARA,*PCERT_REVOCATION_PARA;
  typedef struct _CERT_REVOCATION_STATUS {
    DWORD cbSize;
    DWORD dwIndex;
    DWORD dwError;
    DWORD dwReason;
    WINBOOL fHasFreshnessTime;
    DWORD dwFreshnessTime;
  } CERT_REVOCATION_STATUS,*PCERT_REVOCATION_STATUS;
#define CERT_CONTEXT_REVOCATION_TYPE 1
#define CERT_VERIFY_REV_CHAIN_FLAG 0x1
#define CERT_VERIFY_CACHE_ONLY_BASED_REVOCATION 0x2
#define CERT_VERIFY_REV_ACCUMULATIVE_TIMEOUT_FLAG 0x4
#define CERT_VERIFY_REV_SERVER_OCSP_FLAG 0x8
#define CERT_VERIFY_REV_NO_OCSP_FAILOVER_TO_CRL_FLAG 0x10
#define CERT_UNICODE_IS_RDN_ATTRS_FLAG 0x1
#define CERT_CASE_INSENSITIVE_IS_RDN_ATTRS_FLAG 0x2
#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB 1
#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT 2
#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL 3
#define CRYPT_VERIFY_CERT_SIGN_SUBJECT_OCSP_BASIC_SIGNED_RESPONSE 4
#define CRYPT_VERIFY_CERT_SIGN_ISSUER_PUBKEY 1
#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT 2
#define CRYPT_VERIFY_CERT_SIGN_ISSUER_CHAIN 3
#define CRYPT_VERIFY_CERT_SIGN_ISSUER_NULL 4
#define CRYPT_VERIFY_CERT_SIGN_DISABLE_MD2_MD4_FLAG 0x1
#define CRYPT_VERIFY_CERT_SIGN_SET_STRONG_PROPERTIES_FLAG 0x2
#define CRYPT_VERIFY_CERT_SIGN_RETURN_STRONG_PROPERTIES_FLAG 0x4
#define CRYPT_OID_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC "CryptDllExtractEncodedSignatureParameters"
#define CRYPT_OID_SIGN_AND_ENCODE_HASH_FUNC "CryptDllSignAndEncodeHash"
#define CRYPT_OID_VERIFY_ENCODED_SIGNATURE_FUNC "CryptDllVerifyEncodedSignature"
#define CRYPT_DEFAULT_CONTEXT_AUTO_RELEASE_FLAG 0x1
#define CRYPT_DEFAULT_CONTEXT_PROCESS_FLAG 0x2
#define CRYPT_DEFAULT_CONTEXT_CERT_SIGN_OID 1
#define CRYPT_DEFAULT_CONTEXT_MULTI_CERT_SIGN_OID 2
  typedef struct _CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO {
    CRYPT_DATA_BLOB CertSignHashCNGAlgPropData;
    CRYPT_DATA_BLOB CertIssuerPubKeyBitLengthPropData;
  } CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO, *PCRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO;
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC) (DWORD dwCertEncodingType, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, void **ppvDecodedSignPara, LPWSTR *ppwszCNGHashAlgid);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC) (NCRYPT_KEY_HANDLE hKey, DWORD dwCertEncodingType, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, void *pvDecodedSignPara, LPCWSTR pwszCNGPubKeyAlgid, LPCWSTR pwszCNGHashAlgid, BYTE *pbComputedHash, DWORD cbComputedHash, BYTE *pbSignature, DWORD *pcbSignature);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC) (DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pPubKeyInfo, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, void *pvDecodedSignPara, LPCWSTR pwszCNGPubKeyAlgid, LPCWSTR pwszCNGHashAlgid, BYTE *pbComputedHash, DWORD cbComputedHash, BYTE *pbSignature, DWORD cbSignature);
  typedef void *HCRYPTDEFAULTCONTEXT;
  typedef struct _CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA {
    DWORD cOID;
    LPSTR *rgpszOID;
  } CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA,*PCRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertVerifyRevocation (DWORD dwEncodingType, DWORD dwRevType, DWORD cContext, PVOID rgpvContext[], DWORD dwFlags, PCERT_REVOCATION_PARA pRevPara, PCERT_REVOCATION_STATUS pRevStatus);
  WINBOOL __attribute__((__stdcall__)) CertCompareIntegerBlob (PCRYPT_INTEGER_BLOB pInt1, PCRYPT_INTEGER_BLOB pInt2);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertCompareCertificate (DWORD dwCertEncodingType, PCERT_INFO pCertId1, PCERT_INFO pCertId2);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertCompareCertificateName (DWORD dwCertEncodingType, PCERT_NAME_BLOB pCertName1, PCERT_NAME_BLOB pCertName2);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertIsRDNAttrsInCertificateName (DWORD dwCertEncodingType, DWORD dwFlags, PCERT_NAME_BLOB pCertName, PCERT_RDN pRDN);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertComparePublicKeyInfo (DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pPublicKey1, PCERT_PUBLIC_KEY_INFO pPublicKey2);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CertGetPublicKeyLength (DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pPublicKey);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptVerifyCertificateSignature (HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, const BYTE *pbEncoded, DWORD cbEncoded, PCERT_PUBLIC_KEY_INFO pPublicKey);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptVerifyCertificateSignatureEx (HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, DWORD dwSubjectType, void *pvSubject, DWORD dwIssuerType, void *pvIssuer, DWORD dwFlags, void *pvExtra);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertIsStrongHashToSign (PCCERT_STRONG_SIGN_PARA pStrongSignPara, LPCWSTR pwszCNGHashAlgid, PCCERT_CONTEXT pSigningCert);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptHashToBeSigned (HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash, DWORD *pcbComputedHash);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptHashCertificate (HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid, DWORD dwFlags, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash, DWORD *pcbComputedHash);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptHashCertificate2 (LPCWSTR pwszCNGHashAlgid, DWORD dwFlags, void *pvReserved, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash, DWORD *pcbComputedHash);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSignCertificate (HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, DWORD dwKeySpec, DWORD dwCertEncodingType, const BYTE *pbEncodedToBeSigned, DWORD cbEncodedToBeSigned, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, const void *pvHashAuxInfo, BYTE *pbSignature, DWORD *pcbSignature);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSignAndEncodeCertificate (HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, DWORD dwKeySpec, DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, const void *pvHashAuxInfo, BYTE *pbEncoded, DWORD *pcbEncoded);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) CertVerifyTimeValidity (LPFILETIME pTimeToVerify, PCERT_INFO pCertInfo);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) CertVerifyCRLTimeValidity (LPFILETIME pTimeToVerify, PCRL_INFO pCrlInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertVerifyValidityNesting (PCERT_INFO pSubjectInfo, PCERT_INFO pIssuerInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertVerifyCRLRevocation (DWORD dwCertEncodingType, PCERT_INFO pCertId, DWORD cCrlInfo, PCRL_INFO rgpCrlInfo[]);
  __attribute__((dllimport)) LPCSTR __attribute__((__stdcall__)) CertAlgIdToOID (DWORD dwAlgId);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CertOIDToAlgId (LPCSTR pszObjId);
  __attribute__((dllimport)) PCERT_EXTENSION __attribute__((__stdcall__)) CertFindExtension (LPCSTR pszObjId, DWORD cExtensions, CERT_EXTENSION rgExtensions[]);
  __attribute__((dllimport)) PCRYPT_ATTRIBUTE __attribute__((__stdcall__)) CertFindAttribute (LPCSTR pszObjId, DWORD cAttr, CRYPT_ATTRIBUTE rgAttr[]);
  __attribute__((dllimport)) PCERT_RDN_ATTR __attribute__((__stdcall__)) CertFindRDNAttr (LPCSTR pszObjId, PCERT_NAME_INFO pName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertGetIntendedKeyUsage (DWORD dwCertEncodingType, PCERT_INFO pCertInfo, BYTE *pbKeyUsage, DWORD cbKeyUsage);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptInstallDefaultContext (HCRYPTPROV hCryptProv, DWORD dwDefaultType, const void *pvDefaultPara, DWORD dwFlags, void *pvReserved, HCRYPTDEFAULTCONTEXT *phDefaultContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptUninstallDefaultContext (HCRYPTDEFAULTCONTEXT hDefaultContext, DWORD dwFlags, void *pvReserved);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptExportPublicKeyInfo (HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, DWORD dwKeySpec, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptExportPublicKeyInfoEx (HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, DWORD dwKeySpec, DWORD dwCertEncodingType, LPSTR pszPublicKeyObjId, DWORD dwFlags, void *pvAuxInfo, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo);
#define CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC "CryptDllExportPublicKeyInfoEx"
#define CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC "CryptDllExportPublicKeyInfoEx2"
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC) (NCRYPT_KEY_HANDLE hNCryptKey, DWORD dwCertEncodingType, LPSTR pszPublicKeyObjId, DWORD dwFlags, void *pvAuxInfo, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo);
#define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC "CryptDllImportPublicKeyInfoEx"
#define CRYPT_OID_IMPORT_PRIVATE_KEY_INFO_FUNC "CryptDllImportPrivateKeyInfoEx"
#define CRYPT_OID_EXPORT_PRIVATE_KEY_INFO_FUNC "CryptDllExportPrivateKeyInfoEx"
#define CRYPT_ACQUIRE_CACHE_FLAG 0x1
#define CRYPT_ACQUIRE_USE_PROV_INFO_FLAG 0x2
#define CRYPT_ACQUIRE_COMPARE_KEY_FLAG 0x4
#define CRYPT_ACQUIRE_NO_HEALING 0x8
#define CRYPT_ACQUIRE_SILENT_FLAG 0x40
#define CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG 0x80
#define CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK 0x70000
#define CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG 0x10000
#define CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG 0x20000
#define CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG 0x40000
#define CRYPT_FIND_USER_KEYSET_FLAG 0x1
#define CRYPT_FIND_MACHINE_KEYSET_FLAG 0x2
#define CRYPT_FIND_SILENT_KEYSET_FLAG 0x40
#define CRYPT_DELETE_KEYSET CRYPT_DELETEKEYSET
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_IMPORT_PRIV_KEY_FUNC) (HCRYPTPROV hCryptProv, CRYPT_PRIVATE_KEY_INFO *pPrivateKeyInfo, DWORD dwFlags, void *pvAuxInfo);
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_EXPORT_PRIV_KEY_FUNC) (HCRYPTPROV hCryptProv, DWORD dwKeySpec, LPSTR pszPrivateKeyObjId, DWORD dwFlags, void *pvAuxInfo, CRYPT_PRIVATE_KEY_INFO *pPrivateKeyInfo, DWORD *pcbPrivateKeyInfo);
#define CertRDNValueToStr __MINGW_NAME_AW(CertRDNValueToStr)
#define CertNameToStr __MINGW_NAME_AW(CertNameToStr)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptImportPublicKeyInfo (HCRYPTPROV hCryptProv, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, HCRYPTKEY *phKey);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptImportPublicKeyInfoEx (HCRYPTPROV hCryptProv, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, ALG_ID aiKeyAlg, DWORD dwFlags, void *pvAuxInfo, HCRYPTKEY *phKey);
#define CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC "CryptDllImportPublicKeyInfoEx2"
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC) (DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, DWORD dwFlags, void *pvAuxInfo, BCRYPT_KEY_HANDLE *phKey);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptImportPublicKeyInfoEx2 (DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, DWORD dwFlags, void *pvAuxInfo, BCRYPT_KEY_HANDLE *phKey);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptAcquireCertificatePrivateKey (PCCERT_CONTEXT pCert, DWORD dwFlags, void *pvParameters, HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProvOrNCryptKey, DWORD *pdwKeySpec, WINBOOL *pfCallerFreeProvOrNCryptKey);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptFindCertificateKeyProvInfo (PCCERT_CONTEXT pCert, DWORD dwFlags, void *pvReserved);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptImportPKCS8 (CRYPT_PKCS8_IMPORT_PARAMS sPrivateKeyAndParams, DWORD dwFlags, HCRYPTPROV *phCryptProv, void *pvAuxInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptExportPKCS8 (HCRYPTPROV hCryptProv, DWORD dwKeySpec, LPSTR pszPrivateKeyObjId, DWORD dwFlags, void *pvAuxInfo, BYTE *pbPrivateKeyBlob, DWORD *pcbPrivateKeyBlob);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptExportPKCS8Ex (CRYPT_PKCS8_EXPORT_PARAMS *psExportParams, DWORD dwFlags, void *pvAuxInfo, BYTE *pbPrivateKeyBlob, DWORD *pcbPrivateKeyBlob);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptHashPublicKeyInfo (HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid, DWORD dwFlags, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, BYTE *pbComputedHash, DWORD *pcbComputedHash);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CertRDNValueToStrA (DWORD dwValueType, PCERT_RDN_VALUE_BLOB pValue, LPSTR psz, DWORD csz);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CertRDNValueToStrW (DWORD dwValueType, PCERT_RDN_VALUE_BLOB pValue, LPWSTR psz, DWORD csz);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CertNameToStrA (DWORD dwCertEncodingType, PCERT_NAME_BLOB pName, DWORD dwStrType, LPSTR psz, DWORD csz);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CertNameToStrW (DWORD dwCertEncodingType, PCERT_NAME_BLOB pName, DWORD dwStrType, LPWSTR psz, DWORD csz);
#define CERT_SIMPLE_NAME_STR 1
#define CERT_OID_NAME_STR 2
#define CERT_X500_NAME_STR 3
#define CERT_XML_NAME_STR 4
#define CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG 0x10000
#define CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG 0x20000
#define CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG 0x40000
#define CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG 0x80000
#define CERT_NAME_STR_FORWARD_FLAG 0x1000000
#define CERT_NAME_STR_REVERSE_FLAG 0x2000000
#define CERT_NAME_STR_COMMA_FLAG 0x4000000
#define CERT_NAME_STR_CRLF_FLAG 0x8000000
#define CERT_NAME_STR_NO_QUOTING_FLAG 0x10000000
#define CERT_NAME_STR_NO_PLUS_FLAG 0x20000000
#define CERT_NAME_STR_SEMICOLON_FLAG 0x40000000
#define CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG 0x100000
#define CERT_NAME_STR_ENABLE_PUNYCODE_FLAG 0x200000
#define CertStrToName __MINGW_NAME_AW(CertStrToName)
#define CertGetNameString __MINGW_NAME_AW(CertGetNameString)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertStrToNameA (DWORD dwCertEncodingType, LPCSTR pszX500, DWORD dwStrType, void *pvReserved, BYTE *pbEncoded, DWORD *pcbEncoded, LPCSTR *ppszError);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertStrToNameW (DWORD dwCertEncodingType, LPCWSTR pszX500, DWORD dwStrType, void *pvReserved, BYTE *pbEncoded, DWORD *pcbEncoded, LPCWSTR *ppszError);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CertGetNameStringA (PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, void *pvTypePara, LPSTR pszNameString, DWORD cchNameString);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CertGetNameStringW (PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, void *pvTypePara, LPWSTR pszNameString, DWORD cchNameString);
#define CERT_NAME_EMAIL_TYPE 1
#define CERT_NAME_RDN_TYPE 2
#define CERT_NAME_ATTR_TYPE 3
#define CERT_NAME_SIMPLE_DISPLAY_TYPE 4
#define CERT_NAME_FRIENDLY_DISPLAY_TYPE 5
#define CERT_NAME_DNS_TYPE 6
#define CERT_NAME_URL_TYPE 7
#define CERT_NAME_UPN_TYPE 8
#define CERT_NAME_ISSUER_FLAG 0x1
#define CERT_NAME_DISABLE_IE4_UTF8_FLAG 0x10000
#define CERT_NAME_SEARCH_ALL_NAMES_FLAG 0x2
  typedef PCCERT_CONTEXT (__attribute__((__stdcall__)) *PFN_CRYPT_GET_SIGNER_CERTIFICATE) (void *pvGetArg, DWORD dwCertEncodingType, PCERT_INFO pSignerId, HCERTSTORE hMsgCertStore);
  typedef struct _CRYPT_SIGN_MESSAGE_PARA {
    DWORD cbSize;
    DWORD dwMsgEncodingType;
    PCCERT_CONTEXT pSigningCert;
    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
    void *pvHashAuxInfo;
    DWORD cMsgCert;
    PCCERT_CONTEXT *rgpMsgCert;
    DWORD cMsgCrl;
    PCCRL_CONTEXT *rgpMsgCrl;
    DWORD cAuthAttr;
    PCRYPT_ATTRIBUTE rgAuthAttr;
    DWORD cUnauthAttr;
    PCRYPT_ATTRIBUTE rgUnauthAttr;
    DWORD dwFlags;
    DWORD dwInnerContentType;
  } CRYPT_SIGN_MESSAGE_PARA,*PCRYPT_SIGN_MESSAGE_PARA;
#define CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG 0x1
#define CRYPT_MESSAGE_ENCAPSULATED_CONTENT_OUT_FLAG 0x2
#define CRYPT_MESSAGE_KEYID_SIGNER_FLAG 0x4
#define CRYPT_MESSAGE_SILENT_KEYSET_FLAG 0x40
  typedef struct _CRYPT_VERIFY_MESSAGE_PARA {
    DWORD cbSize;
    DWORD dwMsgAndCertEncodingType;
    HCRYPTPROV_LEGACY hCryptProv;
    PFN_CRYPT_GET_SIGNER_CERTIFICATE pfnGetSignerCertificate;
    void *pvGetArg;
  } CRYPT_VERIFY_MESSAGE_PARA,*PCRYPT_VERIFY_MESSAGE_PARA;
  typedef struct _CRYPT_ENCRYPT_MESSAGE_PARA {
    DWORD cbSize;
    DWORD dwMsgEncodingType;
    HCRYPTPROV_LEGACY hCryptProv;
    CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm;
    void *pvEncryptionAuxInfo;
    DWORD dwFlags;
    DWORD dwInnerContentType;
  } CRYPT_ENCRYPT_MESSAGE_PARA,*PCRYPT_ENCRYPT_MESSAGE_PARA;
#define CRYPT_MESSAGE_KEYID_RECIPIENT_FLAG 0x4
  typedef struct _CRYPT_DECRYPT_MESSAGE_PARA {
    DWORD cbSize;
    DWORD dwMsgAndCertEncodingType;
    DWORD cCertStore;
    HCERTSTORE *rghCertStore;
  } CRYPT_DECRYPT_MESSAGE_PARA,*PCRYPT_DECRYPT_MESSAGE_PARA;
  typedef struct _CRYPT_HASH_MESSAGE_PARA {
    DWORD cbSize;
    DWORD dwMsgEncodingType;
    HCRYPTPROV_LEGACY hCryptProv;
    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
    void *pvHashAuxInfo;
  } CRYPT_HASH_MESSAGE_PARA,*PCRYPT_HASH_MESSAGE_PARA;
  typedef struct _CRYPT_KEY_SIGN_MESSAGE_PARA {
    DWORD cbSize;
    DWORD dwMsgAndCertEncodingType;
    __extension__ union {
      HCRYPTPROV hCryptProv;
      NCRYPT_KEY_HANDLE hNCryptKey;
    };
    DWORD dwKeySpec;
    CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm;
    void *pvHashAuxInfo;
    CRYPT_ALGORITHM_IDENTIFIER PubKeyAlgorithm;
  } CRYPT_KEY_SIGN_MESSAGE_PARA,*PCRYPT_KEY_SIGN_MESSAGE_PARA;
  typedef struct _CRYPT_KEY_VERIFY_MESSAGE_PARA {
    DWORD cbSize;
    DWORD dwMsgEncodingType;
    HCRYPTPROV_LEGACY hCryptProv;
  } CRYPT_KEY_VERIFY_MESSAGE_PARA,*PCRYPT_KEY_VERIFY_MESSAGE_PARA;
  typedef struct _CERT_CHAIN {
    DWORD cCerts;
    PCERT_BLOB certs;
    CRYPT_KEY_PROV_INFO keyLocatorInfo;
  } CERT_CHAIN,*PCERT_CHAIN;
#define CertOpenSystemStore __MINGW_NAME_AW(CertOpenSystemStore)
#define CertAddEncodedCertificateToSystemStore __MINGW_NAME_AW(CertAddEncodedCertificateToSystemStore)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSignMessage (PCRYPT_SIGN_MESSAGE_PARA pSignPara, WINBOOL fDetachedSignature, DWORD cToBeSigned, const BYTE *rgpbToBeSigned[], DWORD rgcbToBeSigned[], BYTE *pbSignedBlob, DWORD *pcbSignedBlob);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptVerifyMessageSignature (PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex, const BYTE *pbSignedBlob, DWORD cbSignedBlob, BYTE *pbDecoded, DWORD *pcbDecoded, PCCERT_CONTEXT *ppSignerCert);
  __attribute__((dllimport)) LONG __attribute__((__stdcall__)) CryptGetMessageSignerCount (DWORD dwMsgEncodingType, const BYTE *pbSignedBlob, DWORD cbSignedBlob);
  __attribute__((dllimport)) HCERTSTORE __attribute__((__stdcall__)) CryptGetMessageCertificates (DWORD dwMsgAndCertEncodingType, HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const BYTE *pbSignedBlob, DWORD cbSignedBlob);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptVerifyDetachedMessageSignature (PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex, const BYTE *pbDetachedSignBlob, DWORD cbDetachedSignBlob, DWORD cToBeSigned, const BYTE *rgpbToBeSigned[], DWORD rgcbToBeSigned[], PCCERT_CONTEXT *ppSignerCert);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptEncryptMessage (PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara, DWORD cRecipientCert, PCCERT_CONTEXT rgpRecipientCert[], const BYTE *pbToBeEncrypted, DWORD cbToBeEncrypted, BYTE *pbEncryptedBlob, DWORD *pcbEncryptedBlob);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptDecryptMessage (PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara, const BYTE *pbEncryptedBlob, DWORD cbEncryptedBlob, BYTE *pbDecrypted, DWORD *pcbDecrypted, PCCERT_CONTEXT *ppXchgCert);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSignAndEncryptMessage (PCRYPT_SIGN_MESSAGE_PARA pSignPara, PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara, DWORD cRecipientCert, PCCERT_CONTEXT rgpRecipientCert[], const BYTE *pbToBeSignedAndEncrypted, DWORD cbToBeSignedAndEncrypted, BYTE *pbSignedAndEncryptedBlob, DWORD *pcbSignedAndEncryptedBlob);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptDecryptAndVerifyMessageSignature (PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara, PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex, const BYTE *pbEncryptedBlob, DWORD cbEncryptedBlob, BYTE *pbDecrypted, DWORD *pcbDecrypted, PCCERT_CONTEXT *ppXchgCert, PCCERT_CONTEXT *ppSignerCert);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptDecodeMessage (DWORD dwMsgTypeFlags, PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara, PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex, const BYTE *pbEncodedBlob, DWORD cbEncodedBlob, DWORD dwPrevInnerContentType, DWORD *pdwMsgType, DWORD *pdwInnerContentType, BYTE *pbDecoded, DWORD *pcbDecoded, PCCERT_CONTEXT *ppXchgCert, PCCERT_CONTEXT *ppSignerCert);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptHashMessage (PCRYPT_HASH_MESSAGE_PARA pHashPara, WINBOOL fDetachedHash, DWORD cToBeHashed, const BYTE *rgpbToBeHashed[], DWORD rgcbToBeHashed[], BYTE *pbHashedBlob, DWORD *pcbHashedBlob, BYTE *pbComputedHash, DWORD *pcbComputedHash);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptVerifyMessageHash (PCRYPT_HASH_MESSAGE_PARA pHashPara, BYTE *pbHashedBlob, DWORD cbHashedBlob, BYTE *pbToBeHashed, DWORD *pcbToBeHashed, BYTE *pbComputedHash, DWORD *pcbComputedHash);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptVerifyDetachedMessageHash (PCRYPT_HASH_MESSAGE_PARA pHashPara, BYTE *pbDetachedHashBlob, DWORD cbDetachedHashBlob, DWORD cToBeHashed, const BYTE *rgpbToBeHashed[], DWORD rgcbToBeHashed[], BYTE *pbComputedHash, DWORD *pcbComputedHash);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSignMessageWithKey (PCRYPT_KEY_SIGN_MESSAGE_PARA pSignPara, const BYTE *pbToBeSigned, DWORD cbToBeSigned, BYTE *pbSignedBlob, DWORD *pcbSignedBlob);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptVerifyMessageSignatureWithKey (PCRYPT_KEY_VERIFY_MESSAGE_PARA pVerifyPara, PCERT_PUBLIC_KEY_INFO pPublicKeyInfo, const BYTE *pbSignedBlob, DWORD cbSignedBlob, BYTE *pbDecoded, DWORD *pcbDecoded);
  __attribute__((dllimport)) HCERTSTORE __attribute__((__stdcall__)) CertOpenSystemStoreA (HCRYPTPROV_LEGACY hProv, LPCSTR szSubsystemProtocol);
  __attribute__((dllimport)) HCERTSTORE __attribute__((__stdcall__)) CertOpenSystemStoreW (HCRYPTPROV_LEGACY hProv, LPCWSTR szSubsystemProtocol);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertAddEncodedCertificateToSystemStoreA (LPCSTR szCertStoreName, const BYTE *pbCertEncoded, DWORD cbCertEncoded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertAddEncodedCertificateToSystemStoreW (LPCWSTR szCertStoreName, const BYTE *pbCertEncoded, DWORD cbCertEncoded);
  HRESULT __attribute__((__stdcall__)) FindCertsByIssuer (PCERT_CHAIN pCertChains, DWORD *pcbCertChains, DWORD *pcCertChains, BYTE *pbEncodedIssuerName, DWORD cbEncodedIssuerName, LPCWSTR pwszPurpose, DWORD dwKeySpec);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptQueryObject (DWORD dwObjectType, const void *pvObject, DWORD dwExpectedContentTypeFlags, DWORD dwExpectedFormatTypeFlags, DWORD dwFlags, DWORD *pdwMsgAndCertEncodingType, DWORD *pdwContentType, DWORD *pdwFormatType, HCERTSTORE *phCertStore, HCRYPTMSG *phMsg, const void **ppvContext);
#define CERT_QUERY_OBJECT_FILE 0x1
#define CERT_QUERY_OBJECT_BLOB 0x2
#define CERT_QUERY_CONTENT_CERT 1
#define CERT_QUERY_CONTENT_CTL 2
#define CERT_QUERY_CONTENT_CRL 3
#define CERT_QUERY_CONTENT_SERIALIZED_STORE 4
#define CERT_QUERY_CONTENT_SERIALIZED_CERT 5
#define CERT_QUERY_CONTENT_SERIALIZED_CTL 6
#define CERT_QUERY_CONTENT_SERIALIZED_CRL 7
#define CERT_QUERY_CONTENT_PKCS7_SIGNED 8
#define CERT_QUERY_CONTENT_PKCS7_UNSIGNED 9
#define CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED 10
#define CERT_QUERY_CONTENT_PKCS10 11
#define CERT_QUERY_CONTENT_PFX 12
#define CERT_QUERY_CONTENT_CERT_PAIR 13
#define CERT_QUERY_CONTENT_PFX_AND_LOAD 14
#define CERT_QUERY_CONTENT_FLAG_CERT (1 << CERT_QUERY_CONTENT_CERT)
#define CERT_QUERY_CONTENT_FLAG_CTL (1 << CERT_QUERY_CONTENT_CTL)
#define CERT_QUERY_CONTENT_FLAG_CRL (1 << CERT_QUERY_CONTENT_CRL)
#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE)
#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT)
#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL)
#define CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL)
#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED)
#define CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED)
#define CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED)
#define CERT_QUERY_CONTENT_FLAG_PKCS10 (1 << CERT_QUERY_CONTENT_PKCS10)
#define CERT_QUERY_CONTENT_FLAG_PFX (1 << CERT_QUERY_CONTENT_PFX)
#define CERT_QUERY_CONTENT_FLAG_CERT_PAIR (1 << CERT_QUERY_CONTENT_CERT_PAIR)
#define CERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD (1 << CERT_QUERY_CONTENT_PFX_AND_LOAD)
#define CERT_QUERY_CONTENT_FLAG_ALL (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_CTL | CERT_QUERY_CONTENT_FLAG_CRL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | CERT_QUERY_CONTENT_FLAG_PKCS10 | CERT_QUERY_CONTENT_FLAG_PFX | CERT_QUERY_CONTENT_FLAG_CERT_PAIR)
#define CERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED)
#define CERT_QUERY_FORMAT_BINARY 1
#define CERT_QUERY_FORMAT_BASE64_ENCODED 2
#define CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED 3
#define CERT_QUERY_FORMAT_FLAG_BINARY (1 << CERT_QUERY_FORMAT_BINARY)
#define CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED (1 << CERT_QUERY_FORMAT_BASE64_ENCODED)
#define CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED)
#define CERT_QUERY_FORMAT_FLAG_ALL (CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED)
  typedef HANDLE HCRYPTASYNC,*PHCRYPTASYNC;
  typedef void (__attribute__((__stdcall__)) *PFN_CRYPT_ASYNC_PARAM_FREE_FUNC) (LPSTR pszParamOid, LPVOID pvParam);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) CryptMemAlloc (ULONG cbSize);
  __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) CryptMemRealloc (LPVOID pv, ULONG cbSize);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CryptMemFree (LPVOID pv);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptCreateAsyncHandle (DWORD dwFlags, PHCRYPTASYNC phAsync);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSetAsyncParam (HCRYPTASYNC hAsync, LPSTR pszParamOid, LPVOID pvParam, PFN_CRYPT_ASYNC_PARAM_FREE_FUNC pfnFree);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGetAsyncParam (HCRYPTASYNC hAsync, LPSTR pszParamOid, LPVOID *ppvParam, PFN_CRYPT_ASYNC_PARAM_FREE_FUNC *ppfnFree);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptCloseAsyncHandle (HCRYPTASYNC hAsync);
  typedef struct _CRYPT_BLOB_ARRAY {
    DWORD cBlob;
    PCRYPT_DATA_BLOB rgBlob;
  } CRYPT_BLOB_ARRAY,*PCRYPT_BLOB_ARRAY;
  typedef struct _CRYPT_CREDENTIALS {
    DWORD cbSize;
    LPCSTR pszCredentialsOid;
    LPVOID pvCredentials;
  } CRYPT_CREDENTIALS,*PCRYPT_CREDENTIALS;
#define CREDENTIAL_OID_PASSWORD_CREDENTIALS_A ((LPCSTR)1)
#define CREDENTIAL_OID_PASSWORD_CREDENTIALS_W ((LPCSTR)2)
#define CREDENTIAL_OID_PASSWORD_CREDENTIALS __MINGW_NAME_UAW(CREDENTIAL_OID_PASSWORD_CREDENTIALS)
  typedef struct _CRYPT_PASSWORD_CREDENTIALSA {
    DWORD cbSize;
    LPSTR pszUsername;
    LPSTR pszPassword;
  } CRYPT_PASSWORD_CREDENTIALSA,*PCRYPT_PASSWORD_CREDENTIALSA;
  typedef struct _CRYPT_PASSWORD_CREDENTIALSW {
    DWORD cbSize;
    LPWSTR pszUsername;
    LPWSTR pszPassword;
  } CRYPT_PASSWORD_CREDENTIALSW,*PCRYPT_PASSWORD_CREDENTIALSW;
  typedef CRYPT_PASSWORD_CREDENTIALSA CRYPT_PASSWORD_CREDENTIALS;
  typedef PCRYPT_PASSWORD_CREDENTIALSA PCRYPT_PASSWORD_CREDENTIALS;
#define SCHEME_OID_RETRIEVE_ENCODED_OBJECT_FUNC "SchemeDllRetrieveEncodedObject"
#define SCHEME_OID_RETRIEVE_ENCODED_OBJECTW_FUNC "SchemeDllRetrieveEncodedObjectW"
#define CONTEXT_OID_CREATE_OBJECT_CONTEXT_FUNC "ContextDllCreateObjectContext"
  typedef void (__attribute__((__stdcall__)) *PFN_FREE_ENCODED_OBJECT_FUNC) (LPCSTR pszObjectOid, PCRYPT_BLOB_ARRAY pObject, LPVOID pvFreeContext);
#define CONTEXT_OID_CERTIFICATE ((LPCSTR)1)
#define CONTEXT_OID_CRL ((LPCSTR)2)
#define CONTEXT_OID_CTL ((LPCSTR)3)
#define CONTEXT_OID_PKCS7 ((LPCSTR)4)
#define CONTEXT_OID_CAPI2_ANY ((LPCSTR)5)
#define CONTEXT_OID_OCSP_RESP ((LPCSTR)6)
#define CRYPT_RETRIEVE_MULTIPLE_OBJECTS 0x1
#define CRYPT_CACHE_ONLY_RETRIEVAL 0x2
#define CRYPT_WIRE_ONLY_RETRIEVAL 0x4
#define CRYPT_DONT_CACHE_RESULT 0x8
#define CRYPT_ASYNC_RETRIEVAL 0x10
#define CRYPT_VERIFY_CONTEXT_SIGNATURE 0x20
#define CRYPT_VERIFY_DATA_HASH 0x40
#define CRYPT_KEEP_TIME_VALID 0x80
#define CRYPT_DONT_VERIFY_SIGNATURE 0x100
#define CRYPT_DONT_CHECK_TIME_VALIDITY 0x200
#define CRYPT_CHECK_FRESHNESS_TIME_VALIDITY 0x400
#define CRYPT_ACCUMULATIVE_TIMEOUT 0x800
#define CRYPT_STICKY_CACHE_RETRIEVAL 0x1000
#define CRYPT_LDAP_SCOPE_BASE_ONLY_RETRIEVAL 0x2000
#define CRYPT_OFFLINE_CHECK_RETRIEVAL 0x4000
#define CRYPT_LDAP_INSERT_ENTRY_ATTRIBUTE 0x8000
#define CRYPT_LDAP_SIGN_RETRIEVAL 0x10000
#define CRYPT_NO_AUTH_RETRIEVAL 0x20000
#define CRYPT_LDAP_AREC_EXCLUSIVE_RETRIEVAL 0x40000
#define CRYPT_AIA_RETRIEVAL 0x80000
#define CRYPT_HTTP_POST_RETRIEVAL 0x100000
#define CRYPT_PROXY_CACHE_RETRIEVAL 0x200000
#define CRYPT_NOT_MODIFIED_RETRIEVAL 0x400000
#define CRYPT_ENABLE_SSL_REVOCATION_RETRIEVAL 0x800000
#define CRYPT_OCSP_ONLY_RETRIEVAL 0x1000000
#define CRYPT_NO_OCSP_FAILOVER_TO_CRL_RETRIEVAL 0x2000000
#define CRYPT_RANDOM_QUERY_STRING_RETRIEVAL 0x4000000
#define CRYPT_ENABLE_FILE_RETRIEVAL 0x08000000
#define CRYPT_CREATE_NEW_FLUSH_ENTRY 0x10000000
  typedef struct _CRYPTNET_URL_CACHE_PRE_FETCH_INFO {
    DWORD cbSize;
    DWORD dwObjectType;
    DWORD dwError;
    DWORD dwReserved;
    FILETIME ThisUpdateTime;
    FILETIME NextUpdateTime;
    FILETIME PublishTime;
  } CRYPTNET_URL_CACHE_PRE_FETCH_INFO,*PCRYPTNET_URL_CACHE_PRE_FETCH_INFO;
#define CRYPTNET_URL_CACHE_PRE_FETCH_NONE 0
#define CRYPTNET_URL_CACHE_PRE_FETCH_BLOB 1
#define CRYPTNET_URL_CACHE_PRE_FETCH_CRL 2
#define CRYPTNET_URL_CACHE_PRE_FETCH_OCSP 3
#define CRYPTNET_URL_CACHE_PRE_FETCH_AUTOROOT_CAB 5
#define CRYPTNET_URL_CACHE_PRE_FETCH_DISALLOWED_CERT_CAB 6
#define CRYPTNET_URL_CACHE_PRE_FETCH_PIN_RULES_CAB 7
  typedef struct _CRYPTNET_URL_CACHE_FLUSH_INFO {
    DWORD cbSize;
    DWORD dwExemptSeconds;
    FILETIME ExpireTime;
  } CRYPTNET_URL_CACHE_FLUSH_INFO,*PCRYPTNET_URL_CACHE_FLUSH_INFO;
#define CRYPTNET_URL_CACHE_DEFAULT_FLUSH 0
#define CRYPTNET_URL_CACHE_DISABLE_FLUSH 0xffffffff
  typedef struct _CRYPTNET_URL_CACHE_RESPONSE_INFO {
    DWORD cbSize;
    WORD wResponseType;
    WORD wResponseFlags;
    FILETIME LastModifiedTime;
    DWORD dwMaxAge;
    LPCWSTR pwszETag;
    DWORD dwProxyId;
  } CRYPTNET_URL_CACHE_RESPONSE_INFO,*PCRYPTNET_URL_CACHE_RESPONSE_INFO;
#define CRYPTNET_URL_CACHE_RESPONSE_NONE 0
#define CRYPTNET_URL_CACHE_RESPONSE_HTTP 1
#define CRYPTNET_URL_CACHE_RESPONSE_VALIDATED 0x8000
  typedef struct _CRYPT_RETRIEVE_AUX_INFO {
    DWORD cbSize;
    FILETIME *pLastSyncTime;
    DWORD dwMaxUrlRetrievalByteCount;
    PCRYPTNET_URL_CACHE_PRE_FETCH_INFO pPreFetchInfo;
    PCRYPTNET_URL_CACHE_FLUSH_INFO pFlushInfo;
    PCRYPTNET_URL_CACHE_RESPONSE_INFO *ppResponseInfo;
    LPWSTR pwszCacheFileNamePrefix;
    LPFILETIME pftCacheResync;
    WINBOOL fProxyCacheRetrieval;
    DWORD dwHttpStatusCode;
  } CRYPT_RETRIEVE_AUX_INFO,*PCRYPT_RETRIEVE_AUX_INFO;
#define CRYPT_RETRIEVE_MAX_ERROR_CONTENT_LENGTH 0x1000
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptRetrieveObjectByUrlA (LPCSTR pszUrl, LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout, LPVOID *ppvObject, HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, LPVOID pvVerify, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptRetrieveObjectByUrlW (LPCWSTR pszUrl, LPCSTR pszObjectOid, DWORD dwRetrievalFlags, DWORD dwTimeout, LPVOID *ppvObject, HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, LPVOID pvVerify, PCRYPT_RETRIEVE_AUX_INFO pAuxInfo);
#define CryptRetrieveObjectByUrl __MINGW_NAME_AW(CryptRetrieveObjectByUrl)
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_CANCEL_RETRIEVAL) (DWORD dwFlags, void *pvArg);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptInstallCancelRetrieval (PFN_CRYPT_CANCEL_RETRIEVAL pfnCancel, const void *pvArg, DWORD dwFlags, void *pvReserved);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptUninstallCancelRetrieval (DWORD dwFlags, void *pvReserved);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptCancelAsyncRetrieval (HCRYPTASYNC hAsyncRetrieval);
#define CRYPT_PARAM_ASYNC_RETRIEVAL_COMPLETION ((LPCSTR)1)
  typedef void (__attribute__((__stdcall__)) *PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC) (LPVOID pvCompletion, DWORD dwCompletionCode, LPCSTR pszUrl, LPSTR pszObjectOid, LPVOID pvObject);
  typedef struct _CRYPT_ASYNC_RETRIEVAL_COMPLETION {
    PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC pfnCompletion;
    LPVOID pvCompletion;
  } CRYPT_ASYNC_RETRIEVAL_COMPLETION,*PCRYPT_ASYNC_RETRIEVAL_COMPLETION;
#define CRYPT_PARAM_CANCEL_ASYNC_RETRIEVAL ((LPCSTR)2)
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CANCEL_ASYNC_RETRIEVAL_FUNC) (HCRYPTASYNC hAsyncRetrieve);
#define CRYPT_GET_URL_FROM_PROPERTY 0x1
#define CRYPT_GET_URL_FROM_EXTENSION 0x2
#define CRYPT_GET_URL_FROM_UNAUTH_ATTRIBUTE 0x4
#define CRYPT_GET_URL_FROM_AUTH_ATTRIBUTE 0x8
  typedef struct _CRYPT_URL_ARRAY {
    DWORD cUrl;
    LPWSTR *rgwszUrl;
  } CRYPT_URL_ARRAY,*PCRYPT_URL_ARRAY;
  typedef struct _CRYPT_URL_INFO {
    DWORD cbSize;
    DWORD dwSyncDeltaTime;
    DWORD cGroup;
    DWORD *rgcGroupEntry;
  } CRYPT_URL_INFO,*PCRYPT_URL_INFO;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGetObjectUrl (LPCSTR pszUrlOid, LPVOID pvPara, DWORD dwFlags, PCRYPT_URL_ARRAY pUrlArray, DWORD *pcbUrlArray, PCRYPT_URL_INFO pUrlInfo, DWORD *pcbUrlInfo, LPVOID pvReserved);
#define URL_OID_GET_OBJECT_URL_FUNC "UrlDllGetObjectUrl"
#define URL_OID_CERTIFICATE_ISSUER ((LPCSTR) 1)
#define URL_OID_CERTIFICATE_CRL_DIST_POINT ((LPCSTR) 2)
#define URL_OID_CTL_ISSUER ((LPCSTR) 3)
#define URL_OID_CTL_NEXT_UPDATE ((LPCSTR) 4)
#define URL_OID_CRL_ISSUER ((LPCSTR) 5)
#define URL_OID_CERTIFICATE_FRESHEST_CRL ((LPCSTR) 6)
#define URL_OID_CRL_FRESHEST_CRL ((LPCSTR) 7)
#define URL_OID_CROSS_CERT_DIST_POINT ((LPCSTR) 8)
#define URL_OID_CERTIFICATE_OCSP ((LPCSTR) 9)
#define URL_OID_CERTIFICATE_OCSP_AND_CRL_DIST_POINT ((LPCSTR) 10)
#define URL_OID_CERTIFICATE_CRL_DIST_POINT_AND_OCSP ((LPCSTR) 11)
#define URL_OID_CROSS_CERT_SUBJECT_INFO_ACCESS ((LPCSTR) 12)
#define URL_OID_CERTIFICATE_ONLY_OCSP ((LPCSTR) 13)
  typedef struct _CERT_CRL_CONTEXT_PAIR {
    PCCERT_CONTEXT pCertContext;
    PCCRL_CONTEXT pCrlContext;
  } CERT_CRL_CONTEXT_PAIR,*PCERT_CRL_CONTEXT_PAIR;
  typedef const CERT_CRL_CONTEXT_PAIR *PCCERT_CRL_CONTEXT_PAIR;
  typedef struct _CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO {
    DWORD cbSize;
    int iDeltaCrlIndicator;
    LPFILETIME pftCacheResync;
    LPFILETIME pLastSyncTime;
    LPFILETIME pMaxAgeTime;
    PCERT_REVOCATION_CHAIN_PARA pChainPara;
    PCRYPT_INTEGER_BLOB pDeltaCrlIndicator;
  } CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO, *PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO;
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CRYPT_ENUM_KEYID_PROP) (const CRYPT_HASH_BLOB *pKeyIdentifier, DWORD dwFlags, void *pvReserved, void *pvArg, DWORD cProp, DWORD *rgdwPropId, void **rgpvData, DWORD *rgcbData);
#define TIME_VALID_OID_GET_OBJECT_FUNC "TimeValidDllGetObject"
#define CERT_CHAIN_CONFIG_REGPATH L"Software\\Microsoft\\Cryptography\\OID\\EncodingType 0\\CertDllCreateCertificateChainEngine\\Config"
#define TIME_VALID_OID_GET_CTL ((LPCSTR)1)
#define TIME_VALID_OID_GET_CRL ((LPCSTR)2)
#define TIME_VALID_OID_GET_CRL_FROM_CERT ((LPCSTR)3)
#define TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CERT ((LPCSTR)4)
#define TIME_VALID_OID_GET_FRESHEST_CRL_FROM_CRL ((LPCSTR)5)
#define TIME_VALID_OID_FLUSH_OBJECT_FUNC "TimeValidDllFlushObject"
#define TIME_VALID_OID_FLUSH_CTL ((LPCSTR)1)
#define TIME_VALID_OID_FLUSH_CRL ((LPCSTR)2)
#define TIME_VALID_OID_FLUSH_CRL_FROM_CERT ((LPCSTR)3)
#define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CERT ((LPCSTR)4)
#define TIME_VALID_OID_FLUSH_FRESHEST_CRL_FROM_CRL ((LPCSTR)5)
#define CERT_CREATE_SELFSIGN_NO_SIGN 1
#define CERT_CREATE_SELFSIGN_NO_KEY_INFO 2
#define CRYPT_KEYID_DELETE_FLAG 0x10
#define CRYPT_KEYID_MACHINE_FLAG 0x20
#define CRYPT_KEYID_SET_NEW_FLAG 0x2000
#define CRYPT_KEYID_ALLOC_FLAG 0x8000
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGetTimeValidObject (LPCSTR pszTimeValidOid, LPVOID pvPara, PCCERT_CONTEXT pIssuer, LPFILETIME pftValidFor, DWORD dwFlags, DWORD dwTimeout, LPVOID *ppvObject, PCRYPT_CREDENTIALS pCredentials, PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO pExtraInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptFlushTimeValidObject (LPCSTR pszFlushTimeValidOid, LPVOID pvPara, PCCERT_CONTEXT pIssuer, DWORD dwFlags, LPVOID pvReserved);
  __attribute__((dllimport)) PCCERT_CONTEXT __attribute__((__stdcall__)) CertCreateSelfSignCertificate (HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProvOrNCryptKey, PCERT_NAME_BLOB pSubjectIssuerBlob, DWORD dwFlags, PCRYPT_KEY_PROV_INFO pKeyProvInfo, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, PSYSTEMTIME pStartTime, PSYSTEMTIME pEndTime, PCERT_EXTENSIONS pExtensions);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptGetKeyIdentifierProperty (const CRYPT_HASH_BLOB *pKeyIdentifier, DWORD dwPropId, DWORD dwFlags, LPCWSTR pwszComputerName, void *pvReserved, void *pvData, DWORD *pcbData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptSetKeyIdentifierProperty (const CRYPT_HASH_BLOB *pKeyIdentifier, DWORD dwPropId, DWORD dwFlags, LPCWSTR pwszComputerName, void *pvReserved, const void *pvData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptEnumKeyIdentifierProperties (const CRYPT_HASH_BLOB *pKeyIdentifier, DWORD dwPropId, DWORD dwFlags, LPCWSTR pwszComputerName, void *pvReserved, void *pvArg, PFN_CRYPT_ENUM_KEYID_PROP pfnEnum);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptCreateKeyIdentifierFromCSP (DWORD dwCertEncodingType, LPCSTR pszPubKeyOID, const PUBLICKEYSTRUC *pPubKeyStruc, DWORD cbPubKeyStruc, DWORD dwFlags, void *pvReserved, BYTE *pbHash, DWORD *pcbHash);
#define CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME L"MaxUrlRetrievalByteCount"
#define CERT_CHAIN_MAX_URL_RETRIEVAL_BYTE_COUNT_DEFAULT (100 *1024 *1024)
#define CERT_CHAIN_CACHE_RESYNC_FILETIME_VALUE_NAME L"ChainCacheResyncFiletime"
#define CERT_CHAIN_DISABLE_MANDATORY_BASIC_CONSTRAINTS_VALUE_NAME L"DisableMandatoryBasicConstraints"
#define CERT_CHAIN_DISABLE_CA_NAME_CONSTRAINTS_VALUE_NAME L"DisableCANameConstraints"
#define CERT_CHAIN_DISABLE_UNSUPPORTED_CRITICAL_EXTENSIONS_VALUE_NAME L"DisableUnsupportedCriticalExtensions"
#define CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_VALUE_NAME L"MaxAIAUrlCountInCert"
#define CERT_CHAIN_MAX_AIA_URL_COUNT_IN_CERT_DEFAULT 5
#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_VALUE_NAME L"MaxAIAUrlRetrievalCountPerChain"
#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_COUNT_PER_CHAIN_DEFAULT 3
#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_VALUE_NAME L"MaxAIAUrlRetrievalByteCount"
#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_BYTE_COUNT_DEFAULT 100000
#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_VALUE_NAME L"MaxAIAUrlRetrievalCertCount"
#define CERT_CHAIN_MAX_AIA_URL_RETRIEVAL_CERT_COUNT_DEFAULT 10
#define CERT_CHAIN_OCSP_VALIDITY_SECONDS_VALUE_NAME L"OcspValiditySeconds"
#define CERT_CHAIN_OCSP_VALIDITY_SECONDS_DEFAULT (12 *60 *60)
#define CERT_CHAIN_DISABLE_SERIAL_CHAIN_VALUE_NAME L"DisableSerialChain"
#define CERT_CHAIN_SERIAL_CHAIN_LOG_FILE_NAME_VALUE_NAME L"SerialChainLogFileName"
#define CERT_CHAIN_DISABLE_SYNC_WITH_SSL_TIME_VALUE_NAME L"DisableSyncWithSslTime"
#define CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_VALUE_NAME L"MaxSslTimeUpdatedEventCount"
#define CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_DEFAULT 5
#define CERT_CHAIN_MAX_SSL_TIME_UPDATED_EVENT_COUNT_DISABLE 0xFFFFFFFF
#define CERT_CHAIN_SSL_HANDSHAKE_LOG_FILE_NAME_VALUE_NAME L"SslHandshakeLogFileName"
#define CERT_CHAIN_ENABLE_WEAK_SIGNATURE_FLAGS_VALUE_NAME L"EnableWeakSignatureFlags"
#define CERT_CHAIN_ENABLE_MD2_MD4_FLAG 0x1
#define CERT_CHAIN_ENABLE_WEAK_RSA_ROOT_FLAG 0x2
#define CERT_CHAIN_ENABLE_WEAK_LOGGING_FLAG 0x4
#define CERT_CHAIN_ENABLE_ONLY_WEAK_LOGGING_FLAG 0x8
#define CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_VALUE_NAME L"MinRsaPubKeyBitLength"
#define CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_DEFAULT 1023
#define CERT_CHAIN_MIN_RSA_PUB_KEY_BIT_LENGTH_DISABLE 0xffffffff
#define CERT_CHAIN_WEAK_RSA_PUB_KEY_TIME_VALUE_NAME L"WeakRsaPubKeyTime"
#define CERT_CHAIN_WEAK_RSA_PUB_KEY_TIME_DEFAULT 0x01ca8a755c6e0000ULL
#define CERT_CHAIN_WEAK_SIGNATURE_LOG_DIR_VALUE_NAME L"WeakSignatureLogDir"
#define CERT_CHAIN_DEFAULT_CONFIG_SUBDIR L"Default"
#define CERT_CHAIN_WEAK_PREFIX_NAME L"Weak"
#define CERT_CHAIN_WEAK_THIRD_PARTY_CONFIG_NAME L"ThirdParty"
#define CERT_CHAIN_WEAK_ALL_CONFIG_NAME L"All"
#define CERT_CHAIN_WEAK_FLAGS_NAME L"Flags"
#define CERT_CHAIN_WEAK_HYGIENE_NAME L"Hygiene"
#define CERT_CHAIN_WEAK_AFTER_TIME_NAME L"AfterTime"
#define CERT_CHAIN_WEAK_FILE_HASH_AFTER_TIME_NAME L"FileHashAfterTime"
#define CERT_CHAIN_WEAK_TIMESTAMP_HASH_AFTER_TIME_NAME L"TimestampHashAfterTime"
#define CERT_CHAIN_WEAK_MIN_BIT_LENGTH_NAME L"MinBitLength"
#define CERT_CHAIN_WEAK_SHA256_ALLOW_NAME L"Sha256Allow"
#define CERT_CHAIN_MIN_PUB_KEY_BIT_LENGTH_DISABLE 0xFFFFFFFF
#define CERT_CHAIN_ENABLE_WEAK_SETTINGS_FLAG 0x80000000
#define CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG 0x00010000
#define CERT_CHAIN_ENABLE_ALL_EKU_HYGIENE_FLAG 0x00020000
#define CERT_CHAIN_DISABLE_OPT_IN_SERVER_AUTH_WEAK_FLAG 0x00040000
#define CERT_CHAIN_DISABLE_SERVER_AUTH_WEAK_FLAG 0x00100000
#define CERT_CHAIN_ENABLE_SERVER_AUTH_HYGIENE_FLAG 0x00200000
#define CERT_CHAIN_DISABLE_CODE_SIGNING_WEAK_FLAG 0x00400000
#define CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG 0x00800000
#define CERT_CHAIN_ENABLE_CODE_SIGNING_HYGIENE_FLAG 0x01000000
#define CERT_CHAIN_ENABLE_MOTW_CODE_SIGNING_HYGIENE_FLAG 0x02000000
#define CERT_CHAIN_DISABLE_TIMESTAMP_WEAK_FLAG 0x04000000
#define CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG 0x08000000
#define CERT_CHAIN_ENABLE_TIMESTAMP_HYGIENE_FLAG 0x10000000
#define CERT_CHAIN_ENABLE_MOTW_TIMESTAMP_HYGIENE_FLAG 0x20000000
#define CERT_CHAIN_MOTW_IGNORE_AFTER_TIME_WEAK_FLAG 0x40000000
#define CERT_CHAIN_DISABLE_FILE_HASH_WEAK_FLAG 0x00001000
#define CERT_CHAIN_DISABLE_MOTW_FILE_HASH_WEAK_FLAG 0x00002000
#define CERT_CHAIN_DISABLE_TIMESTAMP_HASH_WEAK_FLAG 0x00004000
#define CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_HASH_WEAK_FLAG 0x00008000
#define CERT_CHAIN_DISABLE_WEAK_FLAGS ( CERT_CHAIN_DISABLE_ALL_EKU_WEAK_FLAG | CERT_CHAIN_DISABLE_SERVER_AUTH_WEAK_FLAG | CERT_CHAIN_DISABLE_OPT_IN_SERVER_AUTH_WEAK_FLAG | CERT_CHAIN_DISABLE_CODE_SIGNING_WEAK_FLAG | CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG | CERT_CHAIN_DISABLE_TIMESTAMP_WEAK_FLAG | CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG )
#define CERT_CHAIN_DISABLE_FILE_HASH_WEAK_FLAGS ( CERT_CHAIN_DISABLE_FILE_HASH_WEAK_FLAG | CERT_CHAIN_DISABLE_MOTW_FILE_HASH_WEAK_FLAG )
#define CERT_CHAIN_DISABLE_TIMESTAMP_HASH_WEAK_FLAGS ( CERT_CHAIN_DISABLE_TIMESTAMP_HASH_WEAK_FLAG | CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_HASH_WEAK_FLAG )
#define CERT_CHAIN_ENABLE_HYGIENE_FLAGS ( CERT_CHAIN_ENABLE_ALL_EKU_HYGIENE_FLAG | CERT_CHAIN_ENABLE_SERVER_AUTH_HYGIENE_FLAG | CERT_CHAIN_ENABLE_CODE_SIGNING_HYGIENE_FLAG | CERT_CHAIN_ENABLE_MOTW_CODE_SIGNING_HYGIENE_FLAG | CERT_CHAIN_ENABLE_TIMESTAMP_HYGIENE_FLAG | CERT_CHAIN_ENABLE_MOTW_TIMESTAMP_HYGIENE_FLAG )
#define CERT_CHAIN_MOTW_WEAK_FLAGS ( CERT_CHAIN_DISABLE_MOTW_CODE_SIGNING_WEAK_FLAG | CERT_CHAIN_DISABLE_MOTW_TIMESTAMP_WEAK_FLAG | CERT_CHAIN_ENABLE_MOTW_CODE_SIGNING_HYGIENE_FLAG | CERT_CHAIN_ENABLE_MOTW_TIMESTAMP_HYGIENE_FLAG | CERT_CHAIN_MOTW_IGNORE_AFTER_TIME_WEAK_FLAG)
#define CERT_CHAIN_OPT_IN_WEAK_FLAGS ( CERT_CHAIN_DISABLE_OPT_IN_SERVER_AUTH_WEAK_FLAG)
#define CERT_CHAIN_AUTO_CURRENT_USER 1
#define CERT_CHAIN_AUTO_LOCAL_MACHINE 2
#define CERT_CHAIN_AUTO_IMPERSONATED 3
#define CERT_CHAIN_AUTO_PROCESS_INFO 4
#define CERT_CHAIN_AUTO_PINRULE_INFO 5
#define CERT_CHAIN_AUTO_NETWORK_INFO 6
#define CERT_CHAIN_AUTO_SERIAL_LOCAL_MACHINE 7
#define CERT_CHAIN_AUTO_HPKP_RULE_INFO 8
#define CERT_CHAIN_AUTO_FLAGS_VALUE_NAME L"AutoFlags"
#define CERT_CHAIN_AUTO_FLUSH_DISABLE_FLAG 0x00000001
#define CERT_CHAIN_AUTO_LOG_CREATE_FLAG 0x00000002
#define CERT_CHAIN_AUTO_LOG_FREE_FLAG 0x00000004
#define CERT_CHAIN_AUTO_LOG_FLUSH_FLAG 0x00000008
#define CERT_CHAIN_AUTO_LOG_FLAGS ( CERT_CHAIN_AUTO_LOG_CREATE_FLAG | CERT_CHAIN_AUTO_LOG_FREE_FLAG | CERT_CHAIN_AUTO_LOG_FLUSH_FLAG )
#define CERT_CHAIN_AUTO_FLUSH_FIRST_DELTA_SECONDS_VALUE_NAME L"AutoFlushFirstDeltaSeconds"
#define CERT_CHAIN_AUTO_FLUSH_FIRST_DELTA_SECONDS_DEFAULT (5 * 60)
#define CERT_CHAIN_AUTO_FLUSH_NEXT_DELTA_SECONDS_VALUE_NAME L"AutoFlushNextDeltaSeconds"
#define CERT_CHAIN_AUTO_FLUSH_NEXT_DELTA_SECONDS_DEFAULT (30 * 60)
#define CERT_CHAIN_AUTO_LOG_FILE_NAME_VALUE_NAME L"AutoLogFileName"
#define CERT_CHAIN_DISABLE_AUTO_FLUSH_PROCESS_NAME_LIST_VALUE_NAME L"DisableAutoFlushProcessNameList"
#define CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_VALUE_NAME L"SrvOcspRespMinValiditySeconds"
#define CERT_SRV_OCSP_RESP_MIN_VALIDITY_SECONDS_DEFAULT (10 *60)
#define CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME L"SrvOcspRespUrlRetrievalTimeoutMilliseconds"
#define CERT_SRV_OCSP_RESP_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT (15 *1000)
#define CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME L"SrvOcspRespMaxBeforeNextUpdateSeconds"
#define CERT_SRV_OCSP_RESP_MAX_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT (4 *60 *60)
#define CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME L"SrvOcspRespMinBeforeNextUpdateSeconds"
#define CERT_SRV_OCSP_RESP_MIN_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT (2 *60)
#define CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME L"SrvOcspRespMinAfterNextUpdateSeconds"
#define CERT_SRV_OCSP_RESP_MIN_AFTER_NEXT_UPDATE_SECONDS_DEFAULT (1 *60)
#define CERT_SRV_OCSP_RESP_MIN_SYNC_CERT_FILE_SECONDS_VALUE_NAME L"SrvOcspRespMinSyncCertFileSeconds"
#define CERT_SRV_OCSP_RESP_MIN_SYNC_CERT_FILE_SECONDS_DEFAULT 5
#define CERT_SRV_OCSP_RESP_MAX_SYNC_CERT_FILE_SECONDS_VALUE_NAME L"SrvOcspRespMaxSyncCertFileSeconds"
#define CERT_SRV_OCSP_RESP_MAX_SYNC_CERT_FILE_SECONDS_DEFAULT (1 * 60 * 60)
#define CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_VALUE_NAME L"CryptnetMaxCachedOcspPerCrlCount"
#define CRYPTNET_MAX_CACHED_OCSP_PER_CRL_COUNT_DEFAULT 500
#define CRYPTNET_OCSP_AFTER_CRL_DISABLE 0xffffffff
#define CRYPTNET_URL_CACHE_DEFAULT_FLUSH_EXEMPT_SECONDS_VALUE_NAME L"CryptnetDefaultFlushExemptSeconds"
#define CRYPTNET_URL_CACHE_DEFAULT_FLUSH_EXEMPT_SECONDS_DEFAULT (28 *24 *60 *60)
#define CRYPTNET_PRE_FETCH_MIN_MAX_AGE_SECONDS_VALUE_NAME L"CryptnetPreFetchMinMaxAgeSeconds"
#define CRYPTNET_PRE_FETCH_MIN_MAX_AGE_SECONDS_DEFAULT (1 *60 *60)
#define CRYPTNET_PRE_FETCH_MAX_MAX_AGE_SECONDS_VALUE_NAME L"CryptnetPreFetchMaxMaxAgeSeconds"
#define CRYPTNET_PRE_FETCH_MAX_MAX_AGE_SECONDS_DEFAULT (14 *24 *60 *60)
#define CRYPTNET_PRE_FETCH_MIN_OCSP_VALIDITY_PERIOD_SECONDS_VALUE_NAME L"CryptnetPreFetchMinOcspValidityPeriodSeconds"
#define CRYPTNET_PRE_FETCH_MIN_OCSP_VALIDITY_PERIOD_SECONDS_DEFAULT (14 *24 *60 *60)
#define CRYPTNET_PRE_FETCH_AFTER_PUBLISH_PRE_FETCH_DIVISOR_VALUE_NAME L"CryptnetPreFetchAfterPublishPreFetchDivisor"
#define CRYPTNET_PRE_FETCH_AFTER_PUBLISH_PRE_FETCH_DIVISOR_DEFAULT 10
#define CRYPTNET_PRE_FETCH_BEFORE_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME L"CryptnetPreFetchBeforeNextUpdatePreFetchDivisor"
#define CRYPTNET_PRE_FETCH_BEFORE_NEXT_UPDATE_PRE_FETCH_DIVISOR_DEFAULT 20
#define CRYPTNET_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME L"CryptnetPreFetchMinBeforeNextUpdatePreFetchSeconds"
#define CRYPTNET_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT (1 *60 *60)
#define CRYPTNET_PRE_FETCH_VALIDITY_PERIOD_AFTER_NEXT_UPDATE_PRE_FETCH_DIVISOR_VALUE_NAME L"CryptnetPreFetchValidityPeriodAfterNextUpdatePreFetchDivisor"
#define CRYPTNET_PRE_FETCH_VALIDITY_PERIOD_AFTER_NEXT_UPDATE_PRE_FETCH_DIVISOR_DEFAULT 10
#define CRYPTNET_PRE_FETCH_MAX_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME L"CryptnetPreFetchMaxAfterNextUpdatePreFetchPeriodSeconds"
#define CRYPTNET_PRE_FETCH_MAX_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT (4 *60 *60)
#define CRYPTNET_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME L"CryptnetPreFetchMinAfterNextUpdatePreFetchPeriodSeconds"
#define CRYPTNET_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_PRE_FETCH_PERIOD_SECONDS_DEFAULT (30 *60)
#define CRYPTNET_PRE_FETCH_AFTER_CURRENT_TIME_PRE_FETCH_PERIOD_SECONDS_VALUE_NAME L"CryptnetPreFetchAfterCurrentTimePreFetchPeriodSeconds"
#define CRYPTNET_PRE_FETCH_AFTER_CURRENT_TIME_PRE_FETCH_PERIOD_SECONDS_DEFAULT (30 *60)
#define CRYPTNET_PRE_FETCH_TRIGGER_PERIOD_SECONDS_VALUE_NAME L"CryptnetPreFetchTriggerPeriodSeconds"
#define CRYPTNET_PRE_FETCH_TRIGGER_PERIOD_SECONDS_DEFAULT (10 *60)
#define CRYPTNET_PRE_FETCH_TRIGGER_DISABLE 0xffffffff
#define CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_VALUE_NAME L"CryptnetPreFetchScanAfterTriggerDelaySeconds"
#define CRYPTNET_PRE_FETCH_SCAN_AFTER_TRIGGER_DELAY_SECONDS_DEFAULT 30
#define CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_VALUE_NAME L"CryptnetPreFetchRetrievalTimeoutSeconds"
#define CRYPTNET_PRE_FETCH_RETRIEVAL_TIMEOUT_SECONDS_DEFAULT (5 *60)
#define CRYPTNET_CRL_PRE_FETCH_CONFIG_REGPATH CERT_CHAIN_CONFIG_REGPATH L"\\CrlPreFetch"
#define CRYPTNET_CRL_PRE_FETCH_PROCESS_NAME_LIST_VALUE_NAME L"ProcessNameList"
#define CRYPTNET_CRL_PRE_FETCH_URL_LIST_VALUE_NAME L"PreFetchUrlList"
#define CRYPTNET_CRL_PRE_FETCH_DISABLE_INFORMATION_EVENTS_VALUE_NAME L"DisableInformationEvents"
#define CRYPTNET_CRL_PRE_FETCH_LOG_FILE_NAME_VALUE_NAME L"LogFileName"
#define CRYPTNET_CRL_PRE_FETCH_TIMEOUT_SECONDS_VALUE_NAME L"TimeoutSeconds"
#define CRYPTNET_CRL_PRE_FETCH_TIMEOUT_SECONDS_DEFAULT (5 * 60)
#define CRYPTNET_CRL_PRE_FETCH_MAX_AGE_SECONDS_VALUE_NAME L"MaxAgeSeconds"
#define CRYPTNET_CRL_PRE_FETCH_MAX_AGE_SECONDS_DEFAULT (2 * 60 * 60)
#define CRYPTNET_CRL_PRE_FETCH_MAX_AGE_SECONDS_MIN (5 * 60)
#define CRYPTNET_CRL_PRE_FETCH_PUBLISH_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME L"PublishBeforeNextUpdateSeconds"
#define CRYPTNET_CRL_PRE_FETCH_PUBLISH_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT (1 * 60 * 60)
#define CRYPTNET_CRL_PRE_FETCH_PUBLISH_RANDOM_INTERVAL_SECONDS_VALUE_NAME L"PublishRandomIntervalSeconds"
#define CRYPTNET_CRL_PRE_FETCH_PUBLISH_RANDOM_INTERVAL_SECONDS_DEFAULT (5 * 60)
#define CRYPTNET_CRL_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_SECONDS_VALUE_NAME L"MinBeforeNextUpdateSeconds"
#define CRYPTNET_CRL_PRE_FETCH_MIN_BEFORE_NEXT_UPDATE_SECONDS_DEFAULT (5 * 60)
#define CRYPTNET_CRL_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_SECONDS_VALUE_NAME L"MinAfterNextUpdateSeconds"
#define CRYPTNET_CRL_PRE_FETCH_MIN_AFTER_NEXT_UPDATE_SECONDS_DEFAULT (5 * 60)
#define CERT_GROUP_POLICY_CHAIN_CONFIG_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\ChainEngine\\Config"
#define CERT_CHAIN_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME L"ChainUrlRetrievalTimeoutMilliseconds"
#define CERT_CHAIN_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT (15 *1000)
#define CERT_CHAIN_REV_ACCUMULATIVE_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_VALUE_NAME L"ChainRevAccumulativeUrlRetrievalTimeoutMilliseconds"
#define CERT_CHAIN_REV_ACCUMULATIVE_URL_RETRIEVAL_TIMEOUT_MILLISECONDS_DEFAULT (20 *1000)
#define CERT_RETR_BEHAVIOR_INET_AUTH_VALUE_NAME L"EnableInetUnknownAuth"
#define CERT_RETR_BEHAVIOR_INET_STATUS_VALUE_NAME L"EnableInetLocal"
#define CERT_RETR_BEHAVIOR_FILE_VALUE_NAME L"AllowFileUrlScheme"
#define CERT_RETR_BEHAVIOR_LDAP_VALUE_NAME L"DisableLDAPSignAndEncrypt"
#define CRYPTNET_CACHED_OCSP_SWITCH_TO_CRL_COUNT_VALUE_NAME L"CryptnetCachedOcspSwitchToCrlCount"
#define CRYPTNET_CACHED_OCSP_SWITCH_TO_CRL_COUNT_DEFAULT 50
#define CRYPTNET_CRL_BEFORE_OCSP_ENABLE 0xffffffff
#define CERT_CHAIN_DISABLE_AIA_URL_RETRIEVAL_VALUE_NAME L"DisableAIAUrlRetrieval"
#define CERT_CHAIN_OPTIONS_VALUE_NAME L"Options"
#define CERT_CHAIN_OPTION_DISABLE_AIA_URL_RETRIEVAL 0x2
#define CERT_CHAIN_OPTION_ENABLE_SIA_URL_RETRIEVAL 0x4
#define CERT_CHAIN_CROSS_CERT_DOWNLOAD_INTERVAL_HOURS_VALUE_NAME L"CrossCertDownloadIntervalHours"
#define CERT_CHAIN_CROSS_CERT_DOWNLOAD_INTERVAL_HOURS_DEFAULT (24 *7)
#define CERT_CHAIN_CRL_VALIDITY_EXT_PERIOD_HOURS_VALUE_NAME L"CRLValidityExtensionPeriod"
#define CERT_CHAIN_CRL_VALIDITY_EXT_PERIOD_HOURS_DEFAULT 12
#define HCCE_CURRENT_USER ((HCERTCHAINENGINE)NULL)
#define HCCE_LOCAL_MACHINE ((HCERTCHAINENGINE)0x1)
#define HCCE_SERIAL_LOCAL_MACHINE ((HCERTCHAINENGINE)0x2)
#define CERT_CHAIN_CACHE_END_CERT 0x1
#define CERT_CHAIN_THREAD_STORE_SYNC 0x2
#define CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL 0x4
#define CERT_CHAIN_USE_LOCAL_MACHINE_STORE 0x8
#define CERT_CHAIN_ENABLE_CACHE_AUTO_UPDATE 0x10
#define CERT_CHAIN_ENABLE_SHARE_STORE 0x20
  typedef HANDLE HCERTCHAINENGINE;
  typedef struct _CERT_CHAIN_ENGINE_CONFIG {
    DWORD cbSize;
    HCERTSTORE hRestrictedRoot;
    HCERTSTORE hRestrictedTrust;
    HCERTSTORE hRestrictedOther;
    DWORD cAdditionalStore;
    HCERTSTORE *rghAdditionalStore;
    DWORD dwFlags;
    DWORD dwUrlRetrievalTimeout;
    DWORD MaximumCachedCertificates;
    DWORD CycleDetectionModulus;
  } CERT_CHAIN_ENGINE_CONFIG,*PCERT_CHAIN_ENGINE_CONFIG;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertCreateCertificateChainEngine (PCERT_CHAIN_ENGINE_CONFIG pConfig, HCERTCHAINENGINE *phChainEngine);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CertFreeCertificateChainEngine (HCERTCHAINENGINE hChainEngine);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertResyncCertificateChainEngine (HCERTCHAINENGINE hChainEngine);
  typedef struct _CERT_TRUST_STATUS {
    DWORD dwErrorStatus;
    DWORD dwInfoStatus;
  } CERT_TRUST_STATUS,*PCERT_TRUST_STATUS;
#define CERT_TRUST_NO_ERROR 0x0
#define CERT_TRUST_IS_NOT_TIME_VALID 0x1
#define CERT_TRUST_IS_NOT_TIME_NESTED 0x2
#define CERT_TRUST_IS_REVOKED 0x4
#define CERT_TRUST_IS_NOT_SIGNATURE_VALID 0x8
#define CERT_TRUST_IS_NOT_VALID_FOR_USAGE 0x10
#define CERT_TRUST_IS_UNTRUSTED_ROOT 0x20
#define CERT_TRUST_REVOCATION_STATUS_UNKNOWN 0x40
#define CERT_TRUST_IS_CYCLIC 0x80
#define CERT_TRUST_INVALID_EXTENSION 0x100
#define CERT_TRUST_INVALID_POLICY_CONSTRAINTS 0x200
#define CERT_TRUST_INVALID_BASIC_CONSTRAINTS 0x400
#define CERT_TRUST_INVALID_NAME_CONSTRAINTS 0x800
#define CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT 0x1000
#define CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT 0x2000
#define CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT 0x4000
#define CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT 0x8000
#define CERT_TRUST_IS_PARTIAL_CHAIN 0x10000
#define CERT_TRUST_CTL_IS_NOT_TIME_VALID 0x20000
#define CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID 0x40000
#define CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE 0x80000
#define CERT_TRUST_IS_OFFLINE_REVOCATION 0x1000000
#define CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY 0x2000000
#define CERT_TRUST_IS_EXPLICIT_DISTRUST 0x4000000
#define CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT 0x8000000
#define CERT_TRUST_HAS_WEAK_SIGNATURE 0x100000
#define CERT_TRUST_HAS_EXACT_MATCH_ISSUER 0x1
#define CERT_TRUST_HAS_KEY_MATCH_ISSUER 0x2
#define CERT_TRUST_HAS_NAME_MATCH_ISSUER 0x4
#define CERT_TRUST_IS_SELF_SIGNED 0x8
#define CERT_TRUST_AUTO_UPDATE_CA_REVOCATION 0x10
#define CERT_TRUST_AUTO_UPDATE_END_REVOCATION 0x20
#define CERT_TRUST_NO_OCSP_FAILOVER_TO_CRL 0x40
#define CERT_TRUST_IS_KEY_ROLLOVER 0x00000080
#define CERT_TRUST_SSL_HANDSHAKE_OCSP 0x00040000
#define CERT_TRUST_SSL_TIME_VALID_OCSP 0x00080000
#define CERT_TRUST_SSL_RECONNECT_OCSP 0x00100000
#define CERT_TRUST_HAS_PREFERRED_ISSUER 0x100
#define CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY 0x200
#define CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS 0x400
#define CERT_TRUST_IS_PEER_TRUSTED 0x800
#define CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED 0x1000
#define CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE 0x2000
#define CERT_TRUST_IS_COMPLEX_CHAIN 0x00010000
#define CERT_TRUST_SSL_TIME_VALID 0x01000000
#define CERT_TRUST_NO_TIME_CHECK 0x02000000
  typedef struct _CERT_REVOCATION_INFO {
    DWORD cbSize;
    DWORD dwRevocationResult;
    LPCSTR pszRevocationOid;
    LPVOID pvOidSpecificInfo;
    WINBOOL fHasFreshnessTime;
    DWORD dwFreshnessTime;
    PCERT_REVOCATION_CRL_INFO pCrlInfo;
  } CERT_REVOCATION_INFO,*PCERT_REVOCATION_INFO;
  typedef struct _CERT_TRUST_LIST_INFO {
    DWORD cbSize;
    PCTL_ENTRY pCtlEntry;
    PCCTL_CONTEXT pCtlContext;
  } CERT_TRUST_LIST_INFO,*PCERT_TRUST_LIST_INFO;
  typedef struct _CERT_CHAIN_ELEMENT {
    DWORD cbSize;
    PCCERT_CONTEXT pCertContext;
    CERT_TRUST_STATUS TrustStatus;
    PCERT_REVOCATION_INFO pRevocationInfo;
    PCERT_ENHKEY_USAGE pIssuanceUsage;
    PCERT_ENHKEY_USAGE pApplicationUsage;
    LPCWSTR pwszExtendedErrorInfo;
  } CERT_CHAIN_ELEMENT,*PCERT_CHAIN_ELEMENT;
  typedef const CERT_CHAIN_ELEMENT *PCCERT_CHAIN_ELEMENT;
  typedef struct _CERT_SIMPLE_CHAIN {
    DWORD cbSize;
    CERT_TRUST_STATUS TrustStatus;
    DWORD cElement;
    PCERT_CHAIN_ELEMENT *rgpElement;
    PCERT_TRUST_LIST_INFO pTrustListInfo;
    WINBOOL fHasRevocationFreshnessTime;
    DWORD dwRevocationFreshnessTime;
  } CERT_SIMPLE_CHAIN,*PCERT_SIMPLE_CHAIN;
  typedef const CERT_SIMPLE_CHAIN *PCCERT_SIMPLE_CHAIN;
  typedef struct _CERT_CHAIN_CONTEXT CERT_CHAIN_CONTEXT,*PCERT_CHAIN_CONTEXT;
  typedef const CERT_CHAIN_CONTEXT *PCCERT_CHAIN_CONTEXT;
  struct _CERT_CHAIN_CONTEXT {
    DWORD cbSize;
    CERT_TRUST_STATUS TrustStatus;
    DWORD cChain;
    PCERT_SIMPLE_CHAIN *rgpChain;
    DWORD cLowerQualityChainContext;
    PCCERT_CHAIN_CONTEXT *rgpLowerQualityChainContext;
    WINBOOL fHasRevocationFreshnessTime;
    DWORD dwRevocationFreshnessTime;
    DWORD dwCreateFlags;
    GUID ChainId;
  };
#define USAGE_MATCH_TYPE_AND 0x0
#define USAGE_MATCH_TYPE_OR 0x1
  typedef struct _CERT_USAGE_MATCH {
    DWORD dwType;
    CERT_ENHKEY_USAGE Usage;
  } CERT_USAGE_MATCH,*PCERT_USAGE_MATCH;
  typedef struct _CTL_USAGE_MATCH {
    DWORD dwType;
    CTL_USAGE Usage;
  } CTL_USAGE_MATCH,*PCTL_USAGE_MATCH;
  typedef struct _CERT_CHAIN_PARA {
    DWORD cbSize;
    CERT_USAGE_MATCH RequestedUsage;
  } CERT_CHAIN_PARA,*PCERT_CHAIN_PARA;
#define CERT_CHAIN_STRONG_SIGN_DISABLE_END_CHECK_FLAG 0x1
#define CERT_CHAIN_DISABLE_PASS1_QUALITY_FILTERING 0x40
#define CERT_CHAIN_RETURN_LOWER_QUALITY_CONTEXTS 0x80
#define CERT_CHAIN_DISABLE_AUTH_ROOT_AUTO_UPDATE 0x100
#define CERT_CHAIN_TIMESTAMP_TIME 0x200
#define CERT_CHAIN_ENABLE_PEER_TRUST 0x400
#define CERT_CHAIN_DISABLE_MY_PEER_TRUST 0x800
#define CERT_CHAIN_DISABLE_MD2_MD4 0x1000
#define CERT_CHAIN_DISABLE_AIA 0x2000
#define CERT_CHAIN_HAS_MOTW 0x4000
#define CERT_CHAIN_ONLY_ADDITIONAL_AND_AUTH_ROOT 0x8000
#define CERT_CHAIN_OPT_IN_WEAK_SIGNATURE 0x10000
#define CERT_CHAIN_REVOCATION_CHECK_END_CERT 0x10000000
#define CERT_CHAIN_REVOCATION_CHECK_CHAIN 0x20000000
#define CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT 0x40000000
#define CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY 0x80000000
#define CERT_CHAIN_REVOCATION_ACCUMULATIVE_TIMEOUT 0x8000000
#define CERT_CHAIN_REVOCATION_CHECK_OCSP_CERT 0x4000000
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertGetCertificateChain (HCERTCHAINENGINE hChainEngine, PCCERT_CONTEXT pCertContext, LPFILETIME pTime, HCERTSTORE hAdditionalStore, PCERT_CHAIN_PARA pChainPara, DWORD dwFlags, LPVOID pvReserved, PCCERT_CHAIN_CONTEXT *ppChainContext);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CertFreeCertificateChain (PCCERT_CHAIN_CONTEXT pChainContext);
  __attribute__((dllimport)) PCCERT_CHAIN_CONTEXT __attribute__((__stdcall__)) CertDuplicateCertificateChain (PCCERT_CHAIN_CONTEXT pChainContext);
  struct _CERT_REVOCATION_CHAIN_PARA {
    DWORD cbSize;
    HCERTCHAINENGINE hChainEngine;
    HCERTSTORE hAdditionalStore;
    DWORD dwChainFlags;
    DWORD dwUrlRetrievalTimeout;
    LPFILETIME pftCurrentTime;
    LPFILETIME pftCacheResync;
    DWORD cbMaxUrlRetrievalByteCount;
  };
#define REVOCATION_OID_CRL_REVOCATION ((LPCSTR)1)
  typedef struct _CRL_REVOCATION_INFO {
    PCRL_ENTRY pCrlEntry;
    PCCRL_CONTEXT pCrlContext;
    PCCERT_CHAIN_CONTEXT pCrlIssuerChain;
  } CRL_REVOCATION_INFO,*PCRL_REVOCATION_INFO;
  __attribute__((dllimport)) PCCERT_CHAIN_CONTEXT __attribute__((__stdcall__)) CertFindChainInStore (HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, const void *pvFindPara, PCCERT_CHAIN_CONTEXT pPrevChainContext);
#define CERT_CHAIN_FIND_BY_ISSUER 1
  typedef WINBOOL (__attribute__((__stdcall__)) *PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK) (PCCERT_CONTEXT pCert, void *pvFindArg);
  typedef struct _CERT_CHAIN_FIND_BY_ISSUER_PARA {
    DWORD cbSize;
    LPCSTR pszUsageIdentifier;
    DWORD dwKeySpec;
    DWORD dwAcquirePrivateKeyFlags;
    DWORD cIssuer;
    CERT_NAME_BLOB *rgIssuer;
    PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK pfnFindCallback;
    void *pvFindArg;
  } CERT_CHAIN_FIND_ISSUER_PARA,*PCERT_CHAIN_FIND_ISSUER_PARA,CERT_CHAIN_FIND_BY_ISSUER_PARA,*PCERT_CHAIN_FIND_BY_ISSUER_PARA;
#define CERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG 0x1
#define CERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG 0x2
#define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG 0x4
#define CERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG 0x8
#define CERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG 0x4000
#define CERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG 0x8000
  typedef struct _CERT_CHAIN_POLICY_PARA {
    DWORD cbSize;
    DWORD dwFlags;
    void *pvExtraPolicyPara;
  } CERT_CHAIN_POLICY_PARA,*PCERT_CHAIN_POLICY_PARA;
  typedef struct _CERT_CHAIN_POLICY_STATUS {
    DWORD cbSize;
    DWORD dwError;
    LONG lChainIndex;
    LONG lElementIndex;
    void *pvExtraPolicyStatus;
  } CERT_CHAIN_POLICY_STATUS,*PCERT_CHAIN_POLICY_STATUS;
#define CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG 0x1
#define CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG 0x2
#define CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG 0x4
#define CERT_CHAIN_POLICY_IGNORE_INVALID_BASIC_CONSTRAINTS_FLAG 0x8
#define CERT_CHAIN_POLICY_IGNORE_ALL_NOT_TIME_VALID_FLAGS (CERT_CHAIN_POLICY_IGNORE_NOT_TIME_VALID_FLAG | CERT_CHAIN_POLICY_IGNORE_CTL_NOT_TIME_VALID_FLAG | CERT_CHAIN_POLICY_IGNORE_NOT_TIME_NESTED_FLAG)
#define CERT_CHAIN_POLICY_ALLOW_UNKNOWN_CA_FLAG 0x10
#define CERT_CHAIN_POLICY_IGNORE_WRONG_USAGE_FLAG 0x20
#define CERT_CHAIN_POLICY_IGNORE_INVALID_NAME_FLAG 0x40
#define CERT_CHAIN_POLICY_IGNORE_INVALID_POLICY_FLAG 0x80
#define CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG 0x100
#define CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG 0x200
#define CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG 0x400
#define CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG 0x800
#define CERT_CHAIN_POLICY_IGNORE_ALL_REV_UNKNOWN_FLAGS (CERT_CHAIN_POLICY_IGNORE_END_REV_UNKNOWN_FLAG | CERT_CHAIN_POLICY_IGNORE_CTL_SIGNER_REV_UNKNOWN_FLAG | CERT_CHAIN_POLICY_IGNORE_CA_REV_UNKNOWN_FLAG | CERT_CHAIN_POLICY_IGNORE_ROOT_REV_UNKNOWN_FLAG)
#define CERT_CHAIN_POLICY_IGNORE_PEER_TRUST_FLAG 0x1000
#define CERT_CHAIN_POLICY_IGNORE_NOT_SUPPORTED_CRITICAL_EXT_FLAG 0x2000
#define CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAG 0x4000
#define CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG 0x8000
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertVerifyCertificateChainPolicy (LPCSTR pszPolicyOID, PCCERT_CHAIN_CONTEXT pChainContext, PCERT_CHAIN_POLICY_PARA pPolicyPara, PCERT_CHAIN_POLICY_STATUS pPolicyStatus);
#define CRYPT_OID_VERIFY_CERTIFICATE_CHAIN_POLICY_FUNC "CertDllVerifyCertificateChainPolicy"
#define CERT_CHAIN_POLICY_BASE ((LPCSTR) 1)
#define CERT_CHAIN_POLICY_AUTHENTICODE ((LPCSTR) 2)
#define CERT_CHAIN_POLICY_AUTHENTICODE_TS ((LPCSTR) 3)
#define CERT_CHAIN_POLICY_SSL ((LPCSTR) 4)
#define CERT_CHAIN_POLICY_BASIC_CONSTRAINTS ((LPCSTR) 5)
#define CERT_CHAIN_POLICY_NT_AUTH ((LPCSTR) 6)
#define CERT_CHAIN_POLICY_MICROSOFT_ROOT ((LPCSTR) 7)
#define CERT_CHAIN_POLICY_EV ((LPCSTR) 8)
#define CERT_CHAIN_POLICY_SSL_F12 ((LPCSTR) 9)
#define CERT_CHAIN_POLICY_SSL_HPKP_HEADER ((LPCSTR) 10)
#define CERT_CHAIN_POLICY_THIRD_PARTY_ROOT ((LPCSTR) 11)
#define CERT_CHAIN_POLICY_SSL_KEY_PIN ((LPCSTR) 12)
  typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA {
    DWORD cbSize;
    DWORD dwRegPolicySettings;
    PCMSG_SIGNER_INFO pSignerInfo;
  } AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA, *PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA;
  typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS {
    DWORD cbSize;
    WINBOOL fCommercial;
  } AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS, *PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS;
  typedef struct _AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA {
    DWORD cbSize;
    DWORD dwRegPolicySettings;
    WINBOOL fCommercial;
  } AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA,*PAUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA;
#define AUTHTYPE_CLIENT 1
#define AUTHTYPE_SERVER 2
  typedef struct _HTTPSPolicyCallbackData {
    __extension__ union {
      DWORD cbStruct;
      DWORD cbSize;
    };
    DWORD dwAuthType;
    DWORD fdwChecks;
    WCHAR *pwszServerName;
  } HTTPSPolicyCallbackData,*PHTTPSPolicyCallbackData,SSL_EXTRA_CERT_CHAIN_POLICY_PARA,*PSSL_EXTRA_CERT_CHAIN_POLICY_PARA;
#define BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_CA_FLAG 0x80000000
#define BASIC_CONSTRAINTS_CERT_CHAIN_POLICY_END_ENTITY_FLAG 0x40000000
#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG 0x00010000
#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG 0x00020000
#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_DISABLE_FLIGHT_ROOT_FLAG 0x00040000
  typedef struct _EV_EXTRA_CERT_CHAIN_POLICY_PARA {
    DWORD cbSize;
    DWORD dwRootProgramQualifierFlags;
  } EV_EXTRA_CERT_CHAIN_POLICY_PARA,*PEV_EXTRA_CERT_CHAIN_POLICY_PARA;
  typedef struct _EV_EXTRA_CERT_CHAIN_POLICY_STATUS {
    DWORD cbSize;
    DWORD dwQualifiers;
    DWORD dwIssuanceUsageIndex;
  } EV_EXTRA_CERT_CHAIN_POLICY_STATUS,*PEV_EXTRA_CERT_CHAIN_POLICY_STATUS;
#define SSL_F12_ERROR_TEXT_LENGTH 256
  typedef struct _SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS {
    DWORD cbSize;
    DWORD dwErrorLevel;
    DWORD dwErrorCategory;
    DWORD dwReserved;
    WCHAR wszErrorText[256];
  } SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS, *PSSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS;
#define CERT_CHAIN_POLICY_SSL_F12_SUCCESS_LEVEL 0
#define CERT_CHAIN_POLICY_SSL_F12_WARNING_LEVEL 1
#define CERT_CHAIN_POLICY_SSL_F12_ERROR_LEVEL 2
#define CERT_CHAIN_POLICY_SSL_F12_NONE_CATEGORY 0
#define CERT_CHAIN_POLICY_SSL_F12_WEAK_CRYPTO_CATEGORY 1
#define CERT_CHAIN_POLICY_SSL_F12_ROOT_PROGRAM_CATEGORY 2
#define SSL_HPKP_PKP_HEADER_INDEX 0
#define SSL_HPKP_PKP_RO_HEADER_INDEX 1
#define SSL_HPKP_HEADER_COUNT 2
  typedef struct _SSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA {
    DWORD cbSize;
    DWORD dwReserved;
    LPWSTR pwszServerName;
    LPSTR rgpszHpkpValue[2];
  } SSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA, *PSSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA;
  typedef struct _SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA {
    DWORD cbSize;
    DWORD dwReserved;
    PCWSTR pwszServerName;
  } SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA, *PSSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA;
#define SSL_KEY_PIN_ERROR_TEXT_LENGTH 512
  typedef struct _SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS {
    DWORD cbSize;
    LONG lError;
    WCHAR wszErrorText[512];
  } SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS, *PSSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS;
#define CERT_CHAIN_POLICY_SSL_KEY_PIN_MISMATCH_ERROR -2
#define CERT_CHAIN_POLICY_SSL_KEY_PIN_MITM_ERROR -1
#define CERT_CHAIN_POLICY_SSL_KEY_PIN_SUCCESS 0
#define CERT_CHAIN_POLICY_SSL_KEY_PIN_MITM_WARNING 1
#define CERT_CHAIN_POLICY_SSL_KEY_PIN_MISMATCH_WARNING 2
#define CryptStringToBinary __MINGW_NAME_AW(CryptStringToBinary)
#define CryptBinaryToString __MINGW_NAME_AW(CryptBinaryToString)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptStringToBinaryA (LPCSTR pszString, DWORD cchString, DWORD dwFlags, BYTE *pbBinary, DWORD *pcbBinary, DWORD *pdwSkip, DWORD *pdwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptStringToBinaryW (LPCWSTR pszString, DWORD cchString, DWORD dwFlags, BYTE *pbBinary, DWORD *pcbBinary, DWORD *pdwSkip, DWORD *pdwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptBinaryToStringA (const BYTE *pbBinary, DWORD cbBinary, DWORD dwFlags, LPSTR pszString, DWORD *pcchString);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptBinaryToStringW (const BYTE *pbBinary, DWORD cbBinary, DWORD dwFlags, LPWSTR pszString, DWORD *pcchString);
#define CRYPT_STRING_BASE64HEADER 0x0
#define CRYPT_STRING_BASE64 0x1
#define CRYPT_STRING_BINARY 0x2
#define CRYPT_STRING_BASE64REQUESTHEADER 0x00000003
#define CRYPT_STRING_HEX 0x4
#define CRYPT_STRING_HEXASCII 0x00000005
#define CRYPT_STRING_BASE64_ANY 0x00000006
#define CRYPT_STRING_ANY 0x00000007
#define CRYPT_STRING_HEX_ANY 0x8
#define CRYPT_STRING_BASE64X509CRLHEADER 0x00000009
#define CRYPT_STRING_HEXADDR 0x0000000a
#define CRYPT_STRING_HEXASCIIADDR 0x0000000b
#define CRYPT_STRING_HEXRAW 0x0000000c
#define CRYPT_STRING_BASE64URI 0x0000000d
#define CRYPT_STRING_ENCODEMASK 0x000000ff
#define CRYPT_STRING_RESERVED100 0x00000100
#define CRYPT_STRING_RESERVED200 0x00000200
#define CRYPT_STRING_PERCENTESCAPE 0x08000000
#define CRYPT_STRING_HASHDATA 0x10000000
#define CRYPT_STRING_STRICT 0x20000000
#define CRYPT_STRING_NOCRLF 0x40000000
#define CRYPT_STRING_NOCR 0x80000000
#define szOID_PKCS_12_PbeIds "1.2.840.113549.1.12.1"
#define szOID_PKCS_12_pbeWithSHA1And128BitRC4 "1.2.840.113549.1.12.1.1"
#define szOID_PKCS_12_pbeWithSHA1And40BitRC4 "1.2.840.113549.1.12.1.2"
#define szOID_PKCS_12_pbeWithSHA1And3KeyTripleDES "1.2.840.113549.1.12.1.3"
#define szOID_PKCS_12_pbeWithSHA1And2KeyTripleDES "1.2.840.113549.1.12.1.4"
#define szOID_PKCS_12_pbeWithSHA1And128BitRC2 "1.2.840.113549.1.12.1.5"
#define szOID_PKCS_12_pbeWithSHA1And40BitRC2 "1.2.840.113549.1.12.1.6"
#define szOID_PKCS_5_PBKDF2 "1.2.840.113549.1.5.12"
#define szOID_PKCS_5_PBES2 "1.2.840.113549.1.5.13"
  typedef struct _CRYPT_PKCS12_PBE_PARAMS {
    int iIterations;
    ULONG cbSalt;
  } CRYPT_PKCS12_PBE_PARAMS;
  __attribute__((dllimport)) HCERTSTORE __attribute__((__stdcall__)) PFXImportCertStore (CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, DWORD dwFlags);
#define PKCS12_IMPORT_SILENT 0x40
#define CRYPT_USER_KEYSET 0x1000
#define PKCS12_PREFER_CNG_KSP 0x100
#define PKCS12_ALWAYS_CNG_KSP 0x200
#define PKCS12_ONLY_CERTIFICATES 0x00000400
#define PKCS12_ONLY_NOT_ENCRYPTED_CERTIFICATES 0x00000800
#define PKCS12_ALLOW_OVERWRITE_KEY 0x4000
#define PKCS12_NO_PERSIST_KEY 0x8000
#define PKCS12_VIRTUAL_ISOLATION_KEY 0x00010000
#define PKCS12_IMPORT_RESERVED_MASK 0xffff0000
#define PKCS12_OBJECT_LOCATOR_ALL_IMPORT_FLAGS (PKCS12_ALWAYS_CNG_KSP | PKCS12_NO_PERSIST_KEY | PKCS12_IMPORT_SILENT | PKCS12_INCLUDE_EXTENDED_PROPERTIES)
#define PKCS12_ONLY_CERTIFICATES_PROVIDER_TYPE 0
#define PKCS12_ONLY_CERTIFICATES_PROVIDER_NAME L"PfxProvider"
#define PKCS12_ONLY_CERTIFICATES_CONTAINER_NAME L"PfxContainer"
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PFXIsPFXBlob (CRYPT_DATA_BLOB *pPFX);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PFXVerifyPassword (CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, DWORD dwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PFXExportCertStoreEx (HCERTSTORE hStore, CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, void *pvPara, DWORD dwFlags);
#define REPORT_NO_PRIVATE_KEY 0x1
#define REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY 0x2
#define EXPORT_PRIVATE_KEYS 0x4
#define PKCS12_INCLUDE_EXTENDED_PROPERTIES 0x10
#define PKCS12_PROTECT_TO_DOMAIN_SIDS 0x20
#define PKCS12_EXPORT_SILENT 0x40
#define PKCS12_EXPORT_PBES2_PARAMS 0x0080
#define PKCS12_DISABLE_ENCRYPT_CERTIFICATES 0x0100
#define PKCS12_ENCRYPT_CERTIFICATES 0x0200
#define PKCS12_EXPORT_ECC_CURVE_PARAMETERS 0x1000
#define PKCS12_EXPORT_ECC_CURVE_OID 0x2000
#define PKCS12_EXPORT_RESERVED_MASK 0xffff0000
#define PKCS12_PBKDF2_ID_HMAC_SHA1 "1.2.840.113549.2.7"
#define PKCS12_PBKDF2_ID_HMAC_SHA256 "1.2.840.113549.2.9"
#define PKCS12_PBKDF2_ID_HMAC_SHA384 "1.2.840.113549.2.10"
#define PKCS12_PBKDF2_ID_HMAC_SHA512 "1.2.840.113549.2.11"
  typedef struct _PKCS12_PBES2_EXPORT_PARAMS {
    DWORD dwSize;
    PVOID hNcryptDescriptor;
    LPWSTR pwszPbes2Alg;
  } PKCS12_PBES2_EXPORT_PARAMS, *PPKCS12_PBES2_EXPORT_PARAMS;
#define PKCS12_PBES2_ALG_AES256_SHA256 L"AES256-SHA256"
#define PKCS12_CONFIG_REGPATH L"Software\\Microsoft\\Windows\\CurrentVersion\\PFX"
#define PKCS12_ENCRYPT_CERTIFICATES_VALUE_NAME L"EncryptCertificates"
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PFXExportCertStore (HCERTSTORE hStore, CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, DWORD dwFlags);
  typedef void *HCERT_SERVER_OCSP_RESPONSE;
  __attribute__((dllimport)) HCERT_SERVER_OCSP_RESPONSE __attribute__((__stdcall__)) CertOpenServerOcspResponse (PCCERT_CHAIN_CONTEXT pChainContext, DWORD dwFlags, LPVOID pvReserved);
#define CERT_SERVER_OCSP_RESPONSE_ASYNC_FLAG 0x1
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CertAddRefServerOcspResponse (HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CertCloseServerOcspResponse (HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse, DWORD dwFlags);
  typedef struct _CERT_SERVER_OCSP_RESPONSE_CONTEXT CERT_SERVER_OCSP_RESPONSE_CONTEXT,*PCERT_SERVER_OCSP_RESPONSE_CONTEXT;
  typedef const CERT_SERVER_OCSP_RESPONSE_CONTEXT *PCCERT_SERVER_OCSP_RESPONSE_CONTEXT;
  struct _CERT_SERVER_OCSP_RESPONSE_CONTEXT {
    DWORD cbSize;
    BYTE *pbEncodedOcspResponse;
    DWORD cbEncodedOcspResponse;
  };
  typedef void (__attribute__((__stdcall__)) *PFN_CERT_SERVER_OCSP_RESPONSE_UPDATE_CALLBACK)(PCCERT_CHAIN_CONTEXT pChainContext, PCCERT_SERVER_OCSP_RESPONSE_CONTEXT pServerOcspResponseContext, PCCRL_CONTEXT pNewCrlContext, PCCRL_CONTEXT pPrevCrlContext, PVOID pvArg, DWORD dwWriteOcspFileError);
  typedef struct _CERT_SERVER_OCSP_RESPONSE_OPEN_PARA {
    DWORD cbSize;
    DWORD dwFlags;
    DWORD *pcbUsedSize;
    PWSTR pwszOcspDirectory;
    PFN_CERT_SERVER_OCSP_RESPONSE_UPDATE_CALLBACK pfnUpdateCallback;
    PVOID pvUpdateCallbackArg;
  } CERT_SERVER_OCSP_RESPONSE_OPEN_PARA, *PCERT_SERVER_OCSP_RESPONSE_OPEN_PARA;
#define CERT_SERVER_OCSP_RESPONSE_OPEN_PARA_READ_FLAG 0x00000001
#define CERT_SERVER_OCSP_RESPONSE_OPEN_PARA_WRITE_FLAG 0x00000002
  __attribute__((dllimport)) PCCERT_SERVER_OCSP_RESPONSE_CONTEXT __attribute__((__stdcall__)) CertGetServerOcspResponseContext (HCERT_SERVER_OCSP_RESPONSE hServerOcspResponse, DWORD dwFlags, LPVOID pvReserved);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CertAddRefServerOcspResponseContext (PCCERT_SERVER_OCSP_RESPONSE_CONTEXT pServerOcspResponseContext);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) CertFreeServerOcspResponseContext (PCCERT_SERVER_OCSP_RESPONSE_CONTEXT pServerOcspResponseContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CertRetrieveLogoOrBiometricInfo (PCCERT_CONTEXT pCertContext, LPCSTR lpszLogoOrBiometricType, DWORD dwRetrievalFlags, DWORD dwTimeout, DWORD dwFlags, void *pvReserved, BYTE **ppbData, DWORD *pcbData, LPWSTR *ppwszMimeType);
#define CERT_RETRIEVE_ISSUER_LOGO ((LPCSTR) 1)
#define CERT_RETRIEVE_SUBJECT_LOGO ((LPCSTR) 2)
#define CERT_RETRIEVE_COMMUNITY_LOGO ((LPCSTR) 3)
#define CERT_RETRIEVE_BIOMETRIC_PREDEFINED_BASE_TYPE ((LPCSTR) 1000)
#define CERT_RETRIEVE_BIOMETRIC_PICTURE_TYPE (CERT_RETRIEVE_BIOMETRIC_PREDEFINED_BASE_TYPE + CERT_BIOMETRIC_PICTURE_TYPE)
#define CERT_RETRIEVE_BIOMETRIC_SIGNATURE_TYPE (CERT_RETRIEVE_BIOMETRIC_PREDEFINED_BASE_TYPE + CERT_BIOMETRIC_SIGNATURE_TYPE)
#define __DPAPI_H__ 
#define DPAPI_IMP DECLSPEC_IMPORT
#define CRYPTPROTECT_DEFAULT_PROVIDER { 0xdf9d8cd0, 0x1501, 0x11d1,{ 0x8c, 0x7a, 0x00, 0xc0, 0x4f, 0xc2, 0x97, 0xeb } }
#define szFORCE_KEY_PROTECTION "ForceKeyProtection"
#define dwFORCE_KEY_PROTECTION_DISABLED 0x0
#define dwFORCE_KEY_PROTECTION_USER_SELECT 0x1
#define dwFORCE_KEY_PROTECTION_HIGH 0x2
#define CRYPTPROTECT_PROMPT_ON_UNPROTECT 0x1
#define CRYPTPROTECT_PROMPT_ON_PROTECT 0x2
#define CRYPTPROTECT_PROMPT_RESERVED 0x04
#define CRYPTPROTECT_PROMPT_STRONG 0x08
#define CRYPTPROTECT_PROMPT_REQUIRE_STRONG 0x10
#define CRYPTPROTECT_UI_FORBIDDEN 0x1
#define CRYPTPROTECT_LOCAL_MACHINE 0x4
#define CRYPTPROTECT_CRED_SYNC 0x8
#define CRYPTPROTECT_AUDIT 0x10
#define CRYPTPROTECT_NO_RECOVERY 0x20
#define CRYPTPROTECT_VERIFY_PROTECTION 0x40
#define CRYPTPROTECT_CRED_REGENERATE 0x80
#define CRYPTPROTECT_FIRST_RESERVED_FLAGVAL 0x0fffffff
#define CRYPTPROTECT_LAST_RESERVED_FLAGVAL 0xffffffff
  typedef struct _CRYPTPROTECT_PROMPTSTRUCT {
    DWORD cbSize;
    DWORD dwPromptFlags;
    HWND hwndApp;
    LPCWSTR szPrompt;
  } CRYPTPROTECT_PROMPTSTRUCT,*PCRYPTPROTECT_PROMPTSTRUCT;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptProtectData (DATA_BLOB *pDataIn, LPCWSTR szDataDescr, DATA_BLOB *pOptionalEntropy, PVOID pvReserved, CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct, DWORD dwFlags, DATA_BLOB *pDataOut);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptUnprotectData (DATA_BLOB *pDataIn, LPWSTR *ppszDataDescr, DATA_BLOB *pOptionalEntropy, PVOID pvReserved, CRYPTPROTECT_PROMPTSTRUCT *pPromptStruct, DWORD dwFlags, DATA_BLOB *pDataOut);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptUpdateProtectedState (PSID pOldSid, LPCWSTR pwszOldPassword, DWORD dwFlags, DWORD *pdwSuccessCount, DWORD *pdwFailureCount);
#define CRYPTPROTECTMEMORY_BLOCK_SIZE 16
#define CRYPTPROTECTMEMORY_SAME_PROCESS 0x0
#define CRYPTPROTECTMEMORY_CROSS_PROCESS 0x1
#define CRYPTPROTECTMEMORY_SAME_LOGON 0x2
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptProtectMemory (LPVOID pDataIn, DWORD cbDataIn, DWORD dwFlags);
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CryptUnprotectMemory (LPVOID pDataIn, DWORD cbDataIn, DWORD dwFlags);
#define __WINEFS_H__ 
  typedef struct _CERTIFICATE_BLOB {
    DWORD dwCertEncodingType;
    DWORD cbData;
    PBYTE pbData;
  } EFS_CERTIFICATE_BLOB,*PEFS_CERTIFICATE_BLOB;
  typedef struct _EFS_HASH_BLOB {
    DWORD cbData;
    PBYTE pbData;
  } EFS_HASH_BLOB,*PEFS_HASH_BLOB;
  typedef struct _EFS_RPC_BLOB {
    DWORD cbData;
    PBYTE pbData;
  } EFS_RPC_BLOB,*PEFS_RPC_BLOB;
  typedef struct _EFS_KEY_INFO {
    DWORD dwVersion;
    ULONG Entropy;
    ALG_ID Algorithm;
    ULONG KeyLength;
  } EFS_KEY_INFO,*PEFS_KEY_INFO;
  typedef struct _ENCRYPTION_CERTIFICATE {
    DWORD cbTotalLength;
    SID *pUserSid;
    PEFS_CERTIFICATE_BLOB pCertBlob;
  } ENCRYPTION_CERTIFICATE,*PENCRYPTION_CERTIFICATE;
#define MAX_SID_SIZE 256
  typedef struct _ENCRYPTION_CERTIFICATE_HASH {
    DWORD cbTotalLength;
    SID *pUserSid;
    PEFS_HASH_BLOB pHash;
    LPWSTR lpDisplayInformation;
  } ENCRYPTION_CERTIFICATE_HASH,*PENCRYPTION_CERTIFICATE_HASH;
  typedef struct _ENCRYPTION_CERTIFICATE_HASH_LIST {
    DWORD nCert_Hash;
    PENCRYPTION_CERTIFICATE_HASH *pUsers;
  } ENCRYPTION_CERTIFICATE_HASH_LIST,*PENCRYPTION_CERTIFICATE_HASH_LIST;
  typedef struct _ENCRYPTION_CERTIFICATE_LIST {
    DWORD nUsers;
    PENCRYPTION_CERTIFICATE *pUsers;
  } ENCRYPTION_CERTIFICATE_LIST,*PENCRYPTION_CERTIFICATE_LIST;
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) QueryUsersOnEncryptedFile(LPCWSTR lpFileName,PENCRYPTION_CERTIFICATE_HASH_LIST *pUsers);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) QueryRecoveryAgentsOnEncryptedFile(LPCWSTR lpFileName,PENCRYPTION_CERTIFICATE_HASH_LIST *pRecoveryAgents);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) RemoveUsersFromEncryptedFile(LPCWSTR lpFileName,PENCRYPTION_CERTIFICATE_HASH_LIST pHashes);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) AddUsersToEncryptedFile(LPCWSTR lpFileName,PENCRYPTION_CERTIFICATE_LIST pUsers);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) SetUserFileEncryptionKey(PENCRYPTION_CERTIFICATE pEncryptionCertificate);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) FreeEncryptionCertificateHashList(PENCRYPTION_CERTIFICATE_HASH_LIST pHashes);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EncryptionDisable(LPCWSTR DirPath,WINBOOL Disable);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) DuplicateEncryptionInfoFile(LPCWSTR SrcFileName,LPCWSTR DstFileName,DWORD dwCreationDistribution,DWORD dwAttributes,const LPSECURITY_ATTRIBUTES lpSecurityAttributes);
#define _WINSCARD_H_ 
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#undef interface
#define interface struct
#define __RPCNDR_H_VERSION__ (475)
#define __RPCNDR_H__ 
#pragma pack(push,8)
#define __RPCNSIP_H__ 
  typedef struct {
    RPC_NS_HANDLE LookupContext;
    RPC_BINDING_HANDLE ProposedHandle;
    RPC_BINDING_VECTOR *Bindings;
  } RPC_IMPORT_CONTEXT_P,*PRPC_IMPORT_CONTEXT_P;
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcNsGetBuffer(PRPC_MESSAGE Message);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcNsSendReceive(PRPC_MESSAGE Message,RPC_BINDING_HANDLE *Handle);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) I_RpcNsRaiseException(PRPC_MESSAGE Message,RPC_STATUS Status);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_RpcReBindBuffer(PRPC_MESSAGE Message);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_NsServerBindSearch(void);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) I_NsClientBindSearch(void);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) I_NsClientBindDone(void);
#define __RPCSAL_H_VERSION__ 100
#define __RPC__deref_in 
#define __RPC__deref_in_opt 
#define __RPC__deref_in_string 
#define __RPC__deref_in_opt_string 
#define __RPC__deref_in_ecount(size) 
#define __RPC__deref_in_ecount_opt(size) 
#define __RPC__deref_in_ecount_opt_string(size) 
#define __RPC__deref_in_ecount_full(size) 
#define __RPC__deref_in_ecount_full_opt(size) 
#define __RPC__deref_in_ecount_full_string(size) 
#define __RPC__deref_in_ecount_full_opt_string(size) 
#define __RPC__deref_in_ecount_part(size,length) 
#define __RPC__deref_in_ecount_part_opt(size,length) 
#define __RPC__deref_in_xcount(size) 
#define __RPC__deref_in_xcount_opt(size) 
#define __RPC__deref_in_xcount_opt_string(size) 
#define __RPC__deref_in_xcount_full(size) 
#define __RPC__deref_in_xcount_full_opt(size) 
#define __RPC__deref_in_xcount_full_string(size) 
#define __RPC__deref_in_xcount_full_opt_string(size) 
#define __RPC__deref_in_xcount_part(size,length) 
#define __RPC__deref_in_xcount_part_opt(size,length) 
#define __RPC__deref_inout 
#define __RPC__deref_inout_opt 
#define __RPC__deref_inout_string 
#define __RPC__deref_inout_opt_string 
#define __RPC__deref_inout_ecount_opt(size) 
#define __RPC__deref_inout_ecount_full(size) 
#define __RPC__deref_inout_ecount_full_opt(size) 
#define __RPC__deref_inout_ecount_full_string(size) 
#define __RPC__deref_inout_ecount_full_opt_string(size) 
#define __RPC__deref_inout_ecount_part_opt(size,length) 
#define __RPC__deref_inout_xcount_opt(size) 
#define __RPC__deref_inout_xcount_full(size) 
#define __RPC__deref_inout_xcount_full_opt(size) 
#define __RPC__deref_inout_xcount_full_string(size) 
#define __RPC__deref_inout_xcount_full_opt_string(size) 
#define __RPC__deref_inout_xcount_part_opt(size,length) 
#define __RPC__deref_out 
#define __RPC__deref_out_opt 
#define __RPC__deref_out_string 
#define __RPC__deref_out_opt_string 
#define __RPC__deref_out_ecount(size) 
#define __RPC__deref_out_ecount_opt(size) 
#define __RPC__deref_out_ecount_full(size) 
#define __RPC__deref_out_ecount_full_opt(size) 
#define __RPC__deref_out_ecount_full_string(size) 
#define __RPC__deref_out_ecount_full_opt_string(size) 
#define __RPC__deref_out_ecount_part(size,length) 
#define __RPC__deref_out_ecount_part_opt(size,length) 
#define __RPC__deref_out_xcount(size) 
#define __RPC__deref_out_xcount_opt(size) 
#define __RPC__deref_out_xcount_full(size) 
#define __RPC__deref_out_xcount_full_opt(size) 
#define __RPC__deref_out_xcount_full_string(size) 
#define __RPC__deref_out_xcount_full_opt_string(size) 
#define __RPC__deref_out_xcount_part(size,length) 
#define __RPC__deref_out_xcount_part_opt(size,length) 
#define __RPC__deref_opt_in 
#define __RPC__deref_opt_in_opt 
#define __RPC__deref_opt_in_string 
#define __RPC__deref_opt_in_opt_string 
#define __RPC__deref_opt_inout 
#define __RPC__deref_opt_inout_opt 
#define __RPC__deref_opt_inout_string 
#define __RPC__deref_opt_inout_opt_string 
#define __RPC__deref_opt_inout_ecount(size) 
#define __RPC__deref_opt_inout_ecount_opt(size) 
#define __RPC__deref_opt_inout_ecount_full(size) 
#define __RPC__deref_opt_inout_ecount_full_opt(size) 
#define __RPC__deref_opt_inout_ecount_full_string(size) 
#define __RPC__deref_opt_inout_ecount_full_opt_string(size) 
#define __RPC__deref_opt_inout_ecount_part(size,length) 
#define __RPC__deref_opt_inout_ecount_part_opt(size,length) 
#define __RPC__deref_opt_inout_xcount(size) 
#define __RPC__deref_opt_inout_xcount_opt(size) 
#define __RPC__deref_opt_inout_xcount_full(size) 
#define __RPC__deref_opt_inout_xcount_full_opt(size) 
#define __RPC__deref_opt_inout_xcount_full_string(size) 
#define __RPC__deref_opt_inout_xcount_full_opt_string(size) 
#define __RPC__deref_opt_inout_xcount_part(size,length) 
#define __RPC__deref_opt_inout_xcount_part_opt(size,length) 
#define __RPC__in 
#define __RPC__in_opt 
#define __RPC__in_string 
#define __RPC__in_opt_string 
#define __RPC__in_ecount(size) 
#define __RPC__in_ecount_opt(size) 
#define __RPC__in_ecount_full(size) 
#define __RPC__in_ecount_full_opt(size) 
#define __RPC__in_ecount_full_string(size) 
#define __RPC__in_ecount_full_opt_string(size) 
#define __RPC__in_ecount_part(size,length) 
#define __RPC__in_ecount_part_opt(size,length) 
#define __RPC__in_xcount(size) 
#define __RPC__in_xcount_opt(size) 
#define __RPC__in_xcount_full(size) 
#define __RPC__in_xcount_full_opt(size) 
#define __RPC__in_xcount_full_string(size) 
#define __RPC__in_xcount_full_opt_string(size) 
#define __RPC__in_xcount_part(size,length) 
#define __RPC__in_xcount_part_opt(size,length) 
#define __RPC__inout 
#define __RPC__inout_opt 
#define __RPC__inout_string 
#define __RPC__inout_opt_string 
#define __RPC__opt_inout 
#define __RPC__inout_ecount(size) 
#define __RPC__inout_ecount_opt(size) 
#define __RPC__inout_ecount_full(size) 
#define __RPC__inout_ecount_full_opt(size) 
#define __RPC__inout_ecount_full_string(size) 
#define __RPC__inout_ecount_full_opt_string(size) 
#define __RPC__inout_ecount_part(size,length) 
#define __RPC__inout_ecount_part_opt(size,length) 
#define __RPC__inout_xcount(size) 
#define __RPC__inout_xcount_opt(size) 
#define __RPC__inout_xcount_full(size) 
#define __RPC__inout_xcount_full_opt(size) 
#define __RPC__inout_xcount_full_string(size) 
#define __RPC__inout_xcount_full_opt_string(size) 
#define __RPC__inout_xcount_part(size,length) 
#define __RPC__inout_xcount_part_opt(size,length) 
#define __RPC__out 
#define __RPC__out_ecount(size) 
#define __RPC__out_ecount_full(size) 
#define __RPC__out_ecount_full_string(size) 
#define __RPC__out_ecount_part(size,length) 
#define __RPC__out_xcount(size) 
#define __RPC__out_xcount_full(size) 
#define __RPC__out_xcount_full_string(size) 
#define __RPC__out_xcount_part(size,length) 
#define __RPC_full_pointer 
#define __RPC_ref_pointer 
#define __RPC_string 
#define __RPC_unique_pointer 
#define __RPC__range(min,max) 
#define __RPC__in_range(min,max) 
#define NDR_CHAR_REP_MASK __MSABI_LONG(0X0000000FU)
#define NDR_INT_REP_MASK __MSABI_LONG(0X000000F0U)
#define NDR_FLOAT_REP_MASK __MSABI_LONG(0X0000FF00U)
#define NDR_LITTLE_ENDIAN __MSABI_LONG(0X00000010U)
#define NDR_BIG_ENDIAN __MSABI_LONG(0X00000000U)
#define NDR_IEEE_FLOAT __MSABI_LONG(0X00000000U)
#define NDR_VAX_FLOAT __MSABI_LONG(0X00000100U)
#define NDR_IBM_FLOAT __MSABI_LONG(0X00000300U)
#define NDR_ASCII_CHAR __MSABI_LONG(0X00000000U)
#define NDR_EBCDIC_CHAR __MSABI_LONG(0X00000001U)
#define NDR_LOCAL_DATA_REPRESENTATION __MSABI_LONG(0X00000010U)
#define NDR_LOCAL_ENDIAN NDR_LITTLE_ENDIAN
#define TARGET_IS_NT61_OR_LATER 0
#define TARGET_IS_NT60_OR_LATER 1
#define TARGET_IS_NT51_OR_LATER 1
#define TARGET_IS_NT50_OR_LATER 1
#define TARGET_IS_NT40_OR_LATER 1
#define TARGET_IS_NT351_OR_WIN95_OR_LATER 1
  typedef unsigned char byte;
  typedef byte cs_byte;
  typedef unsigned char boolean;
#define _HYPER_DEFINED 
#define hyper __int64
#define MIDL_uhyper unsigned __int64
#define __RPC_CALLEE __stdcall
#define __MIDL_user_allocate_free_DEFINED__ 
  void *__attribute__((__stdcall__)) MIDL_user_allocate(size_t);
  void __attribute__((__stdcall__)) MIDL_user_free(void *);
#define RPC_VAR_ENTRY __cdecl
#define __MIDL_DECLSPEC_DLLIMPORT __declspec(dllimport)
#define __MIDL_DECLSPEC_DLLEXPORT __declspec(dllexport)
  typedef void *NDR_CCONTEXT;
  typedef struct _NDR_SCONTEXT {
    void *pad[2];
    void *userContext;
  } *NDR_SCONTEXT;
#define NDRSContextValue(hContext) (&(hContext)->userContext)
#define cbNDRContext 20
  typedef void (__attribute__((__stdcall__)) *NDR_RUNDOWN)(void *context);
  typedef void (__attribute__((__stdcall__)) *NDR_NOTIFY_ROUTINE)(void);
  typedef void (__attribute__((__stdcall__)) *NDR_NOTIFY2_ROUTINE)(boolean flag);
  typedef struct _SCONTEXT_QUEUE {
    unsigned long NumberOfObjects;
    NDR_SCONTEXT *ArrayOfObjects;
  } SCONTEXT_QUEUE,*PSCONTEXT_QUEUE;
  __attribute__((dllimport)) RPC_BINDING_HANDLE __attribute__((__stdcall__)) NDRCContextBinding(NDR_CCONTEXT CContext);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NDRCContextMarshall(NDR_CCONTEXT CContext,void *pBuff);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NDRCContextUnmarshall(NDR_CCONTEXT *pCContext,RPC_BINDING_HANDLE hBinding,void *pBuff,unsigned long DataRepresentation);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NDRSContextMarshall(NDR_SCONTEXT CContext,void *pBuff,NDR_RUNDOWN userRunDownIn);
  __attribute__((dllimport)) NDR_SCONTEXT __attribute__((__stdcall__)) NDRSContextUnmarshall(void *pBuff,unsigned long DataRepresentation);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NDRSContextMarshallEx(RPC_BINDING_HANDLE BindingHandle,NDR_SCONTEXT CContext,void *pBuff,NDR_RUNDOWN userRunDownIn);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NDRSContextMarshall2(RPC_BINDING_HANDLE BindingHandle,NDR_SCONTEXT CContext,void *pBuff,NDR_RUNDOWN userRunDownIn,void *CtxGuard,unsigned long Flags);
  __attribute__((dllimport)) NDR_SCONTEXT __attribute__((__stdcall__)) NDRSContextUnmarshallEx(RPC_BINDING_HANDLE BindingHandle,void *pBuff,unsigned long DataRepresentation);
  __attribute__((dllimport)) NDR_SCONTEXT __attribute__((__stdcall__)) NDRSContextUnmarshall2(RPC_BINDING_HANDLE BindingHandle,void *pBuff,unsigned long DataRepresentation,void *CtxGuard,unsigned long Flags);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) RpcSsDestroyClientContext(void **ContextHandle);
#define byte_from_ndr(source,target) { *(target) = *(*(char **)&(source)->Buffer)++; }
#define byte_array_from_ndr(Source,LowerIndex,UpperIndex,Target) { NDRcopy ((((char *)(Target))+(LowerIndex)),(Source)->Buffer,(unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned __LONG32 *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); }
#define boolean_from_ndr(source,target) { *(target) = *(*(char **)&(source)->Buffer)++; }
#define boolean_array_from_ndr(Source,LowerIndex,UpperIndex,Target) { NDRcopy ((((char *)(Target))+(LowerIndex)),(Source)->Buffer,(unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned __LONG32 *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); }
#define small_from_ndr(source,target) { *(target) = *(*(char **)&(source)->Buffer)++; }
#define small_from_ndr_temp(source,target,format) { *(target) = *(*(char **)(source))++; }
#define small_array_from_ndr(Source,LowerIndex,UpperIndex,Target) { NDRcopy ((((char *)(Target))+(LowerIndex)),(Source)->Buffer,(unsigned int)((UpperIndex)-(LowerIndex))); *(unsigned __LONG32 *)&(Source)->Buffer += ((UpperIndex)-(LowerIndex)); }
#define MIDL_ascii_strlen(string) strlen(string)
#define MIDL_ascii_strcpy(target,source) strcpy(target,source)
#define MIDL_memset(s,c,n) memset(s,c,n)
#define _ERROR_STATUS_T_DEFINED 
typedef unsigned long error_status_t;
#define _midl_ma1(p,cast) *(*(cast **)&p)++
#define _midl_ma2(p,cast) *(*(cast **)&p)++
#define _midl_ma4(p,cast) *(*(cast **)&p)++
#define _midl_ma8(p,cast) *(*(cast **)&p)++
#define _midl_unma1(p,cast) *((cast *)p)++
#define _midl_unma2(p,cast) *((cast *)p)++
#define _midl_unma3(p,cast) *((cast *)p)++
#define _midl_unma4(p,cast) *((cast *)p)++
#define _midl_fa2(p) (p = (RPC_BUFPTR)((ULONG_PTR)(p+1) & ~0x1))
#define _midl_fa4(p) (p = (RPC_BUFPTR)((ULONG_PTR)(p+3) & ~0x3))
#define _midl_fa8(p) (p = (RPC_BUFPTR)((ULONG_PTR)(p+7) & ~0x7))
#define _midl_addp(p,n) (p += n)
#define _midl_marsh_lhs(p,cast) *(*(cast **)&p)++
#define _midl_marsh_up(mp,p) *(*(unsigned __LONG32 **)&mp)++ = (unsigned __LONG32)p
#define _midl_advmp(mp) *(*(unsigned __LONG32 **)&mp)++
#define _midl_unmarsh_up(p) (*(*(unsigned __LONG32 **)&p)++)
#define NdrMarshConfStringHdr(p,s,l) (_midl_ma4(p,unsigned __LONG32) = s,_midl_ma4(p,unsigned __LONG32) = 0,_midl_ma4(p,unsigned __LONG32) = l)
#define NdrUnMarshConfStringHdr(p,s,l) (s=_midl_unma4(p,unsigned __LONG32),(_midl_addp(p,4)),(l=_midl_unma4(p,unsigned __LONG32)))
#define NdrMarshCCtxtHdl(pc,p) (NDRCContextMarshall((NDR_CCONTEXT)pc,p),p+20)
#define NdrUnMarshCCtxtHdl(pc,p,h,drep) (NDRCContextUnmarshall((NDR_CCONTEXT)pc,h,p,drep),p+20)
#define NdrUnMarshSCtxtHdl(pc,p,drep) (pc = NdrSContextUnMarshall(p,drep))
#define NdrMarshSCtxtHdl(pc,p,rd) (NdrSContextMarshall((NDR_SCONTEXT)pc,p,(NDR_RUNDOWN)rd))
#define NdrFieldOffset(s,f) (LONG_PTR)(& (((s *)0)->f))
#define NdrFieldPad(s,f,p,t) ((unsigned __LONG32)(NdrFieldOffset(s,f) - NdrFieldOffset(s,p)) - sizeof(t))
#define NdrFcShort(s) (unsigned char)(s & 0xff),(unsigned char)(s >> 8)
#define NdrFcLong(s) (unsigned char)(s & 0xff),(unsigned char)((s & 0x0000ff00) >> 8),(unsigned char)((s & 0x00ff0000) >> 16),(unsigned char)(s >> 24)
#define RPC_BAD_STUB_DATA_EXCEPTION_FILTER ((RpcExceptionCode()==STATUS_ACCESS_VIOLATION) || (RpcExceptionCode()==STATUS_DATATYPE_MISALIGNMENT) || (RpcExceptionCode()==RPC_X_BAD_STUB_DATA) || (RpcExceptionCode()==RPC_S_INVALID_BOUND))
  struct _MIDL_STUB_MESSAGE;
  struct _MIDL_STUB_DESC;
  struct _FULL_PTR_XLAT_TABLES;
  typedef unsigned char *RPC_BUFPTR;
  typedef unsigned long RPC_LENGTH;
  typedef void (__attribute__((__stdcall__)) *EXPR_EVAL)(struct _MIDL_STUB_MESSAGE *);
  typedef const unsigned char *PFORMAT_STRING;
  typedef struct {
    long Dimension;
    unsigned long *BufferConformanceMark;
    unsigned long *BufferVarianceMark;
    unsigned long *MaxCountArray;
    unsigned long *OffsetArray;
    unsigned long *ActualCountArray;
  } ARRAY_INFO,*PARRAY_INFO;
  typedef struct _NDR_ASYNC_MESSAGE *PNDR_ASYNC_MESSAGE;
  typedef struct _NDR_CORRELATION_INFO *PNDR_CORRELATION_INFO;
  typedef struct {
    unsigned long WireCodeset;
    unsigned long DesiredReceivingCodeset;
    void *CSArrayInfo;
  } CS_STUB_INFO;
  struct _MIDL_SYNTAX_INFO;
  typedef struct _MIDL_SYNTAX_INFO MIDL_SYNTAX_INFO,*PMIDL_SYNTAX_INFO;
  struct NDR_ALLOC_ALL_NODES_CONTEXT;
  struct NDR_POINTER_QUEUE_STATE;
  struct _NDR_PROC_CONTEXT;
  typedef struct _MIDL_STUB_MESSAGE {
    PRPC_MESSAGE RpcMsg;
    unsigned char *Buffer;
    unsigned char *BufferStart;
    unsigned char *BufferEnd;
    unsigned char *BufferMark;
    unsigned long BufferLength;
    unsigned long MemorySize;
    unsigned char *Memory;
    unsigned char IsClient;
    unsigned char Pad;
    unsigned short uFlags2;
    int ReuseBuffer;
    struct NDR_ALLOC_ALL_NODES_CONTEXT *pAllocAllNodesContext;
    struct NDR_POINTER_QUEUE_STATE *pPointerQueueState;
    int IgnoreEmbeddedPointers;
    unsigned char *PointerBufferMark;
    unsigned char fBufferValid;
    unsigned char uFlags;
    unsigned short UniquePtrCount;
    ULONG_PTR MaxCount;
    unsigned long Offset;
    unsigned long ActualCount;
    void *(__attribute__((__stdcall__)) *pfnAllocate)(size_t);
    void (__attribute__((__stdcall__)) *pfnFree)(void *);
    unsigned char *StackTop;
    unsigned char *pPresentedType;
    unsigned char *pTransmitType;
    handle_t SavedHandle;
    const struct _MIDL_STUB_DESC *StubDesc;
    struct _FULL_PTR_XLAT_TABLES *FullPtrXlatTables;
    unsigned long FullPtrRefId;
    unsigned long PointerLength;
    int fInDontFree : 1;
    int fDontCallFreeInst : 1;
    int fInOnlyParam : 1;
    int fHasReturn : 1;
    int fHasExtensions : 1;
    int fHasNewCorrDesc : 1;
    int fIsOicfServer : 1;
    int fHasMemoryValidateCallback : 1;
    int fUnused : 8;
    int fUnused2 : 16;
    unsigned long dwDestContext;
    void *pvDestContext;
    NDR_SCONTEXT *SavedContextHandles;
    long ParamNumber;
    struct IRpcChannelBuffer *pRpcChannelBuffer;
    PARRAY_INFO pArrayInfo;
    unsigned long *SizePtrCountArray;
    unsigned long *SizePtrOffsetArray;
    unsigned long *SizePtrLengthArray;
    void *pArgQueue;
    unsigned long dwStubPhase;
    void *LowStackMark;
    PNDR_ASYNC_MESSAGE pAsyncMsg;
    PNDR_CORRELATION_INFO pCorrInfo;
    unsigned char *pCorrMemory;
    void *pMemoryList;
    CS_STUB_INFO *pCSInfo;
    unsigned char *ConformanceMark;
    unsigned char *VarianceMark;
    INT_PTR Unused;
    struct _NDR_PROC_CONTEXT *pContext;
    void *pUserMarshalList;
    INT_PTR Reserved51_2;
    INT_PTR Reserved51_3;
    INT_PTR Reserved51_4;
    INT_PTR Reserved51_5;
  } MIDL_STUB_MESSAGE,*PMIDL_STUB_MESSAGE;
  typedef void *(__attribute__((__stdcall__)) *GENERIC_BINDING_ROUTINE)(void *);
  typedef void (__attribute__((__stdcall__)) *GENERIC_UNBIND_ROUTINE)(void *,unsigned char *);
  typedef struct _GENERIC_BINDING_ROUTINE_PAIR {
    GENERIC_BINDING_ROUTINE pfnBind;
    GENERIC_UNBIND_ROUTINE pfnUnbind;
  } GENERIC_BINDING_ROUTINE_PAIR,*PGENERIC_BINDING_ROUTINE_PAIR;
  typedef struct __GENERIC_BINDING_INFO {
    void *pObj;
    unsigned int Size;
    GENERIC_BINDING_ROUTINE pfnBind;
    GENERIC_UNBIND_ROUTINE pfnUnbind;
  } GENERIC_BINDING_INFO,*PGENERIC_BINDING_INFO;
#define NDR_SHAREABLE __inline
  typedef void (__attribute__((__stdcall__)) *XMIT_HELPER_ROUTINE)(PMIDL_STUB_MESSAGE);
  typedef struct _XMIT_ROUTINE_QUINTUPLE {
    XMIT_HELPER_ROUTINE pfnTranslateToXmit;
    XMIT_HELPER_ROUTINE pfnTranslateFromXmit;
    XMIT_HELPER_ROUTINE pfnFreeXmit;
    XMIT_HELPER_ROUTINE pfnFreeInst;
  } XMIT_ROUTINE_QUINTUPLE,*PXMIT_ROUTINE_QUINTUPLE;
  typedef ULONG (__attribute__((__stdcall__)) *USER_MARSHAL_SIZING_ROUTINE)(ULONG *,ULONG,void *);
  typedef unsigned char *(__attribute__((__stdcall__)) *USER_MARSHAL_MARSHALLING_ROUTINE)(ULONG *,unsigned char *,void *);
  typedef unsigned char *(__attribute__((__stdcall__)) *USER_MARSHAL_UNMARSHALLING_ROUTINE)(ULONG *,unsigned char *,void *);
  typedef void (__attribute__((__stdcall__)) *USER_MARSHAL_FREEING_ROUTINE)(ULONG *,void *);
  typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE {
    USER_MARSHAL_SIZING_ROUTINE pfnBufferSize;
    USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall;
    USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall;
    USER_MARSHAL_FREEING_ROUTINE pfnFree;
  } USER_MARSHAL_ROUTINE_QUADRUPLE;
#define USER_MARSHAL_CB_SIGNATURE 'USRC'
  typedef enum _USER_MARSHAL_CB_TYPE {
    USER_MARSHAL_CB_BUFFER_SIZE,USER_MARSHAL_CB_MARSHALL,USER_MARSHAL_CB_UNMARSHALL,USER_MARSHAL_CB_FREE
  } USER_MARSHAL_CB_TYPE;
  typedef struct _USER_MARSHAL_CB {
    unsigned long Flags;
    PMIDL_STUB_MESSAGE pStubMsg;
    PFORMAT_STRING pReserve;
    unsigned long Signature;
    USER_MARSHAL_CB_TYPE CBType;
    PFORMAT_STRING pFormat;
    PFORMAT_STRING pTypeFormat;
  } USER_MARSHAL_CB;
#define USER_CALL_CTXT_MASK(f) ((f) & 0x00ff)
#define USER_CALL_AUX_MASK(f) ((f) & 0xff00)
#define GET_USER_DATA_REP(f) ((f) >> 16)
#define USER_CALL_IS_ASYNC 0x0100
#define USER_CALL_NEW_CORRELATION_DESC 0x0200
  typedef struct _MALLOC_FREE_STRUCT {
    void *(__attribute__((__stdcall__)) *pfnAllocate)(size_t);
    void (__attribute__((__stdcall__)) *pfnFree)(void *);
  } MALLOC_FREE_STRUCT;
  typedef struct _COMM_FAULT_OFFSETS {
    short CommOffset;
    short FaultOffset;
  } COMM_FAULT_OFFSETS;
  typedef enum _IDL_CS_CONVERT {
    IDL_CS_NO_CONVERT,IDL_CS_IN_PLACE_CONVERT,IDL_CS_NEW_BUFFER_CONVERT
  } IDL_CS_CONVERT;
  typedef void (__attribute__((__stdcall__)) *CS_TYPE_NET_SIZE_ROUTINE)(RPC_BINDING_HANDLE hBinding,unsigned long ulNetworkCodeSet,unsigned long ulLocalBufferSize,IDL_CS_CONVERT *conversionType,unsigned long *pulNetworkBufferSize,error_status_t *pStatus);
  typedef void (__attribute__((__stdcall__)) *CS_TYPE_LOCAL_SIZE_ROUTINE)(RPC_BINDING_HANDLE hBinding,unsigned long ulNetworkCodeSet,unsigned long ulNetworkBufferSize,IDL_CS_CONVERT *conversionType,unsigned long *pulLocalBufferSize,error_status_t *pStatus);
  typedef void (__attribute__((__stdcall__)) *CS_TYPE_TO_NETCS_ROUTINE)(RPC_BINDING_HANDLE hBinding,unsigned long ulNetworkCodeSet,void *pLocalData,unsigned long ulLocalDataLength,byte *pNetworkData,unsigned long *pulNetworkDataLength,error_status_t *pStatus);
  typedef void (__attribute__((__stdcall__)) *CS_TYPE_FROM_NETCS_ROUTINE)(RPC_BINDING_HANDLE hBinding,unsigned long ulNetworkCodeSet,byte *pNetworkData,unsigned long ulNetworkDataLength,unsigned long ulLocalBufferSize,void *pLocalData,unsigned long *pulLocalDataLength,error_status_t *pStatus);
  typedef void (__attribute__((__stdcall__)) *CS_TAG_GETTING_ROUTINE)(RPC_BINDING_HANDLE hBinding,int fServerSide,unsigned long *pulSendingTag,unsigned long *pulDesiredReceivingTag,unsigned long *pulReceivingTag,error_status_t *pStatus);
  void __attribute__((__stdcall__)) RpcCsGetTags(RPC_BINDING_HANDLE hBinding,int fServerSide,unsigned long *pulSendingTag,unsigned long *pulDesiredReceivingTag,unsigned long *pulReceivingTag,error_status_t *pStatus);
  typedef struct _NDR_CS_SIZE_CONVERT_ROUTINES {
    CS_TYPE_NET_SIZE_ROUTINE pfnNetSize;
    CS_TYPE_TO_NETCS_ROUTINE pfnToNetCs;
    CS_TYPE_LOCAL_SIZE_ROUTINE pfnLocalSize;
    CS_TYPE_FROM_NETCS_ROUTINE pfnFromNetCs;
  } NDR_CS_SIZE_CONVERT_ROUTINES;
  typedef struct _NDR_CS_ROUTINES {
    NDR_CS_SIZE_CONVERT_ROUTINES *pSizeConvertRoutines;
    CS_TAG_GETTING_ROUTINE *pTagGettingRoutines;
  } NDR_CS_ROUTINES;
  typedef struct _MIDL_STUB_DESC {
    void *RpcInterfaceInformation;
    void *(__attribute__((__stdcall__)) *pfnAllocate)(size_t);
    void (__attribute__((__stdcall__)) *pfnFree)(void *);
    union {
      handle_t *pAutoHandle;
      handle_t *pPrimitiveHandle;
      PGENERIC_BINDING_INFO pGenericBindingInfo;
    } IMPLICIT_HANDLE_INFO;
    const NDR_RUNDOWN *apfnNdrRundownRoutines;
    const GENERIC_BINDING_ROUTINE_PAIR *aGenericBindingRoutinePairs;
    const EXPR_EVAL *apfnExprEval;
    const XMIT_ROUTINE_QUINTUPLE *aXmitQuintuple;
    const unsigned char *pFormatTypes;
    int fCheckBounds;
    unsigned long Version;
    MALLOC_FREE_STRUCT *pMallocFreeStruct;
    long MIDLVersion;
    const COMM_FAULT_OFFSETS *CommFaultOffsets;
    const USER_MARSHAL_ROUTINE_QUADRUPLE *aUserMarshalQuadruple;
    const NDR_NOTIFY_ROUTINE *NotifyRoutineTable;
    ULONG_PTR mFlags;
    const NDR_CS_ROUTINES *CsRoutineTables;
    void *Reserved4;
    ULONG_PTR Reserved5;
  } MIDL_STUB_DESC;
  typedef const MIDL_STUB_DESC *PMIDL_STUB_DESC;
  typedef void *PMIDL_XMIT_TYPE;
  typedef struct _MIDL_FORMAT_STRING {
    short Pad;
    unsigned char Format[];
  } MIDL_FORMAT_STRING;
  typedef void (__attribute__((__stdcall__)) *STUB_THUNK)(PMIDL_STUB_MESSAGE);
  typedef long (__attribute__((__stdcall__)) *SERVER_ROUTINE)();
  typedef struct _MIDL_SERVER_INFO_ {
    PMIDL_STUB_DESC pStubDesc;
    const SERVER_ROUTINE *DispatchTable;
    PFORMAT_STRING ProcString;
    const unsigned short *FmtStringOffset;
    const STUB_THUNK *ThunkTable;
    PRPC_SYNTAX_IDENTIFIER pTransferSyntax;
    ULONG_PTR nCount;
    PMIDL_SYNTAX_INFO pSyntaxInfo;
  } MIDL_SERVER_INFO,*PMIDL_SERVER_INFO;
#undef _MIDL_STUBLESS_PROXY_INFO
  typedef struct _MIDL_STUBLESS_PROXY_INFO {
    PMIDL_STUB_DESC pStubDesc;
    PFORMAT_STRING ProcFormatString;
    const unsigned short *FormatStringOffset;
    PRPC_SYNTAX_IDENTIFIER pTransferSyntax;
    ULONG_PTR nCount;
    PMIDL_SYNTAX_INFO pSyntaxInfo;
  } MIDL_STUBLESS_PROXY_INFO;
  typedef MIDL_STUBLESS_PROXY_INFO *PMIDL_STUBLESS_PROXY_INFO;
  struct _MIDL_SYNTAX_INFO {
    RPC_SYNTAX_IDENTIFIER TransferSyntax;
    RPC_DISPATCH_TABLE *DispatchTable;
    PFORMAT_STRING ProcString;
    const unsigned short *FmtStringOffset;
    PFORMAT_STRING TypeString;
    const void *aUserMarshalQuadruple;
    ULONG_PTR pReserved1;
    ULONG_PTR pReserved2;
  };
  typedef unsigned short *PARAM_OFFSETTABLE,*PPARAM_OFFSETTABLE;
  typedef union _CLIENT_CALL_RETURN {
    void *Pointer;
    LONG_PTR Simple;
  } CLIENT_CALL_RETURN;
  typedef enum {
    XLAT_SERVER = 1,XLAT_CLIENT
  } XLAT_SIDE;
  typedef struct _FULL_PTR_TO_REFID_ELEMENT {
    struct _FULL_PTR_TO_REFID_ELEMENT *Next;
    void *Pointer;
    unsigned long RefId;
    unsigned char State;
  } FULL_PTR_TO_REFID_ELEMENT,*PFULL_PTR_TO_REFID_ELEMENT;
  typedef struct _FULL_PTR_XLAT_TABLES {
    struct {
      void **XlatTable;
      unsigned char *StateTable;
      unsigned long NumberOfEntries;
    } RefIdToPointer;
    struct {
      PFULL_PTR_TO_REFID_ELEMENT *XlatTable;
      unsigned long NumberOfBuckets;
      unsigned long HashMask;
    } PointerToRefId;
    unsigned long NextRefId;
    XLAT_SIDE XlatSide;
  } FULL_PTR_XLAT_TABLES,*PFULL_PTR_XLAT_TABLES;
  RPC_STATUS __attribute__((__stdcall__)) NdrClientGetSupportedSyntaxes(RPC_CLIENT_INTERFACE *pInf,unsigned long *pCount,MIDL_SYNTAX_INFO **pArr);
  RPC_STATUS __attribute__((__stdcall__)) NdrServerGetSupportedSyntaxes(RPC_SERVER_INTERFACE *pInf,unsigned long *pCount,MIDL_SYNTAX_INFO **pArr,unsigned long *pPreferSyntaxIndex);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrSimpleTypeMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,unsigned char FormatChar);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrPointerMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrCsArrayMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrCsTagMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrSimpleStructMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrConformantStructMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrConformantVaryingStructMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrComplexStructMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrFixedArrayMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrConformantArrayMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrConformantVaryingArrayMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrVaryingArrayMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrComplexArrayMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrNonConformantStringMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrConformantStringMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrNonEncapsulatedUnionMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrByteCountPointerMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrXmitOrRepAsMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrUserMarshalMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrInterfacePointerMarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrClientContextMarshall(PMIDL_STUB_MESSAGE pStubMsg,NDR_CCONTEXT ContextHandle,int fCheck);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrServerContextMarshall(PMIDL_STUB_MESSAGE pStubMsg,NDR_SCONTEXT ContextHandle,NDR_RUNDOWN RundownRoutine);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrServerContextNewMarshall(PMIDL_STUB_MESSAGE pStubMsg,NDR_SCONTEXT ContextHandle,NDR_RUNDOWN RundownRoutine,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrSimpleTypeUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,unsigned char FormatChar);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrCsArrayUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrCsTagUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrRangeUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrCorrelationInitialize(PMIDL_STUB_MESSAGE pStubMsg,void *pMemory,unsigned long CacheSize,unsigned long flags);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrCorrelationPass(PMIDL_STUB_MESSAGE pStubMsg);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrCorrelationFree(PMIDL_STUB_MESSAGE pStubMsg);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrPointerUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrSimpleStructUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrConformantStructUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrConformantVaryingStructUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrComplexStructUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrFixedArrayUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrConformantArrayUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrConformantVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrVaryingArrayUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrComplexArrayUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrNonConformantStringUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrConformantStringUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrNonEncapsulatedUnionUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrByteCountPointerUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrXmitOrRepAsUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrUserMarshalUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrInterfacePointerUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **ppMemory,PFORMAT_STRING pFormat,unsigned char fMustAlloc);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrClientContextUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,NDR_CCONTEXT *pContextHandle,RPC_BINDING_HANDLE BindHandle);
  __attribute__((dllimport)) NDR_SCONTEXT __attribute__((__stdcall__)) NdrServerContextUnmarshall(PMIDL_STUB_MESSAGE pStubMsg);
  __attribute__((dllimport)) NDR_SCONTEXT __attribute__((__stdcall__)) NdrContextHandleInitialize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) NDR_SCONTEXT __attribute__((__stdcall__)) NdrServerContextNewUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrPointerBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrCsArrayBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrCsTagBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrSimpleStructBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrConformantStructBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrConformantVaryingStructBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrComplexStructBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrFixedArrayBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrConformantArrayBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrConformantVaryingArrayBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrVaryingArrayBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrComplexArrayBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrConformantStringBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrNonConformantStringBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrNonEncapsulatedUnionBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrByteCountPointerBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrXmitOrRepAsBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrUserMarshalBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrInterfacePointerBufferSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrContextHandleSize(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrPointerMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrCsArrayMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrCsTagMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrSimpleStructMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrConformantStructMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrConformantVaryingStructMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrComplexStructMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrFixedArrayMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrConformantArrayMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrConformantVaryingArrayMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrVaryingArrayMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrComplexArrayMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrConformantStringMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrNonConformantStringMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrNonEncapsulatedUnionMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrXmitOrRepAsMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrUserMarshalMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrInterfacePointerMemorySize(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrPointerFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrCsArrayFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrSimpleStructFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrConformantStructFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrConformantVaryingStructFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrComplexStructFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrFixedArrayFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrConformantArrayFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrConformantVaryingArrayFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrVaryingArrayFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrComplexArrayFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrEncapsulatedUnionFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrNonEncapsulatedUnionFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrByteCountPointerFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrXmitOrRepAsFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrUserMarshalFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrInterfacePointerFree(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pMemory,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrConvert2(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat,long NumberParams);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrConvert(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
#define USER_MARSHAL_FC_BYTE 1
#define USER_MARSHAL_FC_CHAR 2
#define USER_MARSHAL_FC_SMALL 3
#define USER_MARSHAL_FC_USMALL 4
#define USER_MARSHAL_FC_WCHAR 5
#define USER_MARSHAL_FC_SHORT 6
#define USER_MARSHAL_FC_USHORT 7
#define USER_MARSHAL_FC_LONG 8
#define USER_MARSHAL_FC_ULONG 9
#define USER_MARSHAL_FC_FLOAT 10
#define USER_MARSHAL_FC_HYPER 11
#define USER_MARSHAL_FC_DOUBLE 12
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrUserMarshalSimpleTypeConvert(unsigned long *pFlags,unsigned char *pBuffer,unsigned char FormatChar);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrClientInitializeNew(PRPC_MESSAGE pRpcMsg,PMIDL_STUB_MESSAGE pStubMsg,PMIDL_STUB_DESC pStubDescriptor,unsigned int ProcNum);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrServerInitializeNew(PRPC_MESSAGE pRpcMsg,PMIDL_STUB_MESSAGE pStubMsg,PMIDL_STUB_DESC pStubDescriptor);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrServerInitializePartial(PRPC_MESSAGE pRpcMsg,PMIDL_STUB_MESSAGE pStubMsg,PMIDL_STUB_DESC pStubDescriptor,unsigned long RequestedBufferSize);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrClientInitialize(PRPC_MESSAGE pRpcMsg,PMIDL_STUB_MESSAGE pStubMsg,PMIDL_STUB_DESC pStubDescriptor,unsigned int ProcNum);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrServerInitialize(PRPC_MESSAGE pRpcMsg,PMIDL_STUB_MESSAGE pStubMsg,PMIDL_STUB_DESC pStubDescriptor);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrServerInitializeUnmarshall (PMIDL_STUB_MESSAGE pStubMsg,PMIDL_STUB_DESC pStubDescriptor,PRPC_MESSAGE pRpcMsg);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrServerInitializeMarshall (PRPC_MESSAGE pRpcMsg,PMIDL_STUB_MESSAGE pStubMsg);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrGetBuffer(PMIDL_STUB_MESSAGE pStubMsg,unsigned long BufferLength,RPC_BINDING_HANDLE Handle);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrNsGetBuffer(PMIDL_STUB_MESSAGE pStubMsg,unsigned long BufferLength,RPC_BINDING_HANDLE Handle);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrSendReceive(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pBufferEnd);
  __attribute__((dllimport)) unsigned char *__attribute__((__stdcall__)) NdrNsSendReceive(PMIDL_STUB_MESSAGE pStubMsg,unsigned char *pBufferEnd,RPC_BINDING_HANDLE *pAutoHandle);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrFreeBuffer(PMIDL_STUB_MESSAGE pStubMsg);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) NdrGetDcomProtocolVersion(PMIDL_STUB_MESSAGE pStubMsg,RPC_VERSION *pVersion);
  CLIENT_CALL_RETURN __attribute__((__cdecl__)) NdrClientCall2(PMIDL_STUB_DESC pStubDescriptor,PFORMAT_STRING pFormat,...);
  CLIENT_CALL_RETURN __attribute__((__cdecl__)) NdrClientCall(PMIDL_STUB_DESC pStubDescriptor,PFORMAT_STRING pFormat,...);
  CLIENT_CALL_RETURN __attribute__((__cdecl__)) NdrAsyncClientCall(PMIDL_STUB_DESC pStubDescriptor,PFORMAT_STRING pFormat,...);
  CLIENT_CALL_RETURN __attribute__((__cdecl__)) NdrDcomAsyncClientCall(PMIDL_STUB_DESC pStubDescriptor,PFORMAT_STRING pFormat,...);
  typedef enum {
    STUB_UNMARSHAL,STUB_CALL_SERVER,STUB_MARSHAL,STUB_CALL_SERVER_NO_HRESULT
  } STUB_PHASE;
  typedef enum {
    PROXY_CALCSIZE,PROXY_GETBUFFER,PROXY_MARSHAL,PROXY_SENDRECEIVE,PROXY_UNMARSHAL
  } PROXY_PHASE;
  struct IRpcStubBuffer;
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrAsyncServerCall(PRPC_MESSAGE pRpcMsg);
  __attribute__((dllimport)) long __attribute__((__stdcall__)) NdrAsyncStubCall(struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,unsigned long *pdwStubPhase);
  __attribute__((dllimport)) long __attribute__((__stdcall__)) NdrDcomAsyncStubCall(struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,unsigned long *pdwStubPhase);
  __attribute__((dllimport)) long __attribute__((__stdcall__)) NdrStubCall2(struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,unsigned long *pdwStubPhase);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrServerCall2(PRPC_MESSAGE pRpcMsg);
  __attribute__((dllimport)) long __attribute__((__stdcall__)) NdrStubCall (struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,unsigned long *pdwStubPhase);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrServerCall(PRPC_MESSAGE pRpcMsg);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) NdrServerUnmarshall(struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,PMIDL_STUB_MESSAGE pStubMsg,PMIDL_STUB_DESC pStubDescriptor,PFORMAT_STRING pFormat,void *pParamList);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrServerMarshall(struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) NdrMapCommAndFaultStatus(PMIDL_STUB_MESSAGE pStubMsg,unsigned long *pCommStatus,unsigned long *pFaultStatus,RPC_STATUS Status);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) NdrSH_UPDecision(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem,RPC_BUFPTR pBuffer);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) NdrSH_TLUPDecision(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) NdrSH_TLUPDecisionBuffer(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) NdrSH_IfAlloc(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem,unsigned long Count);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) NdrSH_IfAllocRef(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem,unsigned long Count);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) NdrSH_IfAllocSet(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem,unsigned long Count);
  __attribute__((dllimport)) RPC_BUFPTR __attribute__((__stdcall__)) NdrSH_IfCopy(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem,unsigned long Count);
  __attribute__((dllimport)) RPC_BUFPTR __attribute__((__stdcall__)) NdrSH_IfAllocCopy(PMIDL_STUB_MESSAGE pStubMsg,unsigned char **pPtrInMem,unsigned long Count);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) NdrSH_Copy(unsigned char *pStubMsg,unsigned char *pPtrInMem,unsigned long Count);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrSH_IfFree(PMIDL_STUB_MESSAGE pMessage,unsigned char *pPtr);
  __attribute__((dllimport)) RPC_BUFPTR __attribute__((__stdcall__)) NdrSH_StringMarshall(PMIDL_STUB_MESSAGE pMessage,unsigned char *pMemory,unsigned long Count,int Size);
  __attribute__((dllimport)) RPC_BUFPTR __attribute__((__stdcall__)) NdrSH_StringUnMarshall(PMIDL_STUB_MESSAGE pMessage,unsigned char **pMemory,int Size);
  typedef void *RPC_SS_THREAD_HANDLE;
  typedef void *__attribute__((__stdcall__)) RPC_CLIENT_ALLOC(size_t Size);
  typedef void __attribute__((__stdcall__)) RPC_CLIENT_FREE(void *Ptr);
  __attribute__((dllimport)) void *__attribute__((__stdcall__)) RpcSsAllocate(size_t Size);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) RpcSsDisableAllocate(void);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) RpcSsEnableAllocate(void);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) RpcSsFree(void *NodeToFree);
  __attribute__((dllimport)) RPC_SS_THREAD_HANDLE __attribute__((__stdcall__)) RpcSsGetThreadHandle(void);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) RpcSsSetClientAllocFree(RPC_CLIENT_ALLOC *ClientAlloc,RPC_CLIENT_FREE *ClientFree);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) RpcSsSetThreadHandle(RPC_SS_THREAD_HANDLE Id);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) RpcSsSwapClientAllocFree(RPC_CLIENT_ALLOC *ClientAlloc,RPC_CLIENT_FREE *ClientFree,RPC_CLIENT_ALLOC **OldClientAlloc,RPC_CLIENT_FREE **OldClientFree);
  __attribute__((dllimport)) void *__attribute__((__stdcall__)) RpcSmAllocate(size_t Size,RPC_STATUS *pStatus);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcSmClientFree(void *pNodeToFree);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcSmDestroyClientContext(void **ContextHandle);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcSmDisableAllocate(void);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcSmEnableAllocate(void);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcSmFree(void *NodeToFree);
  __attribute__((dllimport)) RPC_SS_THREAD_HANDLE __attribute__((__stdcall__)) RpcSmGetThreadHandle (RPC_STATUS *pStatus);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcSmSetClientAllocFree(RPC_CLIENT_ALLOC *ClientAlloc,RPC_CLIENT_FREE *ClientFree);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcSmSetThreadHandle(RPC_SS_THREAD_HANDLE Id);
  __attribute__((dllimport)) RPC_STATUS __attribute__((__stdcall__)) RpcSmSwapClientAllocFree(RPC_CLIENT_ALLOC *ClientAlloc,RPC_CLIENT_FREE *ClientFree,RPC_CLIENT_ALLOC **OldClientAlloc,RPC_CLIENT_FREE **OldClientFree);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrRpcSsEnableAllocate(PMIDL_STUB_MESSAGE pMessage);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrRpcSsDisableAllocate(PMIDL_STUB_MESSAGE pMessage);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrRpcSmSetClientToOsf(PMIDL_STUB_MESSAGE pMessage);
  __attribute__((dllimport)) void *__attribute__((__stdcall__)) NdrRpcSmClientAllocate(size_t Size);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrRpcSmClientFree(void *NodeToFree);
  __attribute__((dllimport)) void *__attribute__((__stdcall__)) NdrRpcSsDefaultAllocate(size_t Size);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrRpcSsDefaultFree(void *NodeToFree);
  __attribute__((dllimport)) PFULL_PTR_XLAT_TABLES __attribute__((__stdcall__)) NdrFullPointerXlatInit(unsigned long NumberOfPointers,XLAT_SIDE XlatSide);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrFullPointerXlatFree(PFULL_PTR_XLAT_TABLES pXlatTables);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) NdrFullPointerQueryPointer(PFULL_PTR_XLAT_TABLES pXlatTables,void *pPointer,unsigned char QueryType,unsigned long *pRefId);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) NdrFullPointerQueryRefId(PFULL_PTR_XLAT_TABLES pXlatTables,unsigned long RefId,unsigned char QueryType,void **ppPointer);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrFullPointerInsertRefId(PFULL_PTR_XLAT_TABLES pXlatTables,unsigned long RefId,void *pPointer);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) NdrFullPointerFree(PFULL_PTR_XLAT_TABLES pXlatTables,void *Pointer);
  __attribute__((dllimport)) void *__attribute__((__stdcall__)) NdrAllocate(PMIDL_STUB_MESSAGE pStubMsg,size_t Len);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrClearOutParameters(PMIDL_STUB_MESSAGE pStubMsg,PFORMAT_STRING pFormat,void *ArgAddr);
  __attribute__((dllimport)) void *__attribute__((__stdcall__)) NdrOleAllocate(size_t Size);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrOleFree(void *NodeToFree);
#define CONST_VTBL 
#define MIDL_INTERFACE(x) struct
#define EXTERN_GUID(itf,l1,s1,s2,c1,c2,c3,c4,c5,c6,c7,c8) const IID DECLSPEC_SELECTANY itf = {l1,s1,s2,{c1,c2,c3,c4,c5,c6,c7,c8}}
  typedef struct _NDR_USER_MARSHAL_INFO_LEVEL1 {
    void *Buffer;
    unsigned long BufferSize;
    void *(__attribute__((__stdcall__)) *pfnAllocate)(size_t);
    void (__attribute__((__stdcall__)) *pfnFree)(void *);
    struct IRpcChannelBuffer *pRpcChannelBuffer;
    ULONG_PTR Reserved[5];
  } NDR_USER_MARSHAL_INFO_LEVEL1;
  typedef struct _NDR_USER_MARSHAL_INFO {
    unsigned long InformationLevel;
    __extension__ union {
      NDR_USER_MARSHAL_INFO_LEVEL1 Level1;
    };
  } NDR_USER_MARSHAL_INFO;
  RPC_STATUS __attribute__((__stdcall__)) NdrGetUserMarshalInfo(unsigned long *pFlags,unsigned long InformationLevel,NDR_USER_MARSHAL_INFO *pMarshalInfo);
  RPC_STATUS __attribute__((__stdcall__)) NdrCreateServerInterfaceFromStub(struct IRpcStubBuffer *pStub,RPC_SERVER_INTERFACE *pServerIf);
  CLIENT_CALL_RETURN __attribute__((__cdecl__)) NdrClientCall3(MIDL_STUBLESS_PROXY_INFO *pProxyInfo,unsigned long nProcNum,void *pReturnValue,...);
  CLIENT_CALL_RETURN __attribute__((__cdecl__)) Ndr64AsyncClientCall(MIDL_STUBLESS_PROXY_INFO *pProxyInfo,unsigned long nProcNum,void *pReturnValue,...);
  CLIENT_CALL_RETURN __attribute__((__cdecl__)) Ndr64DcomAsyncClientCall(MIDL_STUBLESS_PROXY_INFO *pProxyInfo,unsigned long nProcNum,void *pReturnValue,...);
  struct IRpcStubBuffer;
  __attribute__((dllimport)) void __attribute__((__stdcall__)) Ndr64AsyncServerCall(PRPC_MESSAGE pRpcMsg);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) Ndr64AsyncServerCall64(PRPC_MESSAGE pRpcMsg);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) Ndr64AsyncServerCallAll(PRPC_MESSAGE pRpcMsg);
  __attribute__((dllimport)) long __attribute__((__stdcall__)) Ndr64AsyncStubCall(struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,unsigned long *pdwStubPhase);
  __attribute__((dllimport)) long __attribute__((__stdcall__)) Ndr64DcomAsyncStubCall(struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,unsigned long *pdwStubPhase);
  __attribute__((dllimport)) long __attribute__((__stdcall__)) NdrStubCall3 (struct IRpcStubBuffer *pThis,struct IRpcChannelBuffer *pChannel,PRPC_MESSAGE pRpcMsg,unsigned long *pdwStubPhase);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrServerCallAll(PRPC_MESSAGE pRpcMsg);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrServerCallNdr64(PRPC_MESSAGE pRpcMsg);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrServerCall3(PRPC_MESSAGE pRpcMsg);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrPartialIgnoreClientMarshall(PMIDL_STUB_MESSAGE pStubMsg,void *pMemory);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrPartialIgnoreServerUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,void **ppMemory);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrPartialIgnoreClientBufferSize(PMIDL_STUB_MESSAGE pStubMsg,void *pMemory);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) NdrPartialIgnoreServerInitialize(PMIDL_STUB_MESSAGE pStubMsg,void **ppMemory,PFORMAT_STRING pFormat);
  void __attribute__((__stdcall__)) RpcUserFree(handle_t AsyncHandle,void *pBuffer);
#pragma pack(pop)
#define _OLE2_H_ 
#pragma pack(push,8)
#undef interface
#define interface struct
#define _OBJBASE_H_ 
#pragma pack(push,8)
#undef interface
#define interface struct
#define _COMBASEAPI_H_ 
#pragma pack(push,8)
#define WINOLEAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
#define WINOLEAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
#undef interface
#define interface struct
#define STDMETHOD(method) HRESULT (STDMETHODCALLTYPE *method)
#define STDMETHOD_(type,method) type (STDMETHODCALLTYPE *method)
#define STDMETHODV(method) HRESULT (STDMETHODVCALLTYPE *method)
#define STDMETHODV_(type,method) type (STDMETHODVCALLTYPE *method)
#define IFACEMETHOD(method) STDMETHOD (method)
#define IFACEMETHOD_(type,method) STDMETHOD_(type, method)
#define IFACEMETHODV(method) STDMETHODV (method)
#define IFACEMETHODV_(type,method) STDMETHODV_(type, method)
#define BEGIN_INTERFACE 
#define END_INTERFACE 
#define PURE 
#define THIS_ INTERFACE *This,
#define THIS INTERFACE *This
#undef CONST_VTBL
#define CONST_VTBL 
#define DECLARE_INTERFACE(iface) typedef interface iface { struct iface ##Vtbl *lpVtbl; } iface; typedef struct iface ##Vtbl iface ##Vtbl; struct iface ##Vtbl
#define DECLARE_INTERFACE_(iface,baseiface) DECLARE_INTERFACE (iface)
#define DECLARE_INTERFACE_IID(iface,iid) DECLARE_INTERFACE (iface)
#define DECLARE_INTERFACE_IID_(iface,baseiface,iid) DECLARE_INTERFACE_ (iface, baseiface)
#define FARSTRUCT 
#define HUGEP 
#define LISet32(li,v) ((li).HighPart = ((LONG) (v)) < 0 ? -1 : 0,(li).LowPart = (v))
#define ULISet32(li,v) ((li).HighPart = 0,(li).LowPart = (v))
#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)
#define CLSCTX_ALL (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
typedef enum tagREGCLS {
  REGCLS_SINGLEUSE = 0,
  REGCLS_MULTIPLEUSE = 1,
  REGCLS_MULTI_SEPARATE = 2,
  REGCLS_SUSPENDED = 4,
  REGCLS_SURROGATE = 8
} REGCLS;
typedef struct IRpcStubBuffer IRpcStubBuffer;
typedef struct IRpcChannelBuffer IRpcChannelBuffer;
typedef enum tagCOINITBASE {
  COINITBASE_MULTITHREADED = 0x0,
} COINITBASE;
#undef interface
#define interface struct
#define __wtypesbase_h__ 
#undef DEFINE_GUID
#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name
#define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46)
#define __IWinTypesBase_INTERFACE_DEFINED__ 
extern RPC_IF_HANDLE IWinTypesBase_v0_1_c_ifspec;
extern RPC_IF_HANDLE IWinTypesBase_v0_1_s_ifspec;
typedef WCHAR OLECHAR;
typedef OLECHAR *LPOLESTR;
typedef const OLECHAR *LPCOLESTR;
#define OLESTR(str) L ##str
typedef unsigned char UCHAR;
typedef short SHORT;
typedef unsigned short USHORT;
typedef DWORD ULONG;
typedef double DOUBLE;
typedef struct _COAUTHIDENTITY {
    USHORT *User;
    ULONG UserLength;
    USHORT *Domain;
    ULONG DomainLength;
    USHORT *Password;
    ULONG PasswordLength;
    ULONG Flags;
} COAUTHIDENTITY;
typedef struct _COAUTHINFO {
    DWORD dwAuthnSvc;
    DWORD dwAuthzSvc;
    LPWSTR pwszServerPrincName;
    DWORD dwAuthnLevel;
    DWORD dwImpersonationLevel;
    COAUTHIDENTITY *pAuthIdentityData;
    DWORD dwCapabilities;
} COAUTHINFO;
typedef LONG SCODE;
typedef SCODE *PSCODE;
typedef enum tagMEMCTX {
    MEMCTX_TASK = 1,
    MEMCTX_SHARED = 2,
    MEMCTX_MACSYSTEM = 3,
    MEMCTX_UNKNOWN = -1,
    MEMCTX_SAME = -2
} MEMCTX;
#define _ROTREGFLAGS_DEFINED 
#define ROTREGFLAGS_ALLOWANYCLIENT 0x1
#define _APPIDREGFLAGS_DEFINED 
#define APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP 0x1
#define APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND 0x2
#define APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY 0x4
#define APPIDREGFLAGS_IUSERVER_UNMODIFIED_LOGON_TOKEN 0x8
#define APPIDREGFLAGS_IUSERVER_SELF_SID_IN_LAUNCH_PERMISSION 0x10
#define APPIDREGFLAGS_IUSERVER_ACTIVATE_IN_CLIENT_SESSION_ONLY 0x20
#define APPIDREGFLAGS_RESERVED1 0x40
#define _DCOMSCM_REMOTECALL_FLAGS_DEFINED 
#define DCOMSCM_ACTIVATION_USE_ALL_AUTHNSERVICES 0x1
#define DCOMSCM_ACTIVATION_DISALLOW_UNSECURE_CALL 0x2
#define DCOMSCM_RESOLVE_USE_ALL_AUTHNSERVICES 0x4
#define DCOMSCM_RESOLVE_DISALLOW_UNSECURE_CALL 0x8
#define DCOMSCM_PING_USE_MID_AUTHNSERVICE 0x10
#define DCOMSCM_PING_DISALLOW_UNSECURE_CALL 0x20
typedef enum tagCLSCTX {
    CLSCTX_INPROC_SERVER = 0x1,
    CLSCTX_INPROC_HANDLER = 0x2,
    CLSCTX_LOCAL_SERVER = 0x4,
    CLSCTX_INPROC_SERVER16 = 0x8,
    CLSCTX_REMOTE_SERVER = 0x10,
    CLSCTX_INPROC_HANDLER16 = 0x20,
    CLSCTX_RESERVED1 = 0x40,
    CLSCTX_RESERVED2 = 0x80,
    CLSCTX_RESERVED3 = 0x100,
    CLSCTX_RESERVED4 = 0x200,
    CLSCTX_NO_CODE_DOWNLOAD = 0x400,
    CLSCTX_RESERVED5 = 0x800,
    CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
    CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
    CLSCTX_NO_FAILURE_LOG = 0x4000,
    CLSCTX_DISABLE_AAA = 0x8000,
    CLSCTX_ENABLE_AAA = 0x10000,
    CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000,
    CLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000,
    CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000,
    CLSCTX_ENABLE_CLOAKING = 0x100000,
    CLSCTX_APPCONTAINER = 0x400000,
    CLSCTX_ACTIVATE_AAA_AS_IU = 0x800000,
    CLSCTX_PS_DLL = (int)0x80000000
} CLSCTX;
#define CLSCTX_VALID_MASK (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_SERVER16 | CLSCTX_REMOTE_SERVER | CLSCTX_NO_CODE_DOWNLOAD | CLSCTX_NO_CUSTOM_MARSHAL | CLSCTX_ENABLE_CODE_DOWNLOAD | CLSCTX_NO_FAILURE_LOG | CLSCTX_DISABLE_AAA | CLSCTX_ENABLE_AAA | CLSCTX_FROM_DEFAULT_CONTEXT | CLSCTX_ACTIVATE_32_BIT_SERVER | CLSCTX_ACTIVATE_64_BIT_SERVER | CLSCTX_ENABLE_CLOAKING | CLSCTX_APPCONTAINER | CLSCTX_ACTIVATE_AAA_AS_IU | CLSCTX_PS_DLL)
typedef enum tagMSHLFLAGS {
    MSHLFLAGS_NORMAL = 0,
    MSHLFLAGS_TABLESTRONG = 1,
    MSHLFLAGS_TABLEWEAK = 2,
    MSHLFLAGS_NOPING = 4,
    MSHLFLAGS_RESERVED1 = 8,
    MSHLFLAGS_RESERVED2 = 16,
    MSHLFLAGS_RESERVED3 = 32,
    MSHLFLAGS_RESERVED4 = 64
} MSHLFLAGS;
typedef enum tagMSHCTX {
    MSHCTX_LOCAL = 0,
    MSHCTX_NOSHAREDMEM = 1,
    MSHCTX_DIFFERENTMACHINE = 2,
    MSHCTX_INPROC = 3,
    MSHCTX_CROSSCTX = 4
} MSHCTX;
typedef struct _BYTE_BLOB {
    ULONG clSize;
    byte abData[1];
} BYTE_BLOB;
typedef BYTE_BLOB *UP_BYTE_BLOB;
typedef struct _WORD_BLOB {
    ULONG clSize;
    unsigned short asData[1];
} WORD_BLOB;
typedef WORD_BLOB *UP_WORD_BLOB;
typedef struct _DWORD_BLOB {
    ULONG clSize;
    ULONG alData[1];
} DWORD_BLOB;
typedef DWORD_BLOB *UP_DWORD_BLOB;
typedef struct _FLAGGED_BYTE_BLOB {
    ULONG fFlags;
    ULONG clSize;
    byte abData[1];
} FLAGGED_BYTE_BLOB;
typedef FLAGGED_BYTE_BLOB *UP_FLAGGED_BYTE_BLOB;
typedef struct _FLAGGED_WORD_BLOB {
    ULONG fFlags;
    ULONG clSize;
    unsigned short asData[1];
} FLAGGED_WORD_BLOB;
typedef FLAGGED_WORD_BLOB *UP_FLAGGED_WORD_BLOB;
typedef struct _BYTE_SIZEDARR {
    ULONG clSize;
    byte *pData;
} BYTE_SIZEDARR;
typedef struct _SHORT_SIZEDARR {
    ULONG clSize;
    unsigned short *pData;
} WORD_SIZEDARR;
typedef struct _LONG_SIZEDARR {
    ULONG clSize;
    ULONG *pData;
} DWORD_SIZEDARR;
typedef struct _HYPER_SIZEDARR {
    ULONG clSize;
    long long *pData;
} HYPER_SIZEDARR;
typedef boolean BOOLEAN;
#define _tagBLOB_DEFINED 
#define _BLOB_DEFINED 
#define _LPBLOB_DEFINED 
typedef struct tagBLOB {
    ULONG cbSize;
    BYTE *pBlobData;
} BLOB;
typedef struct tagBLOB *LPBLOB;
#undef interface
#define interface struct
#define __unknwnbase_h__ 
#define __IUnknown_FWD_DEFINED__ 
typedef struct IUnknown IUnknown;
#define __AsyncIUnknown_FWD_DEFINED__ 
typedef struct AsyncIUnknown AsyncIUnknown;
#define __IClassFactory_FWD_DEFINED__ 
typedef struct IClassFactory IClassFactory;
#undef interface
#define interface struct
#define __IUnknown_INTERFACE_DEFINED__ 
typedef IUnknown *LPUNKNOWN;
extern const GUID IID_IUnknown;
typedef struct IUnknownVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IUnknown *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IUnknown *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IUnknown *This);
   
} IUnknownVtbl;
struct IUnknown {
    IUnknownVtbl* lpVtbl;
};
#define __AsyncIUnknown_INTERFACE_DEFINED__ 
extern const GUID IID_AsyncIUnknown;
typedef struct AsyncIUnknownVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        AsyncIUnknown *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        AsyncIUnknown *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        AsyncIUnknown *This);
    HRESULT (__attribute__((__stdcall__)) *Begin_QueryInterface)(
        AsyncIUnknown *This,
        const IID *const riid);
    HRESULT (__attribute__((__stdcall__)) *Finish_QueryInterface)(
        AsyncIUnknown *This,
        void **ppvObject);
    HRESULT (__attribute__((__stdcall__)) *Begin_AddRef)(
        AsyncIUnknown *This);
    ULONG (__attribute__((__stdcall__)) *Finish_AddRef)(
        AsyncIUnknown *This);
    HRESULT (__attribute__((__stdcall__)) *Begin_Release)(
        AsyncIUnknown *This);
    ULONG (__attribute__((__stdcall__)) *Finish_Release)(
        AsyncIUnknown *This);
   
} AsyncIUnknownVtbl;
struct AsyncIUnknown {
    AsyncIUnknownVtbl* lpVtbl;
};
#define __IClassFactory_INTERFACE_DEFINED__ 
typedef IClassFactory *LPCLASSFACTORY;
extern const GUID IID_IClassFactory;
typedef struct IClassFactoryVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IClassFactory *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IClassFactory *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IClassFactory *This);
    HRESULT (__attribute__((__stdcall__)) *CreateInstance)(
        IClassFactory *This,
        IUnknown *pUnkOuter,
        const IID *const riid,
        void **ppvObject);
    HRESULT (__attribute__((__stdcall__)) *LockServer)(
        IClassFactory *This,
        WINBOOL fLock);
   
} IClassFactoryVtbl;
struct IClassFactory {
    IClassFactoryVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IClassFactory_RemoteCreateInstance_Proxy(
    IClassFactory* This,
    const IID *const riid,
    IUnknown **ppvObject);
void __attribute__((__stdcall__)) IClassFactory_RemoteCreateInstance_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IClassFactory_RemoteLockServer_Proxy(
    IClassFactory* This,
    WINBOOL fLock);
void __attribute__((__stdcall__)) IClassFactory_RemoteLockServer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IClassFactory_CreateInstance_Proxy(
    IClassFactory* This,
    IUnknown *pUnkOuter,
    const IID *const riid,
    void **ppvObject);
HRESULT __attribute__((__stdcall__)) IClassFactory_CreateInstance_Stub(
    IClassFactory* This,
    const IID *const riid,
    IUnknown **ppvObject);
HRESULT __attribute__((__stdcall__)) IClassFactory_LockServer_Proxy(
    IClassFactory* This,
    WINBOOL fLock);
HRESULT __attribute__((__stdcall__)) IClassFactory_LockServer_Stub(
    IClassFactory* This,
    WINBOOL fLock);
#undef interface
#define interface struct
#define __objidlbase_h__ 
#define __IMarshal_FWD_DEFINED__ 
typedef struct IMarshal IMarshal;
#define __INoMarshal_FWD_DEFINED__ 
typedef struct INoMarshal INoMarshal;
#define __IAgileObject_FWD_DEFINED__ 
typedef struct IAgileObject IAgileObject;
#define __IAgileReference_FWD_DEFINED__ 
typedef struct IAgileReference IAgileReference;
#define __IMarshal2_FWD_DEFINED__ 
typedef struct IMarshal2 IMarshal2;
#define __IMalloc_FWD_DEFINED__ 
typedef struct IMalloc IMalloc;
#define __IStdMarshalInfo_FWD_DEFINED__ 
typedef struct IStdMarshalInfo IStdMarshalInfo;
#define __IExternalConnection_FWD_DEFINED__ 
typedef struct IExternalConnection IExternalConnection;
#define __IMultiQI_FWD_DEFINED__ 
typedef struct IMultiQI IMultiQI;
#define __AsyncIMultiQI_FWD_DEFINED__ 
typedef struct AsyncIMultiQI AsyncIMultiQI;
#define __IInternalUnknown_FWD_DEFINED__ 
typedef struct IInternalUnknown IInternalUnknown;
#define __IEnumUnknown_FWD_DEFINED__ 
typedef struct IEnumUnknown IEnumUnknown;
#define __IEnumString_FWD_DEFINED__ 
typedef struct IEnumString IEnumString;
#define __ISequentialStream_FWD_DEFINED__ 
typedef struct ISequentialStream ISequentialStream;
#define __IStream_FWD_DEFINED__ 
typedef struct IStream IStream;
#define __IRpcChannelBuffer_FWD_DEFINED__ 
typedef struct IRpcChannelBuffer IRpcChannelBuffer;
#define __IRpcChannelBuffer2_FWD_DEFINED__ 
typedef struct IRpcChannelBuffer2 IRpcChannelBuffer2;
#define __IAsyncRpcChannelBuffer_FWD_DEFINED__ 
typedef struct IAsyncRpcChannelBuffer IAsyncRpcChannelBuffer;
#define __IRpcChannelBuffer3_FWD_DEFINED__ 
typedef struct IRpcChannelBuffer3 IRpcChannelBuffer3;
#define __IRpcSyntaxNegotiate_FWD_DEFINED__ 
typedef struct IRpcSyntaxNegotiate IRpcSyntaxNegotiate;
#define __IRpcProxyBuffer_FWD_DEFINED__ 
typedef struct IRpcProxyBuffer IRpcProxyBuffer;
#define __IRpcStubBuffer_FWD_DEFINED__ 
typedef struct IRpcStubBuffer IRpcStubBuffer;
#define __IPSFactoryBuffer_FWD_DEFINED__ 
typedef struct IPSFactoryBuffer IPSFactoryBuffer;
#define __IChannelHook_FWD_DEFINED__ 
typedef struct IChannelHook IChannelHook;
#define __IClientSecurity_FWD_DEFINED__ 
typedef struct IClientSecurity IClientSecurity;
#define __IServerSecurity_FWD_DEFINED__ 
typedef struct IServerSecurity IServerSecurity;
#define __IRpcOptions_FWD_DEFINED__ 
typedef struct IRpcOptions IRpcOptions;
#define __IGlobalOptions_FWD_DEFINED__ 
typedef struct IGlobalOptions IGlobalOptions;
#define __ISurrogate_FWD_DEFINED__ 
typedef struct ISurrogate ISurrogate;
#define __IGlobalInterfaceTable_FWD_DEFINED__ 
typedef struct IGlobalInterfaceTable IGlobalInterfaceTable;
#define __ISynchronize_FWD_DEFINED__ 
typedef struct ISynchronize ISynchronize;
#define __ISynchronizeHandle_FWD_DEFINED__ 
typedef struct ISynchronizeHandle ISynchronizeHandle;
#define __ISynchronizeEvent_FWD_DEFINED__ 
typedef struct ISynchronizeEvent ISynchronizeEvent;
#define __ISynchronizeContainer_FWD_DEFINED__ 
typedef struct ISynchronizeContainer ISynchronizeContainer;
#define __ISynchronizeMutex_FWD_DEFINED__ 
typedef struct ISynchronizeMutex ISynchronizeMutex;
#define __ICancelMethodCalls_FWD_DEFINED__ 
typedef struct ICancelMethodCalls ICancelMethodCalls;
#define __IAsyncManager_FWD_DEFINED__ 
typedef struct IAsyncManager IAsyncManager;
#define __ICallFactory_FWD_DEFINED__ 
typedef struct ICallFactory ICallFactory;
#define __IRpcHelper_FWD_DEFINED__ 
typedef struct IRpcHelper IRpcHelper;
#define __IReleaseMarshalBuffers_FWD_DEFINED__ 
typedef struct IReleaseMarshalBuffers IReleaseMarshalBuffers;
#define __IWaitMultiple_FWD_DEFINED__ 
typedef struct IWaitMultiple IWaitMultiple;
#define __IAddrTrackingControl_FWD_DEFINED__ 
typedef struct IAddrTrackingControl IAddrTrackingControl;
#define __IAddrExclusionControl_FWD_DEFINED__ 
typedef struct IAddrExclusionControl IAddrExclusionControl;
#define __IPipeByte_FWD_DEFINED__ 
typedef struct IPipeByte IPipeByte;
#define __IPipeLong_FWD_DEFINED__ 
typedef struct IPipeLong IPipeLong;
#define __IPipeDouble_FWD_DEFINED__ 
typedef struct IPipeDouble IPipeDouble;
#define __IEnumContextProps_FWD_DEFINED__ 
typedef struct IEnumContextProps IEnumContextProps;
#define __IContext_FWD_DEFINED__ 
typedef struct IContext IContext;
#define __IComThreadingInfo_FWD_DEFINED__ 
typedef struct IComThreadingInfo IComThreadingInfo;
#define __IProcessInitControl_FWD_DEFINED__ 
typedef struct IProcessInitControl IProcessInitControl;
#define __IFastRundown_FWD_DEFINED__ 
typedef struct IFastRundown IFastRundown;
#define __IMarshalingStream_FWD_DEFINED__ 
typedef struct IMarshalingStream IMarshalingStream;
#undef interface
#define interface struct
#undef interface
#define interface struct
typedef struct _COSERVERINFO {
    DWORD dwReserved1;
    LPWSTR pwszName;
    COAUTHINFO *pAuthInfo;
    DWORD dwReserved2;
} COSERVERINFO;
#define __IMarshal_INTERFACE_DEFINED__ 
typedef IMarshal *LPMARSHAL;
extern const GUID IID_IMarshal;
typedef struct IMarshalVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IMarshal *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IMarshal *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IMarshal *This);
    HRESULT (__attribute__((__stdcall__)) *GetUnmarshalClass)(
        IMarshal *This,
        const IID *const riid,
        void *pv,
        DWORD dwDestContext,
        void *pvDestContext,
        DWORD mshlflags,
        CLSID *pCid);
    HRESULT (__attribute__((__stdcall__)) *GetMarshalSizeMax)(
        IMarshal *This,
        const IID *const riid,
        void *pv,
        DWORD dwDestContext,
        void *pvDestContext,
        DWORD mshlflags,
        DWORD *pSize);
    HRESULT (__attribute__((__stdcall__)) *MarshalInterface)(
        IMarshal *This,
        IStream *pStm,
        const IID *const riid,
        void *pv,
        DWORD dwDestContext,
        void *pvDestContext,
        DWORD mshlflags);
    HRESULT (__attribute__((__stdcall__)) *UnmarshalInterface)(
        IMarshal *This,
        IStream *pStm,
        const IID *const riid,
        void **ppv);
    HRESULT (__attribute__((__stdcall__)) *ReleaseMarshalData)(
        IMarshal *This,
        IStream *pStm);
    HRESULT (__attribute__((__stdcall__)) *DisconnectObject)(
        IMarshal *This,
        DWORD dwReserved);
   
} IMarshalVtbl;
struct IMarshal {
    IMarshalVtbl* lpVtbl;
};
#define __INoMarshal_INTERFACE_DEFINED__ 
extern const GUID IID_INoMarshal;
typedef struct INoMarshalVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        INoMarshal *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        INoMarshal *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        INoMarshal *This);
   
} INoMarshalVtbl;
struct INoMarshal {
    INoMarshalVtbl* lpVtbl;
};
#define __IAgileObject_INTERFACE_DEFINED__ 
extern const GUID IID_IAgileObject;
typedef struct IAgileObjectVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IAgileObject *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IAgileObject *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IAgileObject *This);
   
} IAgileObjectVtbl;
struct IAgileObject {
    IAgileObjectVtbl* lpVtbl;
};
#define __IAgileReference_INTERFACE_DEFINED__ 
extern const GUID IID_IAgileReference;
typedef struct IAgileReferenceVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IAgileReference *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IAgileReference *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IAgileReference *This);
    HRESULT (__attribute__((__stdcall__)) *Resolve)(
        IAgileReference *This,
        const IID *const riid,
        void **ppv);
   
} IAgileReferenceVtbl;
struct IAgileReference {
    IAgileReferenceVtbl* lpVtbl;
};
#define __IMarshal2_INTERFACE_DEFINED__ 
typedef IMarshal2 *LPMARSHAL2;
extern const GUID IID_IMarshal2;
typedef struct IMarshal2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IMarshal2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IMarshal2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IMarshal2 *This);
    HRESULT (__attribute__((__stdcall__)) *GetUnmarshalClass)(
        IMarshal2 *This,
        const IID *const riid,
        void *pv,
        DWORD dwDestContext,
        void *pvDestContext,
        DWORD mshlflags,
        CLSID *pCid);
    HRESULT (__attribute__((__stdcall__)) *GetMarshalSizeMax)(
        IMarshal2 *This,
        const IID *const riid,
        void *pv,
        DWORD dwDestContext,
        void *pvDestContext,
        DWORD mshlflags,
        DWORD *pSize);
    HRESULT (__attribute__((__stdcall__)) *MarshalInterface)(
        IMarshal2 *This,
        IStream *pStm,
        const IID *const riid,
        void *pv,
        DWORD dwDestContext,
        void *pvDestContext,
        DWORD mshlflags);
    HRESULT (__attribute__((__stdcall__)) *UnmarshalInterface)(
        IMarshal2 *This,
        IStream *pStm,
        const IID *const riid,
        void **ppv);
    HRESULT (__attribute__((__stdcall__)) *ReleaseMarshalData)(
        IMarshal2 *This,
        IStream *pStm);
    HRESULT (__attribute__((__stdcall__)) *DisconnectObject)(
        IMarshal2 *This,
        DWORD dwReserved);
   
} IMarshal2Vtbl;
struct IMarshal2 {
    IMarshal2Vtbl* lpVtbl;
};
#define __IMalloc_INTERFACE_DEFINED__ 
typedef IMalloc *LPMALLOC;
extern const GUID IID_IMalloc;
typedef struct IMallocVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IMalloc *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IMalloc *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IMalloc *This);
    void * (__attribute__((__stdcall__)) *Alloc)(
        IMalloc *This,
        SIZE_T cb);
    void * (__attribute__((__stdcall__)) *Realloc)(
        IMalloc *This,
        void *pv,
        SIZE_T cb);
    void (__attribute__((__stdcall__)) *Free)(
        IMalloc *This,
        void *pv);
    SIZE_T (__attribute__((__stdcall__)) *GetSize)(
        IMalloc *This,
        void *pv);
    int (__attribute__((__stdcall__)) *DidAlloc)(
        IMalloc *This,
        void *pv);
    void (__attribute__((__stdcall__)) *HeapMinimize)(
        IMalloc *This);
   
} IMallocVtbl;
struct IMalloc {
    IMallocVtbl* lpVtbl;
};
#define __IStdMarshalInfo_INTERFACE_DEFINED__ 
typedef IStdMarshalInfo *LPSTDMARSHALINFO;
extern const GUID IID_IStdMarshalInfo;
typedef struct IStdMarshalInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IStdMarshalInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IStdMarshalInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IStdMarshalInfo *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassForHandler)(
        IStdMarshalInfo *This,
        DWORD dwDestContext,
        void *pvDestContext,
        CLSID *pClsid);
   
} IStdMarshalInfoVtbl;
struct IStdMarshalInfo {
    IStdMarshalInfoVtbl* lpVtbl;
};
#define __IExternalConnection_INTERFACE_DEFINED__ 
typedef IExternalConnection *LPEXTERNALCONNECTION;
typedef enum tagEXTCONN {
    EXTCONN_STRONG = 0x1,
    EXTCONN_WEAK = 0x2,
    EXTCONN_CALLABLE = 0x4
} EXTCONN;
extern const GUID IID_IExternalConnection;
typedef struct IExternalConnectionVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IExternalConnection *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IExternalConnection *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IExternalConnection *This);
    DWORD (__attribute__((__stdcall__)) *AddConnection)(
        IExternalConnection *This,
        DWORD extconn,
        DWORD reserved);
    DWORD (__attribute__((__stdcall__)) *ReleaseConnection)(
        IExternalConnection *This,
        DWORD extconn,
        DWORD reserved,
        WINBOOL fLastReleaseCloses);
   
} IExternalConnectionVtbl;
struct IExternalConnection {
    IExternalConnectionVtbl* lpVtbl;
};
typedef IMultiQI *LPMULTIQI;
typedef struct tagMULTI_QI {
    const IID *pIID;
    IUnknown *pItf;
    HRESULT hr;
} MULTI_QI;
#define __IMultiQI_INTERFACE_DEFINED__ 
extern const GUID IID_IMultiQI;
typedef struct IMultiQIVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IMultiQI *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IMultiQI *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IMultiQI *This);
    HRESULT (__attribute__((__stdcall__)) *QueryMultipleInterfaces)(
        IMultiQI *This,
        ULONG cMQIs,
        MULTI_QI *pMQIs);
   
} IMultiQIVtbl;
struct IMultiQI {
    IMultiQIVtbl* lpVtbl;
};
#define __AsyncIMultiQI_INTERFACE_DEFINED__ 
extern const GUID IID_AsyncIMultiQI;
typedef struct AsyncIMultiQIVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        AsyncIMultiQI *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        AsyncIMultiQI *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        AsyncIMultiQI *This);
    HRESULT (__attribute__((__stdcall__)) *Begin_QueryMultipleInterfaces)(
        AsyncIMultiQI *This,
        ULONG cMQIs,
        MULTI_QI *pMQIs);
    HRESULT (__attribute__((__stdcall__)) *Finish_QueryMultipleInterfaces)(
        AsyncIMultiQI *This,
        MULTI_QI *pMQIs);
   
} AsyncIMultiQIVtbl;
struct AsyncIMultiQI {
    AsyncIMultiQIVtbl* lpVtbl;
};
#define __IInternalUnknown_INTERFACE_DEFINED__ 
extern const GUID IID_IInternalUnknown;
typedef struct IInternalUnknownVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternalUnknown *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternalUnknown *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternalUnknown *This);
    HRESULT (__attribute__((__stdcall__)) *QueryInternalInterface)(
        IInternalUnknown *This,
        const IID *const riid,
        void **ppv);
   
} IInternalUnknownVtbl;
struct IInternalUnknown {
    IInternalUnknownVtbl* lpVtbl;
};
#define __IEnumUnknown_INTERFACE_DEFINED__ 
typedef IEnumUnknown *LPENUMUNKNOWN;
extern const GUID IID_IEnumUnknown;
typedef struct IEnumUnknownVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IEnumUnknown *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IEnumUnknown *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IEnumUnknown *This);
    HRESULT (__attribute__((__stdcall__)) *Next)(
        IEnumUnknown *This,
        ULONG celt,
        IUnknown **rgelt,
        ULONG *pceltFetched);
    HRESULT (__attribute__((__stdcall__)) *Skip)(
        IEnumUnknown *This,
        ULONG celt);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        IEnumUnknown *This);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IEnumUnknown *This,
        IEnumUnknown **ppenum);
   
} IEnumUnknownVtbl;
struct IEnumUnknown {
    IEnumUnknownVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IEnumUnknown_RemoteNext_Proxy(
    IEnumUnknown* This,
    ULONG celt,
    IUnknown **rgelt,
    ULONG *pceltFetched);
void __attribute__((__stdcall__)) IEnumUnknown_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IEnumUnknown_Next_Proxy(
    IEnumUnknown* This,
    ULONG celt,
    IUnknown **rgelt,
    ULONG *pceltFetched);
HRESULT __attribute__((__stdcall__)) IEnumUnknown_Next_Stub(
    IEnumUnknown* This,
    ULONG celt,
    IUnknown **rgelt,
    ULONG *pceltFetched);
#define __IEnumString_INTERFACE_DEFINED__ 
typedef IEnumString *LPENUMSTRING;
extern const GUID IID_IEnumString;
typedef struct IEnumStringVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IEnumString *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IEnumString *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IEnumString *This);
    HRESULT (__attribute__((__stdcall__)) *Next)(
        IEnumString *This,
        ULONG celt,
        LPOLESTR *rgelt,
        ULONG *pceltFetched);
    HRESULT (__attribute__((__stdcall__)) *Skip)(
        IEnumString *This,
        ULONG celt);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        IEnumString *This);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IEnumString *This,
        IEnumString **ppenum);
   
} IEnumStringVtbl;
struct IEnumString {
    IEnumStringVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IEnumString_RemoteNext_Proxy(
    IEnumString* This,
    ULONG celt,
    LPOLESTR *rgelt,
    ULONG *pceltFetched);
void __attribute__((__stdcall__)) IEnumString_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IEnumString_Next_Proxy(
    IEnumString* This,
    ULONG celt,
    LPOLESTR *rgelt,
    ULONG *pceltFetched);
HRESULT __attribute__((__stdcall__)) IEnumString_Next_Stub(
    IEnumString* This,
    ULONG celt,
    LPOLESTR *rgelt,
    ULONG *pceltFetched);
#define __ISequentialStream_INTERFACE_DEFINED__ 
extern const GUID IID_ISequentialStream;
typedef struct ISequentialStreamVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ISequentialStream *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ISequentialStream *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ISequentialStream *This);
    HRESULT (__attribute__((__stdcall__)) *Read)(
        ISequentialStream *This,
        void *pv,
        ULONG cb,
        ULONG *pcbRead);
    HRESULT (__attribute__((__stdcall__)) *Write)(
        ISequentialStream *This,
        const void *pv,
        ULONG cb,
        ULONG *pcbWritten);
   
} ISequentialStreamVtbl;
struct ISequentialStream {
    ISequentialStreamVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) ISequentialStream_RemoteRead_Proxy(
    ISequentialStream* This,
    byte *pv,
    ULONG cb,
    ULONG *pcbRead);
void __attribute__((__stdcall__)) ISequentialStream_RemoteRead_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ISequentialStream_RemoteWrite_Proxy(
    ISequentialStream* This,
    const byte *pv,
    ULONG cb,
    ULONG *pcbWritten);
void __attribute__((__stdcall__)) ISequentialStream_RemoteWrite_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ISequentialStream_Read_Proxy(
    ISequentialStream* This,
    void *pv,
    ULONG cb,
    ULONG *pcbRead);
HRESULT __attribute__((__stdcall__)) ISequentialStream_Read_Stub(
    ISequentialStream* This,
    byte *pv,
    ULONG cb,
    ULONG *pcbRead);
HRESULT __attribute__((__stdcall__)) ISequentialStream_Write_Proxy(
    ISequentialStream* This,
    const void *pv,
    ULONG cb,
    ULONG *pcbWritten);
HRESULT __attribute__((__stdcall__)) ISequentialStream_Write_Stub(
    ISequentialStream* This,
    const byte *pv,
    ULONG cb,
    ULONG *pcbWritten);
#define __IStream_INTERFACE_DEFINED__ 
typedef IStream *LPSTREAM;
typedef struct tagSTATSTG {
    LPOLESTR pwcsName;
    DWORD type;
    ULARGE_INTEGER cbSize;
    FILETIME mtime;
    FILETIME ctime;
    FILETIME atime;
    DWORD grfMode;
    DWORD grfLocksSupported;
    CLSID clsid;
    DWORD grfStateBits;
    DWORD reserved;
} STATSTG;
typedef enum tagSTGTY {
    STGTY_STORAGE = 1,
    STGTY_STREAM = 2,
    STGTY_LOCKBYTES = 3,
    STGTY_PROPERTY = 4
} STGTY;
typedef enum tagSTREAM_SEEK {
    STREAM_SEEK_SET = 0,
    STREAM_SEEK_CUR = 1,
    STREAM_SEEK_END = 2
} STREAM_SEEK;
typedef enum tagLOCKTYPE {
    LOCK_WRITE = 1,
    LOCK_EXCLUSIVE = 2,
    LOCK_ONLYONCE = 4
} LOCKTYPE;
extern const GUID IID_IStream;
typedef struct IStreamVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IStream *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IStream *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IStream *This);
    HRESULT (__attribute__((__stdcall__)) *Read)(
        IStream *This,
        void *pv,
        ULONG cb,
        ULONG *pcbRead);
    HRESULT (__attribute__((__stdcall__)) *Write)(
        IStream *This,
        const void *pv,
        ULONG cb,
        ULONG *pcbWritten);
    HRESULT (__attribute__((__stdcall__)) *Seek)(
        IStream *This,
        LARGE_INTEGER dlibMove,
        DWORD dwOrigin,
        ULARGE_INTEGER *plibNewPosition);
    HRESULT (__attribute__((__stdcall__)) *SetSize)(
        IStream *This,
        ULARGE_INTEGER libNewSize);
    HRESULT (__attribute__((__stdcall__)) *CopyTo)(
        IStream *This,
        IStream *pstm,
        ULARGE_INTEGER cb,
        ULARGE_INTEGER *pcbRead,
        ULARGE_INTEGER *pcbWritten);
    HRESULT (__attribute__((__stdcall__)) *Commit)(
        IStream *This,
        DWORD grfCommitFlags);
    HRESULT (__attribute__((__stdcall__)) *Revert)(
        IStream *This);
    HRESULT (__attribute__((__stdcall__)) *LockRegion)(
        IStream *This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);
    HRESULT (__attribute__((__stdcall__)) *UnlockRegion)(
        IStream *This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);
    HRESULT (__attribute__((__stdcall__)) *Stat)(
        IStream *This,
        STATSTG *pstatstg,
        DWORD grfStatFlag);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IStream *This,
        IStream **ppstm);
   
} IStreamVtbl;
struct IStream {
    IStreamVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IStream_RemoteSeek_Proxy(
    IStream* This,
    LARGE_INTEGER dlibMove,
    DWORD dwOrigin,
    ULARGE_INTEGER *plibNewPosition);
void __attribute__((__stdcall__)) IStream_RemoteSeek_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IStream_RemoteCopyTo_Proxy(
    IStream* This,
    IStream *pstm,
    ULARGE_INTEGER cb,
    ULARGE_INTEGER *pcbRead,
    ULARGE_INTEGER *pcbWritten);
void __attribute__((__stdcall__)) IStream_RemoteCopyTo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IStream_Seek_Proxy(
    IStream* This,
    LARGE_INTEGER dlibMove,
    DWORD dwOrigin,
    ULARGE_INTEGER *plibNewPosition);
HRESULT __attribute__((__stdcall__)) IStream_Seek_Stub(
    IStream* This,
    LARGE_INTEGER dlibMove,
    DWORD dwOrigin,
    ULARGE_INTEGER *plibNewPosition);
HRESULT __attribute__((__stdcall__)) IStream_CopyTo_Proxy(
    IStream* This,
    IStream *pstm,
    ULARGE_INTEGER cb,
    ULARGE_INTEGER *pcbRead,
    ULARGE_INTEGER *pcbWritten);
HRESULT __attribute__((__stdcall__)) IStream_CopyTo_Stub(
    IStream* This,
    IStream *pstm,
    ULARGE_INTEGER cb,
    ULARGE_INTEGER *pcbRead,
    ULARGE_INTEGER *pcbWritten);
#define __IRpcChannelBuffer_INTERFACE_DEFINED__ 
typedef ULONG RPCOLEDATAREP;
typedef struct tagRPCOLEMESSAGE {
    void *reserved1;
    RPCOLEDATAREP dataRepresentation;
    void *Buffer;
    ULONG cbBuffer;
    ULONG iMethod;
    void * reserved2[5];
    ULONG rpcFlags;
} RPCOLEMESSAGE;
typedef RPCOLEMESSAGE *PRPCOLEMESSAGE;
extern const GUID IID_IRpcChannelBuffer;
typedef struct IRpcChannelBufferVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IRpcChannelBuffer *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IRpcChannelBuffer *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IRpcChannelBuffer *This);
    HRESULT (__attribute__((__stdcall__)) *GetBuffer)(
        IRpcChannelBuffer *This,
        RPCOLEMESSAGE *pMessage,
        const IID *const riid);
    HRESULT (__attribute__((__stdcall__)) *SendReceive)(
        IRpcChannelBuffer *This,
        RPCOLEMESSAGE *pMessage,
        ULONG *pStatus);
    HRESULT (__attribute__((__stdcall__)) *FreeBuffer)(
        IRpcChannelBuffer *This,
        RPCOLEMESSAGE *pMessage);
    HRESULT (__attribute__((__stdcall__)) *GetDestCtx)(
        IRpcChannelBuffer *This,
        DWORD *pdwDestContext,
        void **ppvDestContext);
    HRESULT (__attribute__((__stdcall__)) *IsConnected)(
        IRpcChannelBuffer *This);
   
} IRpcChannelBufferVtbl;
struct IRpcChannelBuffer {
    IRpcChannelBufferVtbl* lpVtbl;
};
#define __IRpcChannelBuffer2_INTERFACE_DEFINED__ 
extern const GUID IID_IRpcChannelBuffer2;
typedef struct IRpcChannelBuffer2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IRpcChannelBuffer2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IRpcChannelBuffer2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IRpcChannelBuffer2 *This);
    HRESULT (__attribute__((__stdcall__)) *GetBuffer)(
        IRpcChannelBuffer2 *This,
        RPCOLEMESSAGE *pMessage,
        const IID *const riid);
    HRESULT (__attribute__((__stdcall__)) *SendReceive)(
        IRpcChannelBuffer2 *This,
        RPCOLEMESSAGE *pMessage,
        ULONG *pStatus);
    HRESULT (__attribute__((__stdcall__)) *FreeBuffer)(
        IRpcChannelBuffer2 *This,
        RPCOLEMESSAGE *pMessage);
    HRESULT (__attribute__((__stdcall__)) *GetDestCtx)(
        IRpcChannelBuffer2 *This,
        DWORD *pdwDestContext,
        void **ppvDestContext);
    HRESULT (__attribute__((__stdcall__)) *IsConnected)(
        IRpcChannelBuffer2 *This);
    HRESULT (__attribute__((__stdcall__)) *GetProtocolVersion)(
        IRpcChannelBuffer2 *This,
        DWORD *pdwVersion);
   
} IRpcChannelBuffer2Vtbl;
struct IRpcChannelBuffer2 {
    IRpcChannelBuffer2Vtbl* lpVtbl;
};
#define __IAsyncRpcChannelBuffer_INTERFACE_DEFINED__ 
extern const GUID IID_IAsyncRpcChannelBuffer;
typedef struct IAsyncRpcChannelBufferVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IAsyncRpcChannelBuffer *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IAsyncRpcChannelBuffer *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IAsyncRpcChannelBuffer *This);
    HRESULT (__attribute__((__stdcall__)) *GetBuffer)(
        IAsyncRpcChannelBuffer *This,
        RPCOLEMESSAGE *pMessage,
        const IID *const riid);
    HRESULT (__attribute__((__stdcall__)) *SendReceive)(
        IAsyncRpcChannelBuffer *This,
        RPCOLEMESSAGE *pMessage,
        ULONG *pStatus);
    HRESULT (__attribute__((__stdcall__)) *FreeBuffer)(
        IAsyncRpcChannelBuffer *This,
        RPCOLEMESSAGE *pMessage);
    HRESULT (__attribute__((__stdcall__)) *GetDestCtx)(
        IAsyncRpcChannelBuffer *This,
        DWORD *pdwDestContext,
        void **ppvDestContext);
    HRESULT (__attribute__((__stdcall__)) *IsConnected)(
        IAsyncRpcChannelBuffer *This);
    HRESULT (__attribute__((__stdcall__)) *GetProtocolVersion)(
        IAsyncRpcChannelBuffer *This,
        DWORD *pdwVersion);
    HRESULT (__attribute__((__stdcall__)) *Send)(
        IAsyncRpcChannelBuffer *This,
        RPCOLEMESSAGE *pMsg,
        ISynchronize *pSync,
        ULONG *pulStatus);
    HRESULT (__attribute__((__stdcall__)) *Receive)(
        IAsyncRpcChannelBuffer *This,
        RPCOLEMESSAGE *pMsg,
        ULONG *pulStatus);
    HRESULT (__attribute__((__stdcall__)) *GetDestCtxEx)(
        IAsyncRpcChannelBuffer *This,
        RPCOLEMESSAGE *pMsg,
        DWORD *pdwDestContext,
        void **ppvDestContext);
   
} IAsyncRpcChannelBufferVtbl;
struct IAsyncRpcChannelBuffer {
    IAsyncRpcChannelBufferVtbl* lpVtbl;
};
#define __IRpcChannelBuffer3_INTERFACE_DEFINED__ 
extern const GUID IID_IRpcChannelBuffer3;
typedef struct IRpcChannelBuffer3Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IRpcChannelBuffer3 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IRpcChannelBuffer3 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IRpcChannelBuffer3 *This);
    HRESULT (__attribute__((__stdcall__)) *GetBuffer)(
        IRpcChannelBuffer3 *This,
        RPCOLEMESSAGE *pMessage,
        const IID *const riid);
    HRESULT (__attribute__((__stdcall__)) *SendReceive)(
        IRpcChannelBuffer3 *This,
        RPCOLEMESSAGE *pMessage,
        ULONG *pStatus);
    HRESULT (__attribute__((__stdcall__)) *FreeBuffer)(
        IRpcChannelBuffer3 *This,
        RPCOLEMESSAGE *pMessage);
    HRESULT (__attribute__((__stdcall__)) *GetDestCtx)(
        IRpcChannelBuffer3 *This,
        DWORD *pdwDestContext,
        void **ppvDestContext);
    HRESULT (__attribute__((__stdcall__)) *IsConnected)(
        IRpcChannelBuffer3 *This);
    HRESULT (__attribute__((__stdcall__)) *GetProtocolVersion)(
        IRpcChannelBuffer3 *This,
        DWORD *pdwVersion);
    HRESULT (__attribute__((__stdcall__)) *Send)(
        IRpcChannelBuffer3 *This,
        RPCOLEMESSAGE *pMsg,
        ULONG *pulStatus);
    HRESULT (__attribute__((__stdcall__)) *Receive)(
        IRpcChannelBuffer3 *This,
        RPCOLEMESSAGE *pMsg,
        ULONG ulSize,
        ULONG *pulStatus);
    HRESULT (__attribute__((__stdcall__)) *Cancel)(
        IRpcChannelBuffer3 *This,
        RPCOLEMESSAGE *pMsg);
    HRESULT (__attribute__((__stdcall__)) *GetCallContext)(
        IRpcChannelBuffer3 *This,
        RPCOLEMESSAGE *pMsg,
        const IID *const riid,
        void **pInterface);
    HRESULT (__attribute__((__stdcall__)) *GetDestCtxEx)(
        IRpcChannelBuffer3 *This,
        RPCOLEMESSAGE *pMsg,
        DWORD *pdwDestContext,
        void **ppvDestContext);
    HRESULT (__attribute__((__stdcall__)) *GetState)(
        IRpcChannelBuffer3 *This,
        RPCOLEMESSAGE *pMsg,
        DWORD *pState);
    HRESULT (__attribute__((__stdcall__)) *RegisterAsync)(
        IRpcChannelBuffer3 *This,
        RPCOLEMESSAGE *pMsg,
        IAsyncManager *pAsyncMgr);
   
} IRpcChannelBuffer3Vtbl;
struct IRpcChannelBuffer3 {
    IRpcChannelBuffer3Vtbl* lpVtbl;
};
#define __IRpcSyntaxNegotiate_INTERFACE_DEFINED__ 
extern const GUID IID_IRpcSyntaxNegotiate;
typedef struct IRpcSyntaxNegotiateVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IRpcSyntaxNegotiate *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IRpcSyntaxNegotiate *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IRpcSyntaxNegotiate *This);
    HRESULT (__attribute__((__stdcall__)) *NegotiateSyntax)(
        IRpcSyntaxNegotiate *This,
        RPCOLEMESSAGE *pMsg);
   
} IRpcSyntaxNegotiateVtbl;
struct IRpcSyntaxNegotiate {
    IRpcSyntaxNegotiateVtbl* lpVtbl;
};
#define __IRpcProxyBuffer_INTERFACE_DEFINED__ 
extern const GUID IID_IRpcProxyBuffer;
typedef struct IRpcProxyBufferVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IRpcProxyBuffer *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IRpcProxyBuffer *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IRpcProxyBuffer *This);
    HRESULT (__attribute__((__stdcall__)) *Connect)(
        IRpcProxyBuffer *This,
        IRpcChannelBuffer *pRpcChannelBuffer);
    void (__attribute__((__stdcall__)) *Disconnect)(
        IRpcProxyBuffer *This);
   
} IRpcProxyBufferVtbl;
struct IRpcProxyBuffer {
    IRpcProxyBufferVtbl* lpVtbl;
};
#define __IRpcStubBuffer_INTERFACE_DEFINED__ 
extern const GUID IID_IRpcStubBuffer;
typedef struct IRpcStubBufferVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IRpcStubBuffer *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IRpcStubBuffer *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IRpcStubBuffer *This);
    HRESULT (__attribute__((__stdcall__)) *Connect)(
        IRpcStubBuffer *This,
        IUnknown *pUnkServer);
    void (__attribute__((__stdcall__)) *Disconnect)(
        IRpcStubBuffer *This);
    HRESULT (__attribute__((__stdcall__)) *Invoke)(
        IRpcStubBuffer *This,
        RPCOLEMESSAGE *_prpcmsg,
        IRpcChannelBuffer *_pRpcChannelBuffer);
    IRpcStubBuffer * (__attribute__((__stdcall__)) *IsIIDSupported)(
        IRpcStubBuffer *This,
        const IID *const riid);
    ULONG (__attribute__((__stdcall__)) *CountRefs)(
        IRpcStubBuffer *This);
    HRESULT (__attribute__((__stdcall__)) *DebugServerQueryInterface)(
        IRpcStubBuffer *This,
        void **ppv);
    void (__attribute__((__stdcall__)) *DebugServerRelease)(
        IRpcStubBuffer *This,
        void *pv);
   
} IRpcStubBufferVtbl;
struct IRpcStubBuffer {
    IRpcStubBufferVtbl* lpVtbl;
};
#define __IPSFactoryBuffer_INTERFACE_DEFINED__ 
extern const GUID IID_IPSFactoryBuffer;
typedef struct IPSFactoryBufferVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPSFactoryBuffer *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPSFactoryBuffer *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPSFactoryBuffer *This);
    HRESULT (__attribute__((__stdcall__)) *CreateProxy)(
        IPSFactoryBuffer *This,
        IUnknown *pUnkOuter,
        const IID *const riid,
        IRpcProxyBuffer **ppProxy,
        void **ppv);
    HRESULT (__attribute__((__stdcall__)) *CreateStub)(
        IPSFactoryBuffer *This,
        const IID *const riid,
        IUnknown *pUnkServer,
        IRpcStubBuffer **ppStub);
   
} IPSFactoryBufferVtbl;
struct IPSFactoryBuffer {
    IPSFactoryBufferVtbl* lpVtbl;
};
typedef struct SChannelHookCallInfo {
    IID iid;
    DWORD cbSize;
    GUID uCausality;
    DWORD dwServerPid;
    DWORD iMethod;
    void *pObject;
} SChannelHookCallInfo;
#define __IChannelHook_INTERFACE_DEFINED__ 
extern const GUID IID_IChannelHook;
typedef struct IChannelHookVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IChannelHook *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IChannelHook *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IChannelHook *This);
    void (__attribute__((__stdcall__)) *ClientGetSize)(
        IChannelHook *This,
        const GUID *const uExtent,
        const IID *const riid,
        ULONG *pDataSize);
    void (__attribute__((__stdcall__)) *ClientFillBuffer)(
        IChannelHook *This,
        const GUID *const uExtent,
        const IID *const riid,
        ULONG *pDataSize,
        void *pDataBuffer);
    void (__attribute__((__stdcall__)) *ClientNotify)(
        IChannelHook *This,
        const GUID *const uExtent,
        const IID *const riid,
        ULONG cbDataSize,
        void *pDataBuffer,
        DWORD lDataRep,
        HRESULT hrFault);
    void (__attribute__((__stdcall__)) *ServerNotify)(
        IChannelHook *This,
        const GUID *const uExtent,
        const IID *const riid,
        ULONG cbDataSize,
        void *pDataBuffer,
        DWORD lDataRep);
    void (__attribute__((__stdcall__)) *ServerGetSize)(
        IChannelHook *This,
        const GUID *const uExtent,
        const IID *const riid,
        HRESULT hrFault,
        ULONG *pDataSize);
    void (__attribute__((__stdcall__)) *ServerFillBuffer)(
        IChannelHook *This,
        const GUID *const uExtent,
        const IID *const riid,
        ULONG *pDataSize,
        void *pDataBuffer,
        HRESULT hrFault);
   
} IChannelHookVtbl;
struct IChannelHook {
    IChannelHookVtbl* lpVtbl;
};
#define __IClientSecurity_INTERFACE_DEFINED__ 
typedef struct tagSOLE_AUTHENTICATION_SERVICE {
    DWORD dwAuthnSvc;
    DWORD dwAuthzSvc;
    OLECHAR *pPrincipalName;
    HRESULT hr;
} SOLE_AUTHENTICATION_SERVICE;
typedef SOLE_AUTHENTICATION_SERVICE *PSOLE_AUTHENTICATION_SERVICE;
typedef enum tagEOLE_AUTHENTICATION_CAPABILITIES {
    EOAC_NONE = 0x0,
    EOAC_MUTUAL_AUTH = 0x1,
    EOAC_STATIC_CLOAKING = 0x20,
    EOAC_DYNAMIC_CLOAKING = 0x40,
    EOAC_ANY_AUTHORITY = 0x80,
    EOAC_MAKE_FULLSIC = 0x100,
    EOAC_DEFAULT = 0x800,
    EOAC_SECURE_REFS = 0x2,
    EOAC_ACCESS_CONTROL = 0x4,
    EOAC_APPID = 0x8,
    EOAC_DYNAMIC = 0x10,
    EOAC_REQUIRE_FULLSIC = 0x200,
    EOAC_AUTO_IMPERSONATE = 0x400,
    EOAC_NO_CUSTOM_MARSHAL = 0x2000,
    EOAC_DISABLE_AAA = 0x1000
} EOLE_AUTHENTICATION_CAPABILITIES;
#define COLE_DEFAULT_PRINCIPAL ((OLECHAR *)(INT_PTR)-1)
#define COLE_DEFAULT_AUTHINFO ((void *)(INT_PTR)-1)
typedef struct tagSOLE_AUTHENTICATION_INFO {
    DWORD dwAuthnSvc;
    DWORD dwAuthzSvc;
    void *pAuthInfo;
} SOLE_AUTHENTICATION_INFO;
typedef struct tagSOLE_AUTHENTICATION_INFO *PSOLE_AUTHENTICATION_INFO;
typedef struct tagSOLE_AUTHENTICATION_LIST {
    DWORD cAuthInfo;
    SOLE_AUTHENTICATION_INFO *aAuthInfo;
} SOLE_AUTHENTICATION_LIST;
typedef struct tagSOLE_AUTHENTICATION_LIST *PSOLE_AUTHENTICATION_LIST;
extern const GUID IID_IClientSecurity;
typedef struct IClientSecurityVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IClientSecurity *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IClientSecurity *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IClientSecurity *This);
    HRESULT (__attribute__((__stdcall__)) *QueryBlanket)(
        IClientSecurity *This,
        IUnknown *pProxy,
        DWORD *pAuthnSvc,
        DWORD *pAuthzSvc,
        OLECHAR **pServerPrincName,
        DWORD *pAuthnLevel,
        DWORD *pImpLevel,
        void **pAuthInfo,
        DWORD *pCapabilites);
    HRESULT (__attribute__((__stdcall__)) *SetBlanket)(
        IClientSecurity *This,
        IUnknown *pProxy,
        DWORD dwAuthnSvc,
        DWORD dwAuthzSvc,
        OLECHAR *pServerPrincName,
        DWORD dwAuthnLevel,
        DWORD dwImpLevel,
        void *pAuthInfo,
        DWORD dwCapabilities);
    HRESULT (__attribute__((__stdcall__)) *CopyProxy)(
        IClientSecurity *This,
        IUnknown *pProxy,
        IUnknown **ppCopy);
   
} IClientSecurityVtbl;
struct IClientSecurity {
    IClientSecurityVtbl* lpVtbl;
};
#define __IServerSecurity_INTERFACE_DEFINED__ 
extern const GUID IID_IServerSecurity;
typedef struct IServerSecurityVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IServerSecurity *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IServerSecurity *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IServerSecurity *This);
    HRESULT (__attribute__((__stdcall__)) *QueryBlanket)(
        IServerSecurity *This,
        DWORD *pAuthnSvc,
        DWORD *pAuthzSvc,
        OLECHAR **pServerPrincName,
        DWORD *pAuthnLevel,
        DWORD *pImpLevel,
        void **pPrivs,
        DWORD *pCapabilities);
    HRESULT (__attribute__((__stdcall__)) *ImpersonateClient)(
        IServerSecurity *This);
    HRESULT (__attribute__((__stdcall__)) *RevertToSelf)(
        IServerSecurity *This);
    WINBOOL (__attribute__((__stdcall__)) *IsImpersonating)(
        IServerSecurity *This);
   
} IServerSecurityVtbl;
struct IServerSecurity {
    IServerSecurityVtbl* lpVtbl;
};
typedef enum tagRPCOPT_PROPERTIES {
    COMBND_RPCTIMEOUT = 0x1,
    COMBND_SERVER_LOCALITY = 0x2,
    COMBND_RESERVED1 = 0x4
} RPCOPT_PROPERTIES;
typedef enum tagRPCOPT_SERVER_LOCALITY_VALUES {
    SERVER_LOCALITY_PROCESS_LOCAL = 0,
    SERVER_LOCALITY_MACHINE_LOCAL = 1,
    SERVER_LOCALITY_REMOTE = 2
} RPCOPT_SERVER_LOCALITY_VALUES;
#define __IRpcOptions_INTERFACE_DEFINED__ 
extern const GUID IID_IRpcOptions;
typedef struct IRpcOptionsVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IRpcOptions *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IRpcOptions *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IRpcOptions *This);
    HRESULT (__attribute__((__stdcall__)) *Set)(
        IRpcOptions *This,
        IUnknown *pPrx,
        RPCOPT_PROPERTIES dwProperty,
        ULONG_PTR dwValue);
    HRESULT (__attribute__((__stdcall__)) *Query)(
        IRpcOptions *This,
        IUnknown *pPrx,
        RPCOPT_PROPERTIES dwProperty,
        ULONG_PTR *pdwValue);
   
} IRpcOptionsVtbl;
struct IRpcOptions {
    IRpcOptionsVtbl* lpVtbl;
};
typedef enum tagGLOBALOPT_PROPERTIES {
    COMGLB_EXCEPTION_HANDLING = 1,
    COMGLB_APPID = 2,
    COMGLB_RPC_THREADPOOL_SETTING = 3,
    COMGLB_RO_SETTINGS = 4,
    COMGLB_UNMARSHALING_POLICY = 5
} GLOBALOPT_PROPERTIES;
typedef enum tagGLOBALOPT_EH_VALUES {
    COMGLB_EXCEPTION_HANDLE = 0,
    COMGLB_EXCEPTION_DONOT_HANDLE_FATAL = 1,
    COMGLB_EXCEPTION_DONOT_HANDLE = COMGLB_EXCEPTION_DONOT_HANDLE_FATAL,
    COMGLB_EXCEPTION_DONOT_HANDLE_ANY = 2
} GLOBALOPT_EH_VALUES;
typedef enum tagGLOBALOPT_RPCTP_VALUES {
    COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL = 0,
    COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL = 1
} GLOBALOPT_RPCTP_VALUES;
typedef enum tagGLOBALOPT_RO_FLAGS {
    COMGLB_STA_MODALLOOP_REMOVE_TOUCH_MESSAGES = 0x1,
    COMGLB_STA_MODALLOOP_SHARED_QUEUE_REMOVE_INPUT_MESSAGES = 0x2,
    COMGLB_STA_MODALLOOP_SHARED_QUEUE_DONOT_REMOVE_INPUT_MESSAGES = 0x4,
    COMGLB_FAST_RUNDOWN = 0x8,
    COMGLB_RESERVED1 = 0x10,
    COMGLB_RESERVED2 = 0x20,
    COMGLB_RESERVED3 = 0x40,
    COMGLB_STA_MODALLOOP_SHARED_QUEUE_REORDER_POINTER_MESSAGES = 0x80
} GLOBALOPT_RO_FLAGS;
typedef enum tagGLOBALOPT_UNMARSHALING_POLICY_VALUES {
    COMGLB_UNMARSHALING_POLICY_NORMAL = 0,
    COMGLB_UNMARSHALING_POLICY_STRONG = 1,
    COMGLB_UNMARSHALING_POLICY_HYBRID = 2
} GLOBALOPT_UNMARSHALING_POLICY_VALUES;
#define __IGlobalOptions_INTERFACE_DEFINED__ 
extern const GUID IID_IGlobalOptions;
typedef struct IGlobalOptionsVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IGlobalOptions *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IGlobalOptions *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IGlobalOptions *This);
    HRESULT (__attribute__((__stdcall__)) *Set)(
        IGlobalOptions *This,
        GLOBALOPT_PROPERTIES dwProperty,
        ULONG_PTR dwValue);
    HRESULT (__attribute__((__stdcall__)) *Query)(
        IGlobalOptions *This,
        GLOBALOPT_PROPERTIES dwProperty,
        ULONG_PTR *pdwValue);
   
} IGlobalOptionsVtbl;
struct IGlobalOptions {
    IGlobalOptionsVtbl* lpVtbl;
};
#define __ISurrogate_INTERFACE_DEFINED__ 
typedef ISurrogate *LPSURROGATE;
extern const GUID IID_ISurrogate;
typedef struct ISurrogateVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ISurrogate *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ISurrogate *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ISurrogate *This);
    HRESULT (__attribute__((__stdcall__)) *LoadDllServer)(
        ISurrogate *This,
        const IID *const Clsid);
    HRESULT (__attribute__((__stdcall__)) *FreeSurrogate)(
        ISurrogate *This);
   
} ISurrogateVtbl;
struct ISurrogate {
    ISurrogateVtbl* lpVtbl;
};
#define __IGlobalInterfaceTable_INTERFACE_DEFINED__ 
typedef IGlobalInterfaceTable *LPGLOBALINTERFACETABLE;
extern const GUID IID_IGlobalInterfaceTable;
typedef struct IGlobalInterfaceTableVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IGlobalInterfaceTable *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IGlobalInterfaceTable *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IGlobalInterfaceTable *This);
    HRESULT (__attribute__((__stdcall__)) *RegisterInterfaceInGlobal)(
        IGlobalInterfaceTable *This,
        IUnknown *pUnk,
        const IID *const riid,
        DWORD *pdwCookie);
    HRESULT (__attribute__((__stdcall__)) *RevokeInterfaceFromGlobal)(
        IGlobalInterfaceTable *This,
        DWORD dwCookie);
    HRESULT (__attribute__((__stdcall__)) *GetInterfaceFromGlobal)(
        IGlobalInterfaceTable *This,
        DWORD dwCookie,
        const IID *const riid,
        void **ppv);
   
} IGlobalInterfaceTableVtbl;
struct IGlobalInterfaceTable {
    IGlobalInterfaceTableVtbl* lpVtbl;
};
#define __ISynchronize_INTERFACE_DEFINED__ 
extern const GUID IID_ISynchronize;
typedef struct ISynchronizeVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ISynchronize *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ISynchronize *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ISynchronize *This);
    HRESULT (__attribute__((__stdcall__)) *Wait)(
        ISynchronize *This,
        DWORD dwFlags,
        DWORD dwMilliseconds);
    HRESULT (__attribute__((__stdcall__)) *Signal)(
        ISynchronize *This);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        ISynchronize *This);
   
} ISynchronizeVtbl;
struct ISynchronize {
    ISynchronizeVtbl* lpVtbl;
};
#define __ISynchronizeHandle_INTERFACE_DEFINED__ 
extern const GUID IID_ISynchronizeHandle;
typedef struct ISynchronizeHandleVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ISynchronizeHandle *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ISynchronizeHandle *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ISynchronizeHandle *This);
    HRESULT (__attribute__((__stdcall__)) *GetHandle)(
        ISynchronizeHandle *This,
        HANDLE *ph);
   
} ISynchronizeHandleVtbl;
struct ISynchronizeHandle {
    ISynchronizeHandleVtbl* lpVtbl;
};
#define __ISynchronizeEvent_INTERFACE_DEFINED__ 
extern const GUID IID_ISynchronizeEvent;
typedef struct ISynchronizeEventVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ISynchronizeEvent *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ISynchronizeEvent *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ISynchronizeEvent *This);
    HRESULT (__attribute__((__stdcall__)) *GetHandle)(
        ISynchronizeEvent *This,
        HANDLE *ph);
    HRESULT (__attribute__((__stdcall__)) *SetEventHandle)(
        ISynchronizeEvent *This,
        HANDLE *ph);
   
} ISynchronizeEventVtbl;
struct ISynchronizeEvent {
    ISynchronizeEventVtbl* lpVtbl;
};
#define __ISynchronizeContainer_INTERFACE_DEFINED__ 
extern const GUID IID_ISynchronizeContainer;
typedef struct ISynchronizeContainerVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ISynchronizeContainer *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ISynchronizeContainer *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ISynchronizeContainer *This);
    HRESULT (__attribute__((__stdcall__)) *AddSynchronize)(
        ISynchronizeContainer *This,
        ISynchronize *pSync);
    HRESULT (__attribute__((__stdcall__)) *WaitMultiple)(
        ISynchronizeContainer *This,
        DWORD dwFlags,
        DWORD dwTimeOut,
        ISynchronize **ppSync);
   
} ISynchronizeContainerVtbl;
struct ISynchronizeContainer {
    ISynchronizeContainerVtbl* lpVtbl;
};
#define __ISynchronizeMutex_INTERFACE_DEFINED__ 
extern const GUID IID_ISynchronizeMutex;
typedef struct ISynchronizeMutexVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ISynchronizeMutex *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ISynchronizeMutex *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ISynchronizeMutex *This);
    HRESULT (__attribute__((__stdcall__)) *Wait)(
        ISynchronizeMutex *This,
        DWORD dwFlags,
        DWORD dwMilliseconds);
    HRESULT (__attribute__((__stdcall__)) *Signal)(
        ISynchronizeMutex *This);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        ISynchronizeMutex *This);
    HRESULT (__attribute__((__stdcall__)) *ReleaseMutex)(
        ISynchronizeMutex *This);
   
} ISynchronizeMutexVtbl;
struct ISynchronizeMutex {
    ISynchronizeMutexVtbl* lpVtbl;
};
#define __ICancelMethodCalls_INTERFACE_DEFINED__ 
typedef ICancelMethodCalls *LPCANCELMETHODCALLS;
extern const GUID IID_ICancelMethodCalls;
typedef struct ICancelMethodCallsVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ICancelMethodCalls *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ICancelMethodCalls *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ICancelMethodCalls *This);
    HRESULT (__attribute__((__stdcall__)) *Cancel)(
        ICancelMethodCalls *This,
        ULONG ulSeconds);
    HRESULT (__attribute__((__stdcall__)) *TestCancel)(
        ICancelMethodCalls *This);
   
} ICancelMethodCallsVtbl;
struct ICancelMethodCalls {
    ICancelMethodCallsVtbl* lpVtbl;
};
#define __IAsyncManager_INTERFACE_DEFINED__ 
typedef enum tagDCOM_CALL_STATE {
    DCOM_NONE = 0x0,
    DCOM_CALL_COMPLETE = 0x1,
    DCOM_CALL_CANCELED = 0x2
} DCOM_CALL_STATE;
extern const GUID IID_IAsyncManager;
typedef struct IAsyncManagerVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IAsyncManager *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IAsyncManager *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IAsyncManager *This);
    HRESULT (__attribute__((__stdcall__)) *CompleteCall)(
        IAsyncManager *This,
        HRESULT Result);
    HRESULT (__attribute__((__stdcall__)) *GetCallContext)(
        IAsyncManager *This,
        const IID *const riid,
        void **pInterface);
    HRESULT (__attribute__((__stdcall__)) *GetState)(
        IAsyncManager *This,
        ULONG *pulStateFlags);
   
} IAsyncManagerVtbl;
struct IAsyncManager {
    IAsyncManagerVtbl* lpVtbl;
};
#define __ICallFactory_INTERFACE_DEFINED__ 
extern const GUID IID_ICallFactory;
typedef struct ICallFactoryVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ICallFactory *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ICallFactory *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ICallFactory *This);
    HRESULT (__attribute__((__stdcall__)) *CreateCall)(
        ICallFactory *This,
        const IID *const riid,
        IUnknown *pCtrlUnk,
        const IID *const riid2,
        IUnknown **ppv);
   
} ICallFactoryVtbl;
struct ICallFactory {
    ICallFactoryVtbl* lpVtbl;
};
#define __IRpcHelper_INTERFACE_DEFINED__ 
extern const GUID IID_IRpcHelper;
typedef struct IRpcHelperVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IRpcHelper *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IRpcHelper *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IRpcHelper *This);
    HRESULT (__attribute__((__stdcall__)) *GetDCOMProtocolVersion)(
        IRpcHelper *This,
        DWORD *pComVersion);
    HRESULT (__attribute__((__stdcall__)) *GetIIDFromOBJREF)(
        IRpcHelper *This,
        void *pObjRef,
        IID **piid);
   
} IRpcHelperVtbl;
struct IRpcHelper {
    IRpcHelperVtbl* lpVtbl;
};
#define __IReleaseMarshalBuffers_INTERFACE_DEFINED__ 
extern const GUID IID_IReleaseMarshalBuffers;
typedef struct IReleaseMarshalBuffersVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IReleaseMarshalBuffers *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IReleaseMarshalBuffers *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IReleaseMarshalBuffers *This);
    HRESULT (__attribute__((__stdcall__)) *ReleaseMarshalBuffer)(
        IReleaseMarshalBuffers *This,
        RPCOLEMESSAGE *pMsg,
        DWORD dwFlags,
        IUnknown *pChnl);
   
} IReleaseMarshalBuffersVtbl;
struct IReleaseMarshalBuffers {
    IReleaseMarshalBuffersVtbl* lpVtbl;
};
#define __IWaitMultiple_INTERFACE_DEFINED__ 
extern const GUID IID_IWaitMultiple;
typedef struct IWaitMultipleVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IWaitMultiple *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IWaitMultiple *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IWaitMultiple *This);
    HRESULT (__attribute__((__stdcall__)) *WaitMultiple)(
        IWaitMultiple *This,
        DWORD timeout,
        ISynchronize **pSync);
    HRESULT (__attribute__((__stdcall__)) *AddSynchronize)(
        IWaitMultiple *This,
        ISynchronize *pSync);
   
} IWaitMultipleVtbl;
struct IWaitMultiple {
    IWaitMultipleVtbl* lpVtbl;
};
#define __IAddrTrackingControl_INTERFACE_DEFINED__ 
typedef IAddrTrackingControl *LPADDRTRACKINGCONTROL;
extern const GUID IID_IAddrTrackingControl;
typedef struct IAddrTrackingControlVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IAddrTrackingControl *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IAddrTrackingControl *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IAddrTrackingControl *This);
    HRESULT (__attribute__((__stdcall__)) *EnableCOMDynamicAddrTracking)(
        IAddrTrackingControl *This);
    HRESULT (__attribute__((__stdcall__)) *DisableCOMDynamicAddrTracking)(
        IAddrTrackingControl *This);
   
} IAddrTrackingControlVtbl;
struct IAddrTrackingControl {
    IAddrTrackingControlVtbl* lpVtbl;
};
#define __IAddrExclusionControl_INTERFACE_DEFINED__ 
typedef IAddrExclusionControl *LPADDREXCLUSIONCONTROL;
extern const GUID IID_IAddrExclusionControl;
typedef struct IAddrExclusionControlVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IAddrExclusionControl *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IAddrExclusionControl *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IAddrExclusionControl *This);
    HRESULT (__attribute__((__stdcall__)) *GetCurrentAddrExclusionList)(
        IAddrExclusionControl *This,
        const IID *const riid,
        void **ppEnumerator);
    HRESULT (__attribute__((__stdcall__)) *UpdateAddrExclusionList)(
        IAddrExclusionControl *This,
        IUnknown *pEnumerator);
   
} IAddrExclusionControlVtbl;
struct IAddrExclusionControl {
    IAddrExclusionControlVtbl* lpVtbl;
};
#define __IPipeByte_INTERFACE_DEFINED__ 
extern const GUID IID_IPipeByte;
typedef struct IPipeByteVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPipeByte *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPipeByte *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPipeByte *This);
    HRESULT (__attribute__((__stdcall__)) *Pull)(
        IPipeByte *This,
        BYTE *buf,
        ULONG cRequest,
        ULONG *pcReturned);
    HRESULT (__attribute__((__stdcall__)) *Push)(
        IPipeByte *This,
        BYTE *buf,
        ULONG cSent);
   
} IPipeByteVtbl;
struct IPipeByte {
    IPipeByteVtbl* lpVtbl;
};
#define __IPipeLong_INTERFACE_DEFINED__ 
extern const GUID IID_IPipeLong;
typedef struct IPipeLongVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPipeLong *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPipeLong *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPipeLong *This);
    HRESULT (__attribute__((__stdcall__)) *Pull)(
        IPipeLong *This,
        LONG *buf,
        ULONG cRequest,
        ULONG *pcReturned);
    HRESULT (__attribute__((__stdcall__)) *Push)(
        IPipeLong *This,
        LONG *buf,
        ULONG cSent);
   
} IPipeLongVtbl;
struct IPipeLong {
    IPipeLongVtbl* lpVtbl;
};
#define __IPipeDouble_INTERFACE_DEFINED__ 
extern const GUID IID_IPipeDouble;
typedef struct IPipeDoubleVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPipeDouble *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPipeDouble *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPipeDouble *This);
    HRESULT (__attribute__((__stdcall__)) *Pull)(
        IPipeDouble *This,
        DOUBLE *buf,
        ULONG cRequest,
        ULONG *pcReturned);
    HRESULT (__attribute__((__stdcall__)) *Push)(
        IPipeDouble *This,
        DOUBLE *buf,
        ULONG cSent);
   
} IPipeDoubleVtbl;
struct IPipeDouble {
    IPipeDoubleVtbl* lpVtbl;
};
typedef enum _APTTYPEQUALIFIER {
    APTTYPEQUALIFIER_NONE = 0,
    APTTYPEQUALIFIER_IMPLICIT_MTA = 1,
    APTTYPEQUALIFIER_NA_ON_MTA = 2,
    APTTYPEQUALIFIER_NA_ON_STA = 3,
    APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA = 4,
    APTTYPEQUALIFIER_NA_ON_MAINSTA = 5,
    APTTYPEQUALIFIER_APPLICATION_STA = 6
} APTTYPEQUALIFIER;
typedef enum _APTTYPE {
    APTTYPE_CURRENT = -1,
    APTTYPE_STA = 0,
    APTTYPE_MTA = 1,
    APTTYPE_NA = 2,
    APTTYPE_MAINSTA = 3
} APTTYPE;
typedef enum _THDTYPE {
    THDTYPE_BLOCKMESSAGES = 0,
    THDTYPE_PROCESSMESSAGES = 1
} THDTYPE;
typedef DWORD APARTMENTID;
#define __IComThreadingInfo_INTERFACE_DEFINED__ 
extern const GUID IID_IComThreadingInfo;
typedef struct IComThreadingInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IComThreadingInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IComThreadingInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IComThreadingInfo *This);
    HRESULT (__attribute__((__stdcall__)) *GetCurrentApartmentType)(
        IComThreadingInfo *This,
        APTTYPE *pAptType);
    HRESULT (__attribute__((__stdcall__)) *GetCurrentThreadType)(
        IComThreadingInfo *This,
        THDTYPE *pThreadType);
    HRESULT (__attribute__((__stdcall__)) *GetCurrentLogicalThreadId)(
        IComThreadingInfo *This,
        GUID *pguidLogicalThreadId);
    HRESULT (__attribute__((__stdcall__)) *SetCurrentLogicalThreadId)(
        IComThreadingInfo *This,
        const GUID *const rguid);
   
} IComThreadingInfoVtbl;
struct IComThreadingInfo {
    IComThreadingInfoVtbl* lpVtbl;
};
#define __IProcessInitControl_INTERFACE_DEFINED__ 
extern const GUID IID_IProcessInitControl;
typedef struct IProcessInitControlVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IProcessInitControl *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IProcessInitControl *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IProcessInitControl *This);
    HRESULT (__attribute__((__stdcall__)) *ResetInitializerTimeout)(
        IProcessInitControl *This,
        DWORD dwSecondsRemaining);
   
} IProcessInitControlVtbl;
struct IProcessInitControl {
    IProcessInitControlVtbl* lpVtbl;
};
#define __IFastRundown_INTERFACE_DEFINED__ 
extern const GUID IID_IFastRundown;
typedef struct IFastRundownVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IFastRundown *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IFastRundown *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IFastRundown *This);
   
} IFastRundownVtbl;
struct IFastRundown {
    IFastRundownVtbl* lpVtbl;
};
typedef enum CO_MARSHALING_CONTEXT_ATTRIBUTES {
    CO_MARSHALING_SOURCE_IS_APP_CONTAINER = 0
} CO_MARSHALING_CONTEXT_ATTRIBUTES;
#define __IMarshalingStream_INTERFACE_DEFINED__ 
extern const GUID IID_IMarshalingStream;
typedef struct IMarshalingStreamVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IMarshalingStream *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IMarshalingStream *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IMarshalingStream *This);
    HRESULT (__attribute__((__stdcall__)) *Read)(
        IMarshalingStream *This,
        void *pv,
        ULONG cb,
        ULONG *pcbRead);
    HRESULT (__attribute__((__stdcall__)) *Write)(
        IMarshalingStream *This,
        const void *pv,
        ULONG cb,
        ULONG *pcbWritten);
    HRESULT (__attribute__((__stdcall__)) *Seek)(
        IMarshalingStream *This,
        LARGE_INTEGER dlibMove,
        DWORD dwOrigin,
        ULARGE_INTEGER *plibNewPosition);
    HRESULT (__attribute__((__stdcall__)) *SetSize)(
        IMarshalingStream *This,
        ULARGE_INTEGER libNewSize);
    HRESULT (__attribute__((__stdcall__)) *CopyTo)(
        IMarshalingStream *This,
        IStream *pstm,
        ULARGE_INTEGER cb,
        ULARGE_INTEGER *pcbRead,
        ULARGE_INTEGER *pcbWritten);
    HRESULT (__attribute__((__stdcall__)) *Commit)(
        IMarshalingStream *This,
        DWORD grfCommitFlags);
    HRESULT (__attribute__((__stdcall__)) *Revert)(
        IMarshalingStream *This);
    HRESULT (__attribute__((__stdcall__)) *LockRegion)(
        IMarshalingStream *This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);
    HRESULT (__attribute__((__stdcall__)) *UnlockRegion)(
        IMarshalingStream *This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);
    HRESULT (__attribute__((__stdcall__)) *Stat)(
        IMarshalingStream *This,
        STATSTG *pstatstg,
        DWORD grfStatFlag);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IMarshalingStream *This,
        IStream **ppstm);
    HRESULT (__attribute__((__stdcall__)) *GetMarshalingContextAttribute)(
        IMarshalingStream *This,
        CO_MARSHALING_CONTEXT_ATTRIBUTES attribute,
        ULONG_PTR *pAttributeValue);
   
} IMarshalingStreamVtbl;
struct IMarshalingStream {
    IMarshalingStreamVtbl* lpVtbl;
};
extern const GUID IID_ICallbackWithNoReentrancyToApplicationSTA;
#define _OBJIDLBASE_ 
#undef DEFINE_GUID
#define DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) EXTERN_C const GUID name
#define DEFINE_OLEGUID(name,l,w1,w2) DEFINE_GUID (name, l, w1, w2, 0xc0, 0, 0, 0, 0, 0, 0, 0x46)
#define __CGUID_H__ 
  extern const IID GUID_NULL;
  extern const IID CATID_MARSHALER;
  extern const IID IID_IRpcChannel;
  extern const IID IID_IRpcStub;
  extern const IID IID_IStubManager;
  extern const IID IID_IRpcProxy;
  extern const IID IID_IProxyManager;
  extern const IID IID_IPSFactory;
  extern const IID IID_IInternalMoniker;
  extern const IID IID_IDfReserved1;
  extern const IID IID_IDfReserved2;
  extern const IID IID_IDfReserved3;
  extern const CLSID CLSID_StdMarshal;
  extern const CLSID CLSID_AggStdMarshal;
  extern const CLSID CLSID_StdAsyncActManager;
  extern const IID IID_IStub;
  extern const IID IID_IProxy;
  extern const IID IID_IEnumGeneric;
  extern const IID IID_IEnumHolder;
  extern const IID IID_IEnumCallback;
  extern const IID IID_IOleManager;
  extern const IID IID_IOlePresObj;
  extern const IID IID_IDebug;
  extern const IID IID_IDebugStream;
  extern const CLSID CLSID_PSGenObject;
  extern const CLSID CLSID_PSClientSite;
  extern const CLSID CLSID_PSClassObject;
  extern const CLSID CLSID_PSInPlaceActive;
  extern const CLSID CLSID_PSInPlaceFrame;
  extern const CLSID CLSID_PSDragDrop;
  extern const CLSID CLSID_PSBindCtx;
  extern const CLSID CLSID_PSEnumerators;
  extern const CLSID CLSID_StaticMetafile;
  extern const CLSID CLSID_StaticDib;
  extern const CLSID CID_CDfsVolume;
  extern const CLSID CLSID_DCOMAccessControl;
  extern const CLSID CLSID_GlobalOptions;
  extern const CLSID CLSID_StdGlobalInterfaceTable;
  extern const CLSID CLSID_ComBinding;
  extern const CLSID CLSID_StdEvent;
  extern const CLSID CLSID_ManualResetEvent;
  extern const CLSID CLSID_SynchronizeContainer;
  extern const CLSID CLSID_AddrControl;
  extern const CLSID CLSID_CCDFormKrnl;
  extern const CLSID CLSID_CCDPropertyPage;
  extern const CLSID CLSID_CCDFormDialog;
  extern const CLSID CLSID_CCDCommandButton;
  extern const CLSID CLSID_CCDComboBox;
  extern const CLSID CLSID_CCDTextBox;
  extern const CLSID CLSID_CCDCheckBox;
  extern const CLSID CLSID_CCDLabel;
  extern const CLSID CLSID_CCDOptionButton;
  extern const CLSID CLSID_CCDListBox;
  extern const CLSID CLSID_CCDScrollBar;
  extern const CLSID CLSID_CCDGroupBox;
  extern const CLSID CLSID_CCDGeneralPropertyPage;
  extern const CLSID CLSID_CCDGenericPropertyPage;
  extern const CLSID CLSID_CCDFontPropertyPage;
  extern const CLSID CLSID_CCDColorPropertyPage;
  extern const CLSID CLSID_CCDLabelPropertyPage;
  extern const CLSID CLSID_CCDCheckBoxPropertyPage;
  extern const CLSID CLSID_CCDTextBoxPropertyPage;
  extern const CLSID CLSID_CCDOptionButtonPropertyPage;
  extern const CLSID CLSID_CCDListBoxPropertyPage;
  extern const CLSID CLSID_CCDCommandButtonPropertyPage;
  extern const CLSID CLSID_CCDComboBoxPropertyPage;
  extern const CLSID CLSID_CCDScrollBarPropertyPage;
  extern const CLSID CLSID_CCDGroupBoxPropertyPage;
  extern const CLSID CLSID_CCDXObjectPropertyPage;
  extern const CLSID CLSID_CStdPropertyFrame;
  extern const CLSID CLSID_CFormPropertyPage;
  extern const CLSID CLSID_CGridPropertyPage;
  extern const CLSID CLSID_CWSJArticlePage;
  extern const CLSID CLSID_CSystemPage;
  extern const CLSID CLSID_IdentityUnmarshal;
  extern const CLSID CLSID_InProcFreeMarshaler;
  extern const CLSID CLSID_Picture_Metafile;
  extern const CLSID CLSID_Picture_EnhMetafile;
  extern const CLSID CLSID_Picture_Dib;
  extern const GUID GUID_TRISTATE;
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateStreamOnHGlobal (HGLOBAL hGlobal, WINBOOL fDeleteOnRelease, LPSTREAM *ppstm);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) GetHGlobalFromStream (LPSTREAM pstm, HGLOBAL *phglobal);
extern __attribute__((dllimport)) void __attribute__((__stdcall__)) CoUninitialize (void);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoInitializeEx (LPVOID pvReserved, DWORD dwCoInit);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetCurrentLogicalThreadId (GUID *pguid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetContextToken (ULONG_PTR *pToken);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetObjectContext (const IID *const riid, LPVOID *ppv);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoRegisterClassObject (const IID *const rclsid, LPUNKNOWN pUnk, DWORD dwClsContext, DWORD flags, LPDWORD lpdwRegister);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoRevokeClassObject (DWORD dwRegister);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoResumeClassObjects (void);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoSuspendClassObjects (void);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetMalloc (DWORD dwMemContext, LPMALLOC *ppMalloc);
extern __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CoGetCurrentProcess (void);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetCallerTID (LPDWORD lpdwTID);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetDefaultContext (APTTYPE aptType, const IID *const riid, void **ppv);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetClassObject (const IID *const rclsid, DWORD dwClsContext, LPVOID pvReserved, const IID *const riid, LPVOID *ppv);
extern __attribute__((dllimport)) ULONG __attribute__((__stdcall__)) CoAddRefServerProcess (void);
extern __attribute__((dllimport)) ULONG __attribute__((__stdcall__)) CoReleaseServerProcess (void);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetPSClsid (const IID *const riid, CLSID *pClsid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoRegisterPSClsid (const IID *const riid, const IID *const rclsid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoRegisterSurrogate (LPSURROGATE pSurrogate);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoMarshalHresult (LPSTREAM pstm, HRESULT hresult);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoUnmarshalHresult (LPSTREAM pstm, HRESULT *phresult);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoLockObjectExternal (LPUNKNOWN pUnk, WINBOOL fLock, WINBOOL fLastUnlockReleases);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetStdMarshalEx (LPUNKNOWN pUnkOuter, DWORD smexflags, LPUNKNOWN *ppUnkInner);
typedef enum tagSTDMSHLFLAGS {
  SMEXF_SERVER = 0x01,
  SMEXF_HANDLER = 0x02
} STDMSHLFLAGS;
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetMarshalSizeMax (ULONG *pulSize, const IID *const riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoMarshalInterface (LPSTREAM pStm, const IID *const riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoUnmarshalInterface (LPSTREAM pStm, const IID *const riid, LPVOID *ppv);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoReleaseMarshalData (LPSTREAM pStm);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoDisconnectObject (LPUNKNOWN pUnk, DWORD dwReserved);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetStandardMarshal (const IID *const riid, LPUNKNOWN pUnk, DWORD dwDestContext, LPVOID pvDestContext, DWORD mshlflags, LPMARSHAL *ppMarshal);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoMarshalInterThreadInterfaceInStream (const IID *const riid, LPUNKNOWN pUnk, LPSTREAM *ppStm);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetInterfaceAndReleaseStream (LPSTREAM pStm, const IID *const iid, LPVOID *ppv);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoCreateFreeThreadedMarshaler (LPUNKNOWN punkOuter, LPUNKNOWN *ppunkMarshal);
extern __attribute__((dllimport)) void __attribute__((__stdcall__)) CoFreeUnusedLibraries (void);
extern __attribute__((dllimport)) void __attribute__((__stdcall__)) CoFreeUnusedLibrariesEx (DWORD dwUnloadDelay, DWORD dwReserved);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoInitializeSecurity (PSECURITY_DESCRIPTOR pSecDesc, LONG cAuthSvc, SOLE_AUTHENTICATION_SERVICE *asAuthSvc, void *pReserved1, DWORD dwAuthnLevel, DWORD dwImpLevel, void *pAuthList, DWORD dwCapabilities, void *pReserved3);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoSwitchCallContext (IUnknown *pNewObject, IUnknown **ppOldObject);
#define COM_RIGHTS_EXECUTE 1
#define COM_RIGHTS_EXECUTE_LOCAL 2
#define COM_RIGHTS_EXECUTE_REMOTE 4
#define COM_RIGHTS_ACTIVATE_LOCAL 8
#define COM_RIGHTS_ACTIVATE_REMOTE 16
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoCreateInstanceFromApp (const IID *const Clsid, IUnknown *punkOuter, DWORD dwClsCtx, PVOID reserved, DWORD dwCount, MULTI_QI *pResults);
extern __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CoIsHandlerConnected (LPUNKNOWN pUnk);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoDisconnectContext (DWORD dwTimeout);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetCallContext (const IID *const riid, void **ppInterface);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoQueryProxyBlanket (IUnknown *pProxy, DWORD *pwAuthnSvc, DWORD *pAuthzSvc, LPOLESTR *pServerPrincName, DWORD *pAuthnLevel, DWORD *pImpLevel, RPC_AUTH_IDENTITY_HANDLE *pAuthInfo, DWORD *pCapabilites);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoSetProxyBlanket (IUnknown *pProxy, DWORD dwAuthnSvc, DWORD dwAuthzSvc, OLECHAR *pServerPrincName, DWORD dwAuthnLevel, DWORD dwImpLevel, RPC_AUTH_IDENTITY_HANDLE pAuthInfo, DWORD dwCapabilities);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoCopyProxy (IUnknown *pProxy, IUnknown **ppCopy);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoQueryClientBlanket (DWORD *pAuthnSvc, DWORD *pAuthzSvc, LPOLESTR *pServerPrincName, DWORD *pAuthnLevel, DWORD *pImpLevel, RPC_AUTHZ_HANDLE *pPrivs, DWORD *pCapabilities);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoImpersonateClient (void);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoRevertToSelf (void);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoQueryAuthenticationServices (DWORD *pcAuthSvc, SOLE_AUTHENTICATION_SERVICE **asAuthSvc);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoCreateInstance (const IID *const rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, const IID *const riid, LPVOID *ppv);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoCreateInstanceEx (const IID *const Clsid, IUnknown *punkOuter, DWORD dwClsCtx, COSERVERINFO *pServerInfo, DWORD dwCount, MULTI_QI *pResults);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetCancelObject (DWORD dwThreadId, const IID *const iid, void **ppUnk);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoSetCancelObject (IUnknown *pUnk);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoCancelCall (DWORD dwThreadId, ULONG ulTimeout);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoTestCancel (void);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoEnableCallCancellation (LPVOID pReserved);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoDisableCallCancellation (LPVOID pReserved);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StringFromCLSID (const IID *const rclsid, LPOLESTR *lplpsz);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CLSIDFromString (LPCOLESTR lpsz, LPCLSID pclsid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StringFromIID (const IID *const rclsid, LPOLESTR *lplpsz);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) IIDFromString (LPCOLESTR lpsz, LPIID lpiid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) ProgIDFromCLSID (const IID *const clsid, LPOLESTR *lplpszProgID);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CLSIDFromProgID (LPCOLESTR lpszProgID, LPCLSID lpclsid);
extern __attribute__((dllimport)) int __attribute__((__stdcall__)) StringFromGUID2 (const GUID *const rguid, LPOLESTR lpsz, int cchMax);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoCreateGuid (GUID *pguid);
typedef struct tagPROPVARIANT PROPVARIANT;
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) PropVariantCopy (PROPVARIANT *pvarDest, const PROPVARIANT *pvarSrc);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) PropVariantClear (PROPVARIANT *pvar);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) FreePropVariantArray (ULONG cVariants, PROPVARIANT *rgvars);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoWaitForMultipleHandles (DWORD dwFlags, DWORD dwTimeout, ULONG cHandles, LPHANDLE pHandles, LPDWORD lpdwindex);
typedef enum tagCOWAIT_FLAGS {
  COWAIT_DEFAULT = 0,
  COWAIT_WAITALL = 1,
  COWAIT_ALERTABLE = 2,
  COWAIT_INPUTAVAILABLE = 4
  , COWAIT_DISPATCH_CALLS = 8,
  COWAIT_DISPATCH_WINDOW_MESSAGES = 0x10
} COWAIT_FLAGS;
#define CWMO_MAX_HANDLES 56
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetTreatAsClass (const IID *const clsidOld, LPCLSID pClsidNew);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoInvalidateRemoteMachineBindings (LPOLESTR pszMachineName);
typedef HRESULT (__attribute__((__stdcall__)) *LPFNGETCLASSOBJECT) (const IID *const, const IID *const, LPVOID *);
typedef HRESULT (__attribute__((__stdcall__)) *LPFNCANUNLOADNOW) (void);
extern HRESULT __attribute__((__stdcall__)) DllGetClassObject (const IID *const rclsid, const IID *const riid, LPVOID *ppv);
extern HRESULT __attribute__((__stdcall__)) DllCanUnloadNow (void);
extern __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) CoTaskMemAlloc (SIZE_T cb);
extern __attribute__((dllimport)) LPVOID __attribute__((__stdcall__)) CoTaskMemRealloc (LPVOID pv, SIZE_T cb);
extern __attribute__((dllimport)) void __attribute__((__stdcall__)) CoTaskMemFree (LPVOID pv);
#pragma pack(pop)
typedef enum tagCOINIT {
  COINIT_APARTMENTTHREADED = 0x2,
  COINIT_MULTITHREADED = COINITBASE_MULTITHREADED,
  COINIT_DISABLE_OLE1DDE = 0x4,
  COINIT_SPEED_OVER_MEMORY = 0x8
} COINIT;
#define MARSHALINTERFACE_MIN 500
#define CWCSTORAGENAME 32
#define STGM_DIRECT __MSABI_LONG(0x00000000)
#define STGM_TRANSACTED __MSABI_LONG(0x00010000)
#define STGM_SIMPLE __MSABI_LONG(0x08000000)
#define STGM_READ __MSABI_LONG(0x00000000)
#define STGM_WRITE __MSABI_LONG(0x00000001)
#define STGM_READWRITE __MSABI_LONG(0x00000002)
#define STGM_SHARE_DENY_NONE __MSABI_LONG(0x00000040)
#define STGM_SHARE_DENY_READ __MSABI_LONG(0x00000030)
#define STGM_SHARE_DENY_WRITE __MSABI_LONG(0x00000020)
#define STGM_SHARE_EXCLUSIVE __MSABI_LONG(0x00000010)
#define STGM_PRIORITY __MSABI_LONG(0x00040000)
#define STGM_DELETEONRELEASE __MSABI_LONG(0x04000000)
#define STGM_NOSCRATCH __MSABI_LONG(0x00100000)
#define STGM_CREATE __MSABI_LONG(0x00001000)
#define STGM_CONVERT __MSABI_LONG(0x00020000)
#define STGM_FAILIFTHERE __MSABI_LONG(0x00000000)
#define STGM_NOSNAPSHOT __MSABI_LONG(0x00200000)
#define STGM_DIRECT_SWMR __MSABI_LONG(0x00400000)
#define ASYNC_MODE_COMPATIBILITY __MSABI_LONG(0x00000001)
#define ASYNC_MODE_DEFAULT __MSABI_LONG(0x00000000)
#define STGTY_REPEAT __MSABI_LONG(0x00000100)
#define STG_TOEND __MSABI_LONG(0xffffffff)
#define STG_LAYOUT_SEQUENTIAL __MSABI_LONG(0x00000000)
#define STG_LAYOUT_INTERLEAVED __MSABI_LONG(0x00000001)
typedef DWORD STGFMT;
#define STGFMT_STORAGE 0
#define STGFMT_NATIVE 1
#define STGFMT_FILE 3
#define STGFMT_ANY 4
#define STGFMT_DOCFILE 5
#define STGFMT_DOCUMENT 0
#undef interface
#define interface struct
#define __objidl_h__ 
#define __IMallocSpy_FWD_DEFINED__ 
typedef struct IMallocSpy IMallocSpy;
#define __IBindCtx_FWD_DEFINED__ 
typedef struct IBindCtx IBindCtx;
#define __IEnumMoniker_FWD_DEFINED__ 
typedef struct IEnumMoniker IEnumMoniker;
#define __IRunnableObject_FWD_DEFINED__ 
typedef struct IRunnableObject IRunnableObject;
#define __IRunningObjectTable_FWD_DEFINED__ 
typedef struct IRunningObjectTable IRunningObjectTable;
#define __IPersist_FWD_DEFINED__ 
typedef struct IPersist IPersist;
#define __IPersistStream_FWD_DEFINED__ 
typedef struct IPersistStream IPersistStream;
#define __IMoniker_FWD_DEFINED__ 
typedef struct IMoniker IMoniker;
#define __IROTData_FWD_DEFINED__ 
typedef struct IROTData IROTData;
#define __IEnumSTATSTG_FWD_DEFINED__ 
typedef struct IEnumSTATSTG IEnumSTATSTG;
#define __IStorage_FWD_DEFINED__ 
typedef struct IStorage IStorage;
#define __IPersistFile_FWD_DEFINED__ 
typedef struct IPersistFile IPersistFile;
#define __IPersistStorage_FWD_DEFINED__ 
typedef struct IPersistStorage IPersistStorage;
#define __ILockBytes_FWD_DEFINED__ 
typedef struct ILockBytes ILockBytes;
#define __IEnumFORMATETC_FWD_DEFINED__ 
typedef struct IEnumFORMATETC IEnumFORMATETC;
#define __IEnumSTATDATA_FWD_DEFINED__ 
typedef struct IEnumSTATDATA IEnumSTATDATA;
#define __IRootStorage_FWD_DEFINED__ 
typedef struct IRootStorage IRootStorage;
#define __IAdviseSink_FWD_DEFINED__ 
typedef struct IAdviseSink IAdviseSink;
#define __AsyncIAdviseSink_FWD_DEFINED__ 
typedef struct AsyncIAdviseSink AsyncIAdviseSink;
#define __IAdviseSink2_FWD_DEFINED__ 
typedef struct IAdviseSink2 IAdviseSink2;
#define __AsyncIAdviseSink2_FWD_DEFINED__ 
typedef struct AsyncIAdviseSink2 AsyncIAdviseSink2;
#define __IDataObject_FWD_DEFINED__ 
typedef struct IDataObject IDataObject;
#define __IDataAdviseHolder_FWD_DEFINED__ 
typedef struct IDataAdviseHolder IDataAdviseHolder;
#define __IMessageFilter_FWD_DEFINED__ 
typedef struct IMessageFilter IMessageFilter;
#define __IClassActivator_FWD_DEFINED__ 
typedef struct IClassActivator IClassActivator;
#define __IFillLockBytes_FWD_DEFINED__ 
typedef struct IFillLockBytes IFillLockBytes;
#define __IProgressNotify_FWD_DEFINED__ 
typedef struct IProgressNotify IProgressNotify;
#define __ILayoutStorage_FWD_DEFINED__ 
typedef struct ILayoutStorage ILayoutStorage;
#define __IBlockingLock_FWD_DEFINED__ 
typedef struct IBlockingLock IBlockingLock;
#define __ITimeAndNoticeControl_FWD_DEFINED__ 
typedef struct ITimeAndNoticeControl ITimeAndNoticeControl;
#define __IOplockStorage_FWD_DEFINED__ 
typedef struct IOplockStorage IOplockStorage;
#define __IDirectWriterLock_FWD_DEFINED__ 
typedef struct IDirectWriterLock IDirectWriterLock;
#define __IUrlMon_FWD_DEFINED__ 
typedef struct IUrlMon IUrlMon;
#define __IForegroundTransfer_FWD_DEFINED__ 
typedef struct IForegroundTransfer IForegroundTransfer;
#define __IThumbnailExtractor_FWD_DEFINED__ 
typedef struct IThumbnailExtractor IThumbnailExtractor;
#define __IDummyHICONIncluder_FWD_DEFINED__ 
typedef struct IDummyHICONIncluder IDummyHICONIncluder;
#define __IProcessLock_FWD_DEFINED__ 
typedef struct IProcessLock IProcessLock;
#define __ISurrogateService_FWD_DEFINED__ 
typedef struct ISurrogateService ISurrogateService;
#define __IInitializeSpy_FWD_DEFINED__ 
typedef struct IInitializeSpy IInitializeSpy;
#define __IApartmentShutdown_FWD_DEFINED__ 
typedef struct IApartmentShutdown IApartmentShutdown;
#undef interface
#define interface struct
#define __unknwn_h__ 
#undef interface
#define interface struct
#define __wtypes_h__ 
#undef interface
#define interface struct
#define __IWinTypes_INTERFACE_DEFINED__ 
extern RPC_IF_HANDLE IWinTypes_v0_1_c_ifspec;
extern RPC_IF_HANDLE IWinTypes_v0_1_s_ifspec;
typedef struct tagRemHGLOBAL {
    LONG fNullHGlobal;
    ULONG cbData;
    byte data[1];
} RemHGLOBAL;
typedef struct tagRemHMETAFILEPICT {
    LONG mm;
    LONG xExt;
    LONG yExt;
    ULONG cbData;
    byte data[1];
} RemHMETAFILEPICT;
typedef struct tagRemHENHMETAFILE {
    ULONG cbData;
    byte data[1];
} RemHENHMETAFILE;
typedef struct tagRemHBITMAP {
    ULONG cbData;
    byte data[1];
} RemHBITMAP;
typedef struct tagRemHPALETTE {
    ULONG cbData;
    byte data[1];
} RemHPALETTE;
typedef struct tagRemBRUSH {
    ULONG cbData;
    byte data[1];
} RemHBRUSH;
#define _ROTFLAGS_DEFINED 
#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1
#define ROTFLAGS_ALLOWANYCLIENT 0x2
#define _ROT_COMPARE_MAX_DEFINED 
#define ROT_COMPARE_MAX 2048
typedef enum tagDVASPECT {
    DVASPECT_CONTENT = 1,
    DVASPECT_THUMBNAIL = 2,
    DVASPECT_ICON = 4,
    DVASPECT_DOCPRINT = 8
} DVASPECT;
typedef enum tagSTGC {
    STGC_DEFAULT = 0,
    STGC_OVERWRITE = 1,
    STGC_ONLYIFCURRENT = 2,
    STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
    STGC_CONSOLIDATE = 8
} STGC;
typedef enum tagSTGMOVE {
    STGMOVE_MOVE = 0,
    STGMOVE_COPY = 1,
    STGMOVE_SHALLOWCOPY = 2
} STGMOVE;
typedef enum tagSTATFLAG {
    STATFLAG_DEFAULT = 0,
    STATFLAG_NONAME = 1,
    STATFLAG_NOOPEN = 2
} STATFLAG;
typedef void *HCONTEXT;
#define WDT_INPROC_CALL (0x48746457)
#define WDT_REMOTE_CALL (0x52746457)
#define WDT_INPROC64_CALL (0x50746457)
typedef struct _userCLIPFORMAT {
    LONG fContext;
    union __WIDL_wtypes_generated_name_00000001 {
        DWORD dwValue;
        wchar_t *pwszName;
    } u;
} userCLIPFORMAT;
typedef userCLIPFORMAT *wireCLIPFORMAT;
typedef WORD CLIPFORMAT;
typedef struct _GDI_NONREMOTE {
    LONG fContext;
    union __WIDL_wtypes_generated_name_00000002 {
        LONG hInproc;
        DWORD_BLOB *hRemote;
    } u;
} GDI_NONREMOTE;
typedef struct _userHGLOBAL {
    LONG fContext;
    union __WIDL_wtypes_generated_name_00000003 {
        LONG hInproc;
        FLAGGED_BYTE_BLOB *hRemote;
        INT64 hInproc64;
    } u;
} userHGLOBAL;
typedef userHGLOBAL *wireHGLOBAL;
typedef struct _userHMETAFILE {
    LONG fContext;
    union __WIDL_wtypes_generated_name_00000004 {
        LONG hInproc;
        BYTE_BLOB *hRemote;
        INT64 hInproc64;
    } u;
} userHMETAFILE;
typedef struct _remoteMETAFILEPICT {
    LONG mm;
    LONG xExt;
    LONG yExt;
    userHMETAFILE *hMF;
} remoteMETAFILEPICT;
typedef struct _userHMETAFILEPICT {
    LONG fContext;
    union __WIDL_wtypes_generated_name_00000005 {
        LONG hInproc;
        remoteMETAFILEPICT *hRemote;
        INT64 hInproc64;
    } u;
} userHMETAFILEPICT;
typedef struct _userHENHMETAFILE {
    LONG fContext;
    union __WIDL_wtypes_generated_name_00000006 {
        LONG hInproc;
        BYTE_BLOB *hRemote;
        INT64 hInproc64;
    } u;
} userHENHMETAFILE;
typedef struct _userBITMAP {
    LONG bmType;
    LONG bmWidth;
    LONG bmHeight;
    LONG bmWidthBytes;
    WORD bmPlanes;
    WORD bmBitsPixel;
    ULONG cbSize;
    byte pBuffer[1];
} userBITMAP;
typedef struct _userHBITMAP {
    LONG fContext;
    union __WIDL_wtypes_generated_name_00000007 {
        LONG hInproc;
        userBITMAP *hRemote;
        INT64 hInproc64;
    } u;
} userHBITMAP;
typedef struct _userHPALETTE {
    LONG fContext;
    union __WIDL_wtypes_generated_name_00000008 {
        LONG hInproc;
        LOGPALETTE *hRemote;
        INT64 hInproc64;
    } u;
} userHPALETTE;
typedef struct _RemotableHandle {
    LONG fContext;
    union __WIDL_wtypes_generated_name_00000009 {
        LONG hInproc;
        LONG hRemote;
    } u;
} RemotableHandle;
typedef RemotableHandle *wireHWND;
typedef RemotableHandle *wireHMENU;
typedef RemotableHandle *wireHACCEL;
typedef RemotableHandle *wireHBRUSH;
typedef RemotableHandle *wireHFONT;
typedef RemotableHandle *wireHDC;
typedef RemotableHandle *wireHICON;
typedef RemotableHandle *wireHRGN;
typedef RemotableHandle *wireHMONITOR;
typedef userHBITMAP *wireHBITMAP;
typedef userHPALETTE *wireHPALETTE;
typedef userHENHMETAFILE *wireHENHMETAFILE;
typedef userHMETAFILE *wireHMETAFILE;
typedef userHMETAFILEPICT *wireHMETAFILEPICT;
typedef void *HMETAFILEPICT;
typedef double DATE;
#define _tagCY_DEFINED 
#define _CY_DEFINED 
typedef union tagCY {
  __extension__ struct {
    unsigned long Lo;
    long Hi;
  } ;
  LONGLONG int64;
} CY;
typedef CY *LPCY;
typedef struct tagDEC {
  USHORT wReserved;
  __extension__ union {
    __extension__ struct {
      BYTE scale;
      BYTE sign;
    } ;
    USHORT signscale;
  } ;
  ULONG Hi32;
  __extension__ union {
    __extension__ struct {
      ULONG Lo32;
      ULONG Mid32;
    } ;
    ULONGLONG Lo64;
  } ;
} DECIMAL;
#define DECIMAL_NEG ((BYTE)0x80)
#define DECIMAL_SETZERO(dec) { (dec).Lo64 = 0; (dec).Hi32 = 0; (dec).signscale = 0; }
typedef DECIMAL *LPDECIMAL;
typedef FLAGGED_WORD_BLOB *wireBSTR;
typedef OLECHAR *BSTR;
typedef BSTR *LPBSTR;
typedef short VARIANT_BOOL;
#define _VARIANT_BOOL / ##/
#define _tagBSTRBLOB_DEFINED 
typedef struct tagBSTRBLOB {
    ULONG cbSize;
    BYTE *pData;
} BSTRBLOB;
typedef struct tagBSTRBLOB *LPBSTRBLOB;
#define VARIANT_TRUE ((VARIANT_BOOL)-1)
#define VARIANT_FALSE ((VARIANT_BOOL)0)
typedef struct tagCLIPDATA {
    ULONG cbSize;
    LONG ulClipFmt;
    BYTE *pClipData;
} CLIPDATA;
#define CBPCLIPDATA(clipdata) ((clipdata).cbSize - sizeof((clipdata).ulClipFmt))
typedef unsigned short VARTYPE;
enum VARENUM {
    VT_EMPTY = 0,
    VT_NULL = 1,
    VT_I2 = 2,
    VT_I4 = 3,
    VT_R4 = 4,
    VT_R8 = 5,
    VT_CY = 6,
    VT_DATE = 7,
    VT_BSTR = 8,
    VT_DISPATCH = 9,
    VT_ERROR = 10,
    VT_BOOL = 11,
    VT_VARIANT = 12,
    VT_UNKNOWN = 13,
    VT_DECIMAL = 14,
    VT_I1 = 16,
    VT_UI1 = 17,
    VT_UI2 = 18,
    VT_UI4 = 19,
    VT_I8 = 20,
    VT_UI8 = 21,
    VT_INT = 22,
    VT_UINT = 23,
    VT_VOID = 24,
    VT_HRESULT = 25,
    VT_PTR = 26,
    VT_SAFEARRAY = 27,
    VT_CARRAY = 28,
    VT_USERDEFINED = 29,
    VT_LPSTR = 30,
    VT_LPWSTR = 31,
    VT_RECORD = 36,
    VT_INT_PTR = 37,
    VT_UINT_PTR = 38,
    VT_FILETIME = 64,
    VT_BLOB = 65,
    VT_STREAM = 66,
    VT_STORAGE = 67,
    VT_STREAMED_OBJECT = 68,
    VT_STORED_OBJECT = 69,
    VT_BLOB_OBJECT = 70,
    VT_CF = 71,
    VT_CLSID = 72,
    VT_VERSIONED_STREAM = 73,
    VT_BSTR_BLOB = 0xfff,
    VT_VECTOR = 0x1000,
    VT_ARRAY = 0x2000,
    VT_BYREF = 0x4000,
    VT_RESERVED = 0x8000,
    VT_ILLEGAL = 0xffff,
    VT_ILLEGALMASKED = 0xfff,
    VT_TYPEMASK = 0xfff
};
typedef ULONG PROPID;
#define PROPERTYKEY_DEFINED 
typedef struct _tagpropertykey {
    GUID fmtid;
    DWORD pid;
} PROPERTYKEY;
typedef struct tagCSPLATFORM {
    DWORD dwPlatformId;
    DWORD dwVersionHi;
    DWORD dwVersionLo;
    DWORD dwProcessorArch;
} CSPLATFORM;
typedef struct tagQUERYCONTEXT {
    DWORD dwContext;
    CSPLATFORM Platform;
    LCID Locale;
    DWORD dwVersionHi;
    DWORD dwVersionLo;
} QUERYCONTEXT;
typedef enum tagTYSPEC {
    TYSPEC_CLSID = 0,
    TYSPEC_FILEEXT = 1,
    TYSPEC_MIMETYPE = 2,
    TYSPEC_FILENAME = 3,
    TYSPEC_PROGID = 4,
    TYSPEC_PACKAGENAME = 5,
    TYSPEC_OBJECTID = 6
} TYSPEC;
typedef struct __WIDL_wtypes_generated_name_0000000B {
    DWORD tyspec;
    union __WIDL_wtypes_generated_name_0000000A {
        CLSID clsid;
        LPOLESTR pFileExt;
        LPOLESTR pMimeType;
        LPOLESTR pProgId;
        LPOLESTR pFileName;
        struct {
            LPOLESTR pPackageName;
            GUID PolicyId;
        } ByName;
        struct {
            GUID ObjectId;
            GUID PolicyId;
        } ByObjectId;
    } tagged_union;
} uCLSSPEC;
#undef interface
#define interface struct
#define __IMallocSpy_INTERFACE_DEFINED__ 
typedef IMallocSpy *LPMALLOCSPY;
extern const GUID IID_IMallocSpy;
typedef struct IMallocSpyVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IMallocSpy *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IMallocSpy *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IMallocSpy *This);
    SIZE_T (__attribute__((__stdcall__)) *PreAlloc)(
        IMallocSpy *This,
        SIZE_T cbRequest);
    void * (__attribute__((__stdcall__)) *PostAlloc)(
        IMallocSpy *This,
        void *pActual);
    void * (__attribute__((__stdcall__)) *PreFree)(
        IMallocSpy *This,
        void *pRequest,
        WINBOOL fSpyed);
    void (__attribute__((__stdcall__)) *PostFree)(
        IMallocSpy *This,
        WINBOOL fSpyed);
    SIZE_T (__attribute__((__stdcall__)) *PreRealloc)(
        IMallocSpy *This,
        void *pRequest,
        SIZE_T cbRequest,
        void **ppNewRequest,
        WINBOOL fSpyed);
    void * (__attribute__((__stdcall__)) *PostRealloc)(
        IMallocSpy *This,
        void *pActual,
        WINBOOL fSpyed);
    void * (__attribute__((__stdcall__)) *PreGetSize)(
        IMallocSpy *This,
        void *pRequest,
        WINBOOL fSpyed);
    SIZE_T (__attribute__((__stdcall__)) *PostGetSize)(
        IMallocSpy *This,
        SIZE_T cbActual,
        WINBOOL fSpyed);
    void * (__attribute__((__stdcall__)) *PreDidAlloc)(
        IMallocSpy *This,
        void *pRequest,
        WINBOOL fSpyed);
    int (__attribute__((__stdcall__)) *PostDidAlloc)(
        IMallocSpy *This,
        void *pRequest,
        WINBOOL fSpyed,
        int fActual);
    void (__attribute__((__stdcall__)) *PreHeapMinimize)(
        IMallocSpy *This);
    void (__attribute__((__stdcall__)) *PostHeapMinimize)(
        IMallocSpy *This);
   
} IMallocSpyVtbl;
struct IMallocSpy {
    IMallocSpyVtbl* lpVtbl;
};
#define __IBindCtx_INTERFACE_DEFINED__ 
typedef IBindCtx *LPBC;
typedef IBindCtx *LPBINDCTX;
typedef struct tagBIND_OPTS {
    DWORD cbStruct;
    DWORD grfFlags;
    DWORD grfMode;
    DWORD dwTickCountDeadline;
} BIND_OPTS;
typedef struct tagBIND_OPTS *LPBIND_OPTS;
typedef struct tagBIND_OPTS2 {
    DWORD cbStruct;
    DWORD grfFlags;
    DWORD grfMode;
    DWORD dwTickCountDeadline;
    DWORD dwTrackFlags;
    DWORD dwClassContext;
    LCID locale;
    COSERVERINFO *pServerInfo;
} BIND_OPTS2;
typedef struct tagBIND_OPTS2 *LPBIND_OPTS2;
typedef struct tagBIND_OPTS3 {
    DWORD cbStruct;
    DWORD grfFlags;
    DWORD grfMode;
    DWORD dwTickCountDeadline;
    DWORD dwTrackFlags;
    DWORD dwClassContext;
    LCID locale;
    COSERVERINFO *pServerInfo;
    HWND hwnd;
} BIND_OPTS3;
typedef struct tagBIND_OPTS3 *LPBIND_OPTS3;
typedef enum tagBIND_FLAGS {
    BIND_MAYBOTHERUSER = 1,
    BIND_JUSTTESTEXISTENCE = 2
} BIND_FLAGS;
extern const GUID IID_IBindCtx;
typedef struct IBindCtxVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IBindCtx *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IBindCtx *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IBindCtx *This);
    HRESULT (__attribute__((__stdcall__)) *RegisterObjectBound)(
        IBindCtx *This,
        IUnknown *punk);
    HRESULT (__attribute__((__stdcall__)) *RevokeObjectBound)(
        IBindCtx *This,
        IUnknown *punk);
    HRESULT (__attribute__((__stdcall__)) *ReleaseBoundObjects)(
        IBindCtx *This);
    HRESULT (__attribute__((__stdcall__)) *SetBindOptions)(
        IBindCtx *This,
        BIND_OPTS *pbindopts);
    HRESULT (__attribute__((__stdcall__)) *GetBindOptions)(
        IBindCtx *This,
        BIND_OPTS *pbindopts);
    HRESULT (__attribute__((__stdcall__)) *GetRunningObjectTable)(
        IBindCtx *This,
        IRunningObjectTable **pprot);
    HRESULT (__attribute__((__stdcall__)) *RegisterObjectParam)(
        IBindCtx *This,
        LPOLESTR pszKey,
        IUnknown *punk);
    HRESULT (__attribute__((__stdcall__)) *GetObjectParam)(
        IBindCtx *This,
        LPOLESTR pszKey,
        IUnknown **ppunk);
    HRESULT (__attribute__((__stdcall__)) *EnumObjectParam)(
        IBindCtx *This,
        IEnumString **ppenum);
    HRESULT (__attribute__((__stdcall__)) *RevokeObjectParam)(
        IBindCtx *This,
        LPOLESTR pszKey);
   
} IBindCtxVtbl;
struct IBindCtx {
    IBindCtxVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IBindCtx_RemoteSetBindOptions_Proxy(
    IBindCtx* This,
    BIND_OPTS2 *pbindopts);
void __attribute__((__stdcall__)) IBindCtx_RemoteSetBindOptions_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IBindCtx_RemoteGetBindOptions_Proxy(
    IBindCtx* This,
    BIND_OPTS2 *pbindopts);
void __attribute__((__stdcall__)) IBindCtx_RemoteGetBindOptions_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IBindCtx_SetBindOptions_Proxy(
    IBindCtx* This,
    BIND_OPTS *pbindopts);
HRESULT __attribute__((__stdcall__)) IBindCtx_SetBindOptions_Stub(
    IBindCtx* This,
    BIND_OPTS2 *pbindopts);
HRESULT __attribute__((__stdcall__)) IBindCtx_GetBindOptions_Proxy(
    IBindCtx* This,
    BIND_OPTS *pbindopts);
HRESULT __attribute__((__stdcall__)) IBindCtx_GetBindOptions_Stub(
    IBindCtx* This,
    BIND_OPTS2 *pbindopts);
#define __IEnumMoniker_INTERFACE_DEFINED__ 
typedef IEnumMoniker *LPENUMMONIKER;
extern const GUID IID_IEnumMoniker;
typedef struct IEnumMonikerVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IEnumMoniker *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IEnumMoniker *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IEnumMoniker *This);
    HRESULT (__attribute__((__stdcall__)) *Next)(
        IEnumMoniker *This,
        ULONG celt,
        IMoniker **rgelt,
        ULONG *pceltFetched);
    HRESULT (__attribute__((__stdcall__)) *Skip)(
        IEnumMoniker *This,
        ULONG celt);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        IEnumMoniker *This);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IEnumMoniker *This,
        IEnumMoniker **ppenum);
   
} IEnumMonikerVtbl;
struct IEnumMoniker {
    IEnumMonikerVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IEnumMoniker_RemoteNext_Proxy(
    IEnumMoniker* This,
    ULONG celt,
    IMoniker **rgelt,
    ULONG *pceltFetched);
void __attribute__((__stdcall__)) IEnumMoniker_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IEnumMoniker_Next_Proxy(
    IEnumMoniker* This,
    ULONG celt,
    IMoniker **rgelt,
    ULONG *pceltFetched);
HRESULT __attribute__((__stdcall__)) IEnumMoniker_Next_Stub(
    IEnumMoniker* This,
    ULONG celt,
    IMoniker **rgelt,
    ULONG *pceltFetched);
#define __IRunnableObject_INTERFACE_DEFINED__ 
typedef IRunnableObject *LPRUNNABLEOBJECT;
extern const GUID IID_IRunnableObject;
typedef struct IRunnableObjectVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IRunnableObject *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IRunnableObject *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IRunnableObject *This);
    HRESULT (__attribute__((__stdcall__)) *GetRunningClass)(
        IRunnableObject *This,
        LPCLSID lpClsid);
    HRESULT (__attribute__((__stdcall__)) *Run)(
        IRunnableObject *This,
        LPBINDCTX pbc);
    WINBOOL (__attribute__((__stdcall__)) *IsRunning)(
        IRunnableObject *This);
    HRESULT (__attribute__((__stdcall__)) *LockRunning)(
        IRunnableObject *This,
        WINBOOL fLock,
        WINBOOL fLastUnlockCloses);
    HRESULT (__attribute__((__stdcall__)) *SetContainedObject)(
        IRunnableObject *This,
        WINBOOL fContained);
   
} IRunnableObjectVtbl;
struct IRunnableObject {
    IRunnableObjectVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IRunnableObject_RemoteIsRunning_Proxy(
    IRunnableObject* This);
void __attribute__((__stdcall__)) IRunnableObject_RemoteIsRunning_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
WINBOOL __attribute__((__stdcall__)) IRunnableObject_IsRunning_Proxy(
    IRunnableObject* This);
HRESULT __attribute__((__stdcall__)) IRunnableObject_IsRunning_Stub(
    IRunnableObject* This);
#define __IRunningObjectTable_INTERFACE_DEFINED__ 
typedef IRunningObjectTable *LPRUNNINGOBJECTTABLE;
extern const GUID IID_IRunningObjectTable;
typedef struct IRunningObjectTableVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IRunningObjectTable *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IRunningObjectTable *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IRunningObjectTable *This);
    HRESULT (__attribute__((__stdcall__)) *Register)(
        IRunningObjectTable *This,
        DWORD grfFlags,
        IUnknown *punkObject,
        IMoniker *pmkObjectName,
        DWORD *pdwRegister);
    HRESULT (__attribute__((__stdcall__)) *Revoke)(
        IRunningObjectTable *This,
        DWORD dwRegister);
    HRESULT (__attribute__((__stdcall__)) *IsRunning)(
        IRunningObjectTable *This,
        IMoniker *pmkObjectName);
    HRESULT (__attribute__((__stdcall__)) *GetObjectA)(
        IRunningObjectTable *This,
        IMoniker *pmkObjectName,
        IUnknown **ppunkObject);
    HRESULT (__attribute__((__stdcall__)) *NoteChangeTime)(
        IRunningObjectTable *This,
        DWORD dwRegister,
        FILETIME *pfiletime);
    HRESULT (__attribute__((__stdcall__)) *GetTimeOfLastChange)(
        IRunningObjectTable *This,
        IMoniker *pmkObjectName,
        FILETIME *pfiletime);
    HRESULT (__attribute__((__stdcall__)) *EnumRunning)(
        IRunningObjectTable *This,
        IEnumMoniker **ppenumMoniker);
   
} IRunningObjectTableVtbl;
struct IRunningObjectTable {
    IRunningObjectTableVtbl* lpVtbl;
};
#define __IPersist_INTERFACE_DEFINED__ 
typedef IPersist *LPPERSIST;
extern const GUID IID_IPersist;
typedef struct IPersistVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPersist *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPersist *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPersist *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassID)(
        IPersist *This,
        CLSID *pClassID);
   
} IPersistVtbl;
struct IPersist {
    IPersistVtbl* lpVtbl;
};
#define __IPersistStream_INTERFACE_DEFINED__ 
typedef IPersistStream *LPPERSISTSTREAM;
extern const GUID IID_IPersistStream;
typedef struct IPersistStreamVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPersistStream *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPersistStream *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPersistStream *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassID)(
        IPersistStream *This,
        CLSID *pClassID);
    HRESULT (__attribute__((__stdcall__)) *IsDirty)(
        IPersistStream *This);
    HRESULT (__attribute__((__stdcall__)) *Load)(
        IPersistStream *This,
        IStream *pStm);
    HRESULT (__attribute__((__stdcall__)) *Save)(
        IPersistStream *This,
        IStream *pStm,
        WINBOOL fClearDirty);
    HRESULT (__attribute__((__stdcall__)) *GetSizeMax)(
        IPersistStream *This,
        ULARGE_INTEGER *pcbSize);
   
} IPersistStreamVtbl;
struct IPersistStream {
    IPersistStreamVtbl* lpVtbl;
};
#define __IMoniker_INTERFACE_DEFINED__ 
typedef IMoniker *LPMONIKER;
typedef enum tagMKSYS {
    MKSYS_NONE = 0,
    MKSYS_GENERICCOMPOSITE = 1,
    MKSYS_FILEMONIKER = 2,
    MKSYS_ANTIMONIKER = 3,
    MKSYS_ITEMMONIKER = 4,
    MKSYS_POINTERMONIKER = 5,
    MKSYS_CLASSMONIKER = 7,
    MKSYS_OBJREFMONIKER = 8,
    MKSYS_SESSIONMONIKER = 9,
    MKSYS_LUAMONIKER = 10
} MKSYS;
typedef enum tagMKREDUCE {
    MKRREDUCE_ONE = 3 << 16,
    MKRREDUCE_TOUSER = 2 << 16,
    MKRREDUCE_THROUGHUSER = 1 << 16,
    MKRREDUCE_ALL = 0
} MKRREDUCE;
extern const GUID IID_IMoniker;
typedef struct IMonikerVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IMoniker *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IMoniker *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IMoniker *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassID)(
        IMoniker *This,
        CLSID *pClassID);
    HRESULT (__attribute__((__stdcall__)) *IsDirty)(
        IMoniker *This);
    HRESULT (__attribute__((__stdcall__)) *Load)(
        IMoniker *This,
        IStream *pStm);
    HRESULT (__attribute__((__stdcall__)) *Save)(
        IMoniker *This,
        IStream *pStm,
        WINBOOL fClearDirty);
    HRESULT (__attribute__((__stdcall__)) *GetSizeMax)(
        IMoniker *This,
        ULARGE_INTEGER *pcbSize);
    HRESULT (__attribute__((__stdcall__)) *BindToObject)(
        IMoniker *This,
        IBindCtx *pbc,
        IMoniker *pmkToLeft,
        const IID *const riidResult,
        void **ppvResult);
    HRESULT (__attribute__((__stdcall__)) *BindToStorage)(
        IMoniker *This,
        IBindCtx *pbc,
        IMoniker *pmkToLeft,
        const IID *const riid,
        void **ppvObj);
    HRESULT (__attribute__((__stdcall__)) *Reduce)(
        IMoniker *This,
        IBindCtx *pbc,
        DWORD dwReduceHowFar,
        IMoniker **ppmkToLeft,
        IMoniker **ppmkReduced);
    HRESULT (__attribute__((__stdcall__)) *ComposeWith)(
        IMoniker *This,
        IMoniker *pmkRight,
        WINBOOL fOnlyIfNotGeneric,
        IMoniker **ppmkComposite);
    HRESULT (__attribute__((__stdcall__)) *Enum)(
        IMoniker *This,
        WINBOOL fForward,
        IEnumMoniker **ppenumMoniker);
    HRESULT (__attribute__((__stdcall__)) *IsEqual)(
        IMoniker *This,
        IMoniker *pmkOtherMoniker);
    HRESULT (__attribute__((__stdcall__)) *Hash)(
        IMoniker *This,
        DWORD *pdwHash);
    HRESULT (__attribute__((__stdcall__)) *IsRunning)(
        IMoniker *This,
        IBindCtx *pbc,
        IMoniker *pmkToLeft,
        IMoniker *pmkNewlyRunning);
    HRESULT (__attribute__((__stdcall__)) *GetTimeOfLastChange)(
        IMoniker *This,
        IBindCtx *pbc,
        IMoniker *pmkToLeft,
        FILETIME *pFileTime);
    HRESULT (__attribute__((__stdcall__)) *Inverse)(
        IMoniker *This,
        IMoniker **ppmk);
    HRESULT (__attribute__((__stdcall__)) *CommonPrefixWith)(
        IMoniker *This,
        IMoniker *pmkOther,
        IMoniker **ppmkPrefix);
    HRESULT (__attribute__((__stdcall__)) *RelativePathTo)(
        IMoniker *This,
        IMoniker *pmkOther,
        IMoniker **ppmkRelPath);
    HRESULT (__attribute__((__stdcall__)) *GetDisplayName)(
        IMoniker *This,
        IBindCtx *pbc,
        IMoniker *pmkToLeft,
        LPOLESTR *ppszDisplayName);
    HRESULT (__attribute__((__stdcall__)) *ParseDisplayName)(
        IMoniker *This,
        IBindCtx *pbc,
        IMoniker *pmkToLeft,
        LPOLESTR pszDisplayName,
        ULONG *pchEaten,
        IMoniker **ppmkOut);
    HRESULT (__attribute__((__stdcall__)) *IsSystemMoniker)(
        IMoniker *This,
        DWORD *pdwMksys);
   
} IMonikerVtbl;
struct IMoniker {
    IMonikerVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IMoniker_RemoteBindToObject_Proxy(
    IMoniker* This,
    IBindCtx *pbc,
    IMoniker *pmkToLeft,
    const IID *const riidResult,
    IUnknown **ppvResult);
void __attribute__((__stdcall__)) IMoniker_RemoteBindToObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IMoniker_RemoteBindToStorage_Proxy(
    IMoniker* This,
    IBindCtx *pbc,
    IMoniker *pmkToLeft,
    const IID *const riid,
    IUnknown **ppvObj);
void __attribute__((__stdcall__)) IMoniker_RemoteBindToStorage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IMoniker_BindToObject_Proxy(
    IMoniker* This,
    IBindCtx *pbc,
    IMoniker *pmkToLeft,
    const IID *const riidResult,
    void **ppvResult);
HRESULT __attribute__((__stdcall__)) IMoniker_BindToObject_Stub(
    IMoniker* This,
    IBindCtx *pbc,
    IMoniker *pmkToLeft,
    const IID *const riidResult,
    IUnknown **ppvResult);
HRESULT __attribute__((__stdcall__)) IMoniker_BindToStorage_Proxy(
    IMoniker* This,
    IBindCtx *pbc,
    IMoniker *pmkToLeft,
    const IID *const riid,
    void **ppvObj);
HRESULT __attribute__((__stdcall__)) IMoniker_BindToStorage_Stub(
    IMoniker* This,
    IBindCtx *pbc,
    IMoniker *pmkToLeft,
    const IID *const riid,
    IUnknown **ppvObj);
#define __IROTData_INTERFACE_DEFINED__ 
extern const GUID IID_IROTData;
typedef struct IROTDataVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IROTData *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IROTData *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IROTData *This);
    HRESULT (__attribute__((__stdcall__)) *GetComparisonData)(
        IROTData *This,
        byte *pbData,
        ULONG cbMax,
        ULONG *pcbData);
   
} IROTDataVtbl;
struct IROTData {
    IROTDataVtbl* lpVtbl;
};
#define __IEnumSTATSTG_INTERFACE_DEFINED__ 
typedef IEnumSTATSTG *LPENUMSTATSTG;
extern const GUID IID_IEnumSTATSTG;
typedef struct IEnumSTATSTGVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IEnumSTATSTG *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IEnumSTATSTG *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IEnumSTATSTG *This);
    HRESULT (__attribute__((__stdcall__)) *Next)(
        IEnumSTATSTG *This,
        ULONG celt,
        STATSTG *rgelt,
        ULONG *pceltFetched);
    HRESULT (__attribute__((__stdcall__)) *Skip)(
        IEnumSTATSTG *This,
        ULONG celt);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        IEnumSTATSTG *This);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IEnumSTATSTG *This,
        IEnumSTATSTG **ppenum);
   
} IEnumSTATSTGVtbl;
struct IEnumSTATSTG {
    IEnumSTATSTGVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IEnumSTATSTG_RemoteNext_Proxy(
    IEnumSTATSTG* This,
    ULONG celt,
    STATSTG *rgelt,
    ULONG *pceltFetched);
void __attribute__((__stdcall__)) IEnumSTATSTG_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IEnumSTATSTG_Next_Proxy(
    IEnumSTATSTG* This,
    ULONG celt,
    STATSTG *rgelt,
    ULONG *pceltFetched);
HRESULT __attribute__((__stdcall__)) IEnumSTATSTG_Next_Stub(
    IEnumSTATSTG* This,
    ULONG celt,
    STATSTG *rgelt,
    ULONG *pceltFetched);
#define __IStorage_INTERFACE_DEFINED__ 
typedef IStorage *LPSTORAGE;
typedef struct tagRemSNB {
    ULONG ulCntStr;
    ULONG ulCntChar;
    OLECHAR rgString[1];
} RemSNB;
typedef RemSNB *wireSNB;
typedef LPOLESTR *SNB;
extern const GUID IID_IStorage;
typedef struct IStorageVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IStorage *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IStorage *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IStorage *This);
    HRESULT (__attribute__((__stdcall__)) *CreateStream)(
        IStorage *This,
        const OLECHAR *pwcsName,
        DWORD grfMode,
        DWORD reserved1,
        DWORD reserved2,
        IStream **ppstm);
    HRESULT (__attribute__((__stdcall__)) *OpenStream)(
        IStorage *This,
        const OLECHAR *pwcsName,
        void *reserved1,
        DWORD grfMode,
        DWORD reserved2,
        IStream **ppstm);
    HRESULT (__attribute__((__stdcall__)) *CreateStorage)(
        IStorage *This,
        const OLECHAR *pwcsName,
        DWORD grfMode,
        DWORD reserved1,
        DWORD reserved2,
        IStorage **ppstg);
    HRESULT (__attribute__((__stdcall__)) *OpenStorage)(
        IStorage *This,
        const OLECHAR *pwcsName,
        IStorage *pstgPriority,
        DWORD grfMode,
        SNB snbExclude,
        DWORD reserved,
        IStorage **ppstg);
    HRESULT (__attribute__((__stdcall__)) *CopyTo)(
        IStorage *This,
        DWORD ciidExclude,
        const IID *rgiidExclude,
        SNB snbExclude,
        IStorage *pstgDest);
    HRESULT (__attribute__((__stdcall__)) *MoveElementTo)(
        IStorage *This,
        const OLECHAR *pwcsName,
        IStorage *pstgDest,
        const OLECHAR *pwcsNewName,
        DWORD grfFlags);
    HRESULT (__attribute__((__stdcall__)) *Commit)(
        IStorage *This,
        DWORD grfCommitFlags);
    HRESULT (__attribute__((__stdcall__)) *Revert)(
        IStorage *This);
    HRESULT (__attribute__((__stdcall__)) *EnumElements)(
        IStorage *This,
        DWORD reserved1,
        void *reserved2,
        DWORD reserved3,
        IEnumSTATSTG **ppenum);
    HRESULT (__attribute__((__stdcall__)) *DestroyElement)(
        IStorage *This,
        const OLECHAR *pwcsName);
    HRESULT (__attribute__((__stdcall__)) *RenameElement)(
        IStorage *This,
        const OLECHAR *pwcsOldName,
        const OLECHAR *pwcsNewName);
    HRESULT (__attribute__((__stdcall__)) *SetElementTimes)(
        IStorage *This,
        const OLECHAR *pwcsName,
        const FILETIME *pctime,
        const FILETIME *patime,
        const FILETIME *pmtime);
    HRESULT (__attribute__((__stdcall__)) *SetClass)(
        IStorage *This,
        const IID *const clsid);
    HRESULT (__attribute__((__stdcall__)) *SetStateBits)(
        IStorage *This,
        DWORD grfStateBits,
        DWORD grfMask);
    HRESULT (__attribute__((__stdcall__)) *Stat)(
        IStorage *This,
        STATSTG *pstatstg,
        DWORD grfStatFlag);
   
} IStorageVtbl;
struct IStorage {
    IStorageVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IStorage_RemoteOpenStream_Proxy(
    IStorage* This,
    const OLECHAR *pwcsName,
    ULONG cbReserved1,
    byte *reserved1,
    DWORD grfMode,
    DWORD reserved2,
    IStream **ppstm);
void __attribute__((__stdcall__)) IStorage_RemoteOpenStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IStorage_RemoteCopyTo_Proxy(
    IStorage* This,
    DWORD ciidExclude,
    const IID *rgiidExclude,
    SNB snbExclude,
    IStorage *pstgDest);
void __attribute__((__stdcall__)) IStorage_RemoteCopyTo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IStorage_RemoteEnumElements_Proxy(
    IStorage* This,
    DWORD reserved1,
    ULONG cbReserved2,
    byte *reserved2,
    DWORD reserved3,
    IEnumSTATSTG **ppenum);
void __attribute__((__stdcall__)) IStorage_RemoteEnumElements_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IStorage_OpenStream_Proxy(
    IStorage* This,
    const OLECHAR *pwcsName,
    void *reserved1,
    DWORD grfMode,
    DWORD reserved2,
    IStream **ppstm);
HRESULT __attribute__((__stdcall__)) IStorage_OpenStream_Stub(
    IStorage* This,
    const OLECHAR *pwcsName,
    ULONG cbReserved1,
    byte *reserved1,
    DWORD grfMode,
    DWORD reserved2,
    IStream **ppstm);
HRESULT __attribute__((__stdcall__)) IStorage_CopyTo_Proxy(
    IStorage* This,
    DWORD ciidExclude,
    const IID *rgiidExclude,
    SNB snbExclude,
    IStorage *pstgDest);
HRESULT __attribute__((__stdcall__)) IStorage_CopyTo_Stub(
    IStorage* This,
    DWORD ciidExclude,
    const IID *rgiidExclude,
    SNB snbExclude,
    IStorage *pstgDest);
HRESULT __attribute__((__stdcall__)) IStorage_EnumElements_Proxy(
    IStorage* This,
    DWORD reserved1,
    void *reserved2,
    DWORD reserved3,
    IEnumSTATSTG **ppenum);
HRESULT __attribute__((__stdcall__)) IStorage_EnumElements_Stub(
    IStorage* This,
    DWORD reserved1,
    ULONG cbReserved2,
    byte *reserved2,
    DWORD reserved3,
    IEnumSTATSTG **ppenum);
#define __IPersistFile_INTERFACE_DEFINED__ 
typedef IPersistFile *LPPERSISTFILE;
extern const GUID IID_IPersistFile;
typedef struct IPersistFileVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPersistFile *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPersistFile *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPersistFile *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassID)(
        IPersistFile *This,
        CLSID *pClassID);
    HRESULT (__attribute__((__stdcall__)) *IsDirty)(
        IPersistFile *This);
    HRESULT (__attribute__((__stdcall__)) *Load)(
        IPersistFile *This,
        LPCOLESTR pszFileName,
        DWORD dwMode);
    HRESULT (__attribute__((__stdcall__)) *Save)(
        IPersistFile *This,
        LPCOLESTR pszFileName,
        WINBOOL fRemember);
    HRESULT (__attribute__((__stdcall__)) *SaveCompleted)(
        IPersistFile *This,
        LPCOLESTR pszFileName);
    HRESULT (__attribute__((__stdcall__)) *GetCurFile)(
        IPersistFile *This,
        LPOLESTR *ppszFileName);
   
} IPersistFileVtbl;
struct IPersistFile {
    IPersistFileVtbl* lpVtbl;
};
#define __IPersistStorage_INTERFACE_DEFINED__ 
typedef IPersistStorage *LPPERSISTSTORAGE;
extern const GUID IID_IPersistStorage;
typedef struct IPersistStorageVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPersistStorage *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPersistStorage *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPersistStorage *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassID)(
        IPersistStorage *This,
        CLSID *pClassID);
    HRESULT (__attribute__((__stdcall__)) *IsDirty)(
        IPersistStorage *This);
    HRESULT (__attribute__((__stdcall__)) *InitNew)(
        IPersistStorage *This,
        IStorage *pStg);
    HRESULT (__attribute__((__stdcall__)) *Load)(
        IPersistStorage *This,
        IStorage *pStg);
    HRESULT (__attribute__((__stdcall__)) *Save)(
        IPersistStorage *This,
        IStorage *pStgSave,
        WINBOOL fSameAsLoad);
    HRESULT (__attribute__((__stdcall__)) *SaveCompleted)(
        IPersistStorage *This,
        IStorage *pStgNew);
    HRESULT (__attribute__((__stdcall__)) *HandsOffStorage)(
        IPersistStorage *This);
   
} IPersistStorageVtbl;
struct IPersistStorage {
    IPersistStorageVtbl* lpVtbl;
};
#define __ILockBytes_INTERFACE_DEFINED__ 
typedef ILockBytes *LPLOCKBYTES;
extern const GUID IID_ILockBytes;
typedef struct ILockBytesVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ILockBytes *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ILockBytes *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ILockBytes *This);
    HRESULT (__attribute__((__stdcall__)) *ReadAt)(
        ILockBytes *This,
        ULARGE_INTEGER ulOffset,
        void *pv,
        ULONG cb,
        ULONG *pcbRead);
    HRESULT (__attribute__((__stdcall__)) *WriteAt)(
        ILockBytes *This,
        ULARGE_INTEGER ulOffset,
        const void *pv,
        ULONG cb,
        ULONG *pcbWritten);
    HRESULT (__attribute__((__stdcall__)) *Flush)(
        ILockBytes *This);
    HRESULT (__attribute__((__stdcall__)) *SetSize)(
        ILockBytes *This,
        ULARGE_INTEGER cb);
    HRESULT (__attribute__((__stdcall__)) *LockRegion)(
        ILockBytes *This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);
    HRESULT (__attribute__((__stdcall__)) *UnlockRegion)(
        ILockBytes *This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);
    HRESULT (__attribute__((__stdcall__)) *Stat)(
        ILockBytes *This,
        STATSTG *pstatstg,
        DWORD grfStatFlag);
   
} ILockBytesVtbl;
struct ILockBytes {
    ILockBytesVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) ILockBytes_RemoteReadAt_Proxy(
    ILockBytes* This,
    ULARGE_INTEGER ulOffset,
    byte *pv,
    ULONG cb,
    ULONG *pcbRead);
void __attribute__((__stdcall__)) ILockBytes_RemoteReadAt_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ILockBytes_RemoteWriteAt_Proxy(
    ILockBytes* This,
    ULARGE_INTEGER ulOffset,
    const byte *pv,
    ULONG cb,
    ULONG *pcbWritten);
void __attribute__((__stdcall__)) ILockBytes_RemoteWriteAt_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ILockBytes_ReadAt_Proxy(
    ILockBytes* This,
    ULARGE_INTEGER ulOffset,
    void *pv,
    ULONG cb,
    ULONG *pcbRead);
HRESULT __attribute__((__stdcall__)) ILockBytes_ReadAt_Stub(
    ILockBytes* This,
    ULARGE_INTEGER ulOffset,
    byte *pv,
    ULONG cb,
    ULONG *pcbRead);
HRESULT __attribute__((__stdcall__)) ILockBytes_WriteAt_Proxy(
    ILockBytes* This,
    ULARGE_INTEGER ulOffset,
    const void *pv,
    ULONG cb,
    ULONG *pcbWritten);
HRESULT __attribute__((__stdcall__)) ILockBytes_WriteAt_Stub(
    ILockBytes* This,
    ULARGE_INTEGER ulOffset,
    const byte *pv,
    ULONG cb,
    ULONG *pcbWritten);
#define __IEnumFORMATETC_INTERFACE_DEFINED__ 
typedef IEnumFORMATETC *LPENUMFORMATETC;
typedef struct tagDVTARGETDEVICE {
    DWORD tdSize;
    WORD tdDriverNameOffset;
    WORD tdDeviceNameOffset;
    WORD tdPortNameOffset;
    WORD tdExtDevmodeOffset;
    BYTE tdData[1];
} DVTARGETDEVICE;
typedef CLIPFORMAT *LPCLIPFORMAT;
typedef struct tagFORMATETC {
    CLIPFORMAT cfFormat;
    DVTARGETDEVICE *ptd;
    DWORD dwAspect;
    LONG lindex;
    DWORD tymed;
} FORMATETC;
typedef struct tagFORMATETC *LPFORMATETC;
extern const GUID IID_IEnumFORMATETC;
typedef struct IEnumFORMATETCVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IEnumFORMATETC *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IEnumFORMATETC *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IEnumFORMATETC *This);
    HRESULT (__attribute__((__stdcall__)) *Next)(
        IEnumFORMATETC *This,
        ULONG celt,
        FORMATETC *rgelt,
        ULONG *pceltFetched);
    HRESULT (__attribute__((__stdcall__)) *Skip)(
        IEnumFORMATETC *This,
        ULONG celt);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        IEnumFORMATETC *This);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IEnumFORMATETC *This,
        IEnumFORMATETC **ppenum);
   
} IEnumFORMATETCVtbl;
struct IEnumFORMATETC {
    IEnumFORMATETCVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IEnumFORMATETC_RemoteNext_Proxy(
    IEnumFORMATETC* This,
    ULONG celt,
    FORMATETC *rgelt,
    ULONG *pceltFetched);
void __attribute__((__stdcall__)) IEnumFORMATETC_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IEnumFORMATETC_Next_Proxy(
    IEnumFORMATETC* This,
    ULONG celt,
    FORMATETC *rgelt,
    ULONG *pceltFetched);
HRESULT __attribute__((__stdcall__)) IEnumFORMATETC_Next_Stub(
    IEnumFORMATETC* This,
    ULONG celt,
    FORMATETC *rgelt,
    ULONG *pceltFetched);
#define __IEnumSTATDATA_INTERFACE_DEFINED__ 
typedef IEnumSTATDATA *LPENUMSTATDATA;
typedef enum tagADVF {
    ADVF_NODATA = 1,
    ADVF_PRIMEFIRST = 2,
    ADVF_ONLYONCE = 4,
    ADVF_DATAONSTOP = 64,
    ADVFCACHE_NOHANDLER = 8,
    ADVFCACHE_FORCEBUILTIN = 16,
    ADVFCACHE_ONSAVE = 32
} ADVF;
typedef struct tagSTATDATA {
    FORMATETC formatetc;
    DWORD advf;
    IAdviseSink *pAdvSink;
    DWORD dwConnection;
} STATDATA;
typedef STATDATA *LPSTATDATA;
extern const GUID IID_IEnumSTATDATA;
typedef struct IEnumSTATDATAVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IEnumSTATDATA *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IEnumSTATDATA *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IEnumSTATDATA *This);
    HRESULT (__attribute__((__stdcall__)) *Next)(
        IEnumSTATDATA *This,
        ULONG celt,
        STATDATA *rgelt,
        ULONG *pceltFetched);
    HRESULT (__attribute__((__stdcall__)) *Skip)(
        IEnumSTATDATA *This,
        ULONG celt);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        IEnumSTATDATA *This);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IEnumSTATDATA *This,
        IEnumSTATDATA **ppenum);
   
} IEnumSTATDATAVtbl;
struct IEnumSTATDATA {
    IEnumSTATDATAVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IEnumSTATDATA_RemoteNext_Proxy(
    IEnumSTATDATA* This,
    ULONG celt,
    STATDATA *rgelt,
    ULONG *pceltFetched);
void __attribute__((__stdcall__)) IEnumSTATDATA_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IEnumSTATDATA_Next_Proxy(
    IEnumSTATDATA* This,
    ULONG celt,
    STATDATA *rgelt,
    ULONG *pceltFetched);
HRESULT __attribute__((__stdcall__)) IEnumSTATDATA_Next_Stub(
    IEnumSTATDATA* This,
    ULONG celt,
    STATDATA *rgelt,
    ULONG *pceltFetched);
#define __IRootStorage_INTERFACE_DEFINED__ 
typedef IRootStorage *LPROOTSTORAGE;
extern const GUID IID_IRootStorage;
typedef struct IRootStorageVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IRootStorage *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IRootStorage *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IRootStorage *This);
    HRESULT (__attribute__((__stdcall__)) *SwitchToFile)(
        IRootStorage *This,
        LPOLESTR pszFile);
   
} IRootStorageVtbl;
struct IRootStorage {
    IRootStorageVtbl* lpVtbl;
};
#define __IAdviseSink_INTERFACE_DEFINED__ 
typedef IAdviseSink *LPADVISESINK;
typedef enum tagTYMED {
    TYMED_HGLOBAL = 1,
    TYMED_FILE = 2,
    TYMED_ISTREAM = 4,
    TYMED_ISTORAGE = 8,
    TYMED_GDI = 16,
    TYMED_MFPICT = 32,
    TYMED_ENHMF = 64,
    TYMED_NULL = 0
} TYMED;
typedef struct tagRemSTGMEDIUM {
    DWORD tymed;
    DWORD dwHandleType;
    ULONG pData;
    ULONG pUnkForRelease;
    ULONG cbData;
    byte data[1];
} RemSTGMEDIUM;
typedef struct tagSTGMEDIUM {
    DWORD tymed;
    union {
        HBITMAP hBitmap;
        HMETAFILEPICT hMetaFilePict;
        HENHMETAFILE hEnhMetaFile;
        HGLOBAL hGlobal;
        LPOLESTR lpszFileName;
        IStream *pstm;
        IStorage *pstg;
    } ;
    IUnknown *pUnkForRelease;
} uSTGMEDIUM;
typedef struct _GDI_OBJECT {
    DWORD ObjectType;
    union __WIDL_objidl_generated_name_0000000C {
        wireHBITMAP hBitmap;
        wireHPALETTE hPalette;
        wireHGLOBAL hGeneric;
    } u;
} GDI_OBJECT;
typedef struct _userSTGMEDIUM {
    struct _STGMEDIUM_UNION {
        DWORD tymed;
        union __WIDL_objidl_generated_name_0000000D {
            wireHMETAFILEPICT hMetaFilePict;
            wireHENHMETAFILE hHEnhMetaFile;
            GDI_OBJECT *hGdiHandle;
            wireHGLOBAL hGlobal;
            LPOLESTR lpszFileName;
            BYTE_BLOB *pstm;
            BYTE_BLOB *pstg;
        } u;
    } ;
    IUnknown *pUnkForRelease;
} userSTGMEDIUM;
typedef userSTGMEDIUM *wireSTGMEDIUM;
typedef uSTGMEDIUM STGMEDIUM;
typedef userSTGMEDIUM *wireASYNC_STGMEDIUM;
typedef STGMEDIUM ASYNC_STGMEDIUM;
typedef STGMEDIUM *LPSTGMEDIUM;
typedef struct _userFLAG_STGMEDIUM {
    LONG ContextFlags;
    LONG fPassOwnership;
    userSTGMEDIUM Stgmed;
} userFLAG_STGMEDIUM;
typedef userFLAG_STGMEDIUM *wireFLAG_STGMEDIUM;
typedef struct _FLAG_STGMEDIUM {
    LONG ContextFlags;
    LONG fPassOwnership;
    STGMEDIUM Stgmed;
} FLAG_STGMEDIUM;
extern const GUID IID_IAdviseSink;
typedef struct IAdviseSinkVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IAdviseSink *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IAdviseSink *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IAdviseSink *This);
    void (__attribute__((__stdcall__)) *OnDataChange)(
        IAdviseSink *This,
        FORMATETC *pFormatetc,
        STGMEDIUM *pStgmed);
    void (__attribute__((__stdcall__)) *OnViewChange)(
        IAdviseSink *This,
        DWORD dwAspect,
        LONG lindex);
    void (__attribute__((__stdcall__)) *OnRename)(
        IAdviseSink *This,
        IMoniker *pmk);
    void (__attribute__((__stdcall__)) *OnSave)(
        IAdviseSink *This);
    void (__attribute__((__stdcall__)) *OnClose)(
        IAdviseSink *This);
   
} IAdviseSinkVtbl;
struct IAdviseSink {
    IAdviseSinkVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IAdviseSink_RemoteOnDataChange_Proxy(
    IAdviseSink* This,
    FORMATETC *pFormatetc,
    ASYNC_STGMEDIUM *pStgmed);
void __attribute__((__stdcall__)) IAdviseSink_RemoteOnDataChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IAdviseSink_RemoteOnViewChange_Proxy(
    IAdviseSink* This,
    DWORD dwAspect,
    LONG lindex);
void __attribute__((__stdcall__)) IAdviseSink_RemoteOnViewChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IAdviseSink_RemoteOnRename_Proxy(
    IAdviseSink* This,
    IMoniker *pmk);
void __attribute__((__stdcall__)) IAdviseSink_RemoteOnRename_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IAdviseSink_RemoteOnSave_Proxy(
    IAdviseSink* This);
void __attribute__((__stdcall__)) IAdviseSink_RemoteOnSave_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IAdviseSink_RemoteOnClose_Proxy(
    IAdviseSink* This);
void __attribute__((__stdcall__)) IAdviseSink_RemoteOnClose_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
void __attribute__((__stdcall__)) IAdviseSink_OnDataChange_Proxy(
    IAdviseSink* This,
    FORMATETC *pFormatetc,
    STGMEDIUM *pStgmed);
HRESULT __attribute__((__stdcall__)) IAdviseSink_OnDataChange_Stub(
    IAdviseSink* This,
    FORMATETC *pFormatetc,
    ASYNC_STGMEDIUM *pStgmed);
void __attribute__((__stdcall__)) IAdviseSink_OnViewChange_Proxy(
    IAdviseSink* This,
    DWORD dwAspect,
    LONG lindex);
HRESULT __attribute__((__stdcall__)) IAdviseSink_OnViewChange_Stub(
    IAdviseSink* This,
    DWORD dwAspect,
    LONG lindex);
void __attribute__((__stdcall__)) IAdviseSink_OnRename_Proxy(
    IAdviseSink* This,
    IMoniker *pmk);
HRESULT __attribute__((__stdcall__)) IAdviseSink_OnRename_Stub(
    IAdviseSink* This,
    IMoniker *pmk);
void __attribute__((__stdcall__)) IAdviseSink_OnSave_Proxy(
    IAdviseSink* This);
HRESULT __attribute__((__stdcall__)) IAdviseSink_OnSave_Stub(
    IAdviseSink* This);
void __attribute__((__stdcall__)) IAdviseSink_OnClose_Proxy(
    IAdviseSink* This);
HRESULT __attribute__((__stdcall__)) IAdviseSink_OnClose_Stub(
    IAdviseSink* This);
#define __AsyncIAdviseSink_INTERFACE_DEFINED__ 
extern const GUID IID_AsyncIAdviseSink;
typedef struct AsyncIAdviseSinkVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        AsyncIAdviseSink *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        AsyncIAdviseSink *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        AsyncIAdviseSink *This);
    void (__attribute__((__stdcall__)) *Begin_OnDataChange)(
        AsyncIAdviseSink *This,
        FORMATETC *pFormatetc,
        STGMEDIUM *pStgmed);
    void (__attribute__((__stdcall__)) *Finish_OnDataChange)(
        AsyncIAdviseSink *This);
    void (__attribute__((__stdcall__)) *Begin_OnViewChange)(
        AsyncIAdviseSink *This,
        DWORD dwAspect,
        LONG lindex);
    void (__attribute__((__stdcall__)) *Finish_OnViewChange)(
        AsyncIAdviseSink *This);
    void (__attribute__((__stdcall__)) *Begin_OnRename)(
        AsyncIAdviseSink *This,
        IMoniker *pmk);
    void (__attribute__((__stdcall__)) *Finish_OnRename)(
        AsyncIAdviseSink *This);
    void (__attribute__((__stdcall__)) *Begin_OnSave)(
        AsyncIAdviseSink *This);
    void (__attribute__((__stdcall__)) *Finish_OnSave)(
        AsyncIAdviseSink *This);
    void (__attribute__((__stdcall__)) *Begin_OnClose)(
        AsyncIAdviseSink *This);
    void (__attribute__((__stdcall__)) *Finish_OnClose)(
        AsyncIAdviseSink *This);
   
} AsyncIAdviseSinkVtbl;
struct AsyncIAdviseSink {
    AsyncIAdviseSinkVtbl* lpVtbl;
};
#define __IAdviseSink2_INTERFACE_DEFINED__ 
typedef IAdviseSink2 *LPADVISESINK2;
extern const GUID IID_IAdviseSink2;
typedef struct IAdviseSink2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IAdviseSink2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IAdviseSink2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IAdviseSink2 *This);
    void (__attribute__((__stdcall__)) *OnDataChange)(
        IAdviseSink2 *This,
        FORMATETC *pFormatetc,
        STGMEDIUM *pStgmed);
    void (__attribute__((__stdcall__)) *OnViewChange)(
        IAdviseSink2 *This,
        DWORD dwAspect,
        LONG lindex);
    void (__attribute__((__stdcall__)) *OnRename)(
        IAdviseSink2 *This,
        IMoniker *pmk);
    void (__attribute__((__stdcall__)) *OnSave)(
        IAdviseSink2 *This);
    void (__attribute__((__stdcall__)) *OnClose)(
        IAdviseSink2 *This);
    void (__attribute__((__stdcall__)) *OnLinkSrcChange)(
        IAdviseSink2 *This,
        IMoniker *pmk);
   
} IAdviseSink2Vtbl;
struct IAdviseSink2 {
    IAdviseSink2Vtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IAdviseSink2_RemoteOnLinkSrcChange_Proxy(
    IAdviseSink2* This,
    IMoniker *pmk);
void __attribute__((__stdcall__)) IAdviseSink2_RemoteOnLinkSrcChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
void __attribute__((__stdcall__)) IAdviseSink2_OnLinkSrcChange_Proxy(
    IAdviseSink2* This,
    IMoniker *pmk);
HRESULT __attribute__((__stdcall__)) IAdviseSink2_OnLinkSrcChange_Stub(
    IAdviseSink2* This,
    IMoniker *pmk);
#define __AsyncIAdviseSink2_INTERFACE_DEFINED__ 
extern const GUID IID_AsyncIAdviseSink2;
typedef struct AsyncIAdviseSink2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        AsyncIAdviseSink2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        AsyncIAdviseSink2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        AsyncIAdviseSink2 *This);
    void (__attribute__((__stdcall__)) *Begin_OnDataChange)(
        AsyncIAdviseSink2 *This,
        FORMATETC *pFormatetc,
        STGMEDIUM *pStgmed);
    void (__attribute__((__stdcall__)) *Finish_OnDataChange)(
        AsyncIAdviseSink2 *This);
    void (__attribute__((__stdcall__)) *Begin_OnViewChange)(
        AsyncIAdviseSink2 *This,
        DWORD dwAspect,
        LONG lindex);
    void (__attribute__((__stdcall__)) *Finish_OnViewChange)(
        AsyncIAdviseSink2 *This);
    void (__attribute__((__stdcall__)) *Begin_OnRename)(
        AsyncIAdviseSink2 *This,
        IMoniker *pmk);
    void (__attribute__((__stdcall__)) *Finish_OnRename)(
        AsyncIAdviseSink2 *This);
    void (__attribute__((__stdcall__)) *Begin_OnSave)(
        AsyncIAdviseSink2 *This);
    void (__attribute__((__stdcall__)) *Finish_OnSave)(
        AsyncIAdviseSink2 *This);
    void (__attribute__((__stdcall__)) *Begin_OnClose)(
        AsyncIAdviseSink2 *This);
    void (__attribute__((__stdcall__)) *Finish_OnClose)(
        AsyncIAdviseSink2 *This);
    void (__attribute__((__stdcall__)) *Begin_OnLinkSrcChange)(
        AsyncIAdviseSink2 *This,
        IMoniker *pmk);
    void (__attribute__((__stdcall__)) *Finish_OnLinkSrcChange)(
        AsyncIAdviseSink2 *This);
   
} AsyncIAdviseSink2Vtbl;
struct AsyncIAdviseSink2 {
    AsyncIAdviseSink2Vtbl* lpVtbl;
};
#define __IDataObject_INTERFACE_DEFINED__ 
typedef IDataObject *LPDATAOBJECT;
typedef enum tagDATADIR {
    DATADIR_GET = 1,
    DATADIR_SET = 2
} DATADIR;
extern const GUID IID_IDataObject;
typedef struct IDataObjectVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IDataObject *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IDataObject *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IDataObject *This);
    HRESULT (__attribute__((__stdcall__)) *GetData)(
        IDataObject *This,
        FORMATETC *pformatetcIn,
        STGMEDIUM *pmedium);
    HRESULT (__attribute__((__stdcall__)) *GetDataHere)(
        IDataObject *This,
        FORMATETC *pformatetc,
        STGMEDIUM *pmedium);
    HRESULT (__attribute__((__stdcall__)) *QueryGetData)(
        IDataObject *This,
        FORMATETC *pformatetc);
    HRESULT (__attribute__((__stdcall__)) *GetCanonicalFormatEtc)(
        IDataObject *This,
        FORMATETC *pformatectIn,
        FORMATETC *pformatetcOut);
    HRESULT (__attribute__((__stdcall__)) *SetData)(
        IDataObject *This,
        FORMATETC *pformatetc,
        STGMEDIUM *pmedium,
        WINBOOL fRelease);
    HRESULT (__attribute__((__stdcall__)) *EnumFormatEtc)(
        IDataObject *This,
        DWORD dwDirection,
        IEnumFORMATETC **ppenumFormatEtc);
    HRESULT (__attribute__((__stdcall__)) *DAdvise)(
        IDataObject *This,
        FORMATETC *pformatetc,
        DWORD advf,
        IAdviseSink *pAdvSink,
        DWORD *pdwConnection);
    HRESULT (__attribute__((__stdcall__)) *DUnadvise)(
        IDataObject *This,
        DWORD dwConnection);
    HRESULT (__attribute__((__stdcall__)) *EnumDAdvise)(
        IDataObject *This,
        IEnumSTATDATA **ppenumAdvise);
   
} IDataObjectVtbl;
struct IDataObject {
    IDataObjectVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IDataObject_RemoteGetData_Proxy(
    IDataObject* This,
    FORMATETC *pformatetcIn,
    STGMEDIUM *pRemoteMedium);
void __attribute__((__stdcall__)) IDataObject_RemoteGetData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IDataObject_RemoteGetDataHere_Proxy(
    IDataObject* This,
    FORMATETC *pformatetc,
    STGMEDIUM *pRemoteMedium);
void __attribute__((__stdcall__)) IDataObject_RemoteGetDataHere_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IDataObject_RemoteSetData_Proxy(
    IDataObject* This,
    FORMATETC *pformatetc,
    FLAG_STGMEDIUM *pmedium,
    WINBOOL fRelease);
void __attribute__((__stdcall__)) IDataObject_RemoteSetData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IDataObject_GetData_Proxy(
    IDataObject* This,
    FORMATETC *pformatetcIn,
    STGMEDIUM *pmedium);
HRESULT __attribute__((__stdcall__)) IDataObject_GetData_Stub(
    IDataObject* This,
    FORMATETC *pformatetcIn,
    STGMEDIUM *pRemoteMedium);
HRESULT __attribute__((__stdcall__)) IDataObject_GetDataHere_Proxy(
    IDataObject* This,
    FORMATETC *pformatetc,
    STGMEDIUM *pmedium);
HRESULT __attribute__((__stdcall__)) IDataObject_GetDataHere_Stub(
    IDataObject* This,
    FORMATETC *pformatetc,
    STGMEDIUM *pRemoteMedium);
HRESULT __attribute__((__stdcall__)) IDataObject_SetData_Proxy(
    IDataObject* This,
    FORMATETC *pformatetc,
    STGMEDIUM *pmedium,
    WINBOOL fRelease);
HRESULT __attribute__((__stdcall__)) IDataObject_SetData_Stub(
    IDataObject* This,
    FORMATETC *pformatetc,
    FLAG_STGMEDIUM *pmedium,
    WINBOOL fRelease);
#define __IDataAdviseHolder_INTERFACE_DEFINED__ 
typedef IDataAdviseHolder *LPDATAADVISEHOLDER;
extern const GUID IID_IDataAdviseHolder;
typedef struct IDataAdviseHolderVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IDataAdviseHolder *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IDataAdviseHolder *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IDataAdviseHolder *This);
    HRESULT (__attribute__((__stdcall__)) *Advise)(
        IDataAdviseHolder *This,
        IDataObject *pDataObject,
        FORMATETC *pFetc,
        DWORD advf,
        IAdviseSink *pAdvise,
        DWORD *pdwConnection);
    HRESULT (__attribute__((__stdcall__)) *Unadvise)(
        IDataAdviseHolder *This,
        DWORD dwConnection);
    HRESULT (__attribute__((__stdcall__)) *EnumAdvise)(
        IDataAdviseHolder *This,
        IEnumSTATDATA **ppenumAdvise);
    HRESULT (__attribute__((__stdcall__)) *SendOnDataChange)(
        IDataAdviseHolder *This,
        IDataObject *pDataObject,
        DWORD dwReserved,
        DWORD advf);
   
} IDataAdviseHolderVtbl;
struct IDataAdviseHolder {
    IDataAdviseHolderVtbl* lpVtbl;
};
#define __IMessageFilter_INTERFACE_DEFINED__ 
typedef IMessageFilter *LPMESSAGEFILTER;
typedef enum tagCALLTYPE {
    CALLTYPE_TOPLEVEL = 1,
    CALLTYPE_NESTED = 2,
    CALLTYPE_ASYNC = 3,
    CALLTYPE_TOPLEVEL_CALLPENDING = 4,
    CALLTYPE_ASYNC_CALLPENDING = 5
} CALLTYPE;
typedef enum tagSERVERCALL {
    SERVERCALL_ISHANDLED = 0,
    SERVERCALL_REJECTED = 1,
    SERVERCALL_RETRYLATER = 2
} SERVERCALL;
typedef enum tagPENDINGTYPE {
    PENDINGTYPE_TOPLEVEL = 1,
    PENDINGTYPE_NESTED = 2
} PENDINGTYPE;
typedef enum tagPENDINGMSG {
    PENDINGMSG_CANCELCALL = 0,
    PENDINGMSG_WAITNOPROCESS = 1,
    PENDINGMSG_WAITDEFPROCESS = 2
} PENDINGMSG;
typedef struct tagINTERFACEINFO {
    IUnknown *pUnk;
    IID iid;
    WORD wMethod;
} INTERFACEINFO;
typedef struct tagINTERFACEINFO *LPINTERFACEINFO;
extern const GUID IID_IMessageFilter;
typedef struct IMessageFilterVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IMessageFilter *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IMessageFilter *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IMessageFilter *This);
    DWORD (__attribute__((__stdcall__)) *HandleInComingCall)(
        IMessageFilter *This,
        DWORD dwCallType,
        HTASK htaskCaller,
        DWORD dwTickCount,
        LPINTERFACEINFO lpInterfaceInfo);
    DWORD (__attribute__((__stdcall__)) *RetryRejectedCall)(
        IMessageFilter *This,
        HTASK htaskCallee,
        DWORD dwTickCount,
        DWORD dwRejectType);
    DWORD (__attribute__((__stdcall__)) *MessagePending)(
        IMessageFilter *This,
        HTASK htaskCallee,
        DWORD dwTickCount,
        DWORD dwPendingType);
   
} IMessageFilterVtbl;
struct IMessageFilter {
    IMessageFilterVtbl* lpVtbl;
};
extern const FMTID FMTID_SummaryInformation;
extern const FMTID FMTID_DocSummaryInformation;
extern const FMTID FMTID_UserDefinedProperties;
extern const FMTID FMTID_DiscardableInformation;
extern const FMTID FMTID_ImageSummaryInformation;
extern const FMTID FMTID_AudioSummaryInformation;
extern const FMTID FMTID_VideoSummaryInformation;
extern const FMTID FMTID_MediaFileSummaryInformation;
#define __IClassActivator_INTERFACE_DEFINED__ 
extern const GUID IID_IClassActivator;
typedef struct IClassActivatorVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IClassActivator *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IClassActivator *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IClassActivator *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassObject)(
        IClassActivator *This,
        const IID *const rclsid,
        DWORD dwClassContext,
        LCID locale,
        const IID *const riid,
        void **ppv);
   
} IClassActivatorVtbl;
struct IClassActivator {
    IClassActivatorVtbl* lpVtbl;
};
#define __IFillLockBytes_INTERFACE_DEFINED__ 
extern const GUID IID_IFillLockBytes;
typedef struct IFillLockBytesVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IFillLockBytes *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IFillLockBytes *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IFillLockBytes *This);
    HRESULT (__attribute__((__stdcall__)) *FillAppend)(
        IFillLockBytes *This,
        const void *pv,
        ULONG cb,
        ULONG *pcbWritten);
    HRESULT (__attribute__((__stdcall__)) *FillAt)(
        IFillLockBytes *This,
        ULARGE_INTEGER ulOffset,
        const void *pv,
        ULONG cb,
        ULONG *pcbWritten);
    HRESULT (__attribute__((__stdcall__)) *SetFillSize)(
        IFillLockBytes *This,
        ULARGE_INTEGER ulSize);
    HRESULT (__attribute__((__stdcall__)) *Terminate)(
        IFillLockBytes *This,
        WINBOOL bCanceled);
   
} IFillLockBytesVtbl;
struct IFillLockBytes {
    IFillLockBytesVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IFillLockBytes_RemoteFillAppend_Proxy(
    IFillLockBytes* This,
    const byte *pv,
    ULONG cb,
    ULONG *pcbWritten);
void __attribute__((__stdcall__)) IFillLockBytes_RemoteFillAppend_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IFillLockBytes_RemoteFillAt_Proxy(
    IFillLockBytes* This,
    ULARGE_INTEGER ulOffset,
    const byte *pv,
    ULONG cb,
    ULONG *pcbWritten);
void __attribute__((__stdcall__)) IFillLockBytes_RemoteFillAt_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IFillLockBytes_FillAppend_Proxy(
    IFillLockBytes* This,
    const void *pv,
    ULONG cb,
    ULONG *pcbWritten);
HRESULT __attribute__((__stdcall__)) IFillLockBytes_FillAppend_Stub(
    IFillLockBytes* This,
    const byte *pv,
    ULONG cb,
    ULONG *pcbWritten);
HRESULT __attribute__((__stdcall__)) IFillLockBytes_FillAt_Proxy(
    IFillLockBytes* This,
    ULARGE_INTEGER ulOffset,
    const void *pv,
    ULONG cb,
    ULONG *pcbWritten);
HRESULT __attribute__((__stdcall__)) IFillLockBytes_FillAt_Stub(
    IFillLockBytes* This,
    ULARGE_INTEGER ulOffset,
    const byte *pv,
    ULONG cb,
    ULONG *pcbWritten);
#define __IProgressNotify_INTERFACE_DEFINED__ 
extern const GUID IID_IProgressNotify;
typedef struct IProgressNotifyVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IProgressNotify *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IProgressNotify *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IProgressNotify *This);
    HRESULT (__attribute__((__stdcall__)) *OnProgress)(
        IProgressNotify *This,
        DWORD dwProgressCurrent,
        DWORD dwProgressMaximum,
        WINBOOL fAccurate,
        WINBOOL fOwner);
   
} IProgressNotifyVtbl;
struct IProgressNotify {
    IProgressNotifyVtbl* lpVtbl;
};
#define __ILayoutStorage_INTERFACE_DEFINED__ 
typedef struct tagStorageLayout {
    DWORD LayoutType;
    OLECHAR *pwcsElementName;
    LARGE_INTEGER cOffset;
    LARGE_INTEGER cBytes;
} StorageLayout;
extern const GUID IID_ILayoutStorage;
typedef struct ILayoutStorageVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ILayoutStorage *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ILayoutStorage *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ILayoutStorage *This);
    HRESULT (__attribute__((__stdcall__)) *LayoutScript)(
        ILayoutStorage *This,
        StorageLayout *pStorageLayout,
        DWORD nEntries,
        DWORD glfInterleavedFlag);
    HRESULT (__attribute__((__stdcall__)) *BeginMonitor)(
        ILayoutStorage *This);
    HRESULT (__attribute__((__stdcall__)) *EndMonitor)(
        ILayoutStorage *This);
    HRESULT (__attribute__((__stdcall__)) *ReLayoutDocfile)(
        ILayoutStorage *This,
        OLECHAR *pwcsNewDfName);
    HRESULT (__attribute__((__stdcall__)) *ReLayoutDocfileOnILockBytes)(
        ILayoutStorage *This,
        ILockBytes *pILockBytes);
   
} ILayoutStorageVtbl;
struct ILayoutStorage {
    ILayoutStorageVtbl* lpVtbl;
};
#define __IBlockingLock_INTERFACE_DEFINED__ 
extern const GUID IID_IBlockingLock;
typedef struct IBlockingLockVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IBlockingLock *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IBlockingLock *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IBlockingLock *This);
    HRESULT (__attribute__((__stdcall__)) *Lock)(
        IBlockingLock *This,
        DWORD dwTimeout);
    HRESULT (__attribute__((__stdcall__)) *Unlock)(
        IBlockingLock *This);
   
} IBlockingLockVtbl;
struct IBlockingLock {
    IBlockingLockVtbl* lpVtbl;
};
#define __ITimeAndNoticeControl_INTERFACE_DEFINED__ 
extern const GUID IID_ITimeAndNoticeControl;
typedef struct ITimeAndNoticeControlVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ITimeAndNoticeControl *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ITimeAndNoticeControl *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ITimeAndNoticeControl *This);
    HRESULT (__attribute__((__stdcall__)) *SuppressChanges)(
        ITimeAndNoticeControl *This,
        DWORD res1,
        DWORD res2);
   
} ITimeAndNoticeControlVtbl;
struct ITimeAndNoticeControl {
    ITimeAndNoticeControlVtbl* lpVtbl;
};
#define __IOplockStorage_INTERFACE_DEFINED__ 
extern const GUID IID_IOplockStorage;
typedef struct IOplockStorageVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOplockStorage *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOplockStorage *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOplockStorage *This);
    HRESULT (__attribute__((__stdcall__)) *CreateStorageEx)(
        IOplockStorage *This,
        LPCWSTR pwcsName,
        DWORD grfMode,
        DWORD stgfmt,
        DWORD grfAttrs,
        const IID *const riid,
        void **ppstgOpen);
    HRESULT (__attribute__((__stdcall__)) *OpenStorageEx)(
        IOplockStorage *This,
        LPCWSTR pwcsName,
        DWORD grfMode,
        DWORD stgfmt,
        DWORD grfAttrs,
        const IID *const riid,
        void **ppstgOpen);
   
} IOplockStorageVtbl;
struct IOplockStorage {
    IOplockStorageVtbl* lpVtbl;
};
#define __IDirectWriterLock_INTERFACE_DEFINED__ 
extern const GUID IID_IDirectWriterLock;
typedef struct IDirectWriterLockVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IDirectWriterLock *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IDirectWriterLock *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IDirectWriterLock *This);
    HRESULT (__attribute__((__stdcall__)) *WaitForWriteAccess)(
        IDirectWriterLock *This,
        DWORD dwTimeout);
    HRESULT (__attribute__((__stdcall__)) *ReleaseWriteAccess)(
        IDirectWriterLock *This);
    HRESULT (__attribute__((__stdcall__)) *HaveWriteAccess)(
        IDirectWriterLock *This);
   
} IDirectWriterLockVtbl;
struct IDirectWriterLock {
    IDirectWriterLockVtbl* lpVtbl;
};
#define __IUrlMon_INTERFACE_DEFINED__ 
extern const GUID IID_IUrlMon;
typedef struct IUrlMonVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IUrlMon *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IUrlMon *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IUrlMon *This);
    HRESULT (__attribute__((__stdcall__)) *AsyncGetClassBits)(
        IUrlMon *This,
        const IID *const rclsid,
        LPCWSTR pszTYPE,
        LPCWSTR pszExt,
        DWORD dwFileVersionMS,
        DWORD dwFileVersionLS,
        LPCWSTR pszCodeBase,
        IBindCtx *pbc,
        DWORD dwClassContext,
        const IID *const riid,
        DWORD flags);
   
} IUrlMonVtbl;
struct IUrlMon {
    IUrlMonVtbl* lpVtbl;
};
#define __IForegroundTransfer_INTERFACE_DEFINED__ 
extern const GUID IID_IForegroundTransfer;
typedef struct IForegroundTransferVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IForegroundTransfer *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IForegroundTransfer *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IForegroundTransfer *This);
    HRESULT (__attribute__((__stdcall__)) *AllowForegroundTransfer)(
        IForegroundTransfer *This,
        void *lpvReserved);
   
} IForegroundTransferVtbl;
struct IForegroundTransfer {
    IForegroundTransferVtbl* lpVtbl;
};
#define __IThumbnailExtractor_INTERFACE_DEFINED__ 
extern const GUID IID_IThumbnailExtractor;
typedef struct IThumbnailExtractorVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IThumbnailExtractor *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IThumbnailExtractor *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IThumbnailExtractor *This);
    HRESULT (__attribute__((__stdcall__)) *ExtractThumbnail)(
        IThumbnailExtractor *This,
        IStorage *pStg,
        ULONG ulLength,
        ULONG ulHeight,
        ULONG *pulOutputLength,
        ULONG *pulOutputHeight,
        HBITMAP *phOutputBitmap);
    HRESULT (__attribute__((__stdcall__)) *OnFileUpdated)(
        IThumbnailExtractor *This,
        IStorage *pStg);
   
} IThumbnailExtractorVtbl;
struct IThumbnailExtractor {
    IThumbnailExtractorVtbl* lpVtbl;
};
#define __IDummyHICONIncluder_INTERFACE_DEFINED__ 
extern const GUID IID_IDummyHICONIncluder;
typedef struct IDummyHICONIncluderVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IDummyHICONIncluder *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IDummyHICONIncluder *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IDummyHICONIncluder *This);
    HRESULT (__attribute__((__stdcall__)) *Dummy)(
        IDummyHICONIncluder *This,
        HICON h1,
        HDC h2);
   
} IDummyHICONIncluderVtbl;
struct IDummyHICONIncluder {
    IDummyHICONIncluderVtbl* lpVtbl;
};
typedef enum tagApplicationType {
    ServerApplication = 0,
    LibraryApplication = 1
} ApplicationType;
typedef enum tagShutdownType {
    IdleShutdown = 0,
    ForcedShutdown = 1
} ShutdownType;
#define __IProcessLock_INTERFACE_DEFINED__ 
extern const GUID IID_IProcessLock;
typedef struct IProcessLockVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IProcessLock *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IProcessLock *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IProcessLock *This);
    ULONG (__attribute__((__stdcall__)) *AddRefOnProcess)(
        IProcessLock *This);
    ULONG (__attribute__((__stdcall__)) *ReleaseRefOnProcess)(
        IProcessLock *This);
   
} IProcessLockVtbl;
struct IProcessLock {
    IProcessLockVtbl* lpVtbl;
};
#define __ISurrogateService_INTERFACE_DEFINED__ 
extern const GUID IID_ISurrogateService;
typedef struct ISurrogateServiceVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ISurrogateService *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ISurrogateService *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ISurrogateService *This);
    HRESULT (__attribute__((__stdcall__)) *Init)(
        ISurrogateService *This,
        const GUID *const rguidProcessID,
        IProcessLock *pProcessLock,
        WINBOOL *pfApplicationAware);
    HRESULT (__attribute__((__stdcall__)) *ApplicationLaunch)(
        ISurrogateService *This,
        const GUID *const rguidApplID,
        ApplicationType appType);
    HRESULT (__attribute__((__stdcall__)) *ApplicationFree)(
        ISurrogateService *This,
        const GUID *const rguidApplID);
    HRESULT (__attribute__((__stdcall__)) *CatalogRefresh)(
        ISurrogateService *This,
        ULONG ulReserved);
    HRESULT (__attribute__((__stdcall__)) *ProcessShutdown)(
        ISurrogateService *This,
        ShutdownType shutdownType);
   
} ISurrogateServiceVtbl;
struct ISurrogateService {
    ISurrogateServiceVtbl* lpVtbl;
};
#define __IInitializeSpy_INTERFACE_DEFINED__ 
typedef IInitializeSpy *LPINITIALIZESPY;
extern const GUID IID_IInitializeSpy;
typedef struct IInitializeSpyVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInitializeSpy *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInitializeSpy *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInitializeSpy *This);
    HRESULT (__attribute__((__stdcall__)) *PreInitialize)(
        IInitializeSpy *This,
        DWORD dwCoInit,
        DWORD dwCurThreadAptRefs);
    HRESULT (__attribute__((__stdcall__)) *PostInitialize)(
        IInitializeSpy *This,
        HRESULT hrCoInit,
        DWORD dwCoInit,
        DWORD dwNewThreadAptRefs);
    HRESULT (__attribute__((__stdcall__)) *PreUninitialize)(
        IInitializeSpy *This,
        DWORD dwCurThreadAptRefs);
    HRESULT (__attribute__((__stdcall__)) *PostUninitialize)(
        IInitializeSpy *This,
        DWORD dwNewThreadAptRefs);
   
} IInitializeSpyVtbl;
struct IInitializeSpy {
    IInitializeSpyVtbl* lpVtbl;
};
#define __IApartmentShutdown_INTERFACE_DEFINED__ 
extern const GUID IID_IApartmentShutdown;
typedef struct IApartmentShutdownVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IApartmentShutdown *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IApartmentShutdown *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IApartmentShutdown *This);
    void (__attribute__((__stdcall__)) *OnUninitialize)(
        IApartmentShutdown *This,
        UINT64 ui64ApartmentIdentifier);
   
} IApartmentShutdownVtbl;
struct IApartmentShutdown {
    IApartmentShutdownVtbl* lpVtbl;
};
ULONG __attribute__((__stdcall__)) SNB_UserSize (ULONG *, ULONG, SNB *);
unsigned char * __attribute__((__stdcall__)) SNB_UserMarshal (ULONG *, unsigned char *, SNB *);
unsigned char * __attribute__((__stdcall__)) SNB_UserUnmarshal(ULONG *, unsigned char *, SNB *);
void __attribute__((__stdcall__)) SNB_UserFree (ULONG *, SNB *);
ULONG __attribute__((__stdcall__)) CLIPFORMAT_UserSize (ULONG *, ULONG, CLIPFORMAT *);
unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserMarshal (ULONG *, unsigned char *, CLIPFORMAT *);
unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserUnmarshal(ULONG *, unsigned char *, CLIPFORMAT *);
void __attribute__((__stdcall__)) CLIPFORMAT_UserFree (ULONG *, CLIPFORMAT *);
ULONG __attribute__((__stdcall__)) STGMEDIUM_UserSize (ULONG *, ULONG, STGMEDIUM *);
unsigned char * __attribute__((__stdcall__)) STGMEDIUM_UserMarshal (ULONG *, unsigned char *, STGMEDIUM *);
unsigned char * __attribute__((__stdcall__)) STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, STGMEDIUM *);
void __attribute__((__stdcall__)) STGMEDIUM_UserFree (ULONG *, STGMEDIUM *);
ULONG __attribute__((__stdcall__)) ASYNC_STGMEDIUM_UserSize (ULONG *, ULONG, ASYNC_STGMEDIUM *);
unsigned char * __attribute__((__stdcall__)) ASYNC_STGMEDIUM_UserMarshal (ULONG *, unsigned char *, ASYNC_STGMEDIUM *);
unsigned char * __attribute__((__stdcall__)) ASYNC_STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, ASYNC_STGMEDIUM *);
void __attribute__((__stdcall__)) ASYNC_STGMEDIUM_UserFree (ULONG *, ASYNC_STGMEDIUM *);
ULONG __attribute__((__stdcall__)) FLAG_STGMEDIUM_UserSize (ULONG *, ULONG, FLAG_STGMEDIUM *);
unsigned char * __attribute__((__stdcall__)) FLAG_STGMEDIUM_UserMarshal (ULONG *, unsigned char *, FLAG_STGMEDIUM *);
unsigned char * __attribute__((__stdcall__)) FLAG_STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, FLAG_STGMEDIUM *);
void __attribute__((__stdcall__)) FLAG_STGMEDIUM_UserFree (ULONG *, FLAG_STGMEDIUM *);
ULONG __attribute__((__stdcall__)) HBITMAP_UserSize (ULONG *, ULONG, HBITMAP *);
unsigned char * __attribute__((__stdcall__)) HBITMAP_UserMarshal (ULONG *, unsigned char *, HBITMAP *);
unsigned char * __attribute__((__stdcall__)) HBITMAP_UserUnmarshal(ULONG *, unsigned char *, HBITMAP *);
void __attribute__((__stdcall__)) HBITMAP_UserFree (ULONG *, HBITMAP *);
ULONG __attribute__((__stdcall__)) HICON_UserSize (ULONG *, ULONG, HICON *);
unsigned char * __attribute__((__stdcall__)) HICON_UserMarshal (ULONG *, unsigned char *, HICON *);
unsigned char * __attribute__((__stdcall__)) HICON_UserUnmarshal(ULONG *, unsigned char *, HICON *);
void __attribute__((__stdcall__)) HICON_UserFree (ULONG *, HICON *);
ULONG __attribute__((__stdcall__)) HDC_UserSize (ULONG *, ULONG, HDC *);
unsigned char * __attribute__((__stdcall__)) HDC_UserMarshal (ULONG *, unsigned char *, HDC *);
unsigned char * __attribute__((__stdcall__)) HDC_UserUnmarshal(ULONG *, unsigned char *, HDC *);
void __attribute__((__stdcall__)) HDC_UserFree (ULONG *, HDC *);
extern __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CoBuildVersion (void);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoInitialize (LPVOID pvReserved);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoRegisterMallocSpy (LPMALLOCSPY pMallocSpy);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoRevokeMallocSpy (void);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoCreateStandardMalloc (DWORD memctx, IMalloc **ppMalloc);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoRegisterInitializeSpy (LPINITIALIZESPY pSpy, ULARGE_INTEGER *puliCookie);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoRevokeInitializeSpy (ULARGE_INTEGER uliCookie);
typedef enum tagCOMSD {
  SD_LAUNCHPERMISSIONS = 0,
  SD_ACCESSPERMISSIONS = 1,
  SD_LAUNCHRESTRICTIONS = 2,
  SD_ACCESSRESTRICTIONS = 3
} COMSD;
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetSystemSecurityPermissions (COMSD comSDType, PSECURITY_DESCRIPTOR *ppSD);
extern __attribute__((dllimport)) HINSTANCE __attribute__((__stdcall__)) CoLoadLibrary (LPOLESTR lpszLibName, WINBOOL bAutoFree);
extern __attribute__((dllimport)) void __attribute__((__stdcall__)) CoFreeLibrary (HINSTANCE hInst);
extern __attribute__((dllimport)) void __attribute__((__stdcall__)) CoFreeAllLibraries (void);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetInstanceFromFile (COSERVERINFO *pServerInfo, CLSID *pClsid, IUnknown *punkOuter, DWORD dwClsCtx, DWORD grfMode, OLECHAR *pwszName, DWORD dwCount, MULTI_QI *pResults);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetInstanceFromIStorage (COSERVERINFO *pServerInfo, CLSID *pClsid, IUnknown *punkOuter, DWORD dwClsCtx, struct IStorage *pstg, DWORD dwCount, MULTI_QI *pResults);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoAllowSetForegroundWindow (IUnknown *pUnk, LPVOID lpvReserved);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) DcomChannelSetHResult (LPVOID pvReserved, ULONG *pulReserved, HRESULT appsHR);
extern __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CoIsOle1Class (const IID *const rclsid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CLSIDFromProgIDEx (LPCOLESTR lpszProgID, LPCLSID lpclsid);
extern __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CoFileTimeToDosDateTime (FILETIME *lpFileTime, LPWORD lpDosDate, LPWORD lpDosTime);
extern __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CoDosDateTimeToFileTime (WORD nDosDate, WORD nDosTime, FILETIME *lpFileTime);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoFileTimeNow (FILETIME *lpFileTime);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoRegisterMessageFilter (LPMESSAGEFILTER lpMessageFilter, LPMESSAGEFILTER *lplpMessageFilter);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoRegisterChannelHook (const GUID *const ExtensionUuid, IChannelHook *pChannelHook);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoTreatAsClass (const IID *const clsidOld, const IID *const clsidNew);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateDataAdviseHolder (LPDATAADVISEHOLDER *ppDAHolder);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateDataCache (LPUNKNOWN pUnkOuter, const IID *const rclsid, const IID *const iid, LPVOID *ppv);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgOpenLayoutDocfile (OLECHAR const *pwcsDfName, DWORD grfMode, DWORD reserved, IStorage **ppstgOpen);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgCreateDocfile (const WCHAR *pwcsName, DWORD grfMode, DWORD reserved, IStorage **ppstgOpen);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgCreateDocfileOnILockBytes (ILockBytes *plkbyt, DWORD grfMode, DWORD reserved, IStorage **ppstgOpen);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgOpenStorage (const WCHAR *pwcsName, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgOpenStorageOnILockBytes (ILockBytes *plkbyt, IStorage *pstgPriority, DWORD grfMode, SNB snbExclude, DWORD reserved, IStorage **ppstgOpen);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgIsStorageFile (const WCHAR *pwcsName);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgIsStorageILockBytes (ILockBytes *plkbyt);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgSetTimes (const WCHAR *lpszName, const FILETIME *pctime, const FILETIME *patime, const FILETIME *pmtime);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgOpenAsyncDocfileOnIFillLockBytes (IFillLockBytes *pflb, DWORD grfMode, DWORD asyncFlags, IStorage **ppstgOpen);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgGetIFillLockBytesOnILockBytes (ILockBytes *pilb, IFillLockBytes **ppflb);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgGetIFillLockBytesOnFile (OLECHAR const *pwcsName, IFillLockBytes **ppflb);
#define STGOPTIONS_VERSION 2
typedef struct tagSTGOPTIONS {
  USHORT usVersion;
  USHORT reserved;
  ULONG ulSectorSize;
  const WCHAR *pwcsTemplateFile;
} STGOPTIONS;
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgCreateStorageEx (const WCHAR *pwcsName, DWORD grfMode, DWORD stgfmt, DWORD grfAttrs, STGOPTIONS *pStgOptions, PSECURITY_DESCRIPTOR pSecurityDescriptor, const IID *const riid, void **ppObjectOpen);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgOpenStorageEx (const WCHAR *pwcsName, DWORD grfMode, DWORD stgfmt, DWORD grfAttrs, STGOPTIONS *pStgOptions, PSECURITY_DESCRIPTOR pSecurityDescriptor, const IID *const riid, void **ppObjectOpen);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) BindMoniker (LPMONIKER pmk, DWORD grfOpt, const IID *const iidResult, LPVOID *ppvResult);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoGetObject (LPCWSTR pszName, BIND_OPTS *pBindOptions, const IID *const riid, void **ppv);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) MkParseDisplayName (LPBC pbc, LPCOLESTR szUserName, ULONG *pchEaten, LPMONIKER *ppmk);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) MonikerRelativePathTo (LPMONIKER pmkSrc, LPMONIKER pmkDest, LPMONIKER *ppmkRelPath, WINBOOL dwReserved);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) MonikerCommonPrefixWith (LPMONIKER pmkThis, LPMONIKER pmkOther, LPMONIKER *ppmkCommon);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateBindCtx (DWORD reserved, LPBC *ppbc);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateGenericComposite (LPMONIKER pmkFirst, LPMONIKER pmkRest, LPMONIKER *ppmkComposite);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) GetClassFile (LPCOLESTR szFilename, CLSID *pclsid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateClassMoniker (const IID *const rclsid, LPMONIKER *ppmk);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateFileMoniker (LPCOLESTR lpszPathName, LPMONIKER *ppmk);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateItemMoniker (LPCOLESTR lpszDelim, LPCOLESTR lpszItem, LPMONIKER *ppmk);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateAntiMoniker (LPMONIKER *ppmk);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreatePointerMoniker (LPUNKNOWN punk, LPMONIKER *ppmk);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateObjrefMoniker (LPUNKNOWN punk, LPMONIKER *ppmk);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CoInstall (IBindCtx *pbc, DWORD dwFlags, uCLSSPEC *pClassSpec, QUERYCONTEXT *pQuery, LPWSTR pszCodeBase);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) GetRunningObjectTable (DWORD reserved, LPRUNNINGOBJECTTABLE *pprot);
#undef interface
#define interface struct
#define __urlmon_h__ 
#define __IPersistMoniker_FWD_DEFINED__ 
typedef struct IPersistMoniker IPersistMoniker;
#define __IMonikerProp_FWD_DEFINED__ 
typedef struct IMonikerProp IMonikerProp;
#define __IBindProtocol_FWD_DEFINED__ 
typedef struct IBindProtocol IBindProtocol;
#define __IBinding_FWD_DEFINED__ 
typedef struct IBinding IBinding;
#define __IBindStatusCallback_FWD_DEFINED__ 
typedef struct IBindStatusCallback IBindStatusCallback;
#define __IBindStatusCallbackEx_FWD_DEFINED__ 
typedef struct IBindStatusCallbackEx IBindStatusCallbackEx;
#define __IAuthenticate_FWD_DEFINED__ 
typedef struct IAuthenticate IAuthenticate;
#define __IAuthenticateEx_FWD_DEFINED__ 
typedef struct IAuthenticateEx IAuthenticateEx;
#define __IHttpNegotiate_FWD_DEFINED__ 
typedef struct IHttpNegotiate IHttpNegotiate;
#define __IHttpNegotiate2_FWD_DEFINED__ 
typedef struct IHttpNegotiate2 IHttpNegotiate2;
#define __IHttpNegotiate3_FWD_DEFINED__ 
typedef struct IHttpNegotiate3 IHttpNegotiate3;
#define __IWinInetFileStream_FWD_DEFINED__ 
typedef struct IWinInetFileStream IWinInetFileStream;
#define __IWindowForBindingUI_FWD_DEFINED__ 
typedef struct IWindowForBindingUI IWindowForBindingUI;
#define __ICodeInstall_FWD_DEFINED__ 
typedef struct ICodeInstall ICodeInstall;
#define __IUri_FWD_DEFINED__ 
typedef struct IUri IUri;
#define __IUriContainer_FWD_DEFINED__ 
typedef struct IUriContainer IUriContainer;
#define __IUriBuilder_FWD_DEFINED__ 
typedef struct IUriBuilder IUriBuilder;
#define __IUriBuilderFactory_FWD_DEFINED__ 
typedef struct IUriBuilderFactory IUriBuilderFactory;
#define __IWinInetInfo_FWD_DEFINED__ 
typedef struct IWinInetInfo IWinInetInfo;
#define __IHttpSecurity_FWD_DEFINED__ 
typedef struct IHttpSecurity IHttpSecurity;
#define __IWinInetHttpInfo_FWD_DEFINED__ 
typedef struct IWinInetHttpInfo IWinInetHttpInfo;
#define __IWinInetHttpTimeouts_FWD_DEFINED__ 
typedef struct IWinInetHttpTimeouts IWinInetHttpTimeouts;
#define __IWinInetCacheHints_FWD_DEFINED__ 
typedef struct IWinInetCacheHints IWinInetCacheHints;
#define __IWinInetCacheHints2_FWD_DEFINED__ 
typedef struct IWinInetCacheHints2 IWinInetCacheHints2;
#define __IBindHost_FWD_DEFINED__ 
typedef struct IBindHost IBindHost;
#define __IInternet_FWD_DEFINED__ 
typedef struct IInternet IInternet;
#define __IInternetBindInfo_FWD_DEFINED__ 
typedef struct IInternetBindInfo IInternetBindInfo;
#define __IInternetBindInfoEx_FWD_DEFINED__ 
typedef struct IInternetBindInfoEx IInternetBindInfoEx;
#define __IInternetProtocolRoot_FWD_DEFINED__ 
typedef struct IInternetProtocolRoot IInternetProtocolRoot;
#define __IInternetProtocol_FWD_DEFINED__ 
typedef struct IInternetProtocol IInternetProtocol;
#define __IInternetProtocolEx_FWD_DEFINED__ 
typedef struct IInternetProtocolEx IInternetProtocolEx;
#define __IInternetProtocolSink_FWD_DEFINED__ 
typedef struct IInternetProtocolSink IInternetProtocolSink;
#define __IInternetProtocolSinkStackable_FWD_DEFINED__ 
typedef struct IInternetProtocolSinkStackable IInternetProtocolSinkStackable;
#define __IInternetSession_FWD_DEFINED__ 
typedef struct IInternetSession IInternetSession;
#define __IInternetThreadSwitch_FWD_DEFINED__ 
typedef struct IInternetThreadSwitch IInternetThreadSwitch;
#define __IInternetPriority_FWD_DEFINED__ 
typedef struct IInternetPriority IInternetPriority;
#define __IInternetProtocolInfo_FWD_DEFINED__ 
typedef struct IInternetProtocolInfo IInternetProtocolInfo;
#define __IInternetSecurityMgrSite_FWD_DEFINED__ 
typedef struct IInternetSecurityMgrSite IInternetSecurityMgrSite;
#define __IInternetSecurityManager_FWD_DEFINED__ 
typedef struct IInternetSecurityManager IInternetSecurityManager;
#define __IInternetSecurityManagerEx_FWD_DEFINED__ 
typedef struct IInternetSecurityManagerEx IInternetSecurityManagerEx;
#define __IInternetSecurityManagerEx2_FWD_DEFINED__ 
typedef struct IInternetSecurityManagerEx2 IInternetSecurityManagerEx2;
#define __IZoneIdentifier_FWD_DEFINED__ 
typedef struct IZoneIdentifier IZoneIdentifier;
#define __IInternetHostSecurityManager_FWD_DEFINED__ 
typedef struct IInternetHostSecurityManager IInternetHostSecurityManager;
#define __IInternetZoneManager_FWD_DEFINED__ 
typedef struct IInternetZoneManager IInternetZoneManager;
#define __IInternetZoneManagerEx_FWD_DEFINED__ 
typedef struct IInternetZoneManagerEx IInternetZoneManagerEx;
#define __IInternetZoneManagerEx2_FWD_DEFINED__ 
typedef struct IInternetZoneManagerEx2 IInternetZoneManagerEx2;
#define __ISoftDistExt_FWD_DEFINED__ 
typedef struct ISoftDistExt ISoftDistExt;
#define __ICatalogFileInfo_FWD_DEFINED__ 
typedef struct ICatalogFileInfo ICatalogFileInfo;
#define __IDataFilter_FWD_DEFINED__ 
typedef struct IDataFilter IDataFilter;
#define __IEncodingFilterFactory_FWD_DEFINED__ 
typedef struct IEncodingFilterFactory IEncodingFilterFactory;
#define __IWrappedProtocol_FWD_DEFINED__ 
typedef struct IWrappedProtocol IWrappedProtocol;
#define __IGetBindHandle_FWD_DEFINED__ 
typedef struct IGetBindHandle IGetBindHandle;
#define __IBindCallbackRedirect_FWD_DEFINED__ 
typedef struct IBindCallbackRedirect IBindCallbackRedirect;
#undef interface
#define interface struct
#undef interface
#define interface struct
#define __oleidl_h__ 
#define __IOleAdviseHolder_FWD_DEFINED__ 
typedef struct IOleAdviseHolder IOleAdviseHolder;
#define __IOleCache_FWD_DEFINED__ 
typedef struct IOleCache IOleCache;
#define __IOleCache2_FWD_DEFINED__ 
typedef struct IOleCache2 IOleCache2;
#define __IOleCacheControl_FWD_DEFINED__ 
typedef struct IOleCacheControl IOleCacheControl;
#define __IParseDisplayName_FWD_DEFINED__ 
typedef struct IParseDisplayName IParseDisplayName;
#define __IOleContainer_FWD_DEFINED__ 
typedef struct IOleContainer IOleContainer;
#define __IOleClientSite_FWD_DEFINED__ 
typedef struct IOleClientSite IOleClientSite;
#define __IOleObject_FWD_DEFINED__ 
typedef struct IOleObject IOleObject;
#define __IOleWindow_FWD_DEFINED__ 
typedef struct IOleWindow IOleWindow;
#define __IOleLink_FWD_DEFINED__ 
typedef struct IOleLink IOleLink;
#define __IOleItemContainer_FWD_DEFINED__ 
typedef struct IOleItemContainer IOleItemContainer;
#define __IOleInPlaceUIWindow_FWD_DEFINED__ 
typedef struct IOleInPlaceUIWindow IOleInPlaceUIWindow;
#define __IOleInPlaceActiveObject_FWD_DEFINED__ 
typedef struct IOleInPlaceActiveObject IOleInPlaceActiveObject;
#define __IOleInPlaceFrame_FWD_DEFINED__ 
typedef struct IOleInPlaceFrame IOleInPlaceFrame;
#define __IOleInPlaceObject_FWD_DEFINED__ 
typedef struct IOleInPlaceObject IOleInPlaceObject;
#define __IOleInPlaceSite_FWD_DEFINED__ 
typedef struct IOleInPlaceSite IOleInPlaceSite;
#define __IContinue_FWD_DEFINED__ 
typedef struct IContinue IContinue;
#define __IViewObject_FWD_DEFINED__ 
typedef struct IViewObject IViewObject;
#define __IViewObject2_FWD_DEFINED__ 
typedef struct IViewObject2 IViewObject2;
#define __IDropSource_FWD_DEFINED__ 
typedef struct IDropSource IDropSource;
#define __IDropTarget_FWD_DEFINED__ 
typedef struct IDropTarget IDropTarget;
#define __IDropSourceNotify_FWD_DEFINED__ 
typedef struct IDropSourceNotify IDropSourceNotify;
#define __IEnumOLEVERB_FWD_DEFINED__ 
typedef struct IEnumOLEVERB IEnumOLEVERB;
#undef interface
#define interface struct
#define __IOleAdviseHolder_INTERFACE_DEFINED__ 
typedef IOleAdviseHolder *LPOLEADVISEHOLDER;
extern const GUID IID_IOleAdviseHolder;
typedef struct IOleAdviseHolderVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleAdviseHolder *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleAdviseHolder *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleAdviseHolder *This);
    HRESULT (__attribute__((__stdcall__)) *Advise)(
        IOleAdviseHolder *This,
        IAdviseSink *pAdvise,
        DWORD *pdwConnection);
    HRESULT (__attribute__((__stdcall__)) *Unadvise)(
        IOleAdviseHolder *This,
        DWORD dwConnection);
    HRESULT (__attribute__((__stdcall__)) *EnumAdvise)(
        IOleAdviseHolder *This,
        IEnumSTATDATA **ppenumAdvise);
    HRESULT (__attribute__((__stdcall__)) *SendOnRename)(
        IOleAdviseHolder *This,
        IMoniker *pmk);
    HRESULT (__attribute__((__stdcall__)) *SendOnSave)(
        IOleAdviseHolder *This);
    HRESULT (__attribute__((__stdcall__)) *SendOnClose)(
        IOleAdviseHolder *This);
   
} IOleAdviseHolderVtbl;
struct IOleAdviseHolder {
    IOleAdviseHolderVtbl* lpVtbl;
};
#define __IOleCache_INTERFACE_DEFINED__ 
typedef IOleCache *LPOLECACHE;
extern const GUID IID_IOleCache;
typedef struct IOleCacheVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleCache *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleCache *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleCache *This);
    HRESULT (__attribute__((__stdcall__)) *Cache)(
        IOleCache *This,
        FORMATETC *pformatetc,
        DWORD advf,
        DWORD *pdwConnection);
    HRESULT (__attribute__((__stdcall__)) *Uncache)(
        IOleCache *This,
        DWORD dwConnection);
    HRESULT (__attribute__((__stdcall__)) *EnumCache)(
        IOleCache *This,
        IEnumSTATDATA **ppenumSTATDATA);
    HRESULT (__attribute__((__stdcall__)) *InitCache)(
        IOleCache *This,
        IDataObject *pDataObject);
    HRESULT (__attribute__((__stdcall__)) *SetData)(
        IOleCache *This,
        FORMATETC *pformatetc,
        STGMEDIUM *pmedium,
        WINBOOL fRelease);
   
} IOleCacheVtbl;
struct IOleCache {
    IOleCacheVtbl* lpVtbl;
};
#define __IOleCache2_INTERFACE_DEFINED__ 
typedef IOleCache2 *LPOLECACHE2;
#define UPDFCACHE_NODATACACHE (0x1)
#define UPDFCACHE_ONSAVECACHE (0x2)
#define UPDFCACHE_ONSTOPCACHE (0x4)
#define UPDFCACHE_NORMALCACHE (0x8)
#define UPDFCACHE_IFBLANK (0x10)
#define UPDFCACHE_ONLYIFBLANK (0x80000000)
#define UPDFCACHE_IFBLANKORONSAVECACHE (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE)
#define UPDFCACHE_ALL ((DWORD)~UPDFCACHE_ONLYIFBLANK)
#define UPDFCACHE_ALLBUTNODATACACHE (UPDFCACHE_ALL & (DWORD)~UPDFCACHE_NODATACACHE)
typedef enum tagDISCARDCACHE {
    DISCARDCACHE_SAVEIFDIRTY = 0,
    DISCARDCACHE_NOSAVE = 1
} DISCARDCACHE;
extern const GUID IID_IOleCache2;
typedef struct IOleCache2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleCache2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleCache2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleCache2 *This);
    HRESULT (__attribute__((__stdcall__)) *Cache)(
        IOleCache2 *This,
        FORMATETC *pformatetc,
        DWORD advf,
        DWORD *pdwConnection);
    HRESULT (__attribute__((__stdcall__)) *Uncache)(
        IOleCache2 *This,
        DWORD dwConnection);
    HRESULT (__attribute__((__stdcall__)) *EnumCache)(
        IOleCache2 *This,
        IEnumSTATDATA **ppenumSTATDATA);
    HRESULT (__attribute__((__stdcall__)) *InitCache)(
        IOleCache2 *This,
        IDataObject *pDataObject);
    HRESULT (__attribute__((__stdcall__)) *SetData)(
        IOleCache2 *This,
        FORMATETC *pformatetc,
        STGMEDIUM *pmedium,
        WINBOOL fRelease);
    HRESULT (__attribute__((__stdcall__)) *UpdateCache)(
        IOleCache2 *This,
        LPDATAOBJECT pDataObject,
        DWORD grfUpdf,
        LPVOID pReserved);
    HRESULT (__attribute__((__stdcall__)) *DiscardCache)(
        IOleCache2 *This,
        DWORD dwDiscardOptions);
   
} IOleCache2Vtbl;
struct IOleCache2 {
    IOleCache2Vtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IOleCache2_RemoteUpdateCache_Proxy(
    IOleCache2* This,
    LPDATAOBJECT pDataObject,
    DWORD grfUpdf,
    LONG_PTR pReserved);
void __attribute__((__stdcall__)) IOleCache2_RemoteUpdateCache_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IOleCache2_UpdateCache_Proxy(
    IOleCache2* This,
    LPDATAOBJECT pDataObject,
    DWORD grfUpdf,
    LPVOID pReserved);
HRESULT __attribute__((__stdcall__)) IOleCache2_UpdateCache_Stub(
    IOleCache2* This,
    LPDATAOBJECT pDataObject,
    DWORD grfUpdf,
    LONG_PTR pReserved);
#define __IOleCacheControl_INTERFACE_DEFINED__ 
typedef IOleCacheControl *LPOLECACHECONTROL;
extern const GUID IID_IOleCacheControl;
typedef struct IOleCacheControlVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleCacheControl *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleCacheControl *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleCacheControl *This);
    HRESULT (__attribute__((__stdcall__)) *OnRun)(
        IOleCacheControl *This,
        LPDATAOBJECT pDataObject);
    HRESULT (__attribute__((__stdcall__)) *OnStop)(
        IOleCacheControl *This);
   
} IOleCacheControlVtbl;
struct IOleCacheControl {
    IOleCacheControlVtbl* lpVtbl;
};
#define __IParseDisplayName_INTERFACE_DEFINED__ 
typedef IParseDisplayName *LPPARSEDISPLAYNAME;
extern const GUID IID_IParseDisplayName;
typedef struct IParseDisplayNameVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IParseDisplayName *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IParseDisplayName *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IParseDisplayName *This);
    HRESULT (__attribute__((__stdcall__)) *ParseDisplayName)(
        IParseDisplayName *This,
        IBindCtx *pbc,
        LPOLESTR pszDisplayName,
        ULONG *pchEaten,
        IMoniker **ppmkOut);
   
} IParseDisplayNameVtbl;
struct IParseDisplayName {
    IParseDisplayNameVtbl* lpVtbl;
};
#define __IOleContainer_INTERFACE_DEFINED__ 
typedef IOleContainer *LPOLECONTAINER;
extern const GUID IID_IOleContainer;
typedef struct IOleContainerVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleContainer *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleContainer *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleContainer *This);
    HRESULT (__attribute__((__stdcall__)) *ParseDisplayName)(
        IOleContainer *This,
        IBindCtx *pbc,
        LPOLESTR pszDisplayName,
        ULONG *pchEaten,
        IMoniker **ppmkOut);
    HRESULT (__attribute__((__stdcall__)) *EnumObjects)(
        IOleContainer *This,
        DWORD grfFlags,
        IEnumUnknown **ppenum);
    HRESULT (__attribute__((__stdcall__)) *LockContainer)(
        IOleContainer *This,
        WINBOOL fLock);
   
} IOleContainerVtbl;
struct IOleContainer {
    IOleContainerVtbl* lpVtbl;
};
#define __IOleClientSite_INTERFACE_DEFINED__ 
typedef IOleClientSite *LPOLECLIENTSITE;
extern const GUID IID_IOleClientSite;
typedef struct IOleClientSiteVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleClientSite *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleClientSite *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleClientSite *This);
    HRESULT (__attribute__((__stdcall__)) *SaveObject)(
        IOleClientSite *This);
    HRESULT (__attribute__((__stdcall__)) *GetMoniker)(
        IOleClientSite *This,
        DWORD dwAssign,
        DWORD dwWhichMoniker,
        IMoniker **ppmk);
    HRESULT (__attribute__((__stdcall__)) *GetContainer)(
        IOleClientSite *This,
        IOleContainer **ppContainer);
    HRESULT (__attribute__((__stdcall__)) *ShowObject)(
        IOleClientSite *This);
    HRESULT (__attribute__((__stdcall__)) *OnShowWindow)(
        IOleClientSite *This,
        WINBOOL fShow);
    HRESULT (__attribute__((__stdcall__)) *RequestNewObjectLayout)(
        IOleClientSite *This);
   
} IOleClientSiteVtbl;
struct IOleClientSite {
    IOleClientSiteVtbl* lpVtbl;
};
#define __IOleObject_INTERFACE_DEFINED__ 
typedef IOleObject *LPOLEOBJECT;
typedef enum tagOLEGETMONIKER {
    OLEGETMONIKER_ONLYIFTHERE = 1,
    OLEGETMONIKER_FORCEASSIGN = 2,
    OLEGETMONIKER_UNASSIGN = 3,
    OLEGETMONIKER_TEMPFORUSER = 4
} OLEGETMONIKER;
typedef enum tagOLEWHICHMK {
    OLEWHICHMK_CONTAINER = 1,
    OLEWHICHMK_OBJREL = 2,
    OLEWHICHMK_OBJFULL = 3
} OLEWHICHMK;
typedef enum tagUSERCLASSTYPE {
    USERCLASSTYPE_FULL = 1,
    USERCLASSTYPE_SHORT = 2,
    USERCLASSTYPE_APPNAME = 3
} USERCLASSTYPE;
typedef enum tagOLEMISC {
    OLEMISC_RECOMPOSEONRESIZE = 0x1,
    OLEMISC_ONLYICONIC = 0x2,
    OLEMISC_INSERTNOTREPLACE = 0x4,
    OLEMISC_STATIC = 0x8,
    OLEMISC_CANTLINKINSIDE = 0x10,
    OLEMISC_CANLINKBYOLE1 = 0x20,
    OLEMISC_ISLINKOBJECT = 0x40,
    OLEMISC_INSIDEOUT = 0x80,
    OLEMISC_ACTIVATEWHENVISIBLE = 0x100,
    OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200,
    OLEMISC_INVISIBLEATRUNTIME = 0x400,
    OLEMISC_ALWAYSRUN = 0x800,
    OLEMISC_ACTSLIKEBUTTON = 0x1000,
    OLEMISC_ACTSLIKELABEL = 0x2000,
    OLEMISC_NOUIACTIVATE = 0x4000,
    OLEMISC_ALIGNABLE = 0x8000,
    OLEMISC_SIMPLEFRAME = 0x10000,
    OLEMISC_SETCLIENTSITEFIRST = 0x20000,
    OLEMISC_IMEMODE = 0x40000,
    OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000,
    OLEMISC_WANTSTOMENUMERGE = 0x100000,
    OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000
} OLEMISC;
typedef enum tagOLECLOSE {
    OLECLOSE_SAVEIFDIRTY = 0,
    OLECLOSE_NOSAVE = 1,
    OLECLOSE_PROMPTSAVE = 2
} OLECLOSE;
extern const GUID IID_IOleObject;
typedef struct IOleObjectVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleObject *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleObject *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleObject *This);
    HRESULT (__attribute__((__stdcall__)) *SetClientSite)(
        IOleObject *This,
        IOleClientSite *pClientSite);
    HRESULT (__attribute__((__stdcall__)) *GetClientSite)(
        IOleObject *This,
        IOleClientSite **ppClientSite);
    HRESULT (__attribute__((__stdcall__)) *SetHostNames)(
        IOleObject *This,
        LPCOLESTR szContainerApp,
        LPCOLESTR szContainerObj);
    HRESULT (__attribute__((__stdcall__)) *Close)(
        IOleObject *This,
        DWORD dwSaveOption);
    HRESULT (__attribute__((__stdcall__)) *SetMoniker)(
        IOleObject *This,
        DWORD dwWhichMoniker,
        IMoniker *pmk);
    HRESULT (__attribute__((__stdcall__)) *GetMoniker)(
        IOleObject *This,
        DWORD dwAssign,
        DWORD dwWhichMoniker,
        IMoniker **ppmk);
    HRESULT (__attribute__((__stdcall__)) *InitFromData)(
        IOleObject *This,
        IDataObject *pDataObject,
        WINBOOL fCreation,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *GetClipboardData)(
        IOleObject *This,
        DWORD dwReserved,
        IDataObject **ppDataObject);
    HRESULT (__attribute__((__stdcall__)) *DoVerb)(
        IOleObject *This,
        LONG iVerb,
        LPMSG lpmsg,
        IOleClientSite *pActiveSite,
        LONG lindex,
        HWND hwndParent,
        LPCRECT lprcPosRect);
    HRESULT (__attribute__((__stdcall__)) *EnumVerbs)(
        IOleObject *This,
        IEnumOLEVERB **ppEnumOleVerb);
    HRESULT (__attribute__((__stdcall__)) *Update)(
        IOleObject *This);
    HRESULT (__attribute__((__stdcall__)) *IsUpToDate)(
        IOleObject *This);
    HRESULT (__attribute__((__stdcall__)) *GetUserClassID)(
        IOleObject *This,
        CLSID *pClsid);
    HRESULT (__attribute__((__stdcall__)) *GetUserType)(
        IOleObject *This,
        DWORD dwFormOfType,
        LPOLESTR *pszUserType);
    HRESULT (__attribute__((__stdcall__)) *SetExtent)(
        IOleObject *This,
        DWORD dwDrawAspect,
        SIZEL *psizel);
    HRESULT (__attribute__((__stdcall__)) *GetExtent)(
        IOleObject *This,
        DWORD dwDrawAspect,
        SIZEL *psizel);
    HRESULT (__attribute__((__stdcall__)) *Advise)(
        IOleObject *This,
        IAdviseSink *pAdvSink,
        DWORD *pdwConnection);
    HRESULT (__attribute__((__stdcall__)) *Unadvise)(
        IOleObject *This,
        DWORD dwConnection);
    HRESULT (__attribute__((__stdcall__)) *EnumAdvise)(
        IOleObject *This,
        IEnumSTATDATA **ppenumAdvise);
    HRESULT (__attribute__((__stdcall__)) *GetMiscStatus)(
        IOleObject *This,
        DWORD dwAspect,
        DWORD *pdwStatus);
    HRESULT (__attribute__((__stdcall__)) *SetColorScheme)(
        IOleObject *This,
        LOGPALETTE *pLogpal);
   
} IOleObjectVtbl;
struct IOleObject {
    IOleObjectVtbl* lpVtbl;
};
#define __IOLETypes_INTERFACE_DEFINED__ 
extern RPC_IF_HANDLE IOLETypes_v0_0_c_ifspec;
extern RPC_IF_HANDLE IOLETypes_v0_0_s_ifspec;
typedef enum tagOLERENDER {
    OLERENDER_NONE = 0,
    OLERENDER_DRAW = 1,
    OLERENDER_FORMAT = 2,
    OLERENDER_ASIS = 3
} OLERENDER;
typedef OLERENDER *LPOLERENDER;
typedef struct tagOBJECTDESCRIPTOR {
    ULONG cbSize;
    CLSID clsid;
    DWORD dwDrawAspect;
    SIZEL sizel;
    POINTL pointl;
    DWORD dwStatus;
    DWORD dwFullUserTypeName;
    DWORD dwSrcOfCopy;
} OBJECTDESCRIPTOR;
typedef struct tagOBJECTDESCRIPTOR *POBJECTDESCRIPTOR;
typedef struct tagOBJECTDESCRIPTOR *LPOBJECTDESCRIPTOR;
typedef struct tagOBJECTDESCRIPTOR LINKSRCDESCRIPTOR;
typedef struct tagOBJECTDESCRIPTOR *PLINKSRCDESCRIPTOR;
typedef struct tagOBJECTDESCRIPTOR *LPLINKSRCDESCRIPTOR;
#define __IOleWindow_INTERFACE_DEFINED__ 
typedef IOleWindow *LPOLEWINDOW;
extern const GUID IID_IOleWindow;
typedef struct IOleWindowVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleWindow *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleWindow *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleWindow *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindow)(
        IOleWindow *This,
        HWND *phwnd);
    HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)(
        IOleWindow *This,
        WINBOOL fEnterMode);
   
} IOleWindowVtbl;
struct IOleWindow {
    IOleWindowVtbl* lpVtbl;
};
#define __IOleLink_INTERFACE_DEFINED__ 
typedef IOleLink *LPOLELINK;
typedef enum tagOLEUPDATE {
    OLEUPDATE_ALWAYS = 1,
    OLEUPDATE_ONCALL = 3
} OLEUPDATE;
typedef OLEUPDATE *LPOLEUPDATE;
typedef OLEUPDATE *POLEUPDATE;
typedef enum tagOLELINKBIND {
    OLELINKBIND_EVENIFCLASSDIFF = 1
} OLELINKBIND;
extern const GUID IID_IOleLink;
typedef struct IOleLinkVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleLink *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleLink *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleLink *This);
    HRESULT (__attribute__((__stdcall__)) *SetUpdateOptions)(
        IOleLink *This,
        DWORD dwUpdateOpt);
    HRESULT (__attribute__((__stdcall__)) *GetUpdateOptions)(
        IOleLink *This,
        DWORD *pdwUpdateOpt);
    HRESULT (__attribute__((__stdcall__)) *SetSourceMoniker)(
        IOleLink *This,
        IMoniker *pmk,
        const IID *const rclsid);
    HRESULT (__attribute__((__stdcall__)) *GetSourceMoniker)(
        IOleLink *This,
        IMoniker **ppmk);
    HRESULT (__attribute__((__stdcall__)) *SetSourceDisplayName)(
        IOleLink *This,
        LPCOLESTR pszStatusText);
    HRESULT (__attribute__((__stdcall__)) *GetSourceDisplayName)(
        IOleLink *This,
        LPOLESTR *ppszDisplayName);
    HRESULT (__attribute__((__stdcall__)) *BindToSource)(
        IOleLink *This,
        DWORD bindflags,
        IBindCtx *pbc);
    HRESULT (__attribute__((__stdcall__)) *BindIfRunning)(
        IOleLink *This);
    HRESULT (__attribute__((__stdcall__)) *GetBoundSource)(
        IOleLink *This,
        IUnknown **ppunk);
    HRESULT (__attribute__((__stdcall__)) *UnbindSource)(
        IOleLink *This);
    HRESULT (__attribute__((__stdcall__)) *Update)(
        IOleLink *This,
        IBindCtx *pbc);
   
} IOleLinkVtbl;
struct IOleLink {
    IOleLinkVtbl* lpVtbl;
};
#define __IOleItemContainer_INTERFACE_DEFINED__ 
typedef IOleItemContainer *LPOLEITEMCONTAINER;
typedef enum tagBINDSPEED {
    BINDSPEED_INDEFINITE = 1,
    BINDSPEED_MODERATE = 2,
    BINDSPEED_IMMEDIATE = 3
} BINDSPEED;
typedef enum tagOLECONTF {
    OLECONTF_EMBEDDINGS = 1,
    OLECONTF_LINKS = 2,
    OLECONTF_OTHERS = 4,
    OLECONTF_ONLYUSER = 8,
    OLECONTF_ONLYIFRUNNING = 16
} OLECONTF;
extern const GUID IID_IOleItemContainer;
typedef struct IOleItemContainerVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleItemContainer *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleItemContainer *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleItemContainer *This);
    HRESULT (__attribute__((__stdcall__)) *ParseDisplayName)(
        IOleItemContainer *This,
        IBindCtx *pbc,
        LPOLESTR pszDisplayName,
        ULONG *pchEaten,
        IMoniker **ppmkOut);
    HRESULT (__attribute__((__stdcall__)) *EnumObjects)(
        IOleItemContainer *This,
        DWORD grfFlags,
        IEnumUnknown **ppenum);
    HRESULT (__attribute__((__stdcall__)) *LockContainer)(
        IOleItemContainer *This,
        WINBOOL fLock);
    HRESULT (__attribute__((__stdcall__)) *GetObjectA)(
        IOleItemContainer *This,
        LPOLESTR pszItem,
        DWORD dwSpeedNeeded,
        IBindCtx *pbc,
        const IID *const riid,
        void **ppvObject);
    HRESULT (__attribute__((__stdcall__)) *GetObjectStorage)(
        IOleItemContainer *This,
        LPOLESTR pszItem,
        IBindCtx *pbc,
        const IID *const riid,
        void **ppvStorage);
    HRESULT (__attribute__((__stdcall__)) *IsRunning)(
        IOleItemContainer *This,
        LPOLESTR pszItem);
   
} IOleItemContainerVtbl;
struct IOleItemContainer {
    IOleItemContainerVtbl* lpVtbl;
};
#define __IOleInPlaceUIWindow_INTERFACE_DEFINED__ 
typedef IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW;
typedef RECT BORDERWIDTHS;
typedef LPRECT LPBORDERWIDTHS;
typedef LPCRECT LPCBORDERWIDTHS;
extern const GUID IID_IOleInPlaceUIWindow;
typedef struct IOleInPlaceUIWindowVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleInPlaceUIWindow *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleInPlaceUIWindow *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleInPlaceUIWindow *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindow)(
        IOleInPlaceUIWindow *This,
        HWND *phwnd);
    HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)(
        IOleInPlaceUIWindow *This,
        WINBOOL fEnterMode);
    HRESULT (__attribute__((__stdcall__)) *GetBorder)(
        IOleInPlaceUIWindow *This,
        LPRECT lprectBorder);
    HRESULT (__attribute__((__stdcall__)) *RequestBorderSpace)(
        IOleInPlaceUIWindow *This,
        LPCBORDERWIDTHS pborderwidths);
    HRESULT (__attribute__((__stdcall__)) *SetBorderSpace)(
        IOleInPlaceUIWindow *This,
        LPCBORDERWIDTHS pborderwidths);
    HRESULT (__attribute__((__stdcall__)) *SetActiveObject)(
        IOleInPlaceUIWindow *This,
        IOleInPlaceActiveObject *pActiveObject,
        LPCOLESTR pszObjName);
   
} IOleInPlaceUIWindowVtbl;
struct IOleInPlaceUIWindow {
    IOleInPlaceUIWindowVtbl* lpVtbl;
};
#define __IOleInPlaceActiveObject_INTERFACE_DEFINED__ 
typedef IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT;
extern const GUID IID_IOleInPlaceActiveObject;
typedef struct IOleInPlaceActiveObjectVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleInPlaceActiveObject *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleInPlaceActiveObject *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleInPlaceActiveObject *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindow)(
        IOleInPlaceActiveObject *This,
        HWND *phwnd);
    HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)(
        IOleInPlaceActiveObject *This,
        WINBOOL fEnterMode);
    HRESULT (__attribute__((__stdcall__)) *TranslateAcceleratorA)(
        IOleInPlaceActiveObject *This,
        LPMSG lpmsg);
    HRESULT (__attribute__((__stdcall__)) *OnFrameWindowActivate)(
        IOleInPlaceActiveObject *This,
        WINBOOL fActivate);
    HRESULT (__attribute__((__stdcall__)) *OnDocWindowActivate)(
        IOleInPlaceActiveObject *This,
        WINBOOL fActivate);
    HRESULT (__attribute__((__stdcall__)) *ResizeBorder)(
        IOleInPlaceActiveObject *This,
        LPCRECT prcBorder,
        IOleInPlaceUIWindow *pUIWindow,
        WINBOOL fFrameWindow);
    HRESULT (__attribute__((__stdcall__)) *EnableModeless)(
        IOleInPlaceActiveObject *This,
        WINBOOL fEnable);
   
} IOleInPlaceActiveObjectVtbl;
struct IOleInPlaceActiveObject {
    IOleInPlaceActiveObjectVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IOleInPlaceActiveObject_RemoteTranslateAccelerator_Proxy(
    IOleInPlaceActiveObject* This);
void __attribute__((__stdcall__)) IOleInPlaceActiveObject_RemoteTranslateAccelerator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IOleInPlaceActiveObject_RemoteResizeBorder_Proxy(
    IOleInPlaceActiveObject* This,
    LPCRECT prcBorder,
    const IID *const riid,
    IOleInPlaceUIWindow *pUIWindow,
    WINBOOL fFrameWindow);
void __attribute__((__stdcall__)) IOleInPlaceActiveObject_RemoteResizeBorder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IOleInPlaceActiveObject_TranslateAccelerator_Proxy(
    IOleInPlaceActiveObject* This,
    LPMSG lpmsg);
HRESULT __attribute__((__stdcall__)) IOleInPlaceActiveObject_TranslateAccelerator_Stub(
    IOleInPlaceActiveObject* This);
HRESULT __attribute__((__stdcall__)) IOleInPlaceActiveObject_ResizeBorder_Proxy(
    IOleInPlaceActiveObject* This,
    LPCRECT prcBorder,
    IOleInPlaceUIWindow *pUIWindow,
    WINBOOL fFrameWindow);
HRESULT __attribute__((__stdcall__)) IOleInPlaceActiveObject_ResizeBorder_Stub(
    IOleInPlaceActiveObject* This,
    LPCRECT prcBorder,
    const IID *const riid,
    IOleInPlaceUIWindow *pUIWindow,
    WINBOOL fFrameWindow);
#define __IOleInPlaceFrame_INTERFACE_DEFINED__ 
typedef IOleInPlaceFrame *LPOLEINPLACEFRAME;
typedef struct tagOIFI {
    UINT cb;
    WINBOOL fMDIApp;
    HWND hwndFrame;
    HACCEL haccel;
    UINT cAccelEntries;
} OLEINPLACEFRAMEINFO;
typedef struct tagOIFI *LPOLEINPLACEFRAMEINFO;
typedef struct tagOleMenuGroupWidths {
    LONG width[6];
} OLEMENUGROUPWIDTHS;
typedef struct tagOleMenuGroupWidths *LPOLEMENUGROUPWIDTHS;
typedef HGLOBAL HOLEMENU;
extern const GUID IID_IOleInPlaceFrame;
typedef struct IOleInPlaceFrameVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleInPlaceFrame *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleInPlaceFrame *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleInPlaceFrame *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindow)(
        IOleInPlaceFrame *This,
        HWND *phwnd);
    HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)(
        IOleInPlaceFrame *This,
        WINBOOL fEnterMode);
    HRESULT (__attribute__((__stdcall__)) *GetBorder)(
        IOleInPlaceFrame *This,
        LPRECT lprectBorder);
    HRESULT (__attribute__((__stdcall__)) *RequestBorderSpace)(
        IOleInPlaceFrame *This,
        LPCBORDERWIDTHS pborderwidths);
    HRESULT (__attribute__((__stdcall__)) *SetBorderSpace)(
        IOleInPlaceFrame *This,
        LPCBORDERWIDTHS pborderwidths);
    HRESULT (__attribute__((__stdcall__)) *SetActiveObject)(
        IOleInPlaceFrame *This,
        IOleInPlaceActiveObject *pActiveObject,
        LPCOLESTR pszObjName);
    HRESULT (__attribute__((__stdcall__)) *InsertMenus)(
        IOleInPlaceFrame *This,
        HMENU hmenuShared,
        LPOLEMENUGROUPWIDTHS lpMenuWidths);
    HRESULT (__attribute__((__stdcall__)) *SetMenu)(
        IOleInPlaceFrame *This,
        HMENU hmenuShared,
        HOLEMENU holemenu,
        HWND hwndActiveObject);
    HRESULT (__attribute__((__stdcall__)) *RemoveMenus)(
        IOleInPlaceFrame *This,
        HMENU hmenuShared);
    HRESULT (__attribute__((__stdcall__)) *SetStatusText)(
        IOleInPlaceFrame *This,
        LPCOLESTR pszStatusText);
    HRESULT (__attribute__((__stdcall__)) *EnableModeless)(
        IOleInPlaceFrame *This,
        WINBOOL fEnable);
    HRESULT (__attribute__((__stdcall__)) *TranslateAcceleratorA)(
        IOleInPlaceFrame *This,
        LPMSG lpmsg,
        WORD wID);
   
} IOleInPlaceFrameVtbl;
struct IOleInPlaceFrame {
    IOleInPlaceFrameVtbl* lpVtbl;
};
#define __IOleInPlaceObject_INTERFACE_DEFINED__ 
typedef IOleInPlaceObject *LPOLEINPLACEOBJECT;
extern const GUID IID_IOleInPlaceObject;
typedef struct IOleInPlaceObjectVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleInPlaceObject *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleInPlaceObject *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleInPlaceObject *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindow)(
        IOleInPlaceObject *This,
        HWND *phwnd);
    HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)(
        IOleInPlaceObject *This,
        WINBOOL fEnterMode);
    HRESULT (__attribute__((__stdcall__)) *InPlaceDeactivate)(
        IOleInPlaceObject *This);
    HRESULT (__attribute__((__stdcall__)) *UIDeactivate)(
        IOleInPlaceObject *This);
    HRESULT (__attribute__((__stdcall__)) *SetObjectRects)(
        IOleInPlaceObject *This,
        LPCRECT lprcPosRect,
        LPCRECT lprcClipRect);
    HRESULT (__attribute__((__stdcall__)) *ReactivateAndUndo)(
        IOleInPlaceObject *This);
   
} IOleInPlaceObjectVtbl;
struct IOleInPlaceObject {
    IOleInPlaceObjectVtbl* lpVtbl;
};
#define __IOleInPlaceSite_INTERFACE_DEFINED__ 
typedef IOleInPlaceSite *LPOLEINPLACESITE;
extern const GUID IID_IOleInPlaceSite;
typedef struct IOleInPlaceSiteVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleInPlaceSite *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleInPlaceSite *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleInPlaceSite *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindow)(
        IOleInPlaceSite *This,
        HWND *phwnd);
    HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)(
        IOleInPlaceSite *This,
        WINBOOL fEnterMode);
    HRESULT (__attribute__((__stdcall__)) *CanInPlaceActivate)(
        IOleInPlaceSite *This);
    HRESULT (__attribute__((__stdcall__)) *OnInPlaceActivate)(
        IOleInPlaceSite *This);
    HRESULT (__attribute__((__stdcall__)) *OnUIActivate)(
        IOleInPlaceSite *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindowContext)(
        IOleInPlaceSite *This,
        IOleInPlaceFrame **ppFrame,
        IOleInPlaceUIWindow **ppDoc,
        LPRECT lprcPosRect,
        LPRECT lprcClipRect,
        LPOLEINPLACEFRAMEINFO lpFrameInfo);
    HRESULT (__attribute__((__stdcall__)) *Scroll)(
        IOleInPlaceSite *This,
        SIZE scrollExtant);
    HRESULT (__attribute__((__stdcall__)) *OnUIDeactivate)(
        IOleInPlaceSite *This,
        WINBOOL fUndoable);
    HRESULT (__attribute__((__stdcall__)) *OnInPlaceDeactivate)(
        IOleInPlaceSite *This);
    HRESULT (__attribute__((__stdcall__)) *DiscardUndoState)(
        IOleInPlaceSite *This);
    HRESULT (__attribute__((__stdcall__)) *DeactivateAndUndo)(
        IOleInPlaceSite *This);
    HRESULT (__attribute__((__stdcall__)) *OnPosRectChange)(
        IOleInPlaceSite *This,
        LPCRECT lprcPosRect);
   
} IOleInPlaceSiteVtbl;
struct IOleInPlaceSite {
    IOleInPlaceSiteVtbl* lpVtbl;
};
#define __IContinue_INTERFACE_DEFINED__ 
extern const GUID IID_IContinue;
typedef struct IContinueVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IContinue *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IContinue *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IContinue *This);
    HRESULT (__attribute__((__stdcall__)) *FContinue)(
        IContinue *This);
   
} IContinueVtbl;
struct IContinue {
    IContinueVtbl* lpVtbl;
};
#define __IViewObject_INTERFACE_DEFINED__ 
typedef IViewObject *LPVIEWOBJECT;
extern const GUID IID_IViewObject;
typedef struct IViewObjectVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IViewObject *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IViewObject *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IViewObject *This);
    HRESULT (__attribute__((__stdcall__)) *Draw)(
        IViewObject *This,
        DWORD dwDrawAspect,
        LONG lindex,
        void *pvAspect,
        DVTARGETDEVICE *ptd,
        HDC hdcTargetDev,
        HDC hdcDraw,
        LPCRECTL lprcBounds,
        LPCRECTL lprcWBounds,
        WINBOOL (__attribute__((__stdcall__)) *pfnContinue)(ULONG_PTR dwContinue),
        ULONG_PTR dwContinue);
    HRESULT (__attribute__((__stdcall__)) *GetColorSet)(
        IViewObject *This,
        DWORD dwDrawAspect,
        LONG lindex,
        void *pvAspect,
        DVTARGETDEVICE *ptd,
        HDC hicTargetDev,
        LOGPALETTE **ppColorSet);
    HRESULT (__attribute__((__stdcall__)) *Freeze)(
        IViewObject *This,
        DWORD dwDrawAspect,
        LONG lindex,
        void *pvAspect,
        DWORD *pdwFreeze);
    HRESULT (__attribute__((__stdcall__)) *Unfreeze)(
        IViewObject *This,
        DWORD dwFreeze);
    HRESULT (__attribute__((__stdcall__)) *SetAdvise)(
        IViewObject *This,
        DWORD aspects,
        DWORD advf,
        IAdviseSink *pAdvSink);
    HRESULT (__attribute__((__stdcall__)) *GetAdvise)(
        IViewObject *This,
        DWORD *pAspects,
        DWORD *pAdvf,
        IAdviseSink **ppAdvSink);
   
} IViewObjectVtbl;
struct IViewObject {
    IViewObjectVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IViewObject_RemoteDraw_Proxy(
    IViewObject* This,
    DWORD dwDrawAspect,
    LONG lindex,
    ULONG_PTR pvAspect,
    DVTARGETDEVICE *ptd,
    HDC hdcTargetDev,
    HDC hdcDraw,
    LPCRECTL lprcBounds,
    LPCRECTL lprcWBounds,
    IContinue *pContinue);
void __attribute__((__stdcall__)) IViewObject_RemoteDraw_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IViewObject_RemoteGetColorSet_Proxy(
    IViewObject* This,
    DWORD dwDrawAspect,
    LONG lindex,
    ULONG_PTR pvAspect,
    DVTARGETDEVICE *ptd,
    ULONG_PTR hicTargetDev,
    LOGPALETTE **ppColorSet);
void __attribute__((__stdcall__)) IViewObject_RemoteGetColorSet_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IViewObject_RemoteFreeze_Proxy(
    IViewObject* This,
    DWORD dwDrawAspect,
    LONG lindex,
    ULONG_PTR pvAspect,
    DWORD *pdwFreeze);
void __attribute__((__stdcall__)) IViewObject_RemoteFreeze_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IViewObject_RemoteGetAdvise_Proxy(
    IViewObject* This,
    DWORD *pAspects,
    DWORD *pAdvf,
    IAdviseSink **ppAdvSink);
void __attribute__((__stdcall__)) IViewObject_RemoteGetAdvise_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IViewObject_Draw_Proxy(
    IViewObject* This,
    DWORD dwDrawAspect,
    LONG lindex,
    void *pvAspect,
    DVTARGETDEVICE *ptd,
    HDC hdcTargetDev,
    HDC hdcDraw,
    LPCRECTL lprcBounds,
    LPCRECTL lprcWBounds,
    WINBOOL (__attribute__((__stdcall__)) *pfnContinue)(ULONG_PTR dwContinue),
    ULONG_PTR dwContinue);
HRESULT __attribute__((__stdcall__)) IViewObject_Draw_Stub(
    IViewObject* This,
    DWORD dwDrawAspect,
    LONG lindex,
    ULONG_PTR pvAspect,
    DVTARGETDEVICE *ptd,
    HDC hdcTargetDev,
    HDC hdcDraw,
    LPCRECTL lprcBounds,
    LPCRECTL lprcWBounds,
    IContinue *pContinue);
HRESULT __attribute__((__stdcall__)) IViewObject_GetColorSet_Proxy(
    IViewObject* This,
    DWORD dwDrawAspect,
    LONG lindex,
    void *pvAspect,
    DVTARGETDEVICE *ptd,
    HDC hicTargetDev,
    LOGPALETTE **ppColorSet);
HRESULT __attribute__((__stdcall__)) IViewObject_GetColorSet_Stub(
    IViewObject* This,
    DWORD dwDrawAspect,
    LONG lindex,
    ULONG_PTR pvAspect,
    DVTARGETDEVICE *ptd,
    ULONG_PTR hicTargetDev,
    LOGPALETTE **ppColorSet);
HRESULT __attribute__((__stdcall__)) IViewObject_Freeze_Proxy(
    IViewObject* This,
    DWORD dwDrawAspect,
    LONG lindex,
    void *pvAspect,
    DWORD *pdwFreeze);
HRESULT __attribute__((__stdcall__)) IViewObject_Freeze_Stub(
    IViewObject* This,
    DWORD dwDrawAspect,
    LONG lindex,
    ULONG_PTR pvAspect,
    DWORD *pdwFreeze);
HRESULT __attribute__((__stdcall__)) IViewObject_GetAdvise_Proxy(
    IViewObject* This,
    DWORD *pAspects,
    DWORD *pAdvf,
    IAdviseSink **ppAdvSink);
HRESULT __attribute__((__stdcall__)) IViewObject_GetAdvise_Stub(
    IViewObject* This,
    DWORD *pAspects,
    DWORD *pAdvf,
    IAdviseSink **ppAdvSink);
#define __IViewObject2_INTERFACE_DEFINED__ 
typedef IViewObject2 *LPVIEWOBJECT2;
extern const GUID IID_IViewObject2;
typedef struct IViewObject2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IViewObject2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IViewObject2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IViewObject2 *This);
    HRESULT (__attribute__((__stdcall__)) *Draw)(
        IViewObject2 *This,
        DWORD dwDrawAspect,
        LONG lindex,
        void *pvAspect,
        DVTARGETDEVICE *ptd,
        HDC hdcTargetDev,
        HDC hdcDraw,
        LPCRECTL lprcBounds,
        LPCRECTL lprcWBounds,
        WINBOOL (__attribute__((__stdcall__)) *pfnContinue)(ULONG_PTR dwContinue),
        ULONG_PTR dwContinue);
    HRESULT (__attribute__((__stdcall__)) *GetColorSet)(
        IViewObject2 *This,
        DWORD dwDrawAspect,
        LONG lindex,
        void *pvAspect,
        DVTARGETDEVICE *ptd,
        HDC hicTargetDev,
        LOGPALETTE **ppColorSet);
    HRESULT (__attribute__((__stdcall__)) *Freeze)(
        IViewObject2 *This,
        DWORD dwDrawAspect,
        LONG lindex,
        void *pvAspect,
        DWORD *pdwFreeze);
    HRESULT (__attribute__((__stdcall__)) *Unfreeze)(
        IViewObject2 *This,
        DWORD dwFreeze);
    HRESULT (__attribute__((__stdcall__)) *SetAdvise)(
        IViewObject2 *This,
        DWORD aspects,
        DWORD advf,
        IAdviseSink *pAdvSink);
    HRESULT (__attribute__((__stdcall__)) *GetAdvise)(
        IViewObject2 *This,
        DWORD *pAspects,
        DWORD *pAdvf,
        IAdviseSink **ppAdvSink);
    HRESULT (__attribute__((__stdcall__)) *GetExtent)(
        IViewObject2 *This,
        DWORD dwDrawAspect,
        LONG lindex,
        DVTARGETDEVICE *ptd,
        LPSIZEL lpsizel);
   
} IViewObject2Vtbl;
struct IViewObject2 {
    IViewObject2Vtbl* lpVtbl;
};
#define __IDropSource_INTERFACE_DEFINED__ 
typedef IDropSource *LPDROPSOURCE;
extern const GUID IID_IDropSource;
typedef struct IDropSourceVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IDropSource *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IDropSource *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IDropSource *This);
    HRESULT (__attribute__((__stdcall__)) *QueryContinueDrag)(
        IDropSource *This,
        WINBOOL fEscapePressed,
        DWORD grfKeyState);
    HRESULT (__attribute__((__stdcall__)) *GiveFeedback)(
        IDropSource *This,
        DWORD dwEffect);
   
} IDropSourceVtbl;
struct IDropSource {
    IDropSourceVtbl* lpVtbl;
};
#define __IDropTarget_INTERFACE_DEFINED__ 
typedef IDropTarget *LPDROPTARGET;
#define MK_ALT (0x20)
#define DROPEFFECT_NONE (0)
#define DROPEFFECT_COPY (1)
#define DROPEFFECT_MOVE (2)
#define DROPEFFECT_LINK (4)
#define DROPEFFECT_SCROLL (0x80000000)
#define DD_DEFSCROLLINSET (11)
#define DD_DEFSCROLLDELAY (50)
#define DD_DEFSCROLLINTERVAL (50)
#define DD_DEFDRAGDELAY (200)
#define DD_DEFDRAGMINDIST (2)
extern const GUID IID_IDropTarget;
typedef struct IDropTargetVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IDropTarget *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IDropTarget *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IDropTarget *This);
    HRESULT (__attribute__((__stdcall__)) *DragEnter)(
        IDropTarget *This,
        IDataObject *pDataObj,
        DWORD grfKeyState,
        POINTL pt,
        DWORD *pdwEffect);
    HRESULT (__attribute__((__stdcall__)) *DragOver)(
        IDropTarget *This,
        DWORD grfKeyState,
        POINTL pt,
        DWORD *pdwEffect);
    HRESULT (__attribute__((__stdcall__)) *DragLeave)(
        IDropTarget *This);
    HRESULT (__attribute__((__stdcall__)) *Drop)(
        IDropTarget *This,
        IDataObject *pDataObj,
        DWORD grfKeyState,
        POINTL pt,
        DWORD *pdwEffect);
   
} IDropTargetVtbl;
struct IDropTarget {
    IDropTargetVtbl* lpVtbl;
};
#define __IDropSourceNotify_INTERFACE_DEFINED__ 
extern const GUID IID_IDropSourceNotify;
typedef struct IDropSourceNotifyVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IDropSourceNotify *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IDropSourceNotify *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IDropSourceNotify *This);
    HRESULT (__attribute__((__stdcall__)) *DragEnterTarget)(
        IDropSourceNotify *This,
        HWND hwndTarget);
    HRESULT (__attribute__((__stdcall__)) *DragLeaveTarget)(
        IDropSourceNotify *This);
   
} IDropSourceNotifyVtbl;
struct IDropSourceNotify {
    IDropSourceNotifyVtbl* lpVtbl;
};
#define __IEnumOLEVERB_INTERFACE_DEFINED__ 
typedef IEnumOLEVERB *LPENUMOLEVERB;
typedef struct tagOLEVERB {
    LONG lVerb;
    LPOLESTR lpszVerbName;
    DWORD fuFlags;
    DWORD grfAttribs;
} OLEVERB;
typedef struct tagOLEVERB *LPOLEVERB;
typedef enum tagOLEVERBATTRIB {
    OLEVERBATTRIB_NEVERDIRTIES = 1,
    OLEVERBATTRIB_ONCONTAINERMENU = 2
} OLEVERBATTRIB;
extern const GUID IID_IEnumOLEVERB;
typedef struct IEnumOLEVERBVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IEnumOLEVERB *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IEnumOLEVERB *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IEnumOLEVERB *This);
    HRESULT (__attribute__((__stdcall__)) *Next)(
        IEnumOLEVERB *This,
        ULONG celt,
        LPOLEVERB rgelt,
        ULONG *pceltFetched);
    HRESULT (__attribute__((__stdcall__)) *Skip)(
        IEnumOLEVERB *This,
        ULONG celt);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        IEnumOLEVERB *This);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IEnumOLEVERB *This,
        IEnumOLEVERB **ppenum);
   
} IEnumOLEVERBVtbl;
struct IEnumOLEVERB {
    IEnumOLEVERBVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IEnumOLEVERB_RemoteNext_Proxy(
    IEnumOLEVERB* This,
    ULONG celt,
    LPOLEVERB rgelt,
    ULONG *pceltFetched);
void __attribute__((__stdcall__)) IEnumOLEVERB_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IEnumOLEVERB_Next_Proxy(
    IEnumOLEVERB* This,
    ULONG celt,
    LPOLEVERB rgelt,
    ULONG *pceltFetched);
HRESULT __attribute__((__stdcall__)) IEnumOLEVERB_Next_Stub(
    IEnumOLEVERB* This,
    ULONG celt,
    LPOLEVERB rgelt,
    ULONG *pceltFetched);
ULONG __attribute__((__stdcall__)) CLIPFORMAT_UserSize (ULONG *, ULONG, CLIPFORMAT *);
unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserMarshal (ULONG *, unsigned char *, CLIPFORMAT *);
unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserUnmarshal(ULONG *, unsigned char *, CLIPFORMAT *);
void __attribute__((__stdcall__)) CLIPFORMAT_UserFree (ULONG *, CLIPFORMAT *);
ULONG __attribute__((__stdcall__)) STGMEDIUM_UserSize (ULONG *, ULONG, STGMEDIUM *);
unsigned char * __attribute__((__stdcall__)) STGMEDIUM_UserMarshal (ULONG *, unsigned char *, STGMEDIUM *);
unsigned char * __attribute__((__stdcall__)) STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, STGMEDIUM *);
void __attribute__((__stdcall__)) STGMEDIUM_UserFree (ULONG *, STGMEDIUM *);
ULONG __attribute__((__stdcall__)) HWND_UserSize (ULONG *, ULONG, HWND *);
unsigned char * __attribute__((__stdcall__)) HWND_UserMarshal (ULONG *, unsigned char *, HWND *);
unsigned char * __attribute__((__stdcall__)) HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
void __attribute__((__stdcall__)) HWND_UserFree (ULONG *, HWND *);
ULONG __attribute__((__stdcall__)) HMENU_UserSize (ULONG *, ULONG, HMENU *);
unsigned char * __attribute__((__stdcall__)) HMENU_UserMarshal (ULONG *, unsigned char *, HMENU *);
unsigned char * __attribute__((__stdcall__)) HMENU_UserUnmarshal(ULONG *, unsigned char *, HMENU *);
void __attribute__((__stdcall__)) HMENU_UserFree (ULONG *, HMENU *);
ULONG __attribute__((__stdcall__)) HGLOBAL_UserSize (ULONG *, ULONG, HGLOBAL *);
unsigned char * __attribute__((__stdcall__)) HGLOBAL_UserMarshal (ULONG *, unsigned char *, HGLOBAL *);
unsigned char * __attribute__((__stdcall__)) HGLOBAL_UserUnmarshal(ULONG *, unsigned char *, HGLOBAL *);
void __attribute__((__stdcall__)) HGLOBAL_UserFree (ULONG *, HGLOBAL *);
ULONG __attribute__((__stdcall__)) HACCEL_UserSize (ULONG *, ULONG, HACCEL *);
unsigned char * __attribute__((__stdcall__)) HACCEL_UserMarshal (ULONG *, unsigned char *, HACCEL *);
unsigned char * __attribute__((__stdcall__)) HACCEL_UserUnmarshal(ULONG *, unsigned char *, HACCEL *);
void __attribute__((__stdcall__)) HACCEL_UserFree (ULONG *, HACCEL *);
ULONG __attribute__((__stdcall__)) HDC_UserSize (ULONG *, ULONG, HDC *);
unsigned char * __attribute__((__stdcall__)) HDC_UserMarshal (ULONG *, unsigned char *, HDC *);
unsigned char * __attribute__((__stdcall__)) HDC_UserUnmarshal(ULONG *, unsigned char *, HDC *);
void __attribute__((__stdcall__)) HDC_UserFree (ULONG *, HDC *);
#undef interface
#define interface struct
#define __servprov_h__ 
#define __IServiceProvider_FWD_DEFINED__ 
typedef struct IServiceProvider IServiceProvider;
#undef interface
#define interface struct
#define __IServiceProvider_INTERFACE_DEFINED__ 
typedef IServiceProvider *LPSERVICEPROVIDER;
extern const GUID IID_IServiceProvider;
typedef struct IServiceProviderVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IServiceProvider *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IServiceProvider *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IServiceProvider *This);
    HRESULT (__attribute__((__stdcall__)) *QueryService)(
        IServiceProvider *This,
        const GUID *const guidService,
        const IID *const riid,
        void **ppvObject);
   
} IServiceProviderVtbl;
struct IServiceProvider {
    IServiceProviderVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IServiceProvider_RemoteQueryService_Proxy(
    IServiceProvider* This,
    const GUID *const guidService,
    const IID *const riid,
    IUnknown **ppvObject);
void __attribute__((__stdcall__)) IServiceProvider_RemoteQueryService_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IServiceProvider_QueryService_Proxy(
    IServiceProvider* This,
    const GUID *const guidService,
    const IID *const riid,
    void **ppvObject);
HRESULT __attribute__((__stdcall__)) IServiceProvider_QueryService_Stub(
    IServiceProvider* This,
    const GUID *const guidService,
    const IID *const riid,
    IUnknown **ppvObject);
#undef interface
#define interface struct
#define __msxml_h__ 
#undef interface
#define interface struct
#undef interface
#define interface struct
#undef interface
#define interface struct
#define __oaidl_h__ 
#define __ICreateTypeInfo_FWD_DEFINED__ 
typedef struct ICreateTypeInfo ICreateTypeInfo;
#define __ICreateTypeInfo2_FWD_DEFINED__ 
typedef struct ICreateTypeInfo2 ICreateTypeInfo2;
#define __ICreateTypeLib_FWD_DEFINED__ 
typedef struct ICreateTypeLib ICreateTypeLib;
#define __ICreateTypeLib2_FWD_DEFINED__ 
typedef struct ICreateTypeLib2 ICreateTypeLib2;
#define __IDispatch_FWD_DEFINED__ 
typedef struct IDispatch IDispatch;
#define __IEnumVARIANT_FWD_DEFINED__ 
typedef struct IEnumVARIANT IEnumVARIANT;
#define __ITypeComp_FWD_DEFINED__ 
typedef struct ITypeComp ITypeComp;
#define __ITypeInfo_FWD_DEFINED__ 
typedef struct ITypeInfo ITypeInfo;
#define __ITypeInfo2_FWD_DEFINED__ 
typedef struct ITypeInfo2 ITypeInfo2;
#define __ITypeLib_FWD_DEFINED__ 
typedef struct ITypeLib ITypeLib;
#define __ITypeLib2_FWD_DEFINED__ 
typedef struct ITypeLib2 ITypeLib2;
#define __ITypeChangeEvents_FWD_DEFINED__ 
typedef struct ITypeChangeEvents ITypeChangeEvents;
#define __IErrorInfo_FWD_DEFINED__ 
typedef struct IErrorInfo IErrorInfo;
#define __ICreateErrorInfo_FWD_DEFINED__ 
typedef struct ICreateErrorInfo ICreateErrorInfo;
#define __ISupportErrorInfo_FWD_DEFINED__ 
typedef struct ISupportErrorInfo ISupportErrorInfo;
#define __ITypeFactory_FWD_DEFINED__ 
typedef struct ITypeFactory ITypeFactory;
#define __ITypeMarshal_FWD_DEFINED__ 
typedef struct ITypeMarshal ITypeMarshal;
#define __IRecordInfo_FWD_DEFINED__ 
typedef struct IRecordInfo IRecordInfo;
#define __IErrorLog_FWD_DEFINED__ 
typedef struct IErrorLog IErrorLog;
#define __IPropertyBag_FWD_DEFINED__ 
typedef struct IPropertyBag IPropertyBag;
#undef interface
#define interface struct
#define __IOleAutomationTypes_INTERFACE_DEFINED__ 
extern RPC_IF_HANDLE IOleAutomationTypes_v1_0_c_ifspec;
extern RPC_IF_HANDLE IOleAutomationTypes_v1_0_s_ifspec;
typedef CY CURRENCY;
typedef struct tagSAFEARRAYBOUND {
    ULONG cElements;
    LONG lLbound;
} SAFEARRAYBOUND;
typedef struct tagSAFEARRAYBOUND *LPSAFEARRAYBOUND;
typedef struct _wireVARIANT *wireVARIANT;
typedef struct _wireBRECORD *wireBRECORD;
typedef struct _wireSAFEARR_BSTR {
    ULONG Size;
    wireBSTR *aBstr;
} SAFEARR_BSTR;
typedef struct _wireSAFEARR_UNKNOWN {
    ULONG Size;
    IUnknown **apUnknown;
} SAFEARR_UNKNOWN;
typedef struct _wireSAFEARR_DISPATCH {
    ULONG Size;
    IDispatch **apDispatch;
} SAFEARR_DISPATCH;
typedef struct _wireSAFEARR_VARIANT {
    ULONG Size;
    wireVARIANT *aVariant;
} SAFEARR_VARIANT;
typedef struct _wireSAFEARR_BRECORD {
    ULONG Size;
    wireBRECORD *aRecord;
} SAFEARR_BRECORD;
typedef struct _wireSAFEARR_HAVEIID {
    ULONG Size;
    IUnknown **apUnknown;
    IID iid;
} SAFEARR_HAVEIID;
typedef enum tagSF_TYPE {
    SF_ERROR = VT_ERROR,
    SF_I1 = VT_I1,
    SF_I2 = VT_I2,
    SF_I4 = VT_I4,
    SF_I8 = VT_I8,
    SF_BSTR = VT_BSTR,
    SF_UNKNOWN = VT_UNKNOWN,
    SF_DISPATCH = VT_DISPATCH,
    SF_VARIANT = VT_VARIANT,
    SF_RECORD = VT_RECORD,
    SF_HAVEIID = VT_UNKNOWN | VT_RESERVED
} SF_TYPE;
typedef struct _wireSAFEARRAY_UNION {
    ULONG sfType;
    union __WIDL_oaidl_generated_name_0000000E {
        SAFEARR_BSTR BstrStr;
        SAFEARR_UNKNOWN UnknownStr;
        SAFEARR_DISPATCH DispatchStr;
        SAFEARR_VARIANT VariantStr;
        SAFEARR_BRECORD RecordStr;
        SAFEARR_HAVEIID HaveIidStr;
        BYTE_SIZEDARR ByteStr;
        WORD_SIZEDARR WordStr;
        DWORD_SIZEDARR LongStr;
        HYPER_SIZEDARR HyperStr;
    } u;
} SAFEARRAYUNION;
typedef struct _wireSAFEARRAY {
    USHORT cDims;
    USHORT fFeatures;
    ULONG cbElements;
    ULONG cLocks;
    SAFEARRAYUNION uArrayStructs;
    SAFEARRAYBOUND rgsabound[1];
} *wireSAFEARRAY;
typedef wireSAFEARRAY *wirePSAFEARRAY;
typedef struct tagSAFEARRAY {
    USHORT cDims;
    USHORT fFeatures;
    ULONG cbElements;
    ULONG cLocks;
    PVOID pvData;
    SAFEARRAYBOUND rgsabound[1];
} SAFEARRAY;
typedef SAFEARRAY *LPSAFEARRAY;
#define FADF_AUTO (0x1)
#define FADF_STATIC (0x2)
#define FADF_EMBEDDED (0x4)
#define FADF_FIXEDSIZE (0x10)
#define FADF_RECORD (0x20)
#define FADF_HAVEIID (0x40)
#define FADF_HAVEVARTYPE (0x80)
#define FADF_BSTR (0x100)
#define FADF_UNKNOWN (0x200)
#define FADF_DISPATCH (0x400)
#define FADF_VARIANT (0x800)
#define FADF_RESERVED (0xf008)
#define _FORCENAMELESSUNION 1
#define __tagVARIANT 
#define __VARIANT_NAME_1 
#define __VARIANT_NAME_2 
#define __VARIANT_NAME_3 
#define __tagBRECORD 
#define __VARIANT_NAME_4 
typedef struct tagVARIANT VARIANT;
struct tagVARIANT {
    union {
        struct {
            VARTYPE vt;
            WORD wReserved1;
            WORD wReserved2;
            WORD wReserved3;
            union {
                LONGLONG llVal;
                LONG lVal;
                BYTE bVal;
                SHORT iVal;
                FLOAT fltVal;
                DOUBLE dblVal;
                VARIANT_BOOL boolVal;
                SCODE scode;
                CY cyVal;
                DATE date;
                BSTR bstrVal;
                IUnknown *punkVal;
                IDispatch *pdispVal;
                SAFEARRAY *parray;
                BYTE *pbVal;
                SHORT *piVal;
                LONG *plVal;
                LONGLONG *pllVal;
                FLOAT *pfltVal;
                DOUBLE *pdblVal;
                VARIANT_BOOL *pboolVal;
                SCODE *pscode;
                CY *pcyVal;
                DATE *pdate;
                BSTR *pbstrVal;
                IUnknown **ppunkVal;
                IDispatch **ppdispVal;
                SAFEARRAY **pparray;
                VARIANT *pvarVal;
                PVOID byref;
                CHAR cVal;
                USHORT uiVal;
                ULONG ulVal;
                ULONGLONG ullVal;
                INT intVal;
                UINT uintVal;
                DECIMAL *pdecVal;
                CHAR *pcVal;
                USHORT *puiVal;
                ULONG *pulVal;
                ULONGLONG *pullVal;
                INT *pintVal;
                UINT *puintVal;
                struct {
                    PVOID pvRecord;
                    IRecordInfo *pRecInfo;
                } ;
            } ;
        } ;
        DECIMAL decVal;
    } ;
};
typedef VARIANT *LPVARIANT;
typedef VARIANT VARIANTARG;
typedef VARIANT *LPVARIANTARG;
#define _REFVARIANT_DEFINED 
#define REFVARIANT const VARIANT * __MIDL_CONST
struct _wireBRECORD {
    ULONG fFlags;
    ULONG clSize;
    IRecordInfo *pRecInfo;
    byte *pRecord;
};
struct _wireVARIANT {
    DWORD clSize;
    DWORD rpcReserved;
    USHORT vt;
    USHORT wReserved1;
    USHORT wReserved2;
    USHORT wReserved3;
    __extension__ union {
        LONGLONG llVal;
        LONG lVal;
        BYTE bVal;
        SHORT iVal;
        FLOAT fltVal;
        DOUBLE dblVal;
        VARIANT_BOOL boolVal;
        SCODE scode;
        CY cyVal;
        DATE date;
        wireBSTR bstrVal;
        IUnknown *punkVal;
        IDispatch *pdispVal;
        wirePSAFEARRAY parray;
        wireBRECORD brecVal;
        BYTE *pbVal;
        SHORT *piVal;
        LONG *plVal;
        LONGLONG *pllVal;
        FLOAT *pfltVal;
        DOUBLE *pdblVal;
        VARIANT_BOOL *pboolVal;
        SCODE *pscode;
        CY *pcyVal;
        DATE *pdate;
        wireBSTR *pbstrVal;
        IUnknown **ppunkVal;
        IDispatch **ppdispVal;
        wirePSAFEARRAY *pparray;
        wireVARIANT *pvarVal;
        CHAR cVal;
        USHORT uiVal;
        ULONG ulVal;
        ULONGLONG ullVal;
        INT intVal;
        UINT uintVal;
        DECIMAL decVal;
        DECIMAL *pdecVal;
        CHAR *pcVal;
        USHORT *puiVal;
        ULONG *pulVal;
        ULONGLONG *pullVal;
        INT *pintVal;
        UINT *puintVal;
    } ;
};
typedef LONG DISPID;
typedef DISPID MEMBERID;
typedef DWORD HREFTYPE;
typedef enum tagTYPEKIND {
    TKIND_ENUM = 0,
    TKIND_RECORD = 1,
    TKIND_MODULE = 2,
    TKIND_INTERFACE = 3,
    TKIND_DISPATCH = 4,
    TKIND_COCLASS = 5,
    TKIND_ALIAS = 6,
    TKIND_UNION = 7,
    TKIND_MAX = 8
} TYPEKIND;
typedef struct tagTYPEDESC {
    __extension__ union {
        struct tagTYPEDESC *lptdesc;
        struct tagARRAYDESC *lpadesc;
        HREFTYPE hreftype;
    } ;
    VARTYPE vt;
} TYPEDESC;
typedef struct tagARRAYDESC {
    TYPEDESC tdescElem;
    USHORT cDims;
    SAFEARRAYBOUND rgbounds[1];
} ARRAYDESC;
typedef struct tagPARAMDESCEX {
    ULONG cBytes;
    VARIANTARG varDefaultValue;
} PARAMDESCEX;
typedef struct tagPARAMDESCEX *LPPARAMDESCEX;
typedef struct tagPARAMDESC {
    LPPARAMDESCEX pparamdescex;
    USHORT wParamFlags;
} PARAMDESC;
typedef struct tagPARAMDESC *LPPARAMDESC;
#define PARAMFLAG_NONE (0x0)
#define PARAMFLAG_FIN (0x1)
#define PARAMFLAG_FOUT (0x2)
#define PARAMFLAG_FLCID (0x4)
#define PARAMFLAG_FRETVAL (0x8)
#define PARAMFLAG_FOPT (0x10)
#define PARAMFLAG_FHASDEFAULT (0x20)
#define PARAMFLAG_FHASCUSTDATA (0x40)
typedef struct tagIDLDESC {
    ULONG_PTR dwReserved;
    USHORT wIDLFlags;
} IDLDESC;
typedef struct tagIDLDESC *LPIDLDESC;
#define IDLFLAG_NONE (PARAMFLAG_NONE)
#define IDLFLAG_FIN (PARAMFLAG_FIN)
#define IDLFLAG_FOUT (PARAMFLAG_FOUT)
#define IDLFLAG_FLCID (PARAMFLAG_FLCID)
#define IDLFLAG_FRETVAL (PARAMFLAG_FRETVAL)
  typedef struct tagELEMDESC {
    TYPEDESC tdesc;
    __extension__ union {
      IDLDESC idldesc;
      PARAMDESC paramdesc;
    } ;
  } ELEMDESC,*LPELEMDESC;
typedef struct tagTYPEATTR {
    GUID guid;
    LCID lcid;
    DWORD dwReserved;
    MEMBERID memidConstructor;
    MEMBERID memidDestructor;
    LPOLESTR lpstrSchema;
    ULONG cbSizeInstance;
    TYPEKIND typekind;
    WORD cFuncs;
    WORD cVars;
    WORD cImplTypes;
    WORD cbSizeVft;
    WORD cbAlignment;
    WORD wTypeFlags;
    WORD wMajorVerNum;
    WORD wMinorVerNum;
    TYPEDESC tdescAlias;
    IDLDESC idldescType;
} TYPEATTR;
typedef struct tagTYPEATTR *LPTYPEATTR;
typedef struct tagDISPPARAMS {
    VARIANTARG *rgvarg;
    DISPID *rgdispidNamedArgs;
    UINT cArgs;
    UINT cNamedArgs;
} DISPPARAMS;
  typedef struct tagEXCEPINFO {
    WORD wCode;
    WORD wReserved;
    BSTR bstrSource;
    BSTR bstrDescription;
    BSTR bstrHelpFile;
    DWORD dwHelpContext;
    PVOID pvReserved;
    HRESULT (__attribute__((__stdcall__)) *pfnDeferredFillIn)(struct tagEXCEPINFO *);
    SCODE scode;
  } EXCEPINFO, *LPEXCEPINFO;
typedef enum tagCALLCONV {
    CC_FASTCALL = 0,
    CC_CDECL = 1,
    CC_MSCPASCAL = 2,
    CC_PASCAL = CC_MSCPASCAL,
    CC_MACPASCAL = 3,
    CC_STDCALL = 4,
    CC_FPFASTCALL = 5,
    CC_SYSCALL = 6,
    CC_MPWCDECL = 7,
    CC_MPWPASCAL = 8,
    CC_MAX = 9
} CALLCONV;
typedef enum tagFUNCKIND {
    FUNC_VIRTUAL = 0,
    FUNC_PUREVIRTUAL = 1,
    FUNC_NONVIRTUAL = 2,
    FUNC_STATIC = 3,
    FUNC_DISPATCH = 4
} FUNCKIND;
typedef enum tagINVOKEKIND {
    INVOKE_FUNC = 1,
    INVOKE_PROPERTYGET = 2,
    INVOKE_PROPERTYPUT = 4,
    INVOKE_PROPERTYPUTREF = 8
} INVOKEKIND;
typedef struct tagFUNCDESC {
    MEMBERID memid;
    SCODE *lprgscode;
    ELEMDESC *lprgelemdescParam;
    FUNCKIND funckind;
    INVOKEKIND invkind;
    CALLCONV callconv;
    SHORT cParams;
    SHORT cParamsOpt;
    SHORT oVft;
    SHORT cScodes;
    ELEMDESC elemdescFunc;
    WORD wFuncFlags;
} FUNCDESC;
typedef struct tagFUNCDESC *LPFUNCDESC;
typedef enum tagVARKIND {
    VAR_PERINSTANCE = 0,
    VAR_STATIC = 1,
    VAR_CONST = 2,
    VAR_DISPATCH = 3
} VARKIND;
#define IMPLTYPEFLAG_FDEFAULT (0x1)
#define IMPLTYPEFLAG_FSOURCE (0x2)
#define IMPLTYPEFLAG_FRESTRICTED (0x4)
#define IMPLTYPEFLAG_FDEFAULTVTABLE (0x8)
typedef struct tagVARDESC {
    MEMBERID memid;
    LPOLESTR lpstrSchema;
    __extension__ union {
        ULONG oInst;
        VARIANT *lpvarValue;
    } ;
    ELEMDESC elemdescVar;
    WORD wVarFlags;
    VARKIND varkind;
} VARDESC;
typedef struct tagVARDESC *LPVARDESC;
typedef enum tagTYPEFLAGS {
    TYPEFLAG_FAPPOBJECT = 0x1,
    TYPEFLAG_FCANCREATE = 0x2,
    TYPEFLAG_FLICENSED = 0x4,
    TYPEFLAG_FPREDECLID = 0x8,
    TYPEFLAG_FHIDDEN = 0x10,
    TYPEFLAG_FCONTROL = 0x20,
    TYPEFLAG_FDUAL = 0x40,
    TYPEFLAG_FNONEXTENSIBLE = 0x80,
    TYPEFLAG_FOLEAUTOMATION = 0x100,
    TYPEFLAG_FRESTRICTED = 0x200,
    TYPEFLAG_FAGGREGATABLE = 0x400,
    TYPEFLAG_FREPLACEABLE = 0x800,
    TYPEFLAG_FDISPATCHABLE = 0x1000,
    TYPEFLAG_FREVERSEBIND = 0x2000,
    TYPEFLAG_FPROXY = 0x4000
} TYPEFLAGS;
typedef enum tagFUNCFLAGS {
    FUNCFLAG_FRESTRICTED = 0x1,
    FUNCFLAG_FSOURCE = 0x2,
    FUNCFLAG_FBINDABLE = 0x4,
    FUNCFLAG_FREQUESTEDIT = 0x8,
    FUNCFLAG_FDISPLAYBIND = 0x10,
    FUNCFLAG_FDEFAULTBIND = 0x20,
    FUNCFLAG_FHIDDEN = 0x40,
    FUNCFLAG_FUSESGETLASTERROR = 0x80,
    FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
    FUNCFLAG_FUIDEFAULT = 0x200,
    FUNCFLAG_FNONBROWSABLE = 0x400,
    FUNCFLAG_FREPLACEABLE = 0x800,
    FUNCFLAG_FIMMEDIATEBIND = 0x1000
} FUNCFLAGS;
typedef enum tagVARFLAGS {
    VARFLAG_FREADONLY = 0x1,
    VARFLAG_FSOURCE = 0x2,
    VARFLAG_FBINDABLE = 0x4,
    VARFLAG_FREQUESTEDIT = 0x8,
    VARFLAG_FDISPLAYBIND = 0x10,
    VARFLAG_FDEFAULTBIND = 0x20,
    VARFLAG_FHIDDEN = 0x40,
    VARFLAG_FRESTRICTED = 0x80,
    VARFLAG_FDEFAULTCOLLELEM = 0x100,
    VARFLAG_FUIDEFAULT = 0x200,
    VARFLAG_FNONBROWSABLE = 0x400,
    VARFLAG_FREPLACEABLE = 0x800,
    VARFLAG_FIMMEDIATEBIND = 0x1000
} VARFLAGS;
typedef struct tagCLEANLOCALSTORAGE {
    IUnknown *pInterface;
    PVOID pStorage;
    DWORD flags;
} CLEANLOCALSTORAGE;
typedef struct tagCUSTDATAITEM {
    GUID guid;
    VARIANTARG varValue;
} CUSTDATAITEM;
typedef struct tagCUSTDATAITEM *LPCUSTDATAITEM;
typedef struct tagCUSTDATA {
    DWORD cCustData;
    LPCUSTDATAITEM prgCustData;
} CUSTDATA;
typedef struct tagCUSTDATA *LPCUSTDATA;
#define __ICreateTypeInfo_INTERFACE_DEFINED__ 
typedef ICreateTypeInfo *LPCREATETYPEINFO;
extern const GUID IID_ICreateTypeInfo;
typedef struct ICreateTypeInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ICreateTypeInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ICreateTypeInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ICreateTypeInfo *This);
    HRESULT (__attribute__((__stdcall__)) *SetGuid)(
        ICreateTypeInfo *This,
        const GUID *const guid);
    HRESULT (__attribute__((__stdcall__)) *SetTypeFlags)(
        ICreateTypeInfo *This,
        UINT uTypeFlags);
    HRESULT (__attribute__((__stdcall__)) *SetDocString)(
        ICreateTypeInfo *This,
        LPOLESTR pStrDoc);
    HRESULT (__attribute__((__stdcall__)) *SetHelpContext)(
        ICreateTypeInfo *This,
        DWORD dwHelpContext);
    HRESULT (__attribute__((__stdcall__)) *SetVersion)(
        ICreateTypeInfo *This,
        WORD wMajorVerNum,
        WORD wMinorVerNum);
    HRESULT (__attribute__((__stdcall__)) *AddRefTypeInfo)(
        ICreateTypeInfo *This,
        ITypeInfo *pTInfo,
        HREFTYPE *phRefType);
    HRESULT (__attribute__((__stdcall__)) *AddFuncDesc)(
        ICreateTypeInfo *This,
        UINT index,
        FUNCDESC *pFuncDesc);
    HRESULT (__attribute__((__stdcall__)) *AddImplType)(
        ICreateTypeInfo *This,
        UINT index,
        HREFTYPE hRefType);
    HRESULT (__attribute__((__stdcall__)) *SetImplTypeFlags)(
        ICreateTypeInfo *This,
        UINT index,
        INT implTypeFlags);
    HRESULT (__attribute__((__stdcall__)) *SetAlignment)(
        ICreateTypeInfo *This,
        WORD cbAlignment);
    HRESULT (__attribute__((__stdcall__)) *SetSchema)(
        ICreateTypeInfo *This,
        LPOLESTR pStrSchema);
    HRESULT (__attribute__((__stdcall__)) *AddVarDesc)(
        ICreateTypeInfo *This,
        UINT index,
        VARDESC *pVarDesc);
    HRESULT (__attribute__((__stdcall__)) *SetFuncAndParamNames)(
        ICreateTypeInfo *This,
        UINT index,
        LPOLESTR *rgszNames,
        UINT cNames);
    HRESULT (__attribute__((__stdcall__)) *SetVarName)(
        ICreateTypeInfo *This,
        UINT index,
        LPOLESTR szName);
    HRESULT (__attribute__((__stdcall__)) *SetTypeDescAlias)(
        ICreateTypeInfo *This,
        TYPEDESC *pTDescAlias);
    HRESULT (__attribute__((__stdcall__)) *DefineFuncAsDllEntry)(
        ICreateTypeInfo *This,
        UINT index,
        LPOLESTR szDllName,
        LPOLESTR szProcName);
    HRESULT (__attribute__((__stdcall__)) *SetFuncDocString)(
        ICreateTypeInfo *This,
        UINT index,
        LPOLESTR szDocString);
    HRESULT (__attribute__((__stdcall__)) *SetVarDocString)(
        ICreateTypeInfo *This,
        UINT index,
        LPOLESTR szDocString);
    HRESULT (__attribute__((__stdcall__)) *SetFuncHelpContext)(
        ICreateTypeInfo *This,
        UINT index,
        DWORD dwHelpContext);
    HRESULT (__attribute__((__stdcall__)) *SetVarHelpContext)(
        ICreateTypeInfo *This,
        UINT index,
        DWORD dwHelpContext);
    HRESULT (__attribute__((__stdcall__)) *SetMops)(
        ICreateTypeInfo *This,
        UINT index,
        BSTR bstrMops);
    HRESULT (__attribute__((__stdcall__)) *SetTypeIdldesc)(
        ICreateTypeInfo *This,
        IDLDESC *pIdlDesc);
    HRESULT (__attribute__((__stdcall__)) *LayOut)(
        ICreateTypeInfo *This);
   
} ICreateTypeInfoVtbl;
struct ICreateTypeInfo {
    ICreateTypeInfoVtbl* lpVtbl;
};
#define __ICreateTypeInfo2_INTERFACE_DEFINED__ 
typedef ICreateTypeInfo2 *LPCREATETYPEINFO2;
extern const GUID IID_ICreateTypeInfo2;
typedef struct ICreateTypeInfo2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ICreateTypeInfo2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ICreateTypeInfo2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ICreateTypeInfo2 *This);
    HRESULT (__attribute__((__stdcall__)) *SetGuid)(
        ICreateTypeInfo2 *This,
        const GUID *const guid);
    HRESULT (__attribute__((__stdcall__)) *SetTypeFlags)(
        ICreateTypeInfo2 *This,
        UINT uTypeFlags);
    HRESULT (__attribute__((__stdcall__)) *SetDocString)(
        ICreateTypeInfo2 *This,
        LPOLESTR pStrDoc);
    HRESULT (__attribute__((__stdcall__)) *SetHelpContext)(
        ICreateTypeInfo2 *This,
        DWORD dwHelpContext);
    HRESULT (__attribute__((__stdcall__)) *SetVersion)(
        ICreateTypeInfo2 *This,
        WORD wMajorVerNum,
        WORD wMinorVerNum);
    HRESULT (__attribute__((__stdcall__)) *AddRefTypeInfo)(
        ICreateTypeInfo2 *This,
        ITypeInfo *pTInfo,
        HREFTYPE *phRefType);
    HRESULT (__attribute__((__stdcall__)) *AddFuncDesc)(
        ICreateTypeInfo2 *This,
        UINT index,
        FUNCDESC *pFuncDesc);
    HRESULT (__attribute__((__stdcall__)) *AddImplType)(
        ICreateTypeInfo2 *This,
        UINT index,
        HREFTYPE hRefType);
    HRESULT (__attribute__((__stdcall__)) *SetImplTypeFlags)(
        ICreateTypeInfo2 *This,
        UINT index,
        INT implTypeFlags);
    HRESULT (__attribute__((__stdcall__)) *SetAlignment)(
        ICreateTypeInfo2 *This,
        WORD cbAlignment);
    HRESULT (__attribute__((__stdcall__)) *SetSchema)(
        ICreateTypeInfo2 *This,
        LPOLESTR pStrSchema);
    HRESULT (__attribute__((__stdcall__)) *AddVarDesc)(
        ICreateTypeInfo2 *This,
        UINT index,
        VARDESC *pVarDesc);
    HRESULT (__attribute__((__stdcall__)) *SetFuncAndParamNames)(
        ICreateTypeInfo2 *This,
        UINT index,
        LPOLESTR *rgszNames,
        UINT cNames);
    HRESULT (__attribute__((__stdcall__)) *SetVarName)(
        ICreateTypeInfo2 *This,
        UINT index,
        LPOLESTR szName);
    HRESULT (__attribute__((__stdcall__)) *SetTypeDescAlias)(
        ICreateTypeInfo2 *This,
        TYPEDESC *pTDescAlias);
    HRESULT (__attribute__((__stdcall__)) *DefineFuncAsDllEntry)(
        ICreateTypeInfo2 *This,
        UINT index,
        LPOLESTR szDllName,
        LPOLESTR szProcName);
    HRESULT (__attribute__((__stdcall__)) *SetFuncDocString)(
        ICreateTypeInfo2 *This,
        UINT index,
        LPOLESTR szDocString);
    HRESULT (__attribute__((__stdcall__)) *SetVarDocString)(
        ICreateTypeInfo2 *This,
        UINT index,
        LPOLESTR szDocString);
    HRESULT (__attribute__((__stdcall__)) *SetFuncHelpContext)(
        ICreateTypeInfo2 *This,
        UINT index,
        DWORD dwHelpContext);
    HRESULT (__attribute__((__stdcall__)) *SetVarHelpContext)(
        ICreateTypeInfo2 *This,
        UINT index,
        DWORD dwHelpContext);
    HRESULT (__attribute__((__stdcall__)) *SetMops)(
        ICreateTypeInfo2 *This,
        UINT index,
        BSTR bstrMops);
    HRESULT (__attribute__((__stdcall__)) *SetTypeIdldesc)(
        ICreateTypeInfo2 *This,
        IDLDESC *pIdlDesc);
    HRESULT (__attribute__((__stdcall__)) *LayOut)(
        ICreateTypeInfo2 *This);
    HRESULT (__attribute__((__stdcall__)) *DeleteFuncDesc)(
        ICreateTypeInfo2 *This,
        UINT index);
    HRESULT (__attribute__((__stdcall__)) *DeleteFuncDescByMemId)(
        ICreateTypeInfo2 *This,
        MEMBERID memid,
        INVOKEKIND invKind);
    HRESULT (__attribute__((__stdcall__)) *DeleteVarDesc)(
        ICreateTypeInfo2 *This,
        UINT index);
    HRESULT (__attribute__((__stdcall__)) *DeleteVarDescByMemId)(
        ICreateTypeInfo2 *This,
        MEMBERID memid);
    HRESULT (__attribute__((__stdcall__)) *DeleteImplType)(
        ICreateTypeInfo2 *This,
        UINT index);
    HRESULT (__attribute__((__stdcall__)) *SetCustData)(
        ICreateTypeInfo2 *This,
        const GUID *const guid,
        VARIANT *pVarVal);
    HRESULT (__attribute__((__stdcall__)) *SetFuncCustData)(
        ICreateTypeInfo2 *This,
        UINT index,
        const GUID *const guid,
        VARIANT *pVarVal);
    HRESULT (__attribute__((__stdcall__)) *SetParamCustData)(
        ICreateTypeInfo2 *This,
        UINT indexFunc,
        UINT indexParam,
        const GUID *const guid,
        VARIANT *pVarVal);
    HRESULT (__attribute__((__stdcall__)) *SetVarCustData)(
        ICreateTypeInfo2 *This,
        UINT index,
        const GUID *const guid,
        VARIANT *pVarVal);
    HRESULT (__attribute__((__stdcall__)) *SetImplTypeCustData)(
        ICreateTypeInfo2 *This,
        UINT index,
        const GUID *const guid,
        VARIANT *pVarVal);
    HRESULT (__attribute__((__stdcall__)) *SetHelpStringContext)(
        ICreateTypeInfo2 *This,
        ULONG dwHelpStringContext);
    HRESULT (__attribute__((__stdcall__)) *SetFuncHelpStringContext)(
        ICreateTypeInfo2 *This,
        UINT index,
        ULONG dwHelpStringContext);
    HRESULT (__attribute__((__stdcall__)) *SetVarHelpStringContext)(
        ICreateTypeInfo2 *This,
        UINT index,
        ULONG dwHelpStringContext);
    HRESULT (__attribute__((__stdcall__)) *Invalidate)(
        ICreateTypeInfo2 *This);
    HRESULT (__attribute__((__stdcall__)) *SetName)(
        ICreateTypeInfo2 *This,
        LPOLESTR szName);
   
} ICreateTypeInfo2Vtbl;
struct ICreateTypeInfo2 {
    ICreateTypeInfo2Vtbl* lpVtbl;
};
#define __ICreateTypeLib_INTERFACE_DEFINED__ 
typedef ICreateTypeLib *LPCREATETYPELIB;
extern const GUID IID_ICreateTypeLib;
typedef struct ICreateTypeLibVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ICreateTypeLib *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ICreateTypeLib *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ICreateTypeLib *This);
    HRESULT (__attribute__((__stdcall__)) *CreateTypeInfo)(
        ICreateTypeLib *This,
        LPOLESTR szName,
        TYPEKIND tkind,
        ICreateTypeInfo **ppCTInfo);
    HRESULT (__attribute__((__stdcall__)) *SetName)(
        ICreateTypeLib *This,
        LPOLESTR szName);
    HRESULT (__attribute__((__stdcall__)) *SetVersion)(
        ICreateTypeLib *This,
        WORD wMajorVerNum,
        WORD wMinorVerNum);
    HRESULT (__attribute__((__stdcall__)) *SetGuid)(
        ICreateTypeLib *This,
        const GUID *const guid);
    HRESULT (__attribute__((__stdcall__)) *SetDocString)(
        ICreateTypeLib *This,
        LPOLESTR szDoc);
    HRESULT (__attribute__((__stdcall__)) *SetHelpFileName)(
        ICreateTypeLib *This,
        LPOLESTR szHelpFileName);
    HRESULT (__attribute__((__stdcall__)) *SetHelpContext)(
        ICreateTypeLib *This,
        DWORD dwHelpContext);
    HRESULT (__attribute__((__stdcall__)) *SetLcid)(
        ICreateTypeLib *This,
        LCID lcid);
    HRESULT (__attribute__((__stdcall__)) *SetLibFlags)(
        ICreateTypeLib *This,
        UINT uLibFlags);
    HRESULT (__attribute__((__stdcall__)) *SaveAllChanges)(
        ICreateTypeLib *This);
   
} ICreateTypeLibVtbl;
struct ICreateTypeLib {
    ICreateTypeLibVtbl* lpVtbl;
};
#define __ICreateTypeLib2_INTERFACE_DEFINED__ 
typedef ICreateTypeLib2 *LPCREATETYPELIB2;
extern const GUID IID_ICreateTypeLib2;
typedef struct ICreateTypeLib2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ICreateTypeLib2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ICreateTypeLib2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ICreateTypeLib2 *This);
    HRESULT (__attribute__((__stdcall__)) *CreateTypeInfo)(
        ICreateTypeLib2 *This,
        LPOLESTR szName,
        TYPEKIND tkind,
        ICreateTypeInfo **ppCTInfo);
    HRESULT (__attribute__((__stdcall__)) *SetName)(
        ICreateTypeLib2 *This,
        LPOLESTR szName);
    HRESULT (__attribute__((__stdcall__)) *SetVersion)(
        ICreateTypeLib2 *This,
        WORD wMajorVerNum,
        WORD wMinorVerNum);
    HRESULT (__attribute__((__stdcall__)) *SetGuid)(
        ICreateTypeLib2 *This,
        const GUID *const guid);
    HRESULT (__attribute__((__stdcall__)) *SetDocString)(
        ICreateTypeLib2 *This,
        LPOLESTR szDoc);
    HRESULT (__attribute__((__stdcall__)) *SetHelpFileName)(
        ICreateTypeLib2 *This,
        LPOLESTR szHelpFileName);
    HRESULT (__attribute__((__stdcall__)) *SetHelpContext)(
        ICreateTypeLib2 *This,
        DWORD dwHelpContext);
    HRESULT (__attribute__((__stdcall__)) *SetLcid)(
        ICreateTypeLib2 *This,
        LCID lcid);
    HRESULT (__attribute__((__stdcall__)) *SetLibFlags)(
        ICreateTypeLib2 *This,
        UINT uLibFlags);
    HRESULT (__attribute__((__stdcall__)) *SaveAllChanges)(
        ICreateTypeLib2 *This);
    HRESULT (__attribute__((__stdcall__)) *DeleteTypeInfo)(
        ICreateTypeLib2 *This,
        LPOLESTR szName);
    HRESULT (__attribute__((__stdcall__)) *SetCustData)(
        ICreateTypeLib2 *This,
        const GUID *const guid,
        VARIANT *pVarVal);
    HRESULT (__attribute__((__stdcall__)) *SetHelpStringContext)(
        ICreateTypeLib2 *This,
        ULONG dwHelpStringContext);
    HRESULT (__attribute__((__stdcall__)) *SetHelpStringDll)(
        ICreateTypeLib2 *This,
        LPOLESTR szFileName);
   
} ICreateTypeLib2Vtbl;
struct ICreateTypeLib2 {
    ICreateTypeLib2Vtbl* lpVtbl;
};
#define __IDispatch_INTERFACE_DEFINED__ 
typedef IDispatch *LPDISPATCH;
#define DISPID_UNKNOWN (-1)
#define DISPID_VALUE (0)
#define DISPID_PROPERTYPUT (-3)
#define DISPID_NEWENUM (-4)
#define DISPID_EVALUATE (-5)
#define DISPID_CONSTRUCTOR (-6)
#define DISPID_DESTRUCTOR (-7)
#define DISPID_COLLECT (-8)
extern const GUID IID_IDispatch;
typedef struct IDispatchVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IDispatch *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IDispatch *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IDispatch *This);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(
        IDispatch *This,
        UINT *pctinfo);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(
        IDispatch *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);
    HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(
        IDispatch *This,
        const IID *const riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);
    HRESULT (__attribute__((__stdcall__)) *Invoke)(
        IDispatch *This,
        DISPID dispIdMember,
        const IID *const riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);
   
} IDispatchVtbl;
struct IDispatch {
    IDispatchVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IDispatch_RemoteInvoke_Proxy(
    IDispatch* This,
    DISPID dispIdMember,
    const IID *const riid,
    LCID lcid,
    DWORD dwFlags,
    DISPPARAMS *pDispParams,
    VARIANT *pVarResult,
    EXCEPINFO *pExcepInfo,
    UINT *pArgErr,
    UINT cVarRef,
    UINT *rgVarRefIdx,
    VARIANTARG *rgVarRef);
void __attribute__((__stdcall__)) IDispatch_RemoteInvoke_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IDispatch_Invoke_Proxy(
    IDispatch* This,
    DISPID dispIdMember,
    const IID *const riid,
    LCID lcid,
    WORD wFlags,
    DISPPARAMS *pDispParams,
    VARIANT *pVarResult,
    EXCEPINFO *pExcepInfo,
    UINT *puArgErr);
HRESULT __attribute__((__stdcall__)) IDispatch_Invoke_Stub(
    IDispatch* This,
    DISPID dispIdMember,
    const IID *const riid,
    LCID lcid,
    DWORD dwFlags,
    DISPPARAMS *pDispParams,
    VARIANT *pVarResult,
    EXCEPINFO *pExcepInfo,
    UINT *pArgErr,
    UINT cVarRef,
    UINT *rgVarRefIdx,
    VARIANTARG *rgVarRef);
#define __IEnumVARIANT_INTERFACE_DEFINED__ 
typedef IEnumVARIANT *LPENUMVARIANT;
extern const GUID IID_IEnumVARIANT;
typedef struct IEnumVARIANTVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IEnumVARIANT *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IEnumVARIANT *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IEnumVARIANT *This);
    HRESULT (__attribute__((__stdcall__)) *Next)(
        IEnumVARIANT *This,
        ULONG celt,
        VARIANT *rgVar,
        ULONG *pCeltFetched);
    HRESULT (__attribute__((__stdcall__)) *Skip)(
        IEnumVARIANT *This,
        ULONG celt);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        IEnumVARIANT *This);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IEnumVARIANT *This,
        IEnumVARIANT **ppEnum);
   
} IEnumVARIANTVtbl;
struct IEnumVARIANT {
    IEnumVARIANTVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IEnumVARIANT_RemoteNext_Proxy(
    IEnumVARIANT* This,
    ULONG celt,
    VARIANT *rgVar,
    ULONG *pCeltFetched);
void __attribute__((__stdcall__)) IEnumVARIANT_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IEnumVARIANT_Next_Proxy(
    IEnumVARIANT* This,
    ULONG celt,
    VARIANT *rgVar,
    ULONG *pCeltFetched);
HRESULT __attribute__((__stdcall__)) IEnumVARIANT_Next_Stub(
    IEnumVARIANT* This,
    ULONG celt,
    VARIANT *rgVar,
    ULONG *pCeltFetched);
#define __ITypeComp_INTERFACE_DEFINED__ 
typedef ITypeComp *LPTYPECOMP;
typedef enum tagDESCKIND {
    DESCKIND_NONE = 0,
    DESCKIND_FUNCDESC = 1,
    DESCKIND_VARDESC = 2,
    DESCKIND_TYPECOMP = 3,
    DESCKIND_IMPLICITAPPOBJ = 4,
    DESCKIND_MAX = 5
} DESCKIND;
typedef union tagBINDPTR {
    FUNCDESC *lpfuncdesc;
    VARDESC *lpvardesc;
    ITypeComp *lptcomp;
} BINDPTR;
typedef union tagBINDPTR *LPBINDPTR;
extern const GUID IID_ITypeComp;
typedef struct ITypeCompVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ITypeComp *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ITypeComp *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ITypeComp *This);
    HRESULT (__attribute__((__stdcall__)) *Bind)(
        ITypeComp *This,
        LPOLESTR szName,
        ULONG lHashVal,
        WORD wFlags,
        ITypeInfo **ppTInfo,
        DESCKIND *pDescKind,
        BINDPTR *pBindPtr);
    HRESULT (__attribute__((__stdcall__)) *BindType)(
        ITypeComp *This,
        LPOLESTR szName,
        ULONG lHashVal,
        ITypeInfo **ppTInfo,
        ITypeComp **ppTComp);
   
} ITypeCompVtbl;
struct ITypeComp {
    ITypeCompVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) ITypeComp_RemoteBind_Proxy(
    ITypeComp* This,
    LPOLESTR szName,
    ULONG lHashVal,
    WORD wFlags,
    ITypeInfo **ppTInfo,
    DESCKIND *pDescKind,
    LPFUNCDESC *ppFuncDesc,
    LPVARDESC *ppVarDesc,
    ITypeComp **ppTypeComp,
    CLEANLOCALSTORAGE *pDummy);
void __attribute__((__stdcall__)) ITypeComp_RemoteBind_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeComp_RemoteBindType_Proxy(
    ITypeComp* This,
    LPOLESTR szName,
    ULONG lHashVal,
    ITypeInfo **ppTInfo);
void __attribute__((__stdcall__)) ITypeComp_RemoteBindType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeComp_Bind_Proxy(
    ITypeComp* This,
    LPOLESTR szName,
    ULONG lHashVal,
    WORD wFlags,
    ITypeInfo **ppTInfo,
    DESCKIND *pDescKind,
    BINDPTR *pBindPtr);
HRESULT __attribute__((__stdcall__)) ITypeComp_Bind_Stub(
    ITypeComp* This,
    LPOLESTR szName,
    ULONG lHashVal,
    WORD wFlags,
    ITypeInfo **ppTInfo,
    DESCKIND *pDescKind,
    LPFUNCDESC *ppFuncDesc,
    LPVARDESC *ppVarDesc,
    ITypeComp **ppTypeComp,
    CLEANLOCALSTORAGE *pDummy);
HRESULT __attribute__((__stdcall__)) ITypeComp_BindType_Proxy(
    ITypeComp* This,
    LPOLESTR szName,
    ULONG lHashVal,
    ITypeInfo **ppTInfo,
    ITypeComp **ppTComp);
HRESULT __attribute__((__stdcall__)) ITypeComp_BindType_Stub(
    ITypeComp* This,
    LPOLESTR szName,
    ULONG lHashVal,
    ITypeInfo **ppTInfo);
#define __ITypeInfo_INTERFACE_DEFINED__ 
typedef ITypeInfo *LPTYPEINFO;
extern const GUID IID_ITypeInfo;
typedef struct ITypeInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ITypeInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ITypeInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ITypeInfo *This);
    HRESULT (__attribute__((__stdcall__)) *GetTypeAttr)(
        ITypeInfo *This,
        TYPEATTR **ppTypeAttr);
    HRESULT (__attribute__((__stdcall__)) *GetTypeComp)(
        ITypeInfo *This,
        ITypeComp **ppTComp);
    HRESULT (__attribute__((__stdcall__)) *GetFuncDesc)(
        ITypeInfo *This,
        UINT index,
        FUNCDESC **ppFuncDesc);
    HRESULT (__attribute__((__stdcall__)) *GetVarDesc)(
        ITypeInfo *This,
        UINT index,
        VARDESC **ppVarDesc);
    HRESULT (__attribute__((__stdcall__)) *GetNames)(
        ITypeInfo *This,
        MEMBERID memid,
        BSTR *rgBstrNames,
        UINT cMaxNames,
        UINT *pcNames);
    HRESULT (__attribute__((__stdcall__)) *GetRefTypeOfImplType)(
        ITypeInfo *This,
        UINT index,
        HREFTYPE *pRefType);
    HRESULT (__attribute__((__stdcall__)) *GetImplTypeFlags)(
        ITypeInfo *This,
        UINT index,
        INT *pImplTypeFlags);
    HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(
        ITypeInfo *This,
        LPOLESTR *rgszNames,
        UINT cNames,
        MEMBERID *pMemId);
    HRESULT (__attribute__((__stdcall__)) *Invoke)(
        ITypeInfo *This,
        PVOID pvInstance,
        MEMBERID memid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);
    HRESULT (__attribute__((__stdcall__)) *GetDocumentation)(
        ITypeInfo *This,
        MEMBERID memid,
        BSTR *pBstrName,
        BSTR *pBstrDocString,
        DWORD *pdwHelpContext,
        BSTR *pBstrHelpFile);
    HRESULT (__attribute__((__stdcall__)) *GetDllEntry)(
        ITypeInfo *This,
        MEMBERID memid,
        INVOKEKIND invKind,
        BSTR *pBstrDllName,
        BSTR *pBstrName,
        WORD *pwOrdinal);
    HRESULT (__attribute__((__stdcall__)) *GetRefTypeInfo)(
        ITypeInfo *This,
        HREFTYPE hRefType,
        ITypeInfo **ppTInfo);
    HRESULT (__attribute__((__stdcall__)) *AddressOfMember)(
        ITypeInfo *This,
        MEMBERID memid,
        INVOKEKIND invKind,
        PVOID *ppv);
    HRESULT (__attribute__((__stdcall__)) *CreateInstance)(
        ITypeInfo *This,
        IUnknown *pUnkOuter,
        const IID *const riid,
        PVOID *ppvObj);
    HRESULT (__attribute__((__stdcall__)) *GetMops)(
        ITypeInfo *This,
        MEMBERID memid,
        BSTR *pBstrMops);
    HRESULT (__attribute__((__stdcall__)) *GetContainingTypeLib)(
        ITypeInfo *This,
        ITypeLib **ppTLib,
        UINT *pIndex);
    void (__attribute__((__stdcall__)) *ReleaseTypeAttr)(
        ITypeInfo *This,
        TYPEATTR *pTypeAttr);
    void (__attribute__((__stdcall__)) *ReleaseFuncDesc)(
        ITypeInfo *This,
        FUNCDESC *pFuncDesc);
    void (__attribute__((__stdcall__)) *ReleaseVarDesc)(
        ITypeInfo *This,
        VARDESC *pVarDesc);
   
} ITypeInfoVtbl;
struct ITypeInfo {
    ITypeInfoVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteGetTypeAttr_Proxy(
    ITypeInfo* This,
    LPTYPEATTR *ppTypeAttr,
    CLEANLOCALSTORAGE *pDummy);
void __attribute__((__stdcall__)) ITypeInfo_RemoteGetTypeAttr_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteGetFuncDesc_Proxy(
    ITypeInfo* This,
    UINT index,
    LPFUNCDESC *ppFuncDesc,
    CLEANLOCALSTORAGE *pDummy);
void __attribute__((__stdcall__)) ITypeInfo_RemoteGetFuncDesc_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteGetVarDesc_Proxy(
    ITypeInfo* This,
    UINT index,
    LPVARDESC *ppVarDesc,
    CLEANLOCALSTORAGE *pDummy);
void __attribute__((__stdcall__)) ITypeInfo_RemoteGetVarDesc_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteGetNames_Proxy(
    ITypeInfo* This,
    MEMBERID memid,
    BSTR *rgBstrNames,
    UINT cMaxNames,
    UINT *pcNames);
void __attribute__((__stdcall__)) ITypeInfo_RemoteGetNames_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo_LocalGetIDsOfNames_Proxy(
    ITypeInfo* This);
void __attribute__((__stdcall__)) ITypeInfo_LocalGetIDsOfNames_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo_LocalInvoke_Proxy(
    ITypeInfo* This);
void __attribute__((__stdcall__)) ITypeInfo_LocalInvoke_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteGetDocumentation_Proxy(
    ITypeInfo* This,
    MEMBERID memid,
    DWORD refPtrFlags,
    BSTR *pBstrName,
    BSTR *pBstrDocString,
    DWORD *pdwHelpContext,
    BSTR *pBstrHelpFile);
void __attribute__((__stdcall__)) ITypeInfo_RemoteGetDocumentation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteGetDllEntry_Proxy(
    ITypeInfo* This,
    MEMBERID memid,
    INVOKEKIND invKind,
    DWORD refPtrFlags,
    BSTR *pBstrDllName,
    BSTR *pBstrName,
    WORD *pwOrdinal);
void __attribute__((__stdcall__)) ITypeInfo_RemoteGetDllEntry_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo_LocalAddressOfMember_Proxy(
    ITypeInfo* This);
void __attribute__((__stdcall__)) ITypeInfo_LocalAddressOfMember_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteCreateInstance_Proxy(
    ITypeInfo* This,
    const IID *const riid,
    IUnknown **ppvObj);
void __attribute__((__stdcall__)) ITypeInfo_RemoteCreateInstance_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo_RemoteGetContainingTypeLib_Proxy(
    ITypeInfo* This,
    ITypeLib **ppTLib,
    UINT *pIndex);
void __attribute__((__stdcall__)) ITypeInfo_RemoteGetContainingTypeLib_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo_LocalReleaseTypeAttr_Proxy(
    ITypeInfo* This);
void __attribute__((__stdcall__)) ITypeInfo_LocalReleaseTypeAttr_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo_LocalReleaseFuncDesc_Proxy(
    ITypeInfo* This);
void __attribute__((__stdcall__)) ITypeInfo_LocalReleaseFuncDesc_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo_LocalReleaseVarDesc_Proxy(
    ITypeInfo* This);
void __attribute__((__stdcall__)) ITypeInfo_LocalReleaseVarDesc_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetTypeAttr_Proxy(
    ITypeInfo* This,
    TYPEATTR **ppTypeAttr);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetTypeAttr_Stub(
    ITypeInfo* This,
    LPTYPEATTR *ppTypeAttr,
    CLEANLOCALSTORAGE *pDummy);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetFuncDesc_Proxy(
    ITypeInfo* This,
    UINT index,
    FUNCDESC **ppFuncDesc);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetFuncDesc_Stub(
    ITypeInfo* This,
    UINT index,
    LPFUNCDESC *ppFuncDesc,
    CLEANLOCALSTORAGE *pDummy);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetVarDesc_Proxy(
    ITypeInfo* This,
    UINT index,
    VARDESC **ppVarDesc);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetVarDesc_Stub(
    ITypeInfo* This,
    UINT index,
    LPVARDESC *ppVarDesc,
    CLEANLOCALSTORAGE *pDummy);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetNames_Proxy(
    ITypeInfo* This,
    MEMBERID memid,
    BSTR *rgBstrNames,
    UINT cMaxNames,
    UINT *pcNames);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetNames_Stub(
    ITypeInfo* This,
    MEMBERID memid,
    BSTR *rgBstrNames,
    UINT cMaxNames,
    UINT *pcNames);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetIDsOfNames_Proxy(
    ITypeInfo* This,
    LPOLESTR *rgszNames,
    UINT cNames,
    MEMBERID *pMemId);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetIDsOfNames_Stub(
    ITypeInfo* This);
HRESULT __attribute__((__stdcall__)) ITypeInfo_Invoke_Proxy(
    ITypeInfo* This,
    PVOID pvInstance,
    MEMBERID memid,
    WORD wFlags,
    DISPPARAMS *pDispParams,
    VARIANT *pVarResult,
    EXCEPINFO *pExcepInfo,
    UINT *puArgErr);
HRESULT __attribute__((__stdcall__)) ITypeInfo_Invoke_Stub(
    ITypeInfo* This);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetDocumentation_Proxy(
    ITypeInfo* This,
    MEMBERID memid,
    BSTR *pBstrName,
    BSTR *pBstrDocString,
    DWORD *pdwHelpContext,
    BSTR *pBstrHelpFile);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetDocumentation_Stub(
    ITypeInfo* This,
    MEMBERID memid,
    DWORD refPtrFlags,
    BSTR *pBstrName,
    BSTR *pBstrDocString,
    DWORD *pdwHelpContext,
    BSTR *pBstrHelpFile);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetDllEntry_Proxy(
    ITypeInfo* This,
    MEMBERID memid,
    INVOKEKIND invKind,
    BSTR *pBstrDllName,
    BSTR *pBstrName,
    WORD *pwOrdinal);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetDllEntry_Stub(
    ITypeInfo* This,
    MEMBERID memid,
    INVOKEKIND invKind,
    DWORD refPtrFlags,
    BSTR *pBstrDllName,
    BSTR *pBstrName,
    WORD *pwOrdinal);
HRESULT __attribute__((__stdcall__)) ITypeInfo_AddressOfMember_Proxy(
    ITypeInfo* This,
    MEMBERID memid,
    INVOKEKIND invKind,
    PVOID *ppv);
HRESULT __attribute__((__stdcall__)) ITypeInfo_AddressOfMember_Stub(
    ITypeInfo* This);
HRESULT __attribute__((__stdcall__)) ITypeInfo_CreateInstance_Proxy(
    ITypeInfo* This,
    IUnknown *pUnkOuter,
    const IID *const riid,
    PVOID *ppvObj);
HRESULT __attribute__((__stdcall__)) ITypeInfo_CreateInstance_Stub(
    ITypeInfo* This,
    const IID *const riid,
    IUnknown **ppvObj);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetContainingTypeLib_Proxy(
    ITypeInfo* This,
    ITypeLib **ppTLib,
    UINT *pIndex);
HRESULT __attribute__((__stdcall__)) ITypeInfo_GetContainingTypeLib_Stub(
    ITypeInfo* This,
    ITypeLib **ppTLib,
    UINT *pIndex);
void __attribute__((__stdcall__)) ITypeInfo_ReleaseTypeAttr_Proxy(
    ITypeInfo* This,
    TYPEATTR *pTypeAttr);
HRESULT __attribute__((__stdcall__)) ITypeInfo_ReleaseTypeAttr_Stub(
    ITypeInfo* This);
void __attribute__((__stdcall__)) ITypeInfo_ReleaseFuncDesc_Proxy(
    ITypeInfo* This,
    FUNCDESC *pFuncDesc);
HRESULT __attribute__((__stdcall__)) ITypeInfo_ReleaseFuncDesc_Stub(
    ITypeInfo* This);
void __attribute__((__stdcall__)) ITypeInfo_ReleaseVarDesc_Proxy(
    ITypeInfo* This,
    VARDESC *pVarDesc);
HRESULT __attribute__((__stdcall__)) ITypeInfo_ReleaseVarDesc_Stub(
    ITypeInfo* This);
#define __ITypeInfo2_INTERFACE_DEFINED__ 
typedef ITypeInfo2 *LPTYPEINFO2;
extern const GUID IID_ITypeInfo2;
typedef struct ITypeInfo2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ITypeInfo2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ITypeInfo2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ITypeInfo2 *This);
    HRESULT (__attribute__((__stdcall__)) *GetTypeAttr)(
        ITypeInfo2 *This,
        TYPEATTR **ppTypeAttr);
    HRESULT (__attribute__((__stdcall__)) *GetTypeComp)(
        ITypeInfo2 *This,
        ITypeComp **ppTComp);
    HRESULT (__attribute__((__stdcall__)) *GetFuncDesc)(
        ITypeInfo2 *This,
        UINT index,
        FUNCDESC **ppFuncDesc);
    HRESULT (__attribute__((__stdcall__)) *GetVarDesc)(
        ITypeInfo2 *This,
        UINT index,
        VARDESC **ppVarDesc);
    HRESULT (__attribute__((__stdcall__)) *GetNames)(
        ITypeInfo2 *This,
        MEMBERID memid,
        BSTR *rgBstrNames,
        UINT cMaxNames,
        UINT *pcNames);
    HRESULT (__attribute__((__stdcall__)) *GetRefTypeOfImplType)(
        ITypeInfo2 *This,
        UINT index,
        HREFTYPE *pRefType);
    HRESULT (__attribute__((__stdcall__)) *GetImplTypeFlags)(
        ITypeInfo2 *This,
        UINT index,
        INT *pImplTypeFlags);
    HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(
        ITypeInfo2 *This,
        LPOLESTR *rgszNames,
        UINT cNames,
        MEMBERID *pMemId);
    HRESULT (__attribute__((__stdcall__)) *Invoke)(
        ITypeInfo2 *This,
        PVOID pvInstance,
        MEMBERID memid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);
    HRESULT (__attribute__((__stdcall__)) *GetDocumentation)(
        ITypeInfo2 *This,
        MEMBERID memid,
        BSTR *pBstrName,
        BSTR *pBstrDocString,
        DWORD *pdwHelpContext,
        BSTR *pBstrHelpFile);
    HRESULT (__attribute__((__stdcall__)) *GetDllEntry)(
        ITypeInfo2 *This,
        MEMBERID memid,
        INVOKEKIND invKind,
        BSTR *pBstrDllName,
        BSTR *pBstrName,
        WORD *pwOrdinal);
    HRESULT (__attribute__((__stdcall__)) *GetRefTypeInfo)(
        ITypeInfo2 *This,
        HREFTYPE hRefType,
        ITypeInfo **ppTInfo);
    HRESULT (__attribute__((__stdcall__)) *AddressOfMember)(
        ITypeInfo2 *This,
        MEMBERID memid,
        INVOKEKIND invKind,
        PVOID *ppv);
    HRESULT (__attribute__((__stdcall__)) *CreateInstance)(
        ITypeInfo2 *This,
        IUnknown *pUnkOuter,
        const IID *const riid,
        PVOID *ppvObj);
    HRESULT (__attribute__((__stdcall__)) *GetMops)(
        ITypeInfo2 *This,
        MEMBERID memid,
        BSTR *pBstrMops);
    HRESULT (__attribute__((__stdcall__)) *GetContainingTypeLib)(
        ITypeInfo2 *This,
        ITypeLib **ppTLib,
        UINT *pIndex);
    void (__attribute__((__stdcall__)) *ReleaseTypeAttr)(
        ITypeInfo2 *This,
        TYPEATTR *pTypeAttr);
    void (__attribute__((__stdcall__)) *ReleaseFuncDesc)(
        ITypeInfo2 *This,
        FUNCDESC *pFuncDesc);
    void (__attribute__((__stdcall__)) *ReleaseVarDesc)(
        ITypeInfo2 *This,
        VARDESC *pVarDesc);
    HRESULT (__attribute__((__stdcall__)) *GetTypeKind)(
        ITypeInfo2 *This,
        TYPEKIND *pTypeKind);
    HRESULT (__attribute__((__stdcall__)) *GetTypeFlags)(
        ITypeInfo2 *This,
        ULONG *pTypeFlags);
    HRESULT (__attribute__((__stdcall__)) *GetFuncIndexOfMemId)(
        ITypeInfo2 *This,
        MEMBERID memid,
        INVOKEKIND invKind,
        UINT *pFuncIndex);
    HRESULT (__attribute__((__stdcall__)) *GetVarIndexOfMemId)(
        ITypeInfo2 *This,
        MEMBERID memid,
        UINT *pVarIndex);
    HRESULT (__attribute__((__stdcall__)) *GetCustData)(
        ITypeInfo2 *This,
        const GUID *const guid,
        VARIANT *pVarVal);
    HRESULT (__attribute__((__stdcall__)) *GetFuncCustData)(
        ITypeInfo2 *This,
        UINT index,
        const GUID *const guid,
        VARIANT *pVarVal);
    HRESULT (__attribute__((__stdcall__)) *GetParamCustData)(
        ITypeInfo2 *This,
        UINT indexFunc,
        UINT indexParam,
        const GUID *const guid,
        VARIANT *pVarVal);
    HRESULT (__attribute__((__stdcall__)) *GetVarCustData)(
        ITypeInfo2 *This,
        UINT index,
        const GUID *const guid,
        VARIANT *pVarVal);
    HRESULT (__attribute__((__stdcall__)) *GetImplTypeCustData)(
        ITypeInfo2 *This,
        UINT index,
        const GUID *const guid,
        VARIANT *pVarVal);
    HRESULT (__attribute__((__stdcall__)) *GetDocumentation2)(
        ITypeInfo2 *This,
        MEMBERID memid,
        LCID lcid,
        BSTR *pbstrHelpString,
        DWORD *pdwHelpStringContext,
        BSTR *pbstrHelpStringDll);
    HRESULT (__attribute__((__stdcall__)) *GetAllCustData)(
        ITypeInfo2 *This,
        CUSTDATA *pCustData);
    HRESULT (__attribute__((__stdcall__)) *GetAllFuncCustData)(
        ITypeInfo2 *This,
        UINT index,
        CUSTDATA *pCustData);
    HRESULT (__attribute__((__stdcall__)) *GetAllParamCustData)(
        ITypeInfo2 *This,
        UINT indexFunc,
        UINT indexParam,
        CUSTDATA *pCustData);
    HRESULT (__attribute__((__stdcall__)) *GetAllVarCustData)(
        ITypeInfo2 *This,
        UINT index,
        CUSTDATA *pCustData);
    HRESULT (__attribute__((__stdcall__)) *GetAllImplTypeCustData)(
        ITypeInfo2 *This,
        UINT index,
        CUSTDATA *pCustData);
   
} ITypeInfo2Vtbl;
struct ITypeInfo2 {
    ITypeInfo2Vtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) ITypeInfo2_RemoteGetDocumentation2_Proxy(
    ITypeInfo2* This,
    MEMBERID memid,
    LCID lcid,
    DWORD refPtrFlags,
    BSTR *pbstrHelpString,
    DWORD *pdwHelpStringContext,
    BSTR *pbstrHelpStringDll);
void __attribute__((__stdcall__)) ITypeInfo2_RemoteGetDocumentation2_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeInfo2_GetDocumentation2_Proxy(
    ITypeInfo2* This,
    MEMBERID memid,
    LCID lcid,
    BSTR *pbstrHelpString,
    DWORD *pdwHelpStringContext,
    BSTR *pbstrHelpStringDll);
HRESULT __attribute__((__stdcall__)) ITypeInfo2_GetDocumentation2_Stub(
    ITypeInfo2* This,
    MEMBERID memid,
    LCID lcid,
    DWORD refPtrFlags,
    BSTR *pbstrHelpString,
    DWORD *pdwHelpStringContext,
    BSTR *pbstrHelpStringDll);
#define __ITypeLib_INTERFACE_DEFINED__ 
typedef enum tagSYSKIND {
    SYS_WIN16 = 0,
    SYS_WIN32 = 1,
    SYS_MAC = 2,
    SYS_WIN64 = 3
} SYSKIND;
typedef enum tagLIBFLAGS {
    LIBFLAG_FRESTRICTED = 0x1,
    LIBFLAG_FCONTROL = 0x2,
    LIBFLAG_FHIDDEN = 0x4,
    LIBFLAG_FHASDISKIMAGE = 0x8
} LIBFLAGS;
typedef ITypeLib *LPTYPELIB;
typedef struct tagTLIBATTR {
    GUID guid;
    LCID lcid;
    SYSKIND syskind;
    WORD wMajorVerNum;
    WORD wMinorVerNum;
    WORD wLibFlags;
} TLIBATTR;
typedef struct tagTLIBATTR *LPTLIBATTR;
extern const GUID IID_ITypeLib;
typedef struct ITypeLibVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ITypeLib *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ITypeLib *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ITypeLib *This);
    UINT (__attribute__((__stdcall__)) *GetTypeInfoCount)(
        ITypeLib *This);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(
        ITypeLib *This,
        UINT index,
        ITypeInfo **ppTInfo);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfoType)(
        ITypeLib *This,
        UINT index,
        TYPEKIND *pTKind);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfoOfGuid)(
        ITypeLib *This,
        const GUID *const guid,
        ITypeInfo **ppTinfo);
    HRESULT (__attribute__((__stdcall__)) *GetLibAttr)(
        ITypeLib *This,
        TLIBATTR **ppTLibAttr);
    HRESULT (__attribute__((__stdcall__)) *GetTypeComp)(
        ITypeLib *This,
        ITypeComp **ppTComp);
    HRESULT (__attribute__((__stdcall__)) *GetDocumentation)(
        ITypeLib *This,
        INT index,
        BSTR *pBstrName,
        BSTR *pBstrDocString,
        DWORD *pdwHelpContext,
        BSTR *pBstrHelpFile);
    HRESULT (__attribute__((__stdcall__)) *IsName)(
        ITypeLib *This,
        LPOLESTR szNameBuf,
        ULONG lHashVal,
        WINBOOL *pfName);
    HRESULT (__attribute__((__stdcall__)) *FindName)(
        ITypeLib *This,
        LPOLESTR szNameBuf,
        ULONG lHashVal,
        ITypeInfo **ppTInfo,
        MEMBERID *rgMemId,
        USHORT *pcFound);
    void (__attribute__((__stdcall__)) *ReleaseTLibAttr)(
        ITypeLib *This,
        TLIBATTR *pTLibAttr);
   
} ITypeLibVtbl;
struct ITypeLib {
    ITypeLibVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) ITypeLib_RemoteGetTypeInfoCount_Proxy(
    ITypeLib* This,
    UINT *pcTInfo);
void __attribute__((__stdcall__)) ITypeLib_RemoteGetTypeInfoCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeLib_RemoteGetLibAttr_Proxy(
    ITypeLib* This,
    LPTLIBATTR *ppTLibAttr,
    CLEANLOCALSTORAGE *pDummy);
void __attribute__((__stdcall__)) ITypeLib_RemoteGetLibAttr_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeLib_RemoteGetDocumentation_Proxy(
    ITypeLib* This,
    INT index,
    DWORD refPtrFlags,
    BSTR *pBstrName,
    BSTR *pBstrDocString,
    DWORD *pdwHelpContext,
    BSTR *pBstrHelpFile);
void __attribute__((__stdcall__)) ITypeLib_RemoteGetDocumentation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeLib_RemoteIsName_Proxy(
    ITypeLib* This,
    LPOLESTR szNameBuf,
    ULONG lHashVal,
    WINBOOL *pfName,
    BSTR *pBstrLibName);
void __attribute__((__stdcall__)) ITypeLib_RemoteIsName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeLib_RemoteFindName_Proxy(
    ITypeLib* This,
    LPOLESTR szNameBuf,
    ULONG lHashVal,
    ITypeInfo **ppTInfo,
    MEMBERID *rgMemId,
    USHORT *pcFound,
    BSTR *pBstrLibName);
void __attribute__((__stdcall__)) ITypeLib_RemoteFindName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeLib_LocalReleaseTLibAttr_Proxy(
    ITypeLib* This);
void __attribute__((__stdcall__)) ITypeLib_LocalReleaseTLibAttr_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
UINT __attribute__((__stdcall__)) ITypeLib_GetTypeInfoCount_Proxy(
    ITypeLib* This);
HRESULT __attribute__((__stdcall__)) ITypeLib_GetTypeInfoCount_Stub(
    ITypeLib* This,
    UINT *pcTInfo);
HRESULT __attribute__((__stdcall__)) ITypeLib_GetLibAttr_Proxy(
    ITypeLib* This,
    TLIBATTR **ppTLibAttr);
HRESULT __attribute__((__stdcall__)) ITypeLib_GetLibAttr_Stub(
    ITypeLib* This,
    LPTLIBATTR *ppTLibAttr,
    CLEANLOCALSTORAGE *pDummy);
HRESULT __attribute__((__stdcall__)) ITypeLib_GetDocumentation_Proxy(
    ITypeLib* This,
    INT index,
    BSTR *pBstrName,
    BSTR *pBstrDocString,
    DWORD *pdwHelpContext,
    BSTR *pBstrHelpFile);
HRESULT __attribute__((__stdcall__)) ITypeLib_GetDocumentation_Stub(
    ITypeLib* This,
    INT index,
    DWORD refPtrFlags,
    BSTR *pBstrName,
    BSTR *pBstrDocString,
    DWORD *pdwHelpContext,
    BSTR *pBstrHelpFile);
HRESULT __attribute__((__stdcall__)) ITypeLib_IsName_Proxy(
    ITypeLib* This,
    LPOLESTR szNameBuf,
    ULONG lHashVal,
    WINBOOL *pfName);
HRESULT __attribute__((__stdcall__)) ITypeLib_IsName_Stub(
    ITypeLib* This,
    LPOLESTR szNameBuf,
    ULONG lHashVal,
    WINBOOL *pfName,
    BSTR *pBstrLibName);
HRESULT __attribute__((__stdcall__)) ITypeLib_FindName_Proxy(
    ITypeLib* This,
    LPOLESTR szNameBuf,
    ULONG lHashVal,
    ITypeInfo **ppTInfo,
    MEMBERID *rgMemId,
    USHORT *pcFound);
HRESULT __attribute__((__stdcall__)) ITypeLib_FindName_Stub(
    ITypeLib* This,
    LPOLESTR szNameBuf,
    ULONG lHashVal,
    ITypeInfo **ppTInfo,
    MEMBERID *rgMemId,
    USHORT *pcFound,
    BSTR *pBstrLibName);
void __attribute__((__stdcall__)) ITypeLib_ReleaseTLibAttr_Proxy(
    ITypeLib* This,
    TLIBATTR *pTLibAttr);
HRESULT __attribute__((__stdcall__)) ITypeLib_ReleaseTLibAttr_Stub(
    ITypeLib* This);
#define __ITypeLib2_INTERFACE_DEFINED__ 
typedef ITypeLib2 *LPTYPELIB2;
extern const GUID IID_ITypeLib2;
typedef struct ITypeLib2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ITypeLib2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ITypeLib2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ITypeLib2 *This);
    UINT (__attribute__((__stdcall__)) *GetTypeInfoCount)(
        ITypeLib2 *This);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(
        ITypeLib2 *This,
        UINT index,
        ITypeInfo **ppTInfo);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfoType)(
        ITypeLib2 *This,
        UINT index,
        TYPEKIND *pTKind);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfoOfGuid)(
        ITypeLib2 *This,
        const GUID *const guid,
        ITypeInfo **ppTinfo);
    HRESULT (__attribute__((__stdcall__)) *GetLibAttr)(
        ITypeLib2 *This,
        TLIBATTR **ppTLibAttr);
    HRESULT (__attribute__((__stdcall__)) *GetTypeComp)(
        ITypeLib2 *This,
        ITypeComp **ppTComp);
    HRESULT (__attribute__((__stdcall__)) *GetDocumentation)(
        ITypeLib2 *This,
        INT index,
        BSTR *pBstrName,
        BSTR *pBstrDocString,
        DWORD *pdwHelpContext,
        BSTR *pBstrHelpFile);
    HRESULT (__attribute__((__stdcall__)) *IsName)(
        ITypeLib2 *This,
        LPOLESTR szNameBuf,
        ULONG lHashVal,
        WINBOOL *pfName);
    HRESULT (__attribute__((__stdcall__)) *FindName)(
        ITypeLib2 *This,
        LPOLESTR szNameBuf,
        ULONG lHashVal,
        ITypeInfo **ppTInfo,
        MEMBERID *rgMemId,
        USHORT *pcFound);
    void (__attribute__((__stdcall__)) *ReleaseTLibAttr)(
        ITypeLib2 *This,
        TLIBATTR *pTLibAttr);
    HRESULT (__attribute__((__stdcall__)) *GetCustData)(
        ITypeLib2 *This,
        const GUID *const guid,
        VARIANT *pVarVal);
    HRESULT (__attribute__((__stdcall__)) *GetLibStatistics)(
        ITypeLib2 *This,
        ULONG *pcUniqueNames,
        ULONG *pcchUniqueNames);
    HRESULT (__attribute__((__stdcall__)) *GetDocumentation2)(
        ITypeLib2 *This,
        INT index,
        LCID lcid,
        BSTR *pbstrHelpString,
        DWORD *pdwHelpStringContext,
        BSTR *pbstrHelpStringDll);
    HRESULT (__attribute__((__stdcall__)) *GetAllCustData)(
        ITypeLib2 *This,
        CUSTDATA *pCustData);
   
} ITypeLib2Vtbl;
struct ITypeLib2 {
    ITypeLib2Vtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) ITypeLib2_RemoteGetLibStatistics_Proxy(
    ITypeLib2* This,
    ULONG *pcUniqueNames,
    ULONG *pcchUniqueNames);
void __attribute__((__stdcall__)) ITypeLib2_RemoteGetLibStatistics_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeLib2_RemoteGetDocumentation2_Proxy(
    ITypeLib2* This,
    INT index,
    LCID lcid,
    DWORD refPtrFlags,
    BSTR *pbstrHelpString,
    DWORD *pdwHelpStringContext,
    BSTR *pbstrHelpStringDll);
void __attribute__((__stdcall__)) ITypeLib2_RemoteGetDocumentation2_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) ITypeLib2_GetLibStatistics_Proxy(
    ITypeLib2* This,
    ULONG *pcUniqueNames,
    ULONG *pcchUniqueNames);
HRESULT __attribute__((__stdcall__)) ITypeLib2_GetLibStatistics_Stub(
    ITypeLib2* This,
    ULONG *pcUniqueNames,
    ULONG *pcchUniqueNames);
HRESULT __attribute__((__stdcall__)) ITypeLib2_GetDocumentation2_Proxy(
    ITypeLib2* This,
    INT index,
    LCID lcid,
    BSTR *pbstrHelpString,
    DWORD *pdwHelpStringContext,
    BSTR *pbstrHelpStringDll);
HRESULT __attribute__((__stdcall__)) ITypeLib2_GetDocumentation2_Stub(
    ITypeLib2* This,
    INT index,
    LCID lcid,
    DWORD refPtrFlags,
    BSTR *pbstrHelpString,
    DWORD *pdwHelpStringContext,
    BSTR *pbstrHelpStringDll);
#define __ITypeChangeEvents_INTERFACE_DEFINED__ 
typedef ITypeChangeEvents *LPTYPECHANGEEVENTS;
typedef enum tagCHANGEKIND {
    CHANGEKIND_ADDMEMBER = 0,
    CHANGEKIND_DELETEMEMBER = 1,
    CHANGEKIND_SETNAMES = 2,
    CHANGEKIND_SETDOCUMENTATION = 3,
    CHANGEKIND_GENERAL = 4,
    CHANGEKIND_INVALIDATE = 5,
    CHANGEKIND_CHANGEFAILED = 6,
    CHANGEKIND_MAX = 7
} CHANGEKIND;
extern const GUID IID_ITypeChangeEvents;
typedef struct ITypeChangeEventsVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ITypeChangeEvents *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ITypeChangeEvents *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ITypeChangeEvents *This);
    HRESULT (__attribute__((__stdcall__)) *RequestTypeChange)(
        ITypeChangeEvents *This,
        CHANGEKIND changeKind,
        ITypeInfo *pTInfoBefore,
        LPOLESTR pStrName,
        INT *pfCancel);
    HRESULT (__attribute__((__stdcall__)) *AfterTypeChange)(
        ITypeChangeEvents *This,
        CHANGEKIND changeKind,
        ITypeInfo *pTInfoAfter,
        LPOLESTR pStrName);
   
} ITypeChangeEventsVtbl;
struct ITypeChangeEvents {
    ITypeChangeEventsVtbl* lpVtbl;
};
#define __IErrorInfo_INTERFACE_DEFINED__ 
typedef IErrorInfo *LPERRORINFO;
extern const GUID IID_IErrorInfo;
typedef struct IErrorInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IErrorInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IErrorInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IErrorInfo *This);
    HRESULT (__attribute__((__stdcall__)) *GetGUID)(
        IErrorInfo *This,
        GUID *pGUID);
    HRESULT (__attribute__((__stdcall__)) *GetSource)(
        IErrorInfo *This,
        BSTR *pBstrSource);
    HRESULT (__attribute__((__stdcall__)) *GetDescription)(
        IErrorInfo *This,
        BSTR *pBstrDescription);
    HRESULT (__attribute__((__stdcall__)) *GetHelpFile)(
        IErrorInfo *This,
        BSTR *pBstrHelpFile);
    HRESULT (__attribute__((__stdcall__)) *GetHelpContext)(
        IErrorInfo *This,
        DWORD *pdwHelpContext);
   
} IErrorInfoVtbl;
struct IErrorInfo {
    IErrorInfoVtbl* lpVtbl;
};
#define __ICreateErrorInfo_INTERFACE_DEFINED__ 
typedef ICreateErrorInfo *LPCREATEERRORINFO;
extern const GUID IID_ICreateErrorInfo;
typedef struct ICreateErrorInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ICreateErrorInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ICreateErrorInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ICreateErrorInfo *This);
    HRESULT (__attribute__((__stdcall__)) *SetGUID)(
        ICreateErrorInfo *This,
        const GUID *const rguid);
    HRESULT (__attribute__((__stdcall__)) *SetSource)(
        ICreateErrorInfo *This,
        LPOLESTR szSource);
    HRESULT (__attribute__((__stdcall__)) *SetDescription)(
        ICreateErrorInfo *This,
        LPOLESTR szDescription);
    HRESULT (__attribute__((__stdcall__)) *SetHelpFile)(
        ICreateErrorInfo *This,
        LPOLESTR szHelpFile);
    HRESULT (__attribute__((__stdcall__)) *SetHelpContext)(
        ICreateErrorInfo *This,
        DWORD dwHelpContext);
   
} ICreateErrorInfoVtbl;
struct ICreateErrorInfo {
    ICreateErrorInfoVtbl* lpVtbl;
};
#define __ISupportErrorInfo_INTERFACE_DEFINED__ 
typedef ISupportErrorInfo *LPSUPPORTERRORINFO;
extern const GUID IID_ISupportErrorInfo;
typedef struct ISupportErrorInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ISupportErrorInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ISupportErrorInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ISupportErrorInfo *This);
    HRESULT (__attribute__((__stdcall__)) *InterfaceSupportsErrorInfo)(
        ISupportErrorInfo *This,
        const IID *const riid);
   
} ISupportErrorInfoVtbl;
struct ISupportErrorInfo {
    ISupportErrorInfoVtbl* lpVtbl;
};
#define __ITypeFactory_INTERFACE_DEFINED__ 
extern const GUID IID_ITypeFactory;
typedef struct ITypeFactoryVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ITypeFactory *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ITypeFactory *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ITypeFactory *This);
    HRESULT (__attribute__((__stdcall__)) *CreateFromTypeInfo)(
        ITypeFactory *This,
        ITypeInfo *pTypeInfo,
        const IID *const riid,
        IUnknown **ppv);
   
} ITypeFactoryVtbl;
struct ITypeFactory {
    ITypeFactoryVtbl* lpVtbl;
};
#define __ITypeMarshal_INTERFACE_DEFINED__ 
extern const GUID IID_ITypeMarshal;
typedef struct ITypeMarshalVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ITypeMarshal *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ITypeMarshal *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ITypeMarshal *This);
    HRESULT (__attribute__((__stdcall__)) *Size)(
        ITypeMarshal *This,
        PVOID pvType,
        DWORD dwDestContext,
        PVOID pvDestContext,
        ULONG *pSize);
    HRESULT (__attribute__((__stdcall__)) *Marshal)(
        ITypeMarshal *This,
        PVOID pvType,
        DWORD dwDestContext,
        PVOID pvDestContext,
        ULONG cbBufferLength,
        BYTE *pBuffer,
        ULONG *pcbWritten);
    HRESULT (__attribute__((__stdcall__)) *Unmarshal)(
        ITypeMarshal *This,
        PVOID pvType,
        DWORD dwFlags,
        ULONG cbBufferLength,
        BYTE *pBuffer,
        ULONG *pcbRead);
    HRESULT (__attribute__((__stdcall__)) *Free)(
        ITypeMarshal *This,
        PVOID pvType);
   
} ITypeMarshalVtbl;
struct ITypeMarshal {
    ITypeMarshalVtbl* lpVtbl;
};
#define __IRecordInfo_INTERFACE_DEFINED__ 
typedef IRecordInfo *LPRECORDINFO;
extern const GUID IID_IRecordInfo;
typedef struct IRecordInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IRecordInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IRecordInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IRecordInfo *This);
    HRESULT (__attribute__((__stdcall__)) *RecordInit)(
        IRecordInfo *This,
        PVOID pvNew);
    HRESULT (__attribute__((__stdcall__)) *RecordClear)(
        IRecordInfo *This,
        PVOID pvExisting);
    HRESULT (__attribute__((__stdcall__)) *RecordCopy)(
        IRecordInfo *This,
        PVOID pvExisting,
        PVOID pvNew);
    HRESULT (__attribute__((__stdcall__)) *GetGuid)(
        IRecordInfo *This,
        GUID *pguid);
    HRESULT (__attribute__((__stdcall__)) *GetName)(
        IRecordInfo *This,
        BSTR *pbstrName);
    HRESULT (__attribute__((__stdcall__)) *GetSize)(
        IRecordInfo *This,
        ULONG *pcbSize);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(
        IRecordInfo *This,
        ITypeInfo **ppTypeInfo);
    HRESULT (__attribute__((__stdcall__)) *GetField)(
        IRecordInfo *This,
        PVOID pvData,
        LPCOLESTR szFieldName,
        VARIANT *pvarField);
    HRESULT (__attribute__((__stdcall__)) *GetFieldNoCopy)(
        IRecordInfo *This,
        PVOID pvData,
        LPCOLESTR szFieldName,
        VARIANT *pvarField,
        PVOID *ppvDataCArray);
    HRESULT (__attribute__((__stdcall__)) *PutField)(
        IRecordInfo *This,
        ULONG wFlags,
        PVOID pvData,
        LPCOLESTR szFieldName,
        VARIANT *pvarField);
    HRESULT (__attribute__((__stdcall__)) *PutFieldNoCopy)(
        IRecordInfo *This,
        ULONG wFlags,
        PVOID pvData,
        LPCOLESTR szFieldName,
        VARIANT *pvarField);
    HRESULT (__attribute__((__stdcall__)) *GetFieldNames)(
        IRecordInfo *This,
        ULONG *pcNames,
        BSTR *rgBstrNames);
    WINBOOL (__attribute__((__stdcall__)) *IsMatchingType)(
        IRecordInfo *This,
        IRecordInfo *pRecordInfo);
    PVOID (__attribute__((__stdcall__)) *RecordCreate)(
        IRecordInfo *This);
    HRESULT (__attribute__((__stdcall__)) *RecordCreateCopy)(
        IRecordInfo *This,
        PVOID pvSource,
        PVOID *ppvDest);
    HRESULT (__attribute__((__stdcall__)) *RecordDestroy)(
        IRecordInfo *This,
        PVOID pvRecord);
   
} IRecordInfoVtbl;
struct IRecordInfo {
    IRecordInfoVtbl* lpVtbl;
};
#define __IErrorLog_INTERFACE_DEFINED__ 
typedef IErrorLog *LPERRORLOG;
extern const GUID IID_IErrorLog;
typedef struct IErrorLogVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IErrorLog *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IErrorLog *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IErrorLog *This);
    HRESULT (__attribute__((__stdcall__)) *AddError)(
        IErrorLog *This,
        LPCOLESTR pszPropName,
        EXCEPINFO *pExcepInfo);
   
} IErrorLogVtbl;
struct IErrorLog {
    IErrorLogVtbl* lpVtbl;
};
#define __IPropertyBag_INTERFACE_DEFINED__ 
typedef IPropertyBag *LPPROPERTYBAG;
extern const GUID IID_IPropertyBag;
typedef struct IPropertyBagVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPropertyBag *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPropertyBag *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPropertyBag *This);
    HRESULT (__attribute__((__stdcall__)) *Read)(
        IPropertyBag *This,
        LPCOLESTR pszPropName,
        VARIANT *pVar,
        IErrorLog *pErrorLog);
    HRESULT (__attribute__((__stdcall__)) *Write)(
        IPropertyBag *This,
        LPCOLESTR pszPropName,
        VARIANT *pVar);
   
} IPropertyBagVtbl;
struct IPropertyBag {
    IPropertyBagVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IPropertyBag_RemoteRead_Proxy(
    IPropertyBag* This,
    LPCOLESTR pszPropName,
    VARIANT *pVar,
    IErrorLog *pErrorLog,
    DWORD varType,
    IUnknown *pUnkObj);
void __attribute__((__stdcall__)) IPropertyBag_RemoteRead_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IPropertyBag_Read_Proxy(
    IPropertyBag* This,
    LPCOLESTR pszPropName,
    VARIANT *pVar,
    IErrorLog *pErrorLog);
HRESULT __attribute__((__stdcall__)) IPropertyBag_Read_Stub(
    IPropertyBag* This,
    LPCOLESTR pszPropName,
    VARIANT *pVar,
    IErrorLog *pErrorLog,
    DWORD varType,
    IUnknown *pUnkObj);
ULONG __attribute__((__stdcall__)) VARIANT_UserSize (ULONG *, ULONG, VARIANT *);
unsigned char * __attribute__((__stdcall__)) VARIANT_UserMarshal (ULONG *, unsigned char *, VARIANT *);
unsigned char * __attribute__((__stdcall__)) VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
void __attribute__((__stdcall__)) VARIANT_UserFree (ULONG *, VARIANT *);
ULONG __attribute__((__stdcall__)) BSTR_UserSize (ULONG *, ULONG, BSTR *);
unsigned char * __attribute__((__stdcall__)) BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *);
unsigned char * __attribute__((__stdcall__)) BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void __attribute__((__stdcall__)) BSTR_UserFree (ULONG *, BSTR *);
ULONG __attribute__((__stdcall__)) CLEANLOCALSTORAGE_UserSize (ULONG *, ULONG, CLEANLOCALSTORAGE *);
unsigned char * __attribute__((__stdcall__)) CLEANLOCALSTORAGE_UserMarshal (ULONG *, unsigned char *, CLEANLOCALSTORAGE *);
unsigned char * __attribute__((__stdcall__)) CLEANLOCALSTORAGE_UserUnmarshal(ULONG *, unsigned char *, CLEANLOCALSTORAGE *);
void __attribute__((__stdcall__)) CLEANLOCALSTORAGE_UserFree (ULONG *, CLEANLOCALSTORAGE *);
       
#undef abort
#define __IXMLDOMImplementation_FWD_DEFINED__ 
typedef struct IXMLDOMImplementation IXMLDOMImplementation;
#define __IXMLDOMNode_FWD_DEFINED__ 
typedef struct IXMLDOMNode IXMLDOMNode;
#define __IXMLDOMDocumentFragment_FWD_DEFINED__ 
typedef struct IXMLDOMDocumentFragment IXMLDOMDocumentFragment;
#define __IXMLDOMDocument_FWD_DEFINED__ 
typedef struct IXMLDOMDocument IXMLDOMDocument;
#define __IXMLDOMNodeList_FWD_DEFINED__ 
typedef struct IXMLDOMNodeList IXMLDOMNodeList;
#define __IXMLDOMNamedNodeMap_FWD_DEFINED__ 
typedef struct IXMLDOMNamedNodeMap IXMLDOMNamedNodeMap;
#define __IXMLDOMCharacterData_FWD_DEFINED__ 
typedef struct IXMLDOMCharacterData IXMLDOMCharacterData;
#define __IXMLDOMAttribute_FWD_DEFINED__ 
typedef struct IXMLDOMAttribute IXMLDOMAttribute;
#define __IXMLDOMElement_FWD_DEFINED__ 
typedef struct IXMLDOMElement IXMLDOMElement;
#define __IXMLDOMText_FWD_DEFINED__ 
typedef struct IXMLDOMText IXMLDOMText;
#define __IXMLDOMComment_FWD_DEFINED__ 
typedef struct IXMLDOMComment IXMLDOMComment;
#define __IXMLDOMProcessingInstruction_FWD_DEFINED__ 
typedef struct IXMLDOMProcessingInstruction IXMLDOMProcessingInstruction;
#define __IXMLDOMCDATASection_FWD_DEFINED__ 
typedef struct IXMLDOMCDATASection IXMLDOMCDATASection;
#define __IXMLDOMDocumentType_FWD_DEFINED__ 
typedef struct IXMLDOMDocumentType IXMLDOMDocumentType;
#define __IXMLDOMNotation_FWD_DEFINED__ 
typedef struct IXMLDOMNotation IXMLDOMNotation;
#define __IXMLDOMEntity_FWD_DEFINED__ 
typedef struct IXMLDOMEntity IXMLDOMEntity;
#define __IXMLDOMEntityReference_FWD_DEFINED__ 
typedef struct IXMLDOMEntityReference IXMLDOMEntityReference;
#define __IXMLDOMParseError_FWD_DEFINED__ 
typedef struct IXMLDOMParseError IXMLDOMParseError;
#define __IXTLRuntime_FWD_DEFINED__ 
typedef struct IXTLRuntime IXTLRuntime;
#define __XMLDOMDocumentEvents_FWD_DEFINED__ 
typedef struct XMLDOMDocumentEvents XMLDOMDocumentEvents;
#define __DOMDocument_FWD_DEFINED__ 
typedef struct DOMDocument DOMDocument;
#define __DOMFreeThreadedDocument_FWD_DEFINED__ 
typedef struct DOMFreeThreadedDocument DOMFreeThreadedDocument;
#define __IXMLHttpRequest_FWD_DEFINED__ 
typedef struct IXMLHttpRequest IXMLHttpRequest;
#define __XMLHTTPRequest_FWD_DEFINED__ 
typedef struct XMLHTTPRequest XMLHTTPRequest;
#define __IXMLDSOControl_FWD_DEFINED__ 
typedef struct IXMLDSOControl IXMLDSOControl;
#define __XMLDSOControl_FWD_DEFINED__ 
typedef struct XMLDSOControl XMLDSOControl;
#define __IXMLElementCollection_FWD_DEFINED__ 
typedef struct IXMLElementCollection IXMLElementCollection;
#define __IXMLDocument_FWD_DEFINED__ 
typedef struct IXMLDocument IXMLDocument;
#define __IXMLDocument2_FWD_DEFINED__ 
typedef struct IXMLDocument2 IXMLDocument2;
#define __IXMLElement_FWD_DEFINED__ 
typedef struct IXMLElement IXMLElement;
#define __IXMLElement2_FWD_DEFINED__ 
typedef struct IXMLElement2 IXMLElement2;
#define __IXMLAttribute_FWD_DEFINED__ 
typedef struct IXMLAttribute IXMLAttribute;
#define __IXMLError_FWD_DEFINED__ 
typedef struct IXMLError IXMLError;
#define __XMLDocument_FWD_DEFINED__ 
typedef struct XMLDocument XMLDocument;
  typedef struct _xml_error {
    unsigned int _nLine;
    BSTR _pchBuf;
    unsigned int _cchBuf;
    unsigned int _ich;
    BSTR _pszFound;
    BSTR _pszExpected;
    DWORD _reserved1;
    DWORD _reserved2;
  } XML_ERROR;
  extern RPC_IF_HANDLE __MIDL_itf_msxml_0000_v0_0_c_ifspec;
  extern RPC_IF_HANDLE __MIDL_itf_msxml_0000_v0_0_s_ifspec;
#define __MSXML_LIBRARY_DEFINED__ 
  typedef enum tagDOMNodeType {
    NODE_INVALID = 0,NODE_ELEMENT,NODE_ATTRIBUTE,NODE_TEXT,NODE_CDATA_SECTION,
    NODE_ENTITY_REFERENCE,NODE_ENTITY,NODE_PROCESSING_INSTRUCTION,NODE_COMMENT,
    NODE_DOCUMENT,NODE_DOCUMENT_TYPE,NODE_DOCUMENT_FRAGMENT,NODE_NOTATION
  } DOMNodeType;
  typedef enum tagXMLEMEM_TYPE {
    XMLELEMTYPE_ELEMENT = 0,XMLELEMTYPE_TEXT,XMLELEMTYPE_COMMENT,XMLELEMTYPE_DOCUMENT,
    XMLELEMTYPE_DTD,XMLELEMTYPE_PI,XMLELEMTYPE_OTHER
  } XMLELEM_TYPE;
  extern const IID LIBID_MSXML;
#define __IXMLDOMImplementation_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMImplementation;
  typedef struct IXMLDOMImplementationVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMImplementation *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMImplementation *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMImplementation *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMImplementation *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMImplementation *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMImplementation *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMImplementation *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *hasFeature)(IXMLDOMImplementation *This,BSTR feature,BSTR version,VARIANT_BOOL *hasFeature);
   
  } IXMLDOMImplementationVtbl;
  struct IXMLDOMImplementation {
    struct IXMLDOMImplementationVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDOMImplementation_hasFeature_Proxy(IXMLDOMImplementation *This,BSTR feature,BSTR version,VARIANT_BOOL *hasFeature);
  void __attribute__((__stdcall__)) IXMLDOMImplementation_hasFeature_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDOMNode_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMNode;
  typedef struct IXMLDOMNodeVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMNode *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMNode *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMNode *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMNode *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMNode *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMNode *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMNode *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXMLDOMNode *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXMLDOMNode *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXMLDOMNode *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXMLDOMNode *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXMLDOMNode *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXMLDOMNode *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXMLDOMNode *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXMLDOMNode *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXMLDOMNode *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXMLDOMNode *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLDOMNode *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXMLDOMNode *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXMLDOMNode *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLDOMNode *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXMLDOMNode *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXMLDOMNode *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXMLDOMNode *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXMLDOMNode *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXMLDOMNode *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLDOMNode *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLDOMNode *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXMLDOMNode *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXMLDOMNode *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXMLDOMNode *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXMLDOMNode *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXMLDOMNode *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXMLDOMNode *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXMLDOMNode *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXMLDOMNode *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXMLDOMNode *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXMLDOMNode *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXMLDOMNode *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXMLDOMNode *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXMLDOMNode *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXMLDOMNode *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXMLDOMNode *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
   
  } IXMLDOMNodeVtbl;
  struct IXMLDOMNode {
    struct IXMLDOMNodeVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_nodeName_Proxy(IXMLDOMNode *This,BSTR *name);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_nodeName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_nodeValue_Proxy(IXMLDOMNode *This,VARIANT *value);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_nodeValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_put_nodeValue_Proxy(IXMLDOMNode *This,VARIANT value);
  void __attribute__((__stdcall__)) IXMLDOMNode_put_nodeValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_nodeType_Proxy(IXMLDOMNode *This,DOMNodeType *type);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_nodeType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_parentNode_Proxy(IXMLDOMNode *This,IXMLDOMNode **parent);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_parentNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_childNodes_Proxy(IXMLDOMNode *This,IXMLDOMNodeList **childList);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_childNodes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_firstChild_Proxy(IXMLDOMNode *This,IXMLDOMNode **firstChild);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_firstChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_lastChild_Proxy(IXMLDOMNode *This,IXMLDOMNode **lastChild);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_lastChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_previousSibling_Proxy(IXMLDOMNode *This,IXMLDOMNode **previousSibling);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_previousSibling_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_nextSibling_Proxy(IXMLDOMNode *This,IXMLDOMNode **nextSibling);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_nextSibling_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_attributes_Proxy(IXMLDOMNode *This,IXMLDOMNamedNodeMap **attributeMap);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_insertBefore_Proxy(IXMLDOMNode *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
  void __attribute__((__stdcall__)) IXMLDOMNode_insertBefore_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_replaceChild_Proxy(IXMLDOMNode *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
  void __attribute__((__stdcall__)) IXMLDOMNode_replaceChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_removeChild_Proxy(IXMLDOMNode *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
  void __attribute__((__stdcall__)) IXMLDOMNode_removeChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_appendChild_Proxy(IXMLDOMNode *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
  void __attribute__((__stdcall__)) IXMLDOMNode_appendChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_hasChildNodes_Proxy(IXMLDOMNode *This,VARIANT_BOOL *hasChild);
  void __attribute__((__stdcall__)) IXMLDOMNode_hasChildNodes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_ownerDocument_Proxy(IXMLDOMNode *This,IXMLDOMDocument **DOMDocument);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_ownerDocument_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_cloneNode_Proxy(IXMLDOMNode *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
  void __attribute__((__stdcall__)) IXMLDOMNode_cloneNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_nodeTypeString_Proxy(IXMLDOMNode *This,BSTR *nodeType);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_nodeTypeString_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_text_Proxy(IXMLDOMNode *This,BSTR *text);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_put_text_Proxy(IXMLDOMNode *This,BSTR text);
  void __attribute__((__stdcall__)) IXMLDOMNode_put_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_specified_Proxy(IXMLDOMNode *This,VARIANT_BOOL *isSpecified);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_specified_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_definition_Proxy(IXMLDOMNode *This,IXMLDOMNode **definitionNode);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_definition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_nodeTypedValue_Proxy(IXMLDOMNode *This,VARIANT *typedValue);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_nodeTypedValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_put_nodeTypedValue_Proxy(IXMLDOMNode *This,VARIANT typedValue);
  void __attribute__((__stdcall__)) IXMLDOMNode_put_nodeTypedValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_dataType_Proxy(IXMLDOMNode *This,VARIANT *dataTypeName);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_dataType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_put_dataType_Proxy(IXMLDOMNode *This,BSTR dataTypeName);
  void __attribute__((__stdcall__)) IXMLDOMNode_put_dataType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_xml_Proxy(IXMLDOMNode *This,BSTR *xmlString);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_xml_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_transformNode_Proxy(IXMLDOMNode *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
  void __attribute__((__stdcall__)) IXMLDOMNode_transformNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_selectNodes_Proxy(IXMLDOMNode *This,BSTR queryString,IXMLDOMNodeList **resultList);
  void __attribute__((__stdcall__)) IXMLDOMNode_selectNodes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_selectSingleNode_Proxy(IXMLDOMNode *This,BSTR queryString,IXMLDOMNode **resultNode);
  void __attribute__((__stdcall__)) IXMLDOMNode_selectSingleNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_parsed_Proxy(IXMLDOMNode *This,VARIANT_BOOL *isParsed);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_parsed_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_namespaceURI_Proxy(IXMLDOMNode *This,BSTR *namespaceURI);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_namespaceURI_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_prefix_Proxy(IXMLDOMNode *This,BSTR *prefixString);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_prefix_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_get_baseName_Proxy(IXMLDOMNode *This,BSTR *nameString);
  void __attribute__((__stdcall__)) IXMLDOMNode_get_baseName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNode_transformNodeToObject_Proxy(IXMLDOMNode *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
  void __attribute__((__stdcall__)) IXMLDOMNode_transformNodeToObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDOMDocumentFragment_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMDocumentFragment;
  typedef struct IXMLDOMDocumentFragmentVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMDocumentFragment *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMDocumentFragment *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMDocumentFragment *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMDocumentFragment *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMDocumentFragment *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMDocumentFragment *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMDocumentFragment *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXMLDOMDocumentFragment *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXMLDOMDocumentFragment *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXMLDOMDocumentFragment *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXMLDOMDocumentFragment *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXMLDOMDocumentFragment *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXMLDOMDocumentFragment *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXMLDOMDocumentFragment *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXMLDOMDocumentFragment *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLDOMDocumentFragment *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXMLDOMDocumentFragment *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXMLDOMDocumentFragment *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXMLDOMDocumentFragment *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXMLDOMDocumentFragment *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXMLDOMDocumentFragment *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLDOMDocumentFragment *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLDOMDocumentFragment *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXMLDOMDocumentFragment *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXMLDOMDocumentFragment *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXMLDOMDocumentFragment *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXMLDOMDocumentFragment *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXMLDOMDocumentFragment *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXMLDOMDocumentFragment *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXMLDOMDocumentFragment *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXMLDOMDocumentFragment *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXMLDOMDocumentFragment *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXMLDOMDocumentFragment *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXMLDOMDocumentFragment *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXMLDOMDocumentFragment *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXMLDOMDocumentFragment *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXMLDOMDocumentFragment *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXMLDOMDocumentFragment *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
   
  } IXMLDOMDocumentFragmentVtbl;
  struct IXMLDOMDocumentFragment {
    struct IXMLDOMDocumentFragmentVtbl *lpVtbl;
  };
#define __IXMLDOMDocument_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMDocument;
  typedef struct IXMLDOMDocumentVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMDocument *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMDocument *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMDocument *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMDocument *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMDocument *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMDocument *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMDocument *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXMLDOMDocument *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXMLDOMDocument *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXMLDOMDocument *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXMLDOMDocument *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXMLDOMDocument *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXMLDOMDocument *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXMLDOMDocument *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXMLDOMDocument *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXMLDOMDocument *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXMLDOMDocument *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLDOMDocument *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXMLDOMDocument *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXMLDOMDocument *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLDOMDocument *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXMLDOMDocument *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXMLDOMDocument *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXMLDOMDocument *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXMLDOMDocument *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXMLDOMDocument *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLDOMDocument *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLDOMDocument *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXMLDOMDocument *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXMLDOMDocument *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXMLDOMDocument *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXMLDOMDocument *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXMLDOMDocument *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXMLDOMDocument *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXMLDOMDocument *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXMLDOMDocument *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXMLDOMDocument *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXMLDOMDocument *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXMLDOMDocument *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXMLDOMDocument *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXMLDOMDocument *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXMLDOMDocument *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXMLDOMDocument *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
      HRESULT (__attribute__((__stdcall__)) *get_doctype)(IXMLDOMDocument *This,IXMLDOMDocumentType **documentType);
      HRESULT (__attribute__((__stdcall__)) *get_implementation)(IXMLDOMDocument *This,IXMLDOMImplementation **impl);
      HRESULT (__attribute__((__stdcall__)) *get_documentElement)(IXMLDOMDocument *This,IXMLDOMElement **DOMElement);
      HRESULT (__attribute__((__stdcall__)) *putref_documentElement)(IXMLDOMDocument *This,IXMLDOMElement *DOMElement);
      HRESULT (__attribute__((__stdcall__)) *createElement)(IXMLDOMDocument *This,BSTR tagName,IXMLDOMElement **element);
      HRESULT (__attribute__((__stdcall__)) *createDocumentFragment)(IXMLDOMDocument *This,IXMLDOMDocumentFragment **docFrag);
      HRESULT (__attribute__((__stdcall__)) *createTextNode)(IXMLDOMDocument *This,BSTR data,IXMLDOMText **text);
      HRESULT (__attribute__((__stdcall__)) *createComment)(IXMLDOMDocument *This,BSTR data,IXMLDOMComment **comment);
      HRESULT (__attribute__((__stdcall__)) *createCDATASection)(IXMLDOMDocument *This,BSTR data,IXMLDOMCDATASection **cdata);
      HRESULT (__attribute__((__stdcall__)) *createProcessingInstruction)(IXMLDOMDocument *This,BSTR target,BSTR data,IXMLDOMProcessingInstruction **pi);
      HRESULT (__attribute__((__stdcall__)) *createAttribute)(IXMLDOMDocument *This,BSTR name,IXMLDOMAttribute **attribute);
      HRESULT (__attribute__((__stdcall__)) *createEntityReference)(IXMLDOMDocument *This,BSTR name,IXMLDOMEntityReference **entityRef);
      HRESULT (__attribute__((__stdcall__)) *getElementsByTagName)(IXMLDOMDocument *This,BSTR tagName,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *createNode)(IXMLDOMDocument *This,VARIANT Type,BSTR name,BSTR namespaceURI,IXMLDOMNode **node);
      HRESULT (__attribute__((__stdcall__)) *nodeFromID)(IXMLDOMDocument *This,BSTR idString,IXMLDOMNode **node);
      HRESULT (__attribute__((__stdcall__)) *load)(IXMLDOMDocument *This,VARIANT xmlSource,VARIANT_BOOL *isSuccessful);
      HRESULT (__attribute__((__stdcall__)) *get_readyState)(IXMLDOMDocument *This,LONG *value);
      HRESULT (__attribute__((__stdcall__)) *get_parseError)(IXMLDOMDocument *This,IXMLDOMParseError **errorObj);
      HRESULT (__attribute__((__stdcall__)) *get_url)(IXMLDOMDocument *This,BSTR *urlString);
      HRESULT (__attribute__((__stdcall__)) *get_async)(IXMLDOMDocument *This,VARIANT_BOOL *isAsync);
      HRESULT (__attribute__((__stdcall__)) *put_async)(IXMLDOMDocument *This,VARIANT_BOOL isAsync);
      HRESULT (__attribute__((__stdcall__)) *abort)(IXMLDOMDocument *This);
      HRESULT (__attribute__((__stdcall__)) *loadXML)(IXMLDOMDocument *This,BSTR bstrXML,VARIANT_BOOL *isSuccessful);
      HRESULT (__attribute__((__stdcall__)) *save)(IXMLDOMDocument *This,VARIANT destination);
      HRESULT (__attribute__((__stdcall__)) *get_validateOnParse)(IXMLDOMDocument *This,VARIANT_BOOL *isValidating);
      HRESULT (__attribute__((__stdcall__)) *put_validateOnParse)(IXMLDOMDocument *This,VARIANT_BOOL isValidating);
      HRESULT (__attribute__((__stdcall__)) *get_resolveExternals)(IXMLDOMDocument *This,VARIANT_BOOL *isResolving);
      HRESULT (__attribute__((__stdcall__)) *put_resolveExternals)(IXMLDOMDocument *This,VARIANT_BOOL isResolving);
      HRESULT (__attribute__((__stdcall__)) *get_preserveWhiteSpace)(IXMLDOMDocument *This,VARIANT_BOOL *isPreserving);
      HRESULT (__attribute__((__stdcall__)) *put_preserveWhiteSpace)(IXMLDOMDocument *This,VARIANT_BOOL isPreserving);
      HRESULT (__attribute__((__stdcall__)) *put_onreadystatechange)(IXMLDOMDocument *This,VARIANT readystatechangeSink);
      HRESULT (__attribute__((__stdcall__)) *put_ondataavailable)(IXMLDOMDocument *This,VARIANT ondataavailableSink);
      HRESULT (__attribute__((__stdcall__)) *put_ontransformnode)(IXMLDOMDocument *This,VARIANT ontransformnodeSink);
   
  } IXMLDOMDocumentVtbl;
  struct IXMLDOMDocument {
    struct IXMLDOMDocumentVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_get_doctype_Proxy(IXMLDOMDocument *This,IXMLDOMDocumentType **documentType);
  void __attribute__((__stdcall__)) IXMLDOMDocument_get_doctype_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_get_implementation_Proxy(IXMLDOMDocument *This,IXMLDOMImplementation **impl);
  void __attribute__((__stdcall__)) IXMLDOMDocument_get_implementation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_get_documentElement_Proxy(IXMLDOMDocument *This,IXMLDOMElement **DOMElement);
  void __attribute__((__stdcall__)) IXMLDOMDocument_get_documentElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_putref_documentElement_Proxy(IXMLDOMDocument *This,IXMLDOMElement *DOMElement);
  void __attribute__((__stdcall__)) IXMLDOMDocument_putref_documentElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_createElement_Proxy(IXMLDOMDocument *This,BSTR tagName,IXMLDOMElement **element);
  void __attribute__((__stdcall__)) IXMLDOMDocument_createElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_createDocumentFragment_Proxy(IXMLDOMDocument *This,IXMLDOMDocumentFragment **docFrag);
  void __attribute__((__stdcall__)) IXMLDOMDocument_createDocumentFragment_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_createTextNode_Proxy(IXMLDOMDocument *This,BSTR data,IXMLDOMText **text);
  void __attribute__((__stdcall__)) IXMLDOMDocument_createTextNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_createComment_Proxy(IXMLDOMDocument *This,BSTR data,IXMLDOMComment **comment);
  void __attribute__((__stdcall__)) IXMLDOMDocument_createComment_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_createCDATASection_Proxy(IXMLDOMDocument *This,BSTR data,IXMLDOMCDATASection **cdata);
  void __attribute__((__stdcall__)) IXMLDOMDocument_createCDATASection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_createProcessingInstruction_Proxy(IXMLDOMDocument *This,BSTR target,BSTR data,IXMLDOMProcessingInstruction **pi);
  void __attribute__((__stdcall__)) IXMLDOMDocument_createProcessingInstruction_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_createAttribute_Proxy(IXMLDOMDocument *This,BSTR name,IXMLDOMAttribute **attribute);
  void __attribute__((__stdcall__)) IXMLDOMDocument_createAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_createEntityReference_Proxy(IXMLDOMDocument *This,BSTR name,IXMLDOMEntityReference **entityRef);
  void __attribute__((__stdcall__)) IXMLDOMDocument_createEntityReference_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_getElementsByTagName_Proxy(IXMLDOMDocument *This,BSTR tagName,IXMLDOMNodeList **resultList);
  void __attribute__((__stdcall__)) IXMLDOMDocument_getElementsByTagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_createNode_Proxy(IXMLDOMDocument *This,VARIANT Type,BSTR name,BSTR namespaceURI,IXMLDOMNode **node);
  void __attribute__((__stdcall__)) IXMLDOMDocument_createNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_nodeFromID_Proxy(IXMLDOMDocument *This,BSTR idString,IXMLDOMNode **node);
  void __attribute__((__stdcall__)) IXMLDOMDocument_nodeFromID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_load_Proxy(IXMLDOMDocument *This,VARIANT xmlSource,VARIANT_BOOL *isSuccessful);
  void __attribute__((__stdcall__)) IXMLDOMDocument_load_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_get_readyState_Proxy(IXMLDOMDocument *This,LONG *value);
  void __attribute__((__stdcall__)) IXMLDOMDocument_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_get_parseError_Proxy(IXMLDOMDocument *This,IXMLDOMParseError **errorObj);
  void __attribute__((__stdcall__)) IXMLDOMDocument_get_parseError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_get_url_Proxy(IXMLDOMDocument *This,BSTR *urlString);
  void __attribute__((__stdcall__)) IXMLDOMDocument_get_url_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_get_async_Proxy(IXMLDOMDocument *This,VARIANT_BOOL *isAsync);
  void __attribute__((__stdcall__)) IXMLDOMDocument_get_async_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_put_async_Proxy(IXMLDOMDocument *This,VARIANT_BOOL isAsync);
  void __attribute__((__stdcall__)) IXMLDOMDocument_put_async_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_abort_Proxy(IXMLDOMDocument *This);
  void __attribute__((__stdcall__)) IXMLDOMDocument_abort_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_loadXML_Proxy(IXMLDOMDocument *This,BSTR bstrXML,VARIANT_BOOL *isSuccessful);
  void __attribute__((__stdcall__)) IXMLDOMDocument_loadXML_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_save_Proxy(IXMLDOMDocument *This,VARIANT destination);
  void __attribute__((__stdcall__)) IXMLDOMDocument_save_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_get_validateOnParse_Proxy(IXMLDOMDocument *This,VARIANT_BOOL *isValidating);
  void __attribute__((__stdcall__)) IXMLDOMDocument_get_validateOnParse_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_put_validateOnParse_Proxy(IXMLDOMDocument *This,VARIANT_BOOL isValidating);
  void __attribute__((__stdcall__)) IXMLDOMDocument_put_validateOnParse_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_get_resolveExternals_Proxy(IXMLDOMDocument *This,VARIANT_BOOL *isResolving);
  void __attribute__((__stdcall__)) IXMLDOMDocument_get_resolveExternals_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_put_resolveExternals_Proxy(IXMLDOMDocument *This,VARIANT_BOOL isResolving);
  void __attribute__((__stdcall__)) IXMLDOMDocument_put_resolveExternals_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_get_preserveWhiteSpace_Proxy(IXMLDOMDocument *This,VARIANT_BOOL *isPreserving);
  void __attribute__((__stdcall__)) IXMLDOMDocument_get_preserveWhiteSpace_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_put_preserveWhiteSpace_Proxy(IXMLDOMDocument *This,VARIANT_BOOL isPreserving);
  void __attribute__((__stdcall__)) IXMLDOMDocument_put_preserveWhiteSpace_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_put_onreadystatechange_Proxy(IXMLDOMDocument *This,VARIANT readystatechangeSink);
  void __attribute__((__stdcall__)) IXMLDOMDocument_put_onreadystatechange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_put_ondataavailable_Proxy(IXMLDOMDocument *This,VARIANT ondataavailableSink);
  void __attribute__((__stdcall__)) IXMLDOMDocument_put_ondataavailable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocument_put_ontransformnode_Proxy(IXMLDOMDocument *This,VARIANT ontransformnodeSink);
  void __attribute__((__stdcall__)) IXMLDOMDocument_put_ontransformnode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDOMNodeList_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMNodeList;
  typedef struct IXMLDOMNodeListVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMNodeList *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMNodeList *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMNodeList *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMNodeList *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMNodeList *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMNodeList *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMNodeList *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_item)(IXMLDOMNodeList *This,LONG index,IXMLDOMNode **listItem);
      HRESULT (__attribute__((__stdcall__)) *get_length)(IXMLDOMNodeList *This,LONG *listLength);
      HRESULT (__attribute__((__stdcall__)) *nextNode)(IXMLDOMNodeList *This,IXMLDOMNode **nextItem);
      HRESULT (__attribute__((__stdcall__)) *reset)(IXMLDOMNodeList *This);
      HRESULT (__attribute__((__stdcall__)) *get__newEnum)(IXMLDOMNodeList *This,IUnknown **ppUnk);
   
  } IXMLDOMNodeListVtbl;
  struct IXMLDOMNodeList {
    struct IXMLDOMNodeListVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDOMNodeList_get_item_Proxy(IXMLDOMNodeList *This,LONG index,IXMLDOMNode **listItem);
  void __attribute__((__stdcall__)) IXMLDOMNodeList_get_item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNodeList_get_length_Proxy(IXMLDOMNodeList *This,LONG *listLength);
  void __attribute__((__stdcall__)) IXMLDOMNodeList_get_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNodeList_nextNode_Proxy(IXMLDOMNodeList *This,IXMLDOMNode **nextItem);
  void __attribute__((__stdcall__)) IXMLDOMNodeList_nextNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNodeList_reset_Proxy(IXMLDOMNodeList *This);
  void __attribute__((__stdcall__)) IXMLDOMNodeList_reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNodeList_get__newEnum_Proxy(IXMLDOMNodeList *This,IUnknown **ppUnk);
  void __attribute__((__stdcall__)) IXMLDOMNodeList_get__newEnum_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDOMNamedNodeMap_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMNamedNodeMap;
  typedef struct IXMLDOMNamedNodeMapVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMNamedNodeMap *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMNamedNodeMap *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMNamedNodeMap *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMNamedNodeMap *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMNamedNodeMap *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMNamedNodeMap *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMNamedNodeMap *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *getNamedItem)(IXMLDOMNamedNodeMap *This,BSTR name,IXMLDOMNode **namedItem);
      HRESULT (__attribute__((__stdcall__)) *setNamedItem)(IXMLDOMNamedNodeMap *This,IXMLDOMNode *newItem,IXMLDOMNode **nameItem);
      HRESULT (__attribute__((__stdcall__)) *removeNamedItem)(IXMLDOMNamedNodeMap *This,BSTR name,IXMLDOMNode **namedItem);
      HRESULT (__attribute__((__stdcall__)) *get_item)(IXMLDOMNamedNodeMap *This,LONG index,IXMLDOMNode **listItem);
      HRESULT (__attribute__((__stdcall__)) *get_length)(IXMLDOMNamedNodeMap *This,LONG *listLength);
      HRESULT (__attribute__((__stdcall__)) *getQualifiedItem)(IXMLDOMNamedNodeMap *This,BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem);
      HRESULT (__attribute__((__stdcall__)) *removeQualifiedItem)(IXMLDOMNamedNodeMap *This,BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem);
      HRESULT (__attribute__((__stdcall__)) *nextNode)(IXMLDOMNamedNodeMap *This,IXMLDOMNode **nextItem);
      HRESULT (__attribute__((__stdcall__)) *reset)(IXMLDOMNamedNodeMap *This);
      HRESULT (__attribute__((__stdcall__)) *get__newEnum)(IXMLDOMNamedNodeMap *This,IUnknown **ppUnk);
   
  } IXMLDOMNamedNodeMapVtbl;
  struct IXMLDOMNamedNodeMap {
    struct IXMLDOMNamedNodeMapVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_getNamedItem_Proxy(IXMLDOMNamedNodeMap *This,BSTR name,IXMLDOMNode **namedItem);
  void __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_getNamedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_setNamedItem_Proxy(IXMLDOMNamedNodeMap *This,IXMLDOMNode *newItem,IXMLDOMNode **nameItem);
  void __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_setNamedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_removeNamedItem_Proxy(IXMLDOMNamedNodeMap *This,BSTR name,IXMLDOMNode **namedItem);
  void __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_removeNamedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_get_item_Proxy(IXMLDOMNamedNodeMap *This,LONG index,IXMLDOMNode **listItem);
  void __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_get_item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_get_length_Proxy(IXMLDOMNamedNodeMap *This,LONG *listLength);
  void __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_get_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_getQualifiedItem_Proxy(IXMLDOMNamedNodeMap *This,BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem);
  void __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_getQualifiedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_removeQualifiedItem_Proxy(IXMLDOMNamedNodeMap *This,BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem);
  void __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_removeQualifiedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_nextNode_Proxy(IXMLDOMNamedNodeMap *This,IXMLDOMNode **nextItem);
  void __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_nextNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_reset_Proxy(IXMLDOMNamedNodeMap *This);
  void __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_get__newEnum_Proxy(IXMLDOMNamedNodeMap *This,IUnknown **ppUnk);
  void __attribute__((__stdcall__)) IXMLDOMNamedNodeMap_get__newEnum_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDOMCharacterData_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMCharacterData;
  typedef struct IXMLDOMCharacterDataVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMCharacterData *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMCharacterData *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMCharacterData *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMCharacterData *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMCharacterData *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMCharacterData *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMCharacterData *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXMLDOMCharacterData *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXMLDOMCharacterData *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXMLDOMCharacterData *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXMLDOMCharacterData *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXMLDOMCharacterData *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXMLDOMCharacterData *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXMLDOMCharacterData *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXMLDOMCharacterData *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXMLDOMCharacterData *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXMLDOMCharacterData *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLDOMCharacterData *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXMLDOMCharacterData *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXMLDOMCharacterData *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLDOMCharacterData *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXMLDOMCharacterData *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXMLDOMCharacterData *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXMLDOMCharacterData *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXMLDOMCharacterData *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXMLDOMCharacterData *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLDOMCharacterData *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLDOMCharacterData *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXMLDOMCharacterData *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXMLDOMCharacterData *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXMLDOMCharacterData *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXMLDOMCharacterData *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXMLDOMCharacterData *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXMLDOMCharacterData *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXMLDOMCharacterData *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXMLDOMCharacterData *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXMLDOMCharacterData *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXMLDOMCharacterData *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXMLDOMCharacterData *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXMLDOMCharacterData *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXMLDOMCharacterData *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXMLDOMCharacterData *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXMLDOMCharacterData *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
      HRESULT (__attribute__((__stdcall__)) *get_data)(IXMLDOMCharacterData *This,BSTR *data);
      HRESULT (__attribute__((__stdcall__)) *put_data)(IXMLDOMCharacterData *This,BSTR data);
      HRESULT (__attribute__((__stdcall__)) *get_length)(IXMLDOMCharacterData *This,LONG *dataLength);
      HRESULT (__attribute__((__stdcall__)) *substringData)(IXMLDOMCharacterData *This,LONG offset,LONG count,BSTR *data);
      HRESULT (__attribute__((__stdcall__)) *appendData)(IXMLDOMCharacterData *This,BSTR data);
      HRESULT (__attribute__((__stdcall__)) *insertData)(IXMLDOMCharacterData *This,LONG offset,BSTR data);
      HRESULT (__attribute__((__stdcall__)) *deleteData)(IXMLDOMCharacterData *This,LONG offset,LONG count);
      HRESULT (__attribute__((__stdcall__)) *replaceData)(IXMLDOMCharacterData *This,LONG offset,LONG count,BSTR data);
   
  } IXMLDOMCharacterDataVtbl;
  struct IXMLDOMCharacterData {
    struct IXMLDOMCharacterDataVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDOMCharacterData_get_data_Proxy(IXMLDOMCharacterData *This,BSTR *data);
  void __attribute__((__stdcall__)) IXMLDOMCharacterData_get_data_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMCharacterData_put_data_Proxy(IXMLDOMCharacterData *This,BSTR data);
  void __attribute__((__stdcall__)) IXMLDOMCharacterData_put_data_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMCharacterData_get_length_Proxy(IXMLDOMCharacterData *This,LONG *dataLength);
  void __attribute__((__stdcall__)) IXMLDOMCharacterData_get_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMCharacterData_substringData_Proxy(IXMLDOMCharacterData *This,LONG offset,LONG count,BSTR *data);
  void __attribute__((__stdcall__)) IXMLDOMCharacterData_substringData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMCharacterData_appendData_Proxy(IXMLDOMCharacterData *This,BSTR data);
  void __attribute__((__stdcall__)) IXMLDOMCharacterData_appendData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMCharacterData_insertData_Proxy(IXMLDOMCharacterData *This,LONG offset,BSTR data);
  void __attribute__((__stdcall__)) IXMLDOMCharacterData_insertData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMCharacterData_deleteData_Proxy(IXMLDOMCharacterData *This,LONG offset,LONG count);
  void __attribute__((__stdcall__)) IXMLDOMCharacterData_deleteData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMCharacterData_replaceData_Proxy(IXMLDOMCharacterData *This,LONG offset,LONG count,BSTR data);
  void __attribute__((__stdcall__)) IXMLDOMCharacterData_replaceData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDOMAttribute_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMAttribute;
  typedef struct IXMLDOMAttributeVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMAttribute *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMAttribute *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMAttribute *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMAttribute *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMAttribute *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMAttribute *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMAttribute *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXMLDOMAttribute *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXMLDOMAttribute *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXMLDOMAttribute *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXMLDOMAttribute *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXMLDOMAttribute *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXMLDOMAttribute *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXMLDOMAttribute *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXMLDOMAttribute *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXMLDOMAttribute *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXMLDOMAttribute *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLDOMAttribute *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXMLDOMAttribute *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXMLDOMAttribute *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLDOMAttribute *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXMLDOMAttribute *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXMLDOMAttribute *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXMLDOMAttribute *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXMLDOMAttribute *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXMLDOMAttribute *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLDOMAttribute *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLDOMAttribute *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXMLDOMAttribute *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXMLDOMAttribute *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXMLDOMAttribute *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXMLDOMAttribute *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXMLDOMAttribute *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXMLDOMAttribute *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXMLDOMAttribute *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXMLDOMAttribute *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXMLDOMAttribute *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXMLDOMAttribute *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXMLDOMAttribute *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXMLDOMAttribute *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXMLDOMAttribute *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXMLDOMAttribute *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXMLDOMAttribute *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
      HRESULT (__attribute__((__stdcall__)) *get_name)(IXMLDOMAttribute *This,BSTR *attributeName);
      HRESULT (__attribute__((__stdcall__)) *get_value)(IXMLDOMAttribute *This,VARIANT *attributeValue);
      HRESULT (__attribute__((__stdcall__)) *put_value)(IXMLDOMAttribute *This,VARIANT attributeValue);
   
  } IXMLDOMAttributeVtbl;
  struct IXMLDOMAttribute {
    struct IXMLDOMAttributeVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDOMAttribute_get_name_Proxy(IXMLDOMAttribute *This,BSTR *attributeName);
  void __attribute__((__stdcall__)) IXMLDOMAttribute_get_name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMAttribute_get_value_Proxy(IXMLDOMAttribute *This,VARIANT *attributeValue);
  void __attribute__((__stdcall__)) IXMLDOMAttribute_get_value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMAttribute_put_value_Proxy(IXMLDOMAttribute *This,VARIANT attributeValue);
  void __attribute__((__stdcall__)) IXMLDOMAttribute_put_value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDOMElement_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMElement;
  typedef struct IXMLDOMElementVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMElement *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMElement *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMElement *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMElement *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMElement *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMElement *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMElement *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXMLDOMElement *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXMLDOMElement *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXMLDOMElement *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXMLDOMElement *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXMLDOMElement *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXMLDOMElement *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXMLDOMElement *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXMLDOMElement *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXMLDOMElement *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXMLDOMElement *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLDOMElement *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXMLDOMElement *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXMLDOMElement *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLDOMElement *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXMLDOMElement *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXMLDOMElement *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXMLDOMElement *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXMLDOMElement *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXMLDOMElement *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLDOMElement *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLDOMElement *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXMLDOMElement *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXMLDOMElement *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXMLDOMElement *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXMLDOMElement *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXMLDOMElement *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXMLDOMElement *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXMLDOMElement *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXMLDOMElement *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXMLDOMElement *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXMLDOMElement *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXMLDOMElement *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXMLDOMElement *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXMLDOMElement *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXMLDOMElement *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXMLDOMElement *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
      HRESULT (__attribute__((__stdcall__)) *get_tagName)(IXMLDOMElement *This,BSTR *tagName);
      HRESULT (__attribute__((__stdcall__)) *getAttribute)(IXMLDOMElement *This,BSTR name,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *setAttribute)(IXMLDOMElement *This,BSTR name,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *removeAttribute)(IXMLDOMElement *This,BSTR name);
      HRESULT (__attribute__((__stdcall__)) *getAttributeNode)(IXMLDOMElement *This,BSTR name,IXMLDOMAttribute **attributeNode);
      HRESULT (__attribute__((__stdcall__)) *setAttributeNode)(IXMLDOMElement *This,IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode);
      HRESULT (__attribute__((__stdcall__)) *removeAttributeNode)(IXMLDOMElement *This,IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode);
      HRESULT (__attribute__((__stdcall__)) *getElementsByTagName)(IXMLDOMElement *This,BSTR tagName,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *normalize)(IXMLDOMElement *This);
   
  } IXMLDOMElementVtbl;
  struct IXMLDOMElement {
    struct IXMLDOMElementVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDOMElement_get_tagName_Proxy(IXMLDOMElement *This,BSTR *tagName);
  void __attribute__((__stdcall__)) IXMLDOMElement_get_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMElement_getAttribute_Proxy(IXMLDOMElement *This,BSTR name,VARIANT *value);
  void __attribute__((__stdcall__)) IXMLDOMElement_getAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMElement_setAttribute_Proxy(IXMLDOMElement *This,BSTR name,VARIANT value);
  void __attribute__((__stdcall__)) IXMLDOMElement_setAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMElement_removeAttribute_Proxy(IXMLDOMElement *This,BSTR name);
  void __attribute__((__stdcall__)) IXMLDOMElement_removeAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMElement_getAttributeNode_Proxy(IXMLDOMElement *This,BSTR name,IXMLDOMAttribute **attributeNode);
  void __attribute__((__stdcall__)) IXMLDOMElement_getAttributeNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMElement_setAttributeNode_Proxy(IXMLDOMElement *This,IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode);
  void __attribute__((__stdcall__)) IXMLDOMElement_setAttributeNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMElement_removeAttributeNode_Proxy(IXMLDOMElement *This,IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode);
  void __attribute__((__stdcall__)) IXMLDOMElement_removeAttributeNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMElement_getElementsByTagName_Proxy(IXMLDOMElement *This,BSTR tagName,IXMLDOMNodeList **resultList);
  void __attribute__((__stdcall__)) IXMLDOMElement_getElementsByTagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMElement_normalize_Proxy(IXMLDOMElement *This);
  void __attribute__((__stdcall__)) IXMLDOMElement_normalize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDOMText_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMText;
  typedef struct IXMLDOMTextVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMText *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMText *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMText *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMText *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMText *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMText *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMText *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXMLDOMText *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXMLDOMText *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXMLDOMText *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXMLDOMText *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXMLDOMText *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXMLDOMText *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXMLDOMText *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXMLDOMText *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXMLDOMText *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXMLDOMText *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLDOMText *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXMLDOMText *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXMLDOMText *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLDOMText *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXMLDOMText *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXMLDOMText *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXMLDOMText *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXMLDOMText *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXMLDOMText *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLDOMText *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLDOMText *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXMLDOMText *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXMLDOMText *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXMLDOMText *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXMLDOMText *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXMLDOMText *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXMLDOMText *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXMLDOMText *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXMLDOMText *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXMLDOMText *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXMLDOMText *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXMLDOMText *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXMLDOMText *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXMLDOMText *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXMLDOMText *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXMLDOMText *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
      HRESULT (__attribute__((__stdcall__)) *get_data)(IXMLDOMText *This,BSTR *data);
      HRESULT (__attribute__((__stdcall__)) *put_data)(IXMLDOMText *This,BSTR data);
      HRESULT (__attribute__((__stdcall__)) *get_length)(IXMLDOMText *This,LONG *dataLength);
      HRESULT (__attribute__((__stdcall__)) *substringData)(IXMLDOMText *This,LONG offset,LONG count,BSTR *data);
      HRESULT (__attribute__((__stdcall__)) *appendData)(IXMLDOMText *This,BSTR data);
      HRESULT (__attribute__((__stdcall__)) *insertData)(IXMLDOMText *This,LONG offset,BSTR data);
      HRESULT (__attribute__((__stdcall__)) *deleteData)(IXMLDOMText *This,LONG offset,LONG count);
      HRESULT (__attribute__((__stdcall__)) *replaceData)(IXMLDOMText *This,LONG offset,LONG count,BSTR data);
      HRESULT (__attribute__((__stdcall__)) *splitText)(IXMLDOMText *This,LONG offset,IXMLDOMText **rightHandTextNode);
   
  } IXMLDOMTextVtbl;
  struct IXMLDOMText {
    struct IXMLDOMTextVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDOMText_splitText_Proxy(IXMLDOMText *This,LONG offset,IXMLDOMText **rightHandTextNode);
  void __attribute__((__stdcall__)) IXMLDOMText_splitText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDOMComment_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMComment;
  typedef struct IXMLDOMCommentVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMComment *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMComment *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMComment *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMComment *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMComment *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMComment *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMComment *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXMLDOMComment *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXMLDOMComment *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXMLDOMComment *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXMLDOMComment *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXMLDOMComment *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXMLDOMComment *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXMLDOMComment *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXMLDOMComment *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXMLDOMComment *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXMLDOMComment *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLDOMComment *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXMLDOMComment *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXMLDOMComment *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLDOMComment *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXMLDOMComment *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXMLDOMComment *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXMLDOMComment *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXMLDOMComment *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXMLDOMComment *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLDOMComment *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLDOMComment *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXMLDOMComment *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXMLDOMComment *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXMLDOMComment *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXMLDOMComment *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXMLDOMComment *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXMLDOMComment *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXMLDOMComment *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXMLDOMComment *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXMLDOMComment *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXMLDOMComment *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXMLDOMComment *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXMLDOMComment *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXMLDOMComment *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXMLDOMComment *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXMLDOMComment *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
      HRESULT (__attribute__((__stdcall__)) *get_data)(IXMLDOMComment *This,BSTR *data);
      HRESULT (__attribute__((__stdcall__)) *put_data)(IXMLDOMComment *This,BSTR data);
      HRESULT (__attribute__((__stdcall__)) *get_length)(IXMLDOMComment *This,LONG *dataLength);
      HRESULT (__attribute__((__stdcall__)) *substringData)(IXMLDOMComment *This,LONG offset,LONG count,BSTR *data);
      HRESULT (__attribute__((__stdcall__)) *appendData)(IXMLDOMComment *This,BSTR data);
      HRESULT (__attribute__((__stdcall__)) *insertData)(IXMLDOMComment *This,LONG offset,BSTR data);
      HRESULT (__attribute__((__stdcall__)) *deleteData)(IXMLDOMComment *This,LONG offset,LONG count);
      HRESULT (__attribute__((__stdcall__)) *replaceData)(IXMLDOMComment *This,LONG offset,LONG count,BSTR data);
   
  } IXMLDOMCommentVtbl;
  struct IXMLDOMComment {
    struct IXMLDOMCommentVtbl *lpVtbl;
  };
#define __IXMLDOMProcessingInstruction_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMProcessingInstruction;
  typedef struct IXMLDOMProcessingInstructionVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMProcessingInstruction *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMProcessingInstruction *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMProcessingInstruction *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMProcessingInstruction *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMProcessingInstruction *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMProcessingInstruction *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMProcessingInstruction *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXMLDOMProcessingInstruction *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXMLDOMProcessingInstruction *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXMLDOMProcessingInstruction *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXMLDOMProcessingInstruction *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXMLDOMProcessingInstruction *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLDOMProcessingInstruction *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXMLDOMProcessingInstruction *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXMLDOMProcessingInstruction *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXMLDOMProcessingInstruction *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXMLDOMProcessingInstruction *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLDOMProcessingInstruction *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLDOMProcessingInstruction *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXMLDOMProcessingInstruction *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXMLDOMProcessingInstruction *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXMLDOMProcessingInstruction *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXMLDOMProcessingInstruction *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXMLDOMProcessingInstruction *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXMLDOMProcessingInstruction *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXMLDOMProcessingInstruction *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXMLDOMProcessingInstruction *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXMLDOMProcessingInstruction *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXMLDOMProcessingInstruction *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXMLDOMProcessingInstruction *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXMLDOMProcessingInstruction *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
      HRESULT (__attribute__((__stdcall__)) *get_target)(IXMLDOMProcessingInstruction *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_data)(IXMLDOMProcessingInstruction *This,BSTR *value);
      HRESULT (__attribute__((__stdcall__)) *put_data)(IXMLDOMProcessingInstruction *This,BSTR value);
   
  } IXMLDOMProcessingInstructionVtbl;
  struct IXMLDOMProcessingInstruction {
    struct IXMLDOMProcessingInstructionVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDOMProcessingInstruction_get_target_Proxy(IXMLDOMProcessingInstruction *This,BSTR *name);
  void __attribute__((__stdcall__)) IXMLDOMProcessingInstruction_get_target_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMProcessingInstruction_get_data_Proxy(IXMLDOMProcessingInstruction *This,BSTR *value);
  void __attribute__((__stdcall__)) IXMLDOMProcessingInstruction_get_data_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMProcessingInstruction_put_data_Proxy(IXMLDOMProcessingInstruction *This,BSTR value);
  void __attribute__((__stdcall__)) IXMLDOMProcessingInstruction_put_data_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDOMCDATASection_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMCDATASection;
  typedef struct IXMLDOMCDATASectionVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMCDATASection *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMCDATASection *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMCDATASection *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMCDATASection *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMCDATASection *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMCDATASection *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMCDATASection *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXMLDOMCDATASection *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXMLDOMCDATASection *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXMLDOMCDATASection *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXMLDOMCDATASection *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXMLDOMCDATASection *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXMLDOMCDATASection *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXMLDOMCDATASection *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXMLDOMCDATASection *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXMLDOMCDATASection *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXMLDOMCDATASection *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLDOMCDATASection *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXMLDOMCDATASection *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXMLDOMCDATASection *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLDOMCDATASection *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXMLDOMCDATASection *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXMLDOMCDATASection *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXMLDOMCDATASection *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXMLDOMCDATASection *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXMLDOMCDATASection *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLDOMCDATASection *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLDOMCDATASection *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXMLDOMCDATASection *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXMLDOMCDATASection *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXMLDOMCDATASection *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXMLDOMCDATASection *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXMLDOMCDATASection *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXMLDOMCDATASection *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXMLDOMCDATASection *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXMLDOMCDATASection *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXMLDOMCDATASection *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXMLDOMCDATASection *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXMLDOMCDATASection *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXMLDOMCDATASection *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXMLDOMCDATASection *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXMLDOMCDATASection *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXMLDOMCDATASection *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
      HRESULT (__attribute__((__stdcall__)) *get_data)(IXMLDOMCDATASection *This,BSTR *data);
      HRESULT (__attribute__((__stdcall__)) *put_data)(IXMLDOMCDATASection *This,BSTR data);
      HRESULT (__attribute__((__stdcall__)) *get_length)(IXMLDOMCDATASection *This,LONG *dataLength);
      HRESULT (__attribute__((__stdcall__)) *substringData)(IXMLDOMCDATASection *This,LONG offset,LONG count,BSTR *data);
      HRESULT (__attribute__((__stdcall__)) *appendData)(IXMLDOMCDATASection *This,BSTR data);
      HRESULT (__attribute__((__stdcall__)) *insertData)(IXMLDOMCDATASection *This,LONG offset,BSTR data);
      HRESULT (__attribute__((__stdcall__)) *deleteData)(IXMLDOMCDATASection *This,LONG offset,LONG count);
      HRESULT (__attribute__((__stdcall__)) *replaceData)(IXMLDOMCDATASection *This,LONG offset,LONG count,BSTR data);
      HRESULT (__attribute__((__stdcall__)) *splitText)(IXMLDOMCDATASection *This,LONG offset,IXMLDOMText **rightHandTextNode);
   
  } IXMLDOMCDATASectionVtbl;
  struct IXMLDOMCDATASection {
    struct IXMLDOMCDATASectionVtbl *lpVtbl;
  };
#define __IXMLDOMDocumentType_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMDocumentType;
  typedef struct IXMLDOMDocumentTypeVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMDocumentType *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMDocumentType *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMDocumentType *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMDocumentType *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMDocumentType *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMDocumentType *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMDocumentType *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXMLDOMDocumentType *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXMLDOMDocumentType *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXMLDOMDocumentType *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXMLDOMDocumentType *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXMLDOMDocumentType *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXMLDOMDocumentType *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXMLDOMDocumentType *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXMLDOMDocumentType *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXMLDOMDocumentType *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXMLDOMDocumentType *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXMLDOMDocumentType *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXMLDOMDocumentType *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLDOMDocumentType *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXMLDOMDocumentType *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXMLDOMDocumentType *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXMLDOMDocumentType *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXMLDOMDocumentType *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXMLDOMDocumentType *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLDOMDocumentType *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLDOMDocumentType *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXMLDOMDocumentType *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXMLDOMDocumentType *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXMLDOMDocumentType *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXMLDOMDocumentType *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXMLDOMDocumentType *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXMLDOMDocumentType *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXMLDOMDocumentType *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXMLDOMDocumentType *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXMLDOMDocumentType *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXMLDOMDocumentType *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXMLDOMDocumentType *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXMLDOMDocumentType *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXMLDOMDocumentType *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXMLDOMDocumentType *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXMLDOMDocumentType *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
      HRESULT (__attribute__((__stdcall__)) *get_name)(IXMLDOMDocumentType *This,BSTR *rootName);
      HRESULT (__attribute__((__stdcall__)) *get_entities)(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **entityMap);
      HRESULT (__attribute__((__stdcall__)) *get_notations)(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **notationMap);
   
  } IXMLDOMDocumentTypeVtbl;
  struct IXMLDOMDocumentType {
    struct IXMLDOMDocumentTypeVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocumentType_get_name_Proxy(IXMLDOMDocumentType *This,BSTR *rootName);
  void __attribute__((__stdcall__)) IXMLDOMDocumentType_get_name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocumentType_get_entities_Proxy(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **entityMap);
  void __attribute__((__stdcall__)) IXMLDOMDocumentType_get_entities_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMDocumentType_get_notations_Proxy(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **notationMap);
  void __attribute__((__stdcall__)) IXMLDOMDocumentType_get_notations_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDOMNotation_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMNotation;
  typedef struct IXMLDOMNotationVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMNotation *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMNotation *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMNotation *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMNotation *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMNotation *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMNotation *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMNotation *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXMLDOMNotation *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXMLDOMNotation *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXMLDOMNotation *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXMLDOMNotation *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXMLDOMNotation *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXMLDOMNotation *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXMLDOMNotation *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXMLDOMNotation *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXMLDOMNotation *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXMLDOMNotation *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLDOMNotation *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXMLDOMNotation *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXMLDOMNotation *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLDOMNotation *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXMLDOMNotation *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXMLDOMNotation *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXMLDOMNotation *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXMLDOMNotation *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXMLDOMNotation *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLDOMNotation *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLDOMNotation *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXMLDOMNotation *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXMLDOMNotation *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXMLDOMNotation *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXMLDOMNotation *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXMLDOMNotation *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXMLDOMNotation *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXMLDOMNotation *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXMLDOMNotation *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXMLDOMNotation *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXMLDOMNotation *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXMLDOMNotation *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXMLDOMNotation *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXMLDOMNotation *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXMLDOMNotation *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXMLDOMNotation *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
      HRESULT (__attribute__((__stdcall__)) *get_publicId)(IXMLDOMNotation *This,VARIANT *publicID);
      HRESULT (__attribute__((__stdcall__)) *get_systemId)(IXMLDOMNotation *This,VARIANT *systemID);
   
  } IXMLDOMNotationVtbl;
  struct IXMLDOMNotation {
    struct IXMLDOMNotationVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDOMNotation_get_publicId_Proxy(IXMLDOMNotation *This,VARIANT *publicID);
  void __attribute__((__stdcall__)) IXMLDOMNotation_get_publicId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMNotation_get_systemId_Proxy(IXMLDOMNotation *This,VARIANT *systemID);
  void __attribute__((__stdcall__)) IXMLDOMNotation_get_systemId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDOMEntity_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMEntity;
  typedef struct IXMLDOMEntityVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMEntity *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMEntity *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMEntity *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMEntity *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMEntity *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMEntity *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMEntity *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXMLDOMEntity *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXMLDOMEntity *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXMLDOMEntity *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXMLDOMEntity *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXMLDOMEntity *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXMLDOMEntity *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXMLDOMEntity *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXMLDOMEntity *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXMLDOMEntity *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXMLDOMEntity *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLDOMEntity *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXMLDOMEntity *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXMLDOMEntity *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLDOMEntity *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXMLDOMEntity *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXMLDOMEntity *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXMLDOMEntity *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXMLDOMEntity *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXMLDOMEntity *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLDOMEntity *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLDOMEntity *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXMLDOMEntity *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXMLDOMEntity *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXMLDOMEntity *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXMLDOMEntity *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXMLDOMEntity *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXMLDOMEntity *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXMLDOMEntity *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXMLDOMEntity *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXMLDOMEntity *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXMLDOMEntity *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXMLDOMEntity *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXMLDOMEntity *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXMLDOMEntity *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXMLDOMEntity *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXMLDOMEntity *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
      HRESULT (__attribute__((__stdcall__)) *get_publicId)(IXMLDOMEntity *This,VARIANT *publicID);
      HRESULT (__attribute__((__stdcall__)) *get_systemId)(IXMLDOMEntity *This,VARIANT *systemID);
      HRESULT (__attribute__((__stdcall__)) *get_notationName)(IXMLDOMEntity *This,BSTR *name);
   
  } IXMLDOMEntityVtbl;
  struct IXMLDOMEntity {
    struct IXMLDOMEntityVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDOMEntity_get_publicId_Proxy(IXMLDOMEntity *This,VARIANT *publicID);
  void __attribute__((__stdcall__)) IXMLDOMEntity_get_publicId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMEntity_get_systemId_Proxy(IXMLDOMEntity *This,VARIANT *systemID);
  void __attribute__((__stdcall__)) IXMLDOMEntity_get_systemId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMEntity_get_notationName_Proxy(IXMLDOMEntity *This,BSTR *name);
  void __attribute__((__stdcall__)) IXMLDOMEntity_get_notationName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDOMEntityReference_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMEntityReference;
  typedef struct IXMLDOMEntityReferenceVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMEntityReference *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMEntityReference *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMEntityReference *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMEntityReference *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMEntityReference *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMEntityReference *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMEntityReference *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXMLDOMEntityReference *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXMLDOMEntityReference *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXMLDOMEntityReference *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXMLDOMEntityReference *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXMLDOMEntityReference *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXMLDOMEntityReference *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXMLDOMEntityReference *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXMLDOMEntityReference *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXMLDOMEntityReference *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXMLDOMEntityReference *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLDOMEntityReference *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXMLDOMEntityReference *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXMLDOMEntityReference *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLDOMEntityReference *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXMLDOMEntityReference *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXMLDOMEntityReference *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXMLDOMEntityReference *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXMLDOMEntityReference *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXMLDOMEntityReference *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLDOMEntityReference *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLDOMEntityReference *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXMLDOMEntityReference *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXMLDOMEntityReference *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXMLDOMEntityReference *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXMLDOMEntityReference *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXMLDOMEntityReference *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXMLDOMEntityReference *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXMLDOMEntityReference *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXMLDOMEntityReference *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXMLDOMEntityReference *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXMLDOMEntityReference *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXMLDOMEntityReference *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXMLDOMEntityReference *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXMLDOMEntityReference *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXMLDOMEntityReference *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXMLDOMEntityReference *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
   
  } IXMLDOMEntityReferenceVtbl;
  struct IXMLDOMEntityReference {
    struct IXMLDOMEntityReferenceVtbl *lpVtbl;
  };
#define __IXMLDOMParseError_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDOMParseError;
  typedef struct IXMLDOMParseErrorVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDOMParseError *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDOMParseError *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDOMParseError *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDOMParseError *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDOMParseError *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDOMParseError *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDOMParseError *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_errorCode)(IXMLDOMParseError *This,LONG *errorCode);
      HRESULT (__attribute__((__stdcall__)) *get_url)(IXMLDOMParseError *This,BSTR *urlString);
      HRESULT (__attribute__((__stdcall__)) *get_reason)(IXMLDOMParseError *This,BSTR *reasonString);
      HRESULT (__attribute__((__stdcall__)) *get_srcText)(IXMLDOMParseError *This,BSTR *sourceString);
      HRESULT (__attribute__((__stdcall__)) *get_line)(IXMLDOMParseError *This,LONG *lineNumber);
      HRESULT (__attribute__((__stdcall__)) *get_linepos)(IXMLDOMParseError *This,LONG *linePosition);
      HRESULT (__attribute__((__stdcall__)) *get_filepos)(IXMLDOMParseError *This,LONG *filePosition);
   
  } IXMLDOMParseErrorVtbl;
  struct IXMLDOMParseError {
    struct IXMLDOMParseErrorVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDOMParseError_get_errorCode_Proxy(IXMLDOMParseError *This,LONG *errorCode);
  void __attribute__((__stdcall__)) IXMLDOMParseError_get_errorCode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMParseError_get_url_Proxy(IXMLDOMParseError *This,BSTR *urlString);
  void __attribute__((__stdcall__)) IXMLDOMParseError_get_url_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMParseError_get_reason_Proxy(IXMLDOMParseError *This,BSTR *reasonString);
  void __attribute__((__stdcall__)) IXMLDOMParseError_get_reason_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMParseError_get_srcText_Proxy(IXMLDOMParseError *This,BSTR *sourceString);
  void __attribute__((__stdcall__)) IXMLDOMParseError_get_srcText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMParseError_get_line_Proxy(IXMLDOMParseError *This,LONG *lineNumber);
  void __attribute__((__stdcall__)) IXMLDOMParseError_get_line_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMParseError_get_linepos_Proxy(IXMLDOMParseError *This,LONG *linePosition);
  void __attribute__((__stdcall__)) IXMLDOMParseError_get_linepos_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDOMParseError_get_filepos_Proxy(IXMLDOMParseError *This,LONG *filePosition);
  void __attribute__((__stdcall__)) IXMLDOMParseError_get_filepos_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXTLRuntime_INTERFACE_DEFINED__ 
  extern const IID IID_IXTLRuntime;
  typedef struct IXTLRuntimeVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXTLRuntime *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXTLRuntime *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXTLRuntime *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXTLRuntime *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXTLRuntime *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXTLRuntime *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXTLRuntime *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_nodeName)(IXTLRuntime *This,BSTR *name);
      HRESULT (__attribute__((__stdcall__)) *get_nodeValue)(IXTLRuntime *This,VARIANT *value);
      HRESULT (__attribute__((__stdcall__)) *put_nodeValue)(IXTLRuntime *This,VARIANT value);
      HRESULT (__attribute__((__stdcall__)) *get_nodeType)(IXTLRuntime *This,DOMNodeType *type);
      HRESULT (__attribute__((__stdcall__)) *get_parentNode)(IXTLRuntime *This,IXMLDOMNode **parent);
      HRESULT (__attribute__((__stdcall__)) *get_childNodes)(IXTLRuntime *This,IXMLDOMNodeList **childList);
      HRESULT (__attribute__((__stdcall__)) *get_firstChild)(IXTLRuntime *This,IXMLDOMNode **firstChild);
      HRESULT (__attribute__((__stdcall__)) *get_lastChild)(IXTLRuntime *This,IXMLDOMNode **lastChild);
      HRESULT (__attribute__((__stdcall__)) *get_previousSibling)(IXTLRuntime *This,IXMLDOMNode **previousSibling);
      HRESULT (__attribute__((__stdcall__)) *get_nextSibling)(IXTLRuntime *This,IXMLDOMNode **nextSibling);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXTLRuntime *This,IXMLDOMNamedNodeMap **attributeMap);
      HRESULT (__attribute__((__stdcall__)) *insertBefore)(IXTLRuntime *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *replaceChild)(IXTLRuntime *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXTLRuntime *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);
      HRESULT (__attribute__((__stdcall__)) *appendChild)(IXTLRuntime *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);
      HRESULT (__attribute__((__stdcall__)) *hasChildNodes)(IXTLRuntime *This,VARIANT_BOOL *hasChild);
      HRESULT (__attribute__((__stdcall__)) *get_ownerDocument)(IXTLRuntime *This,IXMLDOMDocument **DOMDocument);
      HRESULT (__attribute__((__stdcall__)) *cloneNode)(IXTLRuntime *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypeString)(IXTLRuntime *This,BSTR *nodeType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXTLRuntime *This,BSTR *text);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXTLRuntime *This,BSTR text);
      HRESULT (__attribute__((__stdcall__)) *get_specified)(IXTLRuntime *This,VARIANT_BOOL *isSpecified);
      HRESULT (__attribute__((__stdcall__)) *get_definition)(IXTLRuntime *This,IXMLDOMNode **definitionNode);
      HRESULT (__attribute__((__stdcall__)) *get_nodeTypedValue)(IXTLRuntime *This,VARIANT *typedValue);
      HRESULT (__attribute__((__stdcall__)) *put_nodeTypedValue)(IXTLRuntime *This,VARIANT typedValue);
      HRESULT (__attribute__((__stdcall__)) *get_dataType)(IXTLRuntime *This,VARIANT *dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *put_dataType)(IXTLRuntime *This,BSTR dataTypeName);
      HRESULT (__attribute__((__stdcall__)) *get_xml)(IXTLRuntime *This,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *transformNode)(IXTLRuntime *This,IXMLDOMNode *stylesheet,BSTR *xmlString);
      HRESULT (__attribute__((__stdcall__)) *selectNodes)(IXTLRuntime *This,BSTR queryString,IXMLDOMNodeList **resultList);
      HRESULT (__attribute__((__stdcall__)) *selectSingleNode)(IXTLRuntime *This,BSTR queryString,IXMLDOMNode **resultNode);
      HRESULT (__attribute__((__stdcall__)) *get_parsed)(IXTLRuntime *This,VARIANT_BOOL *isParsed);
      HRESULT (__attribute__((__stdcall__)) *get_namespaceURI)(IXTLRuntime *This,BSTR *namespaceURI);
      HRESULT (__attribute__((__stdcall__)) *get_prefix)(IXTLRuntime *This,BSTR *prefixString);
      HRESULT (__attribute__((__stdcall__)) *get_baseName)(IXTLRuntime *This,BSTR *nameString);
      HRESULT (__attribute__((__stdcall__)) *transformNodeToObject)(IXTLRuntime *This,IXMLDOMNode *stylesheet,VARIANT outputObject);
      HRESULT (__attribute__((__stdcall__)) *uniqueID)(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pID);
      HRESULT (__attribute__((__stdcall__)) *depth)(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pDepth);
      HRESULT (__attribute__((__stdcall__)) *childNumber)(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pNumber);
      HRESULT (__attribute__((__stdcall__)) *ancestorChildNumber)(IXTLRuntime *This,BSTR bstrNodeName,IXMLDOMNode *pNode,LONG *pNumber);
      HRESULT (__attribute__((__stdcall__)) *absoluteChildNumber)(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pNumber);
      HRESULT (__attribute__((__stdcall__)) *formatIndex)(IXTLRuntime *This,LONG lIndex,BSTR bstrFormat,BSTR *pbstrFormattedString);
      HRESULT (__attribute__((__stdcall__)) *formatNumber)(IXTLRuntime *This,double dblNumber,BSTR bstrFormat,BSTR *pbstrFormattedString);
      HRESULT (__attribute__((__stdcall__)) *formatDate)(IXTLRuntime *This,VARIANT varDate,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString);
      HRESULT (__attribute__((__stdcall__)) *formatTime)(IXTLRuntime *This,VARIANT varTime,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString);
   
  } IXTLRuntimeVtbl;
  struct IXTLRuntime {
    struct IXTLRuntimeVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXTLRuntime_uniqueID_Proxy(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pID);
  void __attribute__((__stdcall__)) IXTLRuntime_uniqueID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXTLRuntime_depth_Proxy(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pDepth);
  void __attribute__((__stdcall__)) IXTLRuntime_depth_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXTLRuntime_childNumber_Proxy(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pNumber);
  void __attribute__((__stdcall__)) IXTLRuntime_childNumber_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXTLRuntime_ancestorChildNumber_Proxy(IXTLRuntime *This,BSTR bstrNodeName,IXMLDOMNode *pNode,LONG *pNumber);
  void __attribute__((__stdcall__)) IXTLRuntime_ancestorChildNumber_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXTLRuntime_absoluteChildNumber_Proxy(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pNumber);
  void __attribute__((__stdcall__)) IXTLRuntime_absoluteChildNumber_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXTLRuntime_formatIndex_Proxy(IXTLRuntime *This,LONG lIndex,BSTR bstrFormat,BSTR *pbstrFormattedString);
  void __attribute__((__stdcall__)) IXTLRuntime_formatIndex_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXTLRuntime_formatNumber_Proxy(IXTLRuntime *This,double dblNumber,BSTR bstrFormat,BSTR *pbstrFormattedString);
  void __attribute__((__stdcall__)) IXTLRuntime_formatNumber_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXTLRuntime_formatDate_Proxy(IXTLRuntime *This,VARIANT varDate,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString);
  void __attribute__((__stdcall__)) IXTLRuntime_formatDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXTLRuntime_formatTime_Proxy(IXTLRuntime *This,VARIANT varTime,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString);
  void __attribute__((__stdcall__)) IXTLRuntime_formatTime_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __XMLDOMDocumentEvents_DISPINTERFACE_DEFINED__ 
  extern const IID DIID_XMLDOMDocumentEvents;
  typedef struct XMLDOMDocumentEventsVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(XMLDOMDocumentEvents *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(XMLDOMDocumentEvents *This);
      ULONG (__attribute__((__stdcall__)) *Release)(XMLDOMDocumentEvents *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(XMLDOMDocumentEvents *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(XMLDOMDocumentEvents *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(XMLDOMDocumentEvents *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(XMLDOMDocumentEvents *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
   
  } XMLDOMDocumentEventsVtbl;
  struct XMLDOMDocumentEvents {
    struct XMLDOMDocumentEventsVtbl *lpVtbl;
  };
  extern const CLSID CLSID_DOMDocument;
  extern const CLSID CLSID_DOMFreeThreadedDocument;
#define __IXMLHttpRequest_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLHttpRequest;
  typedef struct IXMLHttpRequestVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLHttpRequest *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLHttpRequest *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLHttpRequest *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLHttpRequest *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLHttpRequest *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLHttpRequest *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLHttpRequest *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *open)(IXMLHttpRequest *This,BSTR bstrMethod,BSTR bstrUrl,VARIANT varAsync,VARIANT bstrUser,VARIANT bstrPassword);
      HRESULT (__attribute__((__stdcall__)) *setRequestHeader)(IXMLHttpRequest *This,BSTR bstrHeader,BSTR bstrValue);
      HRESULT (__attribute__((__stdcall__)) *getResponseHeader)(IXMLHttpRequest *This,BSTR bstrHeader,BSTR *pbstrValue);
      HRESULT (__attribute__((__stdcall__)) *getAllResponseHeaders)(IXMLHttpRequest *This,BSTR *pbstrHeaders);
      HRESULT (__attribute__((__stdcall__)) *send)(IXMLHttpRequest *This,VARIANT varBody);
      HRESULT (__attribute__((__stdcall__)) *abort)(IXMLHttpRequest *This);
      HRESULT (__attribute__((__stdcall__)) *get_status)(IXMLHttpRequest *This,LONG *plStatus);
      HRESULT (__attribute__((__stdcall__)) *get_statusText)(IXMLHttpRequest *This,BSTR *pbstrStatus);
      HRESULT (__attribute__((__stdcall__)) *get_responseXML)(IXMLHttpRequest *This,IDispatch **ppBody);
      HRESULT (__attribute__((__stdcall__)) *get_responseText)(IXMLHttpRequest *This,BSTR *pbstrBody);
      HRESULT (__attribute__((__stdcall__)) *get_responseBody)(IXMLHttpRequest *This,VARIANT *pvarBody);
      HRESULT (__attribute__((__stdcall__)) *get_responseStream)(IXMLHttpRequest *This,VARIANT *pvarBody);
      HRESULT (__attribute__((__stdcall__)) *get_readyState)(IXMLHttpRequest *This,LONG *plState);
      HRESULT (__attribute__((__stdcall__)) *put_onreadystatechange)(IXMLHttpRequest *This,IDispatch *pReadyStateSink);
   
  } IXMLHttpRequestVtbl;
  struct IXMLHttpRequest {
    struct IXMLHttpRequestVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLHttpRequest_open_Proxy(IXMLHttpRequest *This,BSTR bstrMethod,BSTR bstrUrl,VARIANT varAsync,VARIANT bstrUser,VARIANT bstrPassword);
  void __attribute__((__stdcall__)) IXMLHttpRequest_open_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLHttpRequest_setRequestHeader_Proxy(IXMLHttpRequest *This,BSTR bstrHeader,BSTR bstrValue);
  void __attribute__((__stdcall__)) IXMLHttpRequest_setRequestHeader_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLHttpRequest_getResponseHeader_Proxy(IXMLHttpRequest *This,BSTR bstrHeader,BSTR *pbstrValue);
  void __attribute__((__stdcall__)) IXMLHttpRequest_getResponseHeader_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLHttpRequest_getAllResponseHeaders_Proxy(IXMLHttpRequest *This,BSTR *pbstrHeaders);
  void __attribute__((__stdcall__)) IXMLHttpRequest_getAllResponseHeaders_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLHttpRequest_send_Proxy(IXMLHttpRequest *This,VARIANT varBody);
  void __attribute__((__stdcall__)) IXMLHttpRequest_send_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLHttpRequest_abort_Proxy(IXMLHttpRequest *This);
  void __attribute__((__stdcall__)) IXMLHttpRequest_abort_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLHttpRequest_get_status_Proxy(IXMLHttpRequest *This,LONG *plStatus);
  void __attribute__((__stdcall__)) IXMLHttpRequest_get_status_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLHttpRequest_get_statusText_Proxy(IXMLHttpRequest *This,BSTR *pbstrStatus);
  void __attribute__((__stdcall__)) IXMLHttpRequest_get_statusText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLHttpRequest_get_responseXML_Proxy(IXMLHttpRequest *This,IDispatch **ppBody);
  void __attribute__((__stdcall__)) IXMLHttpRequest_get_responseXML_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLHttpRequest_get_responseText_Proxy(IXMLHttpRequest *This,BSTR *pbstrBody);
  void __attribute__((__stdcall__)) IXMLHttpRequest_get_responseText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLHttpRequest_get_responseBody_Proxy(IXMLHttpRequest *This,VARIANT *pvarBody);
  void __attribute__((__stdcall__)) IXMLHttpRequest_get_responseBody_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLHttpRequest_get_responseStream_Proxy(IXMLHttpRequest *This,VARIANT *pvarBody);
  void __attribute__((__stdcall__)) IXMLHttpRequest_get_responseStream_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLHttpRequest_get_readyState_Proxy(IXMLHttpRequest *This,LONG *plState);
  void __attribute__((__stdcall__)) IXMLHttpRequest_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLHttpRequest_put_onreadystatechange_Proxy(IXMLHttpRequest *This,IDispatch *pReadyStateSink);
  void __attribute__((__stdcall__)) IXMLHttpRequest_put_onreadystatechange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  extern const CLSID CLSID_XMLHTTPRequest;
#define __IXMLDSOControl_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDSOControl;
  typedef struct IXMLDSOControlVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDSOControl *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDSOControl *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDSOControl *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDSOControl *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDSOControl *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDSOControl *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDSOControl *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_XMLDocument)(IXMLDSOControl *This,IXMLDOMDocument **ppDoc);
      HRESULT (__attribute__((__stdcall__)) *put_XMLDocument)(IXMLDSOControl *This,IXMLDOMDocument *ppDoc);
      HRESULT (__attribute__((__stdcall__)) *get_JavaDSOCompatible)(IXMLDSOControl *This,WINBOOL *fJavaDSOCompatible);
      HRESULT (__attribute__((__stdcall__)) *put_JavaDSOCompatible)(IXMLDSOControl *This,WINBOOL fJavaDSOCompatible);
      HRESULT (__attribute__((__stdcall__)) *get_readyState)(IXMLDSOControl *This,LONG *state);
   
  } IXMLDSOControlVtbl;
  struct IXMLDSOControl {
    struct IXMLDSOControlVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDSOControl_get_XMLDocument_Proxy(IXMLDSOControl *This,IXMLDOMDocument **ppDoc);
  void __attribute__((__stdcall__)) IXMLDSOControl_get_XMLDocument_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDSOControl_put_XMLDocument_Proxy(IXMLDSOControl *This,IXMLDOMDocument *ppDoc);
  void __attribute__((__stdcall__)) IXMLDSOControl_put_XMLDocument_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDSOControl_get_JavaDSOCompatible_Proxy(IXMLDSOControl *This,WINBOOL *fJavaDSOCompatible);
  void __attribute__((__stdcall__)) IXMLDSOControl_get_JavaDSOCompatible_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDSOControl_put_JavaDSOCompatible_Proxy(IXMLDSOControl *This,WINBOOL fJavaDSOCompatible);
  void __attribute__((__stdcall__)) IXMLDSOControl_put_JavaDSOCompatible_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDSOControl_get_readyState_Proxy(IXMLDSOControl *This,LONG *state);
  void __attribute__((__stdcall__)) IXMLDSOControl_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  extern const CLSID CLSID_XMLDSOControl;
#define __IXMLElementCollection_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLElementCollection;
  typedef struct IXMLElementCollectionVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLElementCollection *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLElementCollection *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLElementCollection *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLElementCollection *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLElementCollection *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLElementCollection *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLElementCollection *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *put_length)(IXMLElementCollection *This,LONG v);
      HRESULT (__attribute__((__stdcall__)) *get_length)(IXMLElementCollection *This,LONG *p);
      HRESULT (__attribute__((__stdcall__)) *get__newEnum)(IXMLElementCollection *This,IUnknown **ppUnk);
      HRESULT (__attribute__((__stdcall__)) *item)(IXMLElementCollection *This,VARIANT var1,VARIANT var2,IDispatch **ppDisp);
   
  } IXMLElementCollectionVtbl;
  struct IXMLElementCollection {
    struct IXMLElementCollectionVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLElementCollection_put_length_Proxy(IXMLElementCollection *This,LONG v);
  void __attribute__((__stdcall__)) IXMLElementCollection_put_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElementCollection_get_length_Proxy(IXMLElementCollection *This,LONG *p);
  void __attribute__((__stdcall__)) IXMLElementCollection_get_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElementCollection_get__newEnum_Proxy(IXMLElementCollection *This,IUnknown **ppUnk);
  void __attribute__((__stdcall__)) IXMLElementCollection_get__newEnum_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElementCollection_item_Proxy(IXMLElementCollection *This,VARIANT var1,VARIANT var2,IDispatch **ppDisp);
  void __attribute__((__stdcall__)) IXMLElementCollection_item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDocument_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDocument;
  typedef struct IXMLDocumentVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDocument *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDocument *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDocument *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDocument *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDocument *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDocument *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDocument *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_root)(IXMLDocument *This,IXMLElement **p);
      HRESULT (__attribute__((__stdcall__)) *get_fileSize)(IXMLDocument *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *get_fileModifiedDate)(IXMLDocument *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *get_fileUpdatedDate)(IXMLDocument *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *get_URL)(IXMLDocument *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *put_URL)(IXMLDocument *This,BSTR p);
      HRESULT (__attribute__((__stdcall__)) *get_mimeType)(IXMLDocument *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *get_readyState)(IXMLDocument *This,LONG *pl);
      HRESULT (__attribute__((__stdcall__)) *get_charset)(IXMLDocument *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *put_charset)(IXMLDocument *This,BSTR p);
      HRESULT (__attribute__((__stdcall__)) *get_version)(IXMLDocument *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *get_doctype)(IXMLDocument *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *get_dtdURL)(IXMLDocument *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *createElement)(IXMLDocument *This,VARIANT vType,VARIANT var1,IXMLElement **ppElem);
   
  } IXMLDocumentVtbl;
  struct IXMLDocument {
    struct IXMLDocumentVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDocument_get_root_Proxy(IXMLDocument *This,IXMLElement **p);
  void __attribute__((__stdcall__)) IXMLDocument_get_root_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument_get_fileSize_Proxy(IXMLDocument *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument_get_fileSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument_get_fileModifiedDate_Proxy(IXMLDocument *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument_get_fileModifiedDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument_get_fileUpdatedDate_Proxy(IXMLDocument *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument_get_fileUpdatedDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument_get_URL_Proxy(IXMLDocument *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument_get_URL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument_put_URL_Proxy(IXMLDocument *This,BSTR p);
  void __attribute__((__stdcall__)) IXMLDocument_put_URL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument_get_mimeType_Proxy(IXMLDocument *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument_get_mimeType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument_get_readyState_Proxy(IXMLDocument *This,LONG *pl);
  void __attribute__((__stdcall__)) IXMLDocument_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument_get_charset_Proxy(IXMLDocument *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument_get_charset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument_put_charset_Proxy(IXMLDocument *This,BSTR p);
  void __attribute__((__stdcall__)) IXMLDocument_put_charset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument_get_version_Proxy(IXMLDocument *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument_get_version_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument_get_doctype_Proxy(IXMLDocument *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument_get_doctype_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument_get_dtdURL_Proxy(IXMLDocument *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument_get_dtdURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument_createElement_Proxy(IXMLDocument *This,VARIANT vType,VARIANT var1,IXMLElement **ppElem);
  void __attribute__((__stdcall__)) IXMLDocument_createElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLDocument2_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLDocument2;
  typedef struct IXMLDocument2Vtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLDocument2 *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLDocument2 *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLDocument2 *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLDocument2 *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLDocument2 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLDocument2 *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLDocument2 *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_root)(IXMLDocument2 *This,IXMLElement2 **p);
      HRESULT (__attribute__((__stdcall__)) *get_fileSize)(IXMLDocument2 *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *get_fileModifiedDate)(IXMLDocument2 *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *get_fileUpdatedDate)(IXMLDocument2 *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *get_URL)(IXMLDocument2 *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *put_URL)(IXMLDocument2 *This,BSTR p);
      HRESULT (__attribute__((__stdcall__)) *get_mimeType)(IXMLDocument2 *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *get_readyState)(IXMLDocument2 *This,LONG *pl);
      HRESULT (__attribute__((__stdcall__)) *get_charset)(IXMLDocument2 *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *put_charset)(IXMLDocument2 *This,BSTR p);
      HRESULT (__attribute__((__stdcall__)) *get_version)(IXMLDocument2 *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *get_doctype)(IXMLDocument2 *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *get_dtdURL)(IXMLDocument2 *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *createElement)(IXMLDocument2 *This,VARIANT vType,VARIANT var1,IXMLElement2 **ppElem);
      HRESULT (__attribute__((__stdcall__)) *get_async)(IXMLDocument2 *This,VARIANT_BOOL *pf);
      HRESULT (__attribute__((__stdcall__)) *put_async)(IXMLDocument2 *This,VARIANT_BOOL f);
   
  } IXMLDocument2Vtbl;
  struct IXMLDocument2 {
    struct IXMLDocument2Vtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_get_root_Proxy(IXMLDocument2 *This,IXMLElement2 **p);
  void __attribute__((__stdcall__)) IXMLDocument2_get_root_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_get_fileSize_Proxy(IXMLDocument2 *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument2_get_fileSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_get_fileModifiedDate_Proxy(IXMLDocument2 *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument2_get_fileModifiedDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_get_fileUpdatedDate_Proxy(IXMLDocument2 *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument2_get_fileUpdatedDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_get_URL_Proxy(IXMLDocument2 *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument2_get_URL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_put_URL_Proxy(IXMLDocument2 *This,BSTR p);
  void __attribute__((__stdcall__)) IXMLDocument2_put_URL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_get_mimeType_Proxy(IXMLDocument2 *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument2_get_mimeType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_get_readyState_Proxy(IXMLDocument2 *This,LONG *pl);
  void __attribute__((__stdcall__)) IXMLDocument2_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_get_charset_Proxy(IXMLDocument2 *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument2_get_charset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_put_charset_Proxy(IXMLDocument2 *This,BSTR p);
  void __attribute__((__stdcall__)) IXMLDocument2_put_charset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_get_version_Proxy(IXMLDocument2 *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument2_get_version_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_get_doctype_Proxy(IXMLDocument2 *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument2_get_doctype_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_get_dtdURL_Proxy(IXMLDocument2 *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLDocument2_get_dtdURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_createElement_Proxy(IXMLDocument2 *This,VARIANT vType,VARIANT var1,IXMLElement2 **ppElem);
  void __attribute__((__stdcall__)) IXMLDocument2_createElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_get_async_Proxy(IXMLDocument2 *This,VARIANT_BOOL *pf);
  void __attribute__((__stdcall__)) IXMLDocument2_get_async_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLDocument2_put_async_Proxy(IXMLDocument2 *This,VARIANT_BOOL f);
  void __attribute__((__stdcall__)) IXMLDocument2_put_async_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLElement_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLElement;
  typedef struct IXMLElementVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLElement *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLElement *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLElement *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLElement *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLElement *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLElement *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLElement *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_tagName)(IXMLElement *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *put_tagName)(IXMLElement *This,BSTR p);
      HRESULT (__attribute__((__stdcall__)) *get_parent)(IXMLElement *This,IXMLElement **ppParent);
      HRESULT (__attribute__((__stdcall__)) *setAttribute)(IXMLElement *This,BSTR strPropertyName,VARIANT PropertyValue);
      HRESULT (__attribute__((__stdcall__)) *getAttribute)(IXMLElement *This,BSTR strPropertyName,VARIANT *PropertyValue);
      HRESULT (__attribute__((__stdcall__)) *removeAttribute)(IXMLElement *This,BSTR strPropertyName);
      HRESULT (__attribute__((__stdcall__)) *get_children)(IXMLElement *This,IXMLElementCollection **pp);
      HRESULT (__attribute__((__stdcall__)) *get_type)(IXMLElement *This,LONG *plType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLElement *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLElement *This,BSTR p);
      HRESULT (__attribute__((__stdcall__)) *addChild)(IXMLElement *This,IXMLElement *pChildElem,LONG lIndex,LONG lReserved);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLElement *This,IXMLElement *pChildElem);
   
  } IXMLElementVtbl;
  struct IXMLElement {
    struct IXMLElementVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLElement_get_tagName_Proxy(IXMLElement *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLElement_get_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement_put_tagName_Proxy(IXMLElement *This,BSTR p);
  void __attribute__((__stdcall__)) IXMLElement_put_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement_get_parent_Proxy(IXMLElement *This,IXMLElement **ppParent);
  void __attribute__((__stdcall__)) IXMLElement_get_parent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement_setAttribute_Proxy(IXMLElement *This,BSTR strPropertyName,VARIANT PropertyValue);
  void __attribute__((__stdcall__)) IXMLElement_setAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement_getAttribute_Proxy(IXMLElement *This,BSTR strPropertyName,VARIANT *PropertyValue);
  void __attribute__((__stdcall__)) IXMLElement_getAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement_removeAttribute_Proxy(IXMLElement *This,BSTR strPropertyName);
  void __attribute__((__stdcall__)) IXMLElement_removeAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement_get_children_Proxy(IXMLElement *This,IXMLElementCollection **pp);
  void __attribute__((__stdcall__)) IXMLElement_get_children_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement_get_type_Proxy(IXMLElement *This,LONG *plType);
  void __attribute__((__stdcall__)) IXMLElement_get_type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement_get_text_Proxy(IXMLElement *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLElement_get_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement_put_text_Proxy(IXMLElement *This,BSTR p);
  void __attribute__((__stdcall__)) IXMLElement_put_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement_addChild_Proxy(IXMLElement *This,IXMLElement *pChildElem,LONG lIndex,LONG lReserved);
  void __attribute__((__stdcall__)) IXMLElement_addChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement_removeChild_Proxy(IXMLElement *This,IXMLElement *pChildElem);
  void __attribute__((__stdcall__)) IXMLElement_removeChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLElement2_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLElement2;
  typedef struct IXMLElement2Vtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLElement2 *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLElement2 *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLElement2 *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLElement2 *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLElement2 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLElement2 *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLElement2 *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_tagName)(IXMLElement2 *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *put_tagName)(IXMLElement2 *This,BSTR p);
      HRESULT (__attribute__((__stdcall__)) *get_parent)(IXMLElement2 *This,IXMLElement2 **ppParent);
      HRESULT (__attribute__((__stdcall__)) *setAttribute)(IXMLElement2 *This,BSTR strPropertyName,VARIANT PropertyValue);
      HRESULT (__attribute__((__stdcall__)) *getAttribute)(IXMLElement2 *This,BSTR strPropertyName,VARIANT *PropertyValue);
      HRESULT (__attribute__((__stdcall__)) *removeAttribute)(IXMLElement2 *This,BSTR strPropertyName);
      HRESULT (__attribute__((__stdcall__)) *get_children)(IXMLElement2 *This,IXMLElementCollection **pp);
      HRESULT (__attribute__((__stdcall__)) *get_type)(IXMLElement2 *This,LONG *plType);
      HRESULT (__attribute__((__stdcall__)) *get_text)(IXMLElement2 *This,BSTR *p);
      HRESULT (__attribute__((__stdcall__)) *put_text)(IXMLElement2 *This,BSTR p);
      HRESULT (__attribute__((__stdcall__)) *addChild)(IXMLElement2 *This,IXMLElement2 *pChildElem,LONG lIndex,LONG lReserved);
      HRESULT (__attribute__((__stdcall__)) *removeChild)(IXMLElement2 *This,IXMLElement2 *pChildElem);
      HRESULT (__attribute__((__stdcall__)) *get_attributes)(IXMLElement2 *This,IXMLElementCollection **pp);
   
  } IXMLElement2Vtbl;
  struct IXMLElement2 {
    struct IXMLElement2Vtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLElement2_get_tagName_Proxy(IXMLElement2 *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLElement2_get_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement2_put_tagName_Proxy(IXMLElement2 *This,BSTR p);
  void __attribute__((__stdcall__)) IXMLElement2_put_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement2_get_parent_Proxy(IXMLElement2 *This,IXMLElement2 **ppParent);
  void __attribute__((__stdcall__)) IXMLElement2_get_parent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement2_setAttribute_Proxy(IXMLElement2 *This,BSTR strPropertyName,VARIANT PropertyValue);
  void __attribute__((__stdcall__)) IXMLElement2_setAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement2_getAttribute_Proxy(IXMLElement2 *This,BSTR strPropertyName,VARIANT *PropertyValue);
  void __attribute__((__stdcall__)) IXMLElement2_getAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement2_removeAttribute_Proxy(IXMLElement2 *This,BSTR strPropertyName);
  void __attribute__((__stdcall__)) IXMLElement2_removeAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement2_get_children_Proxy(IXMLElement2 *This,IXMLElementCollection **pp);
  void __attribute__((__stdcall__)) IXMLElement2_get_children_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement2_get_type_Proxy(IXMLElement2 *This,LONG *plType);
  void __attribute__((__stdcall__)) IXMLElement2_get_type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement2_get_text_Proxy(IXMLElement2 *This,BSTR *p);
  void __attribute__((__stdcall__)) IXMLElement2_get_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement2_put_text_Proxy(IXMLElement2 *This,BSTR p);
  void __attribute__((__stdcall__)) IXMLElement2_put_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement2_addChild_Proxy(IXMLElement2 *This,IXMLElement2 *pChildElem,LONG lIndex,LONG lReserved);
  void __attribute__((__stdcall__)) IXMLElement2_addChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement2_removeChild_Proxy(IXMLElement2 *This,IXMLElement2 *pChildElem);
  void __attribute__((__stdcall__)) IXMLElement2_removeChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLElement2_get_attributes_Proxy(IXMLElement2 *This,IXMLElementCollection **pp);
  void __attribute__((__stdcall__)) IXMLElement2_get_attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLAttribute_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLAttribute;
  typedef struct IXMLAttributeVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLAttribute *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLAttribute *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLAttribute *This);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(IXMLAttribute *This,UINT *pctinfo);
      HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(IXMLAttribute *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);
      HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(IXMLAttribute *This,const IID *const riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);
      HRESULT (__attribute__((__stdcall__)) *Invoke)(IXMLAttribute *This,DISPID dispIdMember,const IID *const riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);
      HRESULT (__attribute__((__stdcall__)) *get_name)(IXMLAttribute *This,BSTR *n);
      HRESULT (__attribute__((__stdcall__)) *get_value)(IXMLAttribute *This,BSTR *v);
   
  } IXMLAttributeVtbl;
  struct IXMLAttribute {
    struct IXMLAttributeVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLAttribute_get_name_Proxy(IXMLAttribute *This,BSTR *n);
  void __attribute__((__stdcall__)) IXMLAttribute_get_name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  HRESULT __attribute__((__stdcall__)) IXMLAttribute_get_value_Proxy(IXMLAttribute *This,BSTR *v);
  void __attribute__((__stdcall__)) IXMLAttribute_get_value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#define __IXMLError_INTERFACE_DEFINED__ 
  extern const IID IID_IXMLError;
  typedef struct IXMLErrorVtbl {
   
      HRESULT (__attribute__((__stdcall__)) *QueryInterface)(IXMLError *This,const IID *const riid,void **ppvObject);
      ULONG (__attribute__((__stdcall__)) *AddRef)(IXMLError *This);
      ULONG (__attribute__((__stdcall__)) *Release)(IXMLError *This);
      HRESULT (__attribute__((__stdcall__)) *GetErrorInfo)(IXMLError *This,XML_ERROR *pErrorReturn);
   
  } IXMLErrorVtbl;
  struct IXMLError {
    struct IXMLErrorVtbl *lpVtbl;
  };
  HRESULT __attribute__((__stdcall__)) IXMLError_GetErrorInfo_Proxy(IXMLError *This,XML_ERROR *pErrorReturn);
  void __attribute__((__stdcall__)) IXMLError_GetErrorInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
  extern const CLSID CLSID_XMLDocument;
       
#define __IBindStatusCallbackMsg_FWD_DEFINED__ 
typedef struct IBindStatusCallbackMsg IBindStatusCallbackMsg;
extern const IID CLSID_SBS_StdURLMoniker;
extern const IID CLSID_SBS_HttpProtocol;
extern const IID CLSID_SBS_FtpProtocol;
extern const IID CLSID_SBS_GopherProtocol;
extern const IID CLSID_SBS_HttpSProtocol;
extern const IID CLSID_SBS_FileProtocol;
extern const IID CLSID_SBS_MkProtocol;
extern const IID CLSID_SBS_UrlMkBindCtx;
extern const IID CLSID_SBS_SoftDistExt;
extern const IID CLSID_SBS_CdlProtocol;
extern const IID CLSID_SBS_ClassInstallFilter;
extern const IID CLSID_SBS_InternetSecurityManager;
extern const IID CLSID_SBS_InternetZoneManager;
#define BINDF_DONTUSECACHE BINDF_GETNEWESTVERSION
#define BINDF_DONTPUTINCACHE BINDF_NOWRITECACHE
#define BINDF_NOCOPYDATA BINDF_PULLDATA
#define INVALID_P_ROOT_SECURITY_ID ((BYTE*)-1)
#define PI_DOCFILECLSIDLOOKUP PI_CLSIDLOOKUP
extern const IID IID_IAsyncMoniker;
extern const IID CLSID_StdURLMoniker;
extern const IID CLSID_HttpProtocol;
extern const IID CLSID_FtpProtocol;
extern const IID CLSID_GopherProtocol;
extern const IID CLSID_HttpSProtocol;
extern const IID CLSID_FileProtocol;
extern const IID CLSID_MkProtocol;
extern const IID CLSID_StdURLProtocol;
extern const IID CLSID_UrlMkBindCtx;
extern const IID CLSID_CdlProtocol;
extern const IID CLSID_ClassInstallFilter;
extern const IID IID_IAsyncBindCtx;
#define SZ_URLCONTEXT OLESTR("URL Context")
#define SZ_ASYNC_CALLEE OLESTR("AsyncCallee")
#define MKSYS_URLMONIKER 6
#define URL_MK_LEGACY 0
#define URL_MK_UNIFORM 1
#define URL_MK_NO_CANONICALIZE 2
extern HRESULT __attribute__((__stdcall__)) CreateURLMoniker(LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER *ppmk);
extern HRESULT __attribute__((__stdcall__)) CreateURLMonikerEx(LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER *ppmk, DWORD dwFlags);
extern HRESULT __attribute__((__stdcall__)) GetClassURL(LPCWSTR szURL, CLSID *pClsID);
extern HRESULT __attribute__((__stdcall__)) CreateAsyncBindCtx(DWORD reserved, IBindStatusCallback *pBSCb, IEnumFORMATETC *pEFetc, IBindCtx **ppBC);
extern HRESULT __attribute__((__stdcall__)) CreateURLMonikerEx2(LPMONIKER pMkCtx, IUri *pUri, LPMONIKER *ppmk, DWORD dwFlags);
extern HRESULT __attribute__((__stdcall__)) CreateAsyncBindCtxEx(IBindCtx *pbc, DWORD dwOptions, IBindStatusCallback *pBSCb, IEnumFORMATETC *pEnum, IBindCtx **ppBC, DWORD reserved);
extern HRESULT __attribute__((__stdcall__)) MkParseDisplayNameEx(IBindCtx *pbc, LPCWSTR szDisplayName, ULONG *pchEaten, LPMONIKER *ppmk);
extern HRESULT __attribute__((__stdcall__)) RegisterBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb, IBindStatusCallback **ppBSCBPrev, DWORD dwReserved);
extern HRESULT __attribute__((__stdcall__)) RevokeBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb);
extern HRESULT __attribute__((__stdcall__)) GetClassFileOrMime(LPBC pBC, LPCWSTR szFilename, LPVOID pBuffer, DWORD cbSize, LPCWSTR szMime, DWORD dwReserved, CLSID *pclsid);
extern HRESULT __attribute__((__stdcall__)) IsValidURL(LPBC pBC, LPCWSTR szURL, DWORD dwReserved);
extern HRESULT __attribute__((__stdcall__)) CoGetClassObjectFromURL(const IID *const rCLASSID, LPCWSTR szCODE, DWORD dwFileVersionMS, DWORD dwFileVersionLS, LPCWSTR szTYPE, LPBINDCTX pBindCtx, DWORD dwClsContext, LPVOID pvReserved, const IID *const riid, LPVOID *ppv);
extern HRESULT __attribute__((__stdcall__)) IEInstallScope(LPDWORD pdwScope);
extern HRESULT __attribute__((__stdcall__)) FaultInIEFeature(HWND hWnd, uCLSSPEC *pClassSpec, QUERYCONTEXT *pQuery, DWORD dwFlags);
extern HRESULT __attribute__((__stdcall__)) GetComponentIDFromCLSSPEC(uCLSSPEC *pClassspec, LPSTR *ppszComponentID);
#define FIEF_FLAG_FORCE_JITUI 0x1
#define FIEF_FLAG_PEEK 0x2
#define FIEF_FLAG_SKIP_INSTALLED_VERSION_CHECK 0x4
extern HRESULT __attribute__((__stdcall__)) IsAsyncMoniker(IMoniker *pmk);
extern HRESULT __attribute__((__stdcall__)) CreateURLBinding(LPCWSTR lpszUrl, IBindCtx *pbc, IBinding **ppBdg);
extern HRESULT __attribute__((__stdcall__)) RegisterMediaTypes(UINT ctypes, const LPCSTR *rgszTypes, CLIPFORMAT *rgcfTypes);
extern HRESULT __attribute__((__stdcall__)) FindMediaType(LPCSTR rgszTypes, CLIPFORMAT *rgcfTypes);
extern HRESULT __attribute__((__stdcall__)) CreateFormatEnumerator(UINT cfmtetc, FORMATETC *rgfmtetc, IEnumFORMATETC **ppenumfmtetc);
extern HRESULT __attribute__((__stdcall__)) RegisterFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc, DWORD reserved);
extern HRESULT __attribute__((__stdcall__)) RevokeFormatEnumerator(LPBC pBC, IEnumFORMATETC *pEFetc);
extern HRESULT __attribute__((__stdcall__)) RegisterMediaTypeClass(LPBC pBC,UINT ctypes, const LPCSTR *rgszTypes, CLSID *rgclsID, DWORD reserved);
extern HRESULT __attribute__((__stdcall__)) FindMediaTypeClass(LPBC pBC, LPCSTR szType, CLSID *pclsID, DWORD reserved);
extern HRESULT __attribute__((__stdcall__)) UrlMkSetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD dwReserved);
extern HRESULT __attribute__((__stdcall__)) UrlMkGetSessionOption(DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD *pdwBufferLengthOut, DWORD dwReserved);
extern HRESULT __attribute__((__stdcall__)) FindMimeFromData(LPBC pBC, LPCWSTR pwzUrl, LPVOID pBuffer, DWORD cbSize, LPCWSTR pwzMimeProposed, DWORD dwMimeFlags, LPWSTR *ppwzMimeOut, DWORD dwReserved);
#define FMFD_DEFAULT 0x0
#define FMFD_URLASFILENAME 0x1
#define FMFD_ENABLEMIMESNIFFING 0x2
#define FMFD_IGNOREMIMETEXTPLAIN 0x4
#define FMFD_SERVERMIME 0x8
#define FMFD_RESPECTTEXTPLAIN 0x10
#define FMFD_RETURNUPDATEDIMGMIMES 0x20
#define UAS_EXACTLEGACY 0x1000
extern HRESULT __attribute__((__stdcall__)) ObtainUserAgentString(DWORD dwOption, LPSTR pszUAOut, DWORD *cbSize);
extern HRESULT __attribute__((__stdcall__)) CompareSecurityIds(BYTE *pbSecurityId1, DWORD dwLen1, BYTE *pbSecurityId2, DWORD dwLen2, DWORD dwReserved);
extern HRESULT __attribute__((__stdcall__)) CompatFlagsFromClsid(CLSID *pclsid, LPDWORD pdwCompatFlags, LPDWORD pdwMiscStatusFlags);
#define URLMON_OPTION_USERAGENT 0x10000001
#define URLMON_OPTION_USERAGENT_REFRESH 0x10000002
#define URLMON_OPTION_URL_ENCODING 0x10000004
#define URLMON_OPTION_USE_BINDSTRINGCREDS 0x10000008
#define URLMON_OPTION_USE_BROWSERAPPSDOCUMENTS 0x10000010
#define CF_NULL 0
#define CFSTR_MIME_NULL NULL
#define CFSTR_MIME_TEXT (TEXT("text/plain"))
#define CFSTR_MIME_RICHTEXT (TEXT("text/richtext"))
#define CFSTR_MIME_MANIFEST (TEXT("text/cache-manifest"))
#define CFSTR_MIME_WEBVTT (TEXT("text/vtt"))
#define CFSTR_MIME_X_BITMAP (TEXT("image/x-xbitmap"))
#define CFSTR_MIME_POSTSCRIPT (TEXT("application/postscript"))
#define CFSTR_MIME_AIFF (TEXT("audio/aiff"))
#define CFSTR_MIME_BASICAUDIO (TEXT("audio/basic"))
#define CFSTR_MIME_WAV (TEXT("audio/wav"))
#define CFSTR_MIME_X_WAV (TEXT("audio/x-wav"))
#define CFSTR_MIME_GIF (TEXT("image/gif"))
#define CFSTR_MIME_PJPEG (TEXT("image/pjpeg"))
#define CFSTR_MIME_JPEG (TEXT("image/jpeg"))
#define CFSTR_MIME_TIFF (TEXT("image/tiff"))
#define CFSTR_MIME_JPEG_XR (TEXT("image/vnd.ms-photo"))
#define CFSTR_MIME_PNG (TEXT("image/png"))
#define CFSTR_MIME_X_PNG (TEXT("image/x-png"))
#define CFSTR_MIME_X_ICON (TEXT("image/x-icon"))
#define CFSTR_MIME_SVG_XML (TEXT("image/svg+xml"))
#define CFSTR_MIME_BMP (TEXT("image/bmp"))
#define CFSTR_MIME_X_EMF (TEXT("image/x-emf"))
#define CFSTR_MIME_X_WMF (TEXT("image/x-wmf"))
#define CFSTR_MIME_AVI (TEXT("video/avi"))
#define CFSTR_MIME_MPEG (TEXT("video/mpeg"))
#define CFSTR_MIME_FRACTALS (TEXT("application/fractals"))
#define CFSTR_MIME_RAWDATA (TEXT("application/octet-stream"))
#define CFSTR_MIME_RAWDATASTRM (TEXT("application/octet-stream"))
#define CFSTR_MIME_PDF (TEXT("application/pdf"))
#define CFSTR_MIME_HTA (TEXT("application/hta"))
#define CFSTR_MIME_APP_XML (TEXT("application/xml"))
#define CFSTR_MIME_XHTML (TEXT("application/xhtml+xml"))
#define CFSTR_MIME_X_AIFF (TEXT("audio/x-aiff"))
#define CFSTR_MIME_X_REALAUDIO (TEXT("audio/x-pn-realaudio"))
#define CFSTR_MIME_XBM (TEXT("image/xbm"))
#define CFSTR_MIME_QUICKTIME (TEXT("video/quicktime"))
#define CFSTR_MIME_X_MSVIDEO (TEXT("video/x-msvideo"))
#define CFSTR_MIME_X_SGI_MOVIE (TEXT("video/x-sgi-movie"))
#define CFSTR_MIME_HTML (TEXT("text/html"))
#define CFSTR_MIME_XML (TEXT("text/xml"))
#define CFSTR_MIME_TTML (TEXT("application/ttml+xml"))
#define CFSTR_MIME_TTAF (TEXT("application/ttaf+xml"))
#define MK_S_ASYNCHRONOUS _HRESULT_TYPEDEF_(0x401E8L)
#define S_ASYNCHRONOUS MK_S_ASYNCHRONOUS
#define INET_E_INVALID_URL _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0002))
#define INET_E_NO_SESSION _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0003))
#define INET_E_CANNOT_CONNECT _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0004))
#define INET_E_RESOURCE_NOT_FOUND _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0005))
#define INET_E_OBJECT_NOT_FOUND _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0006))
#define INET_E_DATA_NOT_AVAILABLE _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0007))
#define INET_E_DOWNLOAD_FAILURE _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0008))
#define INET_E_AUTHENTICATION_REQUIRED _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0009))
#define INET_E_NO_VALID_MEDIA _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000A))
#define INET_E_CONNECTION_TIMEOUT _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000B))
#define INET_E_INVALID_REQUEST _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000C))
#define INET_E_UNKNOWN_PROTOCOL _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000D))
#define INET_E_SECURITY_PROBLEM _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000E))
#define INET_E_CANNOT_LOAD_DATA _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C000F))
#define INET_E_CANNOT_INSTANTIATE_OBJECT _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0010))
#define INET_E_INVALID_CERTIFICATE _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0019))
#define INET_E_REDIRECT_FAILED _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0014))
#define INET_E_REDIRECT_TO_DIR _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0015))
#define INET_E_CANNOT_LOCK_REQUEST _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0016))
#define INET_E_USE_EXTEND_BINDING _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0017))
#define INET_E_TERMINATED_BIND _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0018))
#define INET_E_RESERVED_1 _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C001A))
#define INET_E_BLOCKED_REDIRECT_XSECURITYID _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C001B))
#define INET_E_DOMINJECTIONVALIDATION _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C001C))
#define INET_E_ERROR_FIRST _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0002))
#define INET_E_CODE_DOWNLOAD_DECLINED _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0100))
#define INET_E_RESULT_DISPATCHED _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0200))
#define INET_E_CANNOT_REPLACE_SFP_FILE _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0300))
#define INET_E_CODE_INSTALL_SUPPRESSED _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0400))
#define INET_E_CODE_INSTALL_BLOCKED_BY_HASH_POLICY _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0500))
#define INET_E_DOWNLOAD_BLOCKED_BY_INPRIVATE _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0501))
#define INET_E_CODE_INSTALL_BLOCKED_IMMERSIVE _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0502))
#define INET_E_FORBIDFRAMING _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0503))
#define INET_E_CODE_INSTALL_BLOCKED_ARM _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0504))
#define INET_E_BLOCKED_PLUGGABLE_PROTOCOL _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0505))
#define INET_E_ERROR_LAST INET_E_BLOCKED_PLUGGABLE_PROTOCOL
#define _LPPERSISTMONIKER_DEFINED 
#define __IPersistMoniker_INTERFACE_DEFINED__ 
typedef IPersistMoniker *LPPERSISTMONIKER;
extern const GUID IID_IPersistMoniker;
typedef struct IPersistMonikerVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPersistMoniker *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPersistMoniker *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPersistMoniker *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassID)(
        IPersistMoniker *This,
        CLSID *pClassID);
    HRESULT (__attribute__((__stdcall__)) *IsDirty)(
        IPersistMoniker *This);
    HRESULT (__attribute__((__stdcall__)) *Load)(
        IPersistMoniker *This,
        WINBOOL fFullyAvailable,
        IMoniker *pimkName,
        LPBC pibc,
        DWORD grfMode);
    HRESULT (__attribute__((__stdcall__)) *Save)(
        IPersistMoniker *This,
        IMoniker *pimkName,
        LPBC pbc,
        WINBOOL fRemember);
    HRESULT (__attribute__((__stdcall__)) *SaveCompleted)(
        IPersistMoniker *This,
        IMoniker *pimkName,
        LPBC pibc);
    HRESULT (__attribute__((__stdcall__)) *GetCurMoniker)(
        IPersistMoniker *This,
        IMoniker **ppimkName);
   
} IPersistMonikerVtbl;
struct IPersistMoniker {
    IPersistMonikerVtbl* lpVtbl;
};
#define _LPMONIKERPROP_DEFINED 
#define __IMonikerProp_INTERFACE_DEFINED__ 
typedef IMonikerProp *LPMONIKERPROP;
typedef enum __WIDL_urlmon_generated_name_0000000F {
    MIMETYPEPROP = 0x0,
    USE_SRC_URL = 0x1,
    CLASSIDPROP = 0x2,
    TRUSTEDDOWNLOADPROP = 0x3,
    POPUPLEVELPROP = 0x4
} MONIKERPROPERTY;
extern const GUID IID_IMonikerProp;
typedef struct IMonikerPropVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IMonikerProp *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IMonikerProp *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IMonikerProp *This);
    HRESULT (__attribute__((__stdcall__)) *PutProperty)(
        IMonikerProp *This,
        MONIKERPROPERTY mkp,
        LPCWSTR val);
   
} IMonikerPropVtbl;
struct IMonikerProp {
    IMonikerPropVtbl* lpVtbl;
};
#define _LPBINDPROTOCOL_DEFINED 
#define __IBindProtocol_INTERFACE_DEFINED__ 
typedef IBindProtocol *LPBINDPROTOCOL;
extern const GUID IID_IBindProtocol;
typedef struct IBindProtocolVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IBindProtocol *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IBindProtocol *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IBindProtocol *This);
    HRESULT (__attribute__((__stdcall__)) *CreateBinding)(
        IBindProtocol *This,
        LPCWSTR szUrl,
        IBindCtx *pbc,
        IBinding **ppb);
   
} IBindProtocolVtbl;
struct IBindProtocol {
    IBindProtocolVtbl* lpVtbl;
};
#define _LPBINDING_DEFINED 
#define __IBinding_INTERFACE_DEFINED__ 
typedef IBinding *LPBINDING;
extern const GUID IID_IBinding;
typedef struct IBindingVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IBinding *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IBinding *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IBinding *This);
    HRESULT (__attribute__((__stdcall__)) *Abort)(
        IBinding *This);
    HRESULT (__attribute__((__stdcall__)) *Suspend)(
        IBinding *This);
    HRESULT (__attribute__((__stdcall__)) *Resume)(
        IBinding *This);
    HRESULT (__attribute__((__stdcall__)) *SetPriority)(
        IBinding *This,
        LONG nPriority);
    HRESULT (__attribute__((__stdcall__)) *GetPriority)(
        IBinding *This,
        LONG *pnPriority);
    HRESULT (__attribute__((__stdcall__)) *GetBindResult)(
        IBinding *This,
        CLSID *pclsidProtocol,
        DWORD *pdwResult,
        LPOLESTR *pszResult,
        DWORD *pdwReserved);
   
} IBindingVtbl;
struct IBinding {
    IBindingVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IBinding_RemoteGetBindResult_Proxy(
    IBinding* This,
    CLSID *pclsidProtocol,
    DWORD *pdwResult,
    LPOLESTR *pszResult,
    DWORD dwReserved);
void __attribute__((__stdcall__)) IBinding_RemoteGetBindResult_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IBinding_GetBindResult_Proxy(
    IBinding* This,
    CLSID *pclsidProtocol,
    DWORD *pdwResult,
    LPOLESTR *pszResult,
    DWORD *pdwReserved);
HRESULT __attribute__((__stdcall__)) IBinding_GetBindResult_Stub(
    IBinding* This,
    CLSID *pclsidProtocol,
    DWORD *pdwResult,
    LPOLESTR *pszResult,
    DWORD dwReserved);
#define _LPBINDSTATUSCALLBACK_DEFINED 
#define __IBindStatusCallback_INTERFACE_DEFINED__ 
typedef IBindStatusCallback *LPBINDSTATUSCALLBACK;
typedef enum __WIDL_urlmon_generated_name_00000010 {
    BINDVERB_GET = 0x0,
    BINDVERB_POST = 0x1,
    BINDVERB_PUT = 0x2,
    BINDVERB_CUSTOM = 0x3,
    BINDVERB_RESERVED1 = 0x4
} BINDVERB;
typedef enum __WIDL_urlmon_generated_name_00000011 {
    BINDINFOF_URLENCODESTGMEDDATA = 0x1,
    BINDINFOF_URLENCODEDEXTRAINFO = 0x2
} BINDINFOF;
typedef enum __WIDL_urlmon_generated_name_00000012 {
    BINDF_ASYNCHRONOUS = 0x1,
    BINDF_ASYNCSTORAGE = 0x2,
    BINDF_NOPROGRESSIVERENDERING = 0x4,
    BINDF_OFFLINEOPERATION = 0x8,
    BINDF_GETNEWESTVERSION = 0x10,
    BINDF_NOWRITECACHE = 0x20,
    BINDF_NEEDFILE = 0x40,
    BINDF_PULLDATA = 0x80,
    BINDF_IGNORESECURITYPROBLEM = 0x100,
    BINDF_RESYNCHRONIZE = 0x200,
    BINDF_HYPERLINK = 0x400,
    BINDF_NO_UI = 0x800,
    BINDF_SILENTOPERATION = 0x1000,
    BINDF_PRAGMA_NO_CACHE = 0x2000,
    BINDF_GETCLASSOBJECT = 0x4000,
    BINDF_RESERVED_1 = 0x8000,
    BINDF_FREE_THREADED = 0x10000,
    BINDF_DIRECT_READ = 0x20000,
    BINDF_FORMS_SUBMIT = 0x40000,
    BINDF_GETFROMCACHE_IF_NET_FAIL = 0x80000,
    BINDF_FROMURLMON = 0x100000,
    BINDF_FWD_BACK = 0x200000,
    BINDF_PREFERDEFAULTHANDLER = 0x400000,
    BINDF_ENFORCERESTRICTED = 0x800000,
    BINDF_RESERVED_2 = 0x80000000,
    BINDF_RESERVED_3 = 0x1000000,
    BINDF_RESERVED_4 = 0x2000000,
    BINDF_RESERVED_5 = 0x4000000,
    BINDF_RESERVED_6 = 0x8000000,
    BINDF_RESERVED_7 = 0x40000000,
    BINDF_RESERVED_8 = 0x20000000
} BINDF;
typedef enum __WIDL_urlmon_generated_name_00000013 {
    URL_ENCODING_NONE = 0x0,
    URL_ENCODING_ENABLE_UTF8 = 0x10000000,
    URL_ENCODING_DISABLE_UTF8 = 0x20000000
} URL_ENCODING;
typedef struct _tagBINDINFO {
    ULONG cbSize;
    LPWSTR szExtraInfo;
    STGMEDIUM stgmedData;
    DWORD grfBindInfoF;
    DWORD dwBindVerb;
    LPWSTR szCustomVerb;
    DWORD cbstgmedData;
    DWORD dwOptions;
    DWORD dwOptionsFlags;
    DWORD dwCodePage;
    SECURITY_ATTRIBUTES securityAttributes;
    IID iid;
    IUnknown *pUnk;
    DWORD dwReserved;
} BINDINFO;
typedef struct _REMSECURITY_ATTRIBUTES {
    DWORD nLength;
    DWORD lpSecurityDescriptor;
    WINBOOL bInheritHandle;
} REMSECURITY_ATTRIBUTES;
typedef struct _REMSECURITY_ATTRIBUTES *PREMSECURITY_ATTRIBUTES;
typedef struct _REMSECURITY_ATTRIBUTES *LPREMSECURITY_ATTRIBUTES;
typedef struct _tagRemBINDINFO {
    ULONG cbSize;
    LPWSTR szExtraInfo;
    DWORD grfBindInfoF;
    DWORD dwBindVerb;
    LPWSTR szCustomVerb;
    DWORD cbstgmedData;
    DWORD dwOptions;
    DWORD dwOptionsFlags;
    DWORD dwCodePage;
    REMSECURITY_ATTRIBUTES securityAttributes;
    IID iid;
    IUnknown *pUnk;
    DWORD dwReserved;
} RemBINDINFO;
typedef struct tagRemFORMATETC {
    DWORD cfFormat;
    DWORD ptd;
    DWORD dwAspect;
    LONG lindex;
    DWORD tymed;
} RemFORMATETC;
typedef struct tagRemFORMATETC *LPREMFORMATETC;
typedef enum __WIDL_urlmon_generated_name_00000014 {
    BINDINFO_OPTIONS_WININETFLAG = 0x10000,
    BINDINFO_OPTIONS_ENABLE_UTF8 = 0x20000,
    BINDINFO_OPTIONS_DISABLE_UTF8 = 0x40000,
    BINDINFO_OPTIONS_USE_IE_ENCODING = 0x80000,
    BINDINFO_OPTIONS_BINDTOOBJECT = 0x100000,
    BINDINFO_OPTIONS_SECURITYOPTOUT = 0x200000,
    BINDINFO_OPTIONS_IGNOREMIMETEXTPLAIN = 0x400000,
    BINDINFO_OPTIONS_USEBINDSTRINGCREDS = 0x800000,
    BINDINFO_OPTIONS_IGNOREHTTPHTTPSREDIRECTS = 0x1000000,
    BINDINFO_OPTIONS_IGNORE_SSLERRORS_ONCE = 0x2000000,
    BINDINFO_WPC_DOWNLOADBLOCKED = 0x8000000,
    BINDINFO_WPC_LOGGING_ENABLED = 0x10000000,
    BINDINFO_OPTIONS_ALLOWCONNECTDATA = 0x20000000,
    BINDINFO_OPTIONS_DISABLEAUTOREDIRECTS = 0x40000000,
    BINDINFO_OPTIONS_SHDOCVW_NAVIGATE = (int)0x80000000
} BINDINFO_OPTIONS;
typedef enum __WIDL_urlmon_generated_name_00000015 {
    BSCF_FIRSTDATANOTIFICATION = 0x1,
    BSCF_INTERMEDIATEDATANOTIFICATION = 0x2,
    BSCF_LASTDATANOTIFICATION = 0x4,
    BSCF_DATAFULLYAVAILABLE = 0x8,
    BSCF_AVAILABLEDATASIZEUNKNOWN = 0x10,
    BSCF_SKIPDRAINDATAFORFILEURLS = 0x20,
    BSCF_64BITLENGTHDOWNLOAD = 0x40
} BSCF;
typedef enum tagBINDSTATUS {
    BINDSTATUS_FINDINGRESOURCE = 1,
    BINDSTATUS_CONNECTING = 2,
    BINDSTATUS_REDIRECTING = 3,
    BINDSTATUS_BEGINDOWNLOADDATA = 4,
    BINDSTATUS_DOWNLOADINGDATA = 5,
    BINDSTATUS_ENDDOWNLOADDATA = 6,
    BINDSTATUS_BEGINDOWNLOADCOMPONENTS = 7,
    BINDSTATUS_INSTALLINGCOMPONENTS = 8,
    BINDSTATUS_ENDDOWNLOADCOMPONENTS = 9,
    BINDSTATUS_USINGCACHEDCOPY = 10,
    BINDSTATUS_SENDINGREQUEST = 11,
    BINDSTATUS_CLASSIDAVAILABLE = 12,
    BINDSTATUS_MIMETYPEAVAILABLE = 13,
    BINDSTATUS_CACHEFILENAMEAVAILABLE = 14,
    BINDSTATUS_BEGINSYNCOPERATION = 15,
    BINDSTATUS_ENDSYNCOPERATION = 16,
    BINDSTATUS_BEGINUPLOADDATA = 17,
    BINDSTATUS_UPLOADINGDATA = 18,
    BINDSTATUS_ENDUPLOADDATA = 19,
    BINDSTATUS_PROTOCOLCLASSID = 20,
    BINDSTATUS_ENCODING = 21,
    BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE = 22,
    BINDSTATUS_CLASSINSTALLLOCATION = 23,
    BINDSTATUS_DECODING = 24,
    BINDSTATUS_LOADINGMIMEHANDLER = 25,
    BINDSTATUS_CONTENTDISPOSITIONATTACH = 26,
    BINDSTATUS_FILTERREPORTMIMETYPE = 27,
    BINDSTATUS_CLSIDCANINSTANTIATE = 28,
    BINDSTATUS_IUNKNOWNAVAILABLE = 29,
    BINDSTATUS_DIRECTBIND = 30,
    BINDSTATUS_RAWMIMETYPE = 31,
    BINDSTATUS_PROXYDETECTING = 32,
    BINDSTATUS_ACCEPTRANGES = 33,
    BINDSTATUS_COOKIE_SENT = 34,
    BINDSTATUS_COMPACT_POLICY_RECEIVED = 35,
    BINDSTATUS_COOKIE_SUPPRESSED = 36,
    BINDSTATUS_COOKIE_STATE_UNKNOWN = 37,
    BINDSTATUS_COOKIE_STATE_ACCEPT = 38,
    BINDSTATUS_COOKIE_STATE_REJECT = 39,
    BINDSTATUS_COOKIE_STATE_PROMPT = 40,
    BINDSTATUS_COOKIE_STATE_LEASH = 41,
    BINDSTATUS_COOKIE_STATE_DOWNGRADE = 42,
    BINDSTATUS_POLICY_HREF = 43,
    BINDSTATUS_P3P_HEADER = 44,
    BINDSTATUS_SESSION_COOKIE_RECEIVED = 45,
    BINDSTATUS_PERSISTENT_COOKIE_RECEIVED = 46,
    BINDSTATUS_SESSION_COOKIES_ALLOWED = 47,
    BINDSTATUS_CACHECONTROL = 48,
    BINDSTATUS_CONTENTDISPOSITIONFILENAME = 49,
    BINDSTATUS_MIMETEXTPLAINMISMATCH = 50,
    BINDSTATUS_PUBLISHERAVAILABLE = 51,
    BINDSTATUS_DISPLAYNAMEAVAILABLE = 52,
    BINDSTATUS_SSLUX_NAVBLOCKED = 53,
    BINDSTATUS_SERVER_MIMETYPEAVAILABLE = 54,
    BINDSTATUS_SNIFFED_CLASSIDAVAILABLE = 55,
    BINDSTATUS_64BIT_PROGRESS = 56,
    BINDSTATUS_LAST = BINDSTATUS_64BIT_PROGRESS,
    BINDSTATUS_RESERVED_0 = 57,
    BINDSTATUS_RESERVED_1 = 58,
    BINDSTATUS_RESERVED_2 = 59,
    BINDSTATUS_RESERVED_3 = 60,
    BINDSTATUS_RESERVED_4 = 61,
    BINDSTATUS_RESERVED_5 = 62,
    BINDSTATUS_RESERVED_6 = 63,
    BINDSTATUS_RESERVED_7 = 64,
    BINDSTATUS_RESERVED_8 = 65,
    BINDSTATUS_RESERVED_9 = 66,
    BINDSTATUS_LAST_PRIVATE = BINDSTATUS_RESERVED_9
} BINDSTATUS;
extern const GUID IID_IBindStatusCallback;
typedef struct IBindStatusCallbackVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IBindStatusCallback *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IBindStatusCallback *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IBindStatusCallback *This);
    HRESULT (__attribute__((__stdcall__)) *OnStartBinding)(
        IBindStatusCallback *This,
        DWORD dwReserved,
        IBinding *pib);
    HRESULT (__attribute__((__stdcall__)) *GetPriority)(
        IBindStatusCallback *This,
        LONG *pnPriority);
    HRESULT (__attribute__((__stdcall__)) *OnLowResource)(
        IBindStatusCallback *This,
        DWORD reserved);
    HRESULT (__attribute__((__stdcall__)) *OnProgress)(
        IBindStatusCallback *This,
        ULONG ulProgress,
        ULONG ulProgressMax,
        ULONG ulStatusCode,
        LPCWSTR szStatusText);
    HRESULT (__attribute__((__stdcall__)) *OnStopBinding)(
        IBindStatusCallback *This,
        HRESULT hresult,
        LPCWSTR szError);
    HRESULT (__attribute__((__stdcall__)) *GetBindInfo)(
        IBindStatusCallback *This,
        DWORD *grfBINDF,
        BINDINFO *pbindinfo);
    HRESULT (__attribute__((__stdcall__)) *OnDataAvailable)(
        IBindStatusCallback *This,
        DWORD grfBSCF,
        DWORD dwSize,
        FORMATETC *pformatetc,
        STGMEDIUM *pstgmed);
    HRESULT (__attribute__((__stdcall__)) *OnObjectAvailable)(
        IBindStatusCallback *This,
        const IID *const riid,
        IUnknown *punk);
   
} IBindStatusCallbackVtbl;
struct IBindStatusCallback {
    IBindStatusCallbackVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IBindStatusCallback_RemoteGetBindInfo_Proxy(
    IBindStatusCallback* This,
    DWORD *grfBINDF,
    RemBINDINFO *pbindinfo,
    RemSTGMEDIUM *pstgmed);
void __attribute__((__stdcall__)) IBindStatusCallback_RemoteGetBindInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IBindStatusCallback_RemoteOnDataAvailable_Proxy(
    IBindStatusCallback* This,
    DWORD grfBSCF,
    DWORD dwSize,
    RemFORMATETC *pformatetc,
    RemSTGMEDIUM *pstgmed);
void __attribute__((__stdcall__)) IBindStatusCallback_RemoteOnDataAvailable_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IBindStatusCallback_GetBindInfo_Proxy(
    IBindStatusCallback* This,
    DWORD *grfBINDF,
    BINDINFO *pbindinfo);
HRESULT __attribute__((__stdcall__)) IBindStatusCallback_GetBindInfo_Stub(
    IBindStatusCallback* This,
    DWORD *grfBINDF,
    RemBINDINFO *pbindinfo,
    RemSTGMEDIUM *pstgmed);
HRESULT __attribute__((__stdcall__)) IBindStatusCallback_OnDataAvailable_Proxy(
    IBindStatusCallback* This,
    DWORD grfBSCF,
    DWORD dwSize,
    FORMATETC *pformatetc,
    STGMEDIUM *pstgmed);
HRESULT __attribute__((__stdcall__)) IBindStatusCallback_OnDataAvailable_Stub(
    IBindStatusCallback* This,
    DWORD grfBSCF,
    DWORD dwSize,
    RemFORMATETC *pformatetc,
    RemSTGMEDIUM *pstgmed);
#define _LPBINDSTATUSCALLBACKEX_DEFINED 
#define __IBindStatusCallbackEx_INTERFACE_DEFINED__ 
typedef IBindStatusCallbackEx *LPBINDSTATUSCALLBACKEX;
typedef enum __WIDL_urlmon_generated_name_00000016 {
    BINDF2_DISABLEBASICOVERHTTP = 0x1,
    BINDF2_DISABLEAUTOCOOKIEHANDLING = 0x2,
    BINDF2_READ_DATA_GREATER_THAN_4GB = 0x4,
    BINDF2_DISABLE_HTTP_REDIRECT_XSECURITYID = 0x8,
    BINDF2_SETDOWNLOADMODE = 0x20,
    BINDF2_DISABLE_HTTP_REDIRECT_CACHING = 0x40,
    BINDF2_KEEP_CALLBACK_MODULE_LOADED = 0x80,
    BINDF2_ALLOW_PROXY_CRED_PROMPT = 0x100,
    BINDF2_RESERVED_F = 0x20000,
    BINDF2_RESERVED_E = 0x40000,
    BINDF2_RESERVED_D = 0x80000,
    BINDF2_RESERVED_C = 0x100000,
    BINDF2_RESERVED_B = 0x200000,
    BINDF2_RESERVED_A = 0x400000,
    BINDF2_RESERVED_9 = 0x800000,
    BINDF2_RESERVED_8 = 0x1000000,
    BINDF2_RESERVED_7 = 0x2000000,
    BINDF2_RESERVED_6 = 0x4000000,
    BINDF2_RESERVED_5 = 0x8000000,
    BINDF2_RESERVED_4 = 0x10000000,
    BINDF2_RESERVED_3 = 0x20000000,
    BINDF2_RESERVED_2 = 0x40000000,
    BINDF2_RESERVED_1 = 0x80000000
} BINDF2;
extern const GUID IID_IBindStatusCallbackEx;
typedef struct IBindStatusCallbackExVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IBindStatusCallbackEx *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IBindStatusCallbackEx *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IBindStatusCallbackEx *This);
    HRESULT (__attribute__((__stdcall__)) *OnStartBinding)(
        IBindStatusCallbackEx *This,
        DWORD dwReserved,
        IBinding *pib);
    HRESULT (__attribute__((__stdcall__)) *GetPriority)(
        IBindStatusCallbackEx *This,
        LONG *pnPriority);
    HRESULT (__attribute__((__stdcall__)) *OnLowResource)(
        IBindStatusCallbackEx *This,
        DWORD reserved);
    HRESULT (__attribute__((__stdcall__)) *OnProgress)(
        IBindStatusCallbackEx *This,
        ULONG ulProgress,
        ULONG ulProgressMax,
        ULONG ulStatusCode,
        LPCWSTR szStatusText);
    HRESULT (__attribute__((__stdcall__)) *OnStopBinding)(
        IBindStatusCallbackEx *This,
        HRESULT hresult,
        LPCWSTR szError);
    HRESULT (__attribute__((__stdcall__)) *GetBindInfo)(
        IBindStatusCallbackEx *This,
        DWORD *grfBINDF,
        BINDINFO *pbindinfo);
    HRESULT (__attribute__((__stdcall__)) *OnDataAvailable)(
        IBindStatusCallbackEx *This,
        DWORD grfBSCF,
        DWORD dwSize,
        FORMATETC *pformatetc,
        STGMEDIUM *pstgmed);
    HRESULT (__attribute__((__stdcall__)) *OnObjectAvailable)(
        IBindStatusCallbackEx *This,
        const IID *const riid,
        IUnknown *punk);
    HRESULT (__attribute__((__stdcall__)) *GetBindInfoEx)(
        IBindStatusCallbackEx *This,
        DWORD *grfBINDF,
        BINDINFO *pbindinfo,
        DWORD *grfBINDF2,
        DWORD *pdwReserved);
   
} IBindStatusCallbackExVtbl;
struct IBindStatusCallbackEx {
    IBindStatusCallbackExVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IBindStatusCallbackEx_RemoteGetBindInfoEx_Proxy(
    IBindStatusCallbackEx* This,
    DWORD *grfBINDF,
    RemBINDINFO *pbindinfo,
    RemSTGMEDIUM *pstgmed,
    DWORD *grfBINDF2,
    DWORD *pdwReserved);
void __attribute__((__stdcall__)) IBindStatusCallbackEx_RemoteGetBindInfoEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IBindStatusCallbackEx_GetBindInfoEx_Proxy(
    IBindStatusCallbackEx* This,
    DWORD *grfBINDF,
    BINDINFO *pbindinfo,
    DWORD *grfBINDF2,
    DWORD *pdwReserved);
HRESULT __attribute__((__stdcall__)) IBindStatusCallbackEx_GetBindInfoEx_Stub(
    IBindStatusCallbackEx* This,
    DWORD *grfBINDF,
    RemBINDINFO *pbindinfo,
    RemSTGMEDIUM *pstgmed,
    DWORD *grfBINDF2,
    DWORD *pdwReserved);
#define _LPAUTHENTICATION_DEFINED 
#define __IAuthenticate_INTERFACE_DEFINED__ 
typedef IAuthenticate *LPAUTHENTICATION;
extern const GUID IID_IAuthenticate;
typedef struct IAuthenticateVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IAuthenticate *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IAuthenticate *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IAuthenticate *This);
    HRESULT (__attribute__((__stdcall__)) *Authenticate)(
        IAuthenticate *This,
        HWND *phwnd,
        LPWSTR *pszUsername,
        LPWSTR *pszPassword);
   
} IAuthenticateVtbl;
struct IAuthenticate {
    IAuthenticateVtbl* lpVtbl;
};
#define _LPAUTHENTICATIONEX_DEFINED 
#define __IAuthenticateEx_INTERFACE_DEFINED__ 
typedef IAuthenticateEx *LPAUTHENTICATIONEX;
typedef enum __WIDL_urlmon_generated_name_00000017 {
    AUTHENTICATEF_PROXY = 0x1,
    AUTHENTICATEF_BASIC = 0x2,
    AUTHENTICATEF_HTTP = 0x4
} AUTHENTICATEF;
typedef struct _tagAUTHENTICATEINFO {
    DWORD dwFlags;
    DWORD dwReserved;
} AUTHENTICATEINFO;
extern const GUID IID_IAuthenticateEx;
typedef struct IAuthenticateExVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IAuthenticateEx *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IAuthenticateEx *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IAuthenticateEx *This);
    HRESULT (__attribute__((__stdcall__)) *Authenticate)(
        IAuthenticateEx *This,
        HWND *phwnd,
        LPWSTR *pszUsername,
        LPWSTR *pszPassword);
    HRESULT (__attribute__((__stdcall__)) *AuthenticateEx)(
        IAuthenticateEx *This,
        HWND *phwnd,
        LPWSTR *pszUsername,
        LPWSTR *pszPassword,
        AUTHENTICATEINFO *pauthinfo);
   
} IAuthenticateExVtbl;
struct IAuthenticateEx {
    IAuthenticateExVtbl* lpVtbl;
};
#define _LPHTTPNEGOTIATE_DEFINED 
#define __IHttpNegotiate_INTERFACE_DEFINED__ 
typedef IHttpNegotiate *LPHTTPNEGOTIATE;
extern const GUID IID_IHttpNegotiate;
typedef struct IHttpNegotiateVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IHttpNegotiate *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IHttpNegotiate *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IHttpNegotiate *This);
    HRESULT (__attribute__((__stdcall__)) *BeginningTransaction)(
        IHttpNegotiate *This,
        LPCWSTR szURL,
        LPCWSTR szHeaders,
        DWORD dwReserved,
        LPWSTR *pszAdditionalHeaders);
    HRESULT (__attribute__((__stdcall__)) *OnResponse)(
        IHttpNegotiate *This,
        DWORD dwResponseCode,
        LPCWSTR szResponseHeaders,
        LPCWSTR szRequestHeaders,
        LPWSTR *pszAdditionalRequestHeaders);
   
} IHttpNegotiateVtbl;
struct IHttpNegotiate {
    IHttpNegotiateVtbl* lpVtbl;
};
#define _LPHTTPNEGOTIATE2_DEFINED 
#define __IHttpNegotiate2_INTERFACE_DEFINED__ 
typedef IHttpNegotiate2 *LPHTTPNEGOTIATE2;
extern const GUID IID_IHttpNegotiate2;
typedef struct IHttpNegotiate2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IHttpNegotiate2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IHttpNegotiate2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IHttpNegotiate2 *This);
    HRESULT (__attribute__((__stdcall__)) *BeginningTransaction)(
        IHttpNegotiate2 *This,
        LPCWSTR szURL,
        LPCWSTR szHeaders,
        DWORD dwReserved,
        LPWSTR *pszAdditionalHeaders);
    HRESULT (__attribute__((__stdcall__)) *OnResponse)(
        IHttpNegotiate2 *This,
        DWORD dwResponseCode,
        LPCWSTR szResponseHeaders,
        LPCWSTR szRequestHeaders,
        LPWSTR *pszAdditionalRequestHeaders);
    HRESULT (__attribute__((__stdcall__)) *GetRootSecurityId)(
        IHttpNegotiate2 *This,
        BYTE *pbSecurityId,
        DWORD *pcbSecurityId,
        DWORD_PTR dwReserved);
   
} IHttpNegotiate2Vtbl;
struct IHttpNegotiate2 {
    IHttpNegotiate2Vtbl* lpVtbl;
};
#define _LPHTTPNEGOTIATE3_DEFINED 
#define __IHttpNegotiate3_INTERFACE_DEFINED__ 
typedef IHttpNegotiate3 *LPHTTPNEGOTIATE3;
extern const GUID IID_IHttpNegotiate3;
typedef struct IHttpNegotiate3Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IHttpNegotiate3 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IHttpNegotiate3 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IHttpNegotiate3 *This);
    HRESULT (__attribute__((__stdcall__)) *BeginningTransaction)(
        IHttpNegotiate3 *This,
        LPCWSTR szURL,
        LPCWSTR szHeaders,
        DWORD dwReserved,
        LPWSTR *pszAdditionalHeaders);
    HRESULT (__attribute__((__stdcall__)) *OnResponse)(
        IHttpNegotiate3 *This,
        DWORD dwResponseCode,
        LPCWSTR szResponseHeaders,
        LPCWSTR szRequestHeaders,
        LPWSTR *pszAdditionalRequestHeaders);
    HRESULT (__attribute__((__stdcall__)) *GetRootSecurityId)(
        IHttpNegotiate3 *This,
        BYTE *pbSecurityId,
        DWORD *pcbSecurityId,
        DWORD_PTR dwReserved);
    HRESULT (__attribute__((__stdcall__)) *GetSerializedClientCertContext)(
        IHttpNegotiate3 *This,
        BYTE **ppbCert,
        DWORD *pcbCert);
   
} IHttpNegotiate3Vtbl;
struct IHttpNegotiate3 {
    IHttpNegotiate3Vtbl* lpVtbl;
};
#define _LPWININETFILESTREAM_DEFINED 
#define __IWinInetFileStream_INTERFACE_DEFINED__ 
typedef IWinInetFileStream *LPWININETFILESTREAM;
extern const GUID IID_IWinInetFileStream;
typedef struct IWinInetFileStreamVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IWinInetFileStream *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IWinInetFileStream *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IWinInetFileStream *This);
    HRESULT (__attribute__((__stdcall__)) *SetHandleForUnlock)(
        IWinInetFileStream *This,
        DWORD_PTR hWinInetLockHandle,
        DWORD_PTR dwReserved);
    HRESULT (__attribute__((__stdcall__)) *SetDeleteFile)(
        IWinInetFileStream *This,
        DWORD_PTR dwReserved);
   
} IWinInetFileStreamVtbl;
struct IWinInetFileStream {
    IWinInetFileStreamVtbl* lpVtbl;
};
#define _LPWINDOWFORBINDINGUI_DEFINED 
#define __IWindowForBindingUI_INTERFACE_DEFINED__ 
typedef IWindowForBindingUI *LPWINDOWFORBINDINGUI;
extern const GUID IID_IWindowForBindingUI;
typedef struct IWindowForBindingUIVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IWindowForBindingUI *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IWindowForBindingUI *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IWindowForBindingUI *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindow)(
        IWindowForBindingUI *This,
        const GUID *const rguidReason,
        HWND *phwnd);
   
} IWindowForBindingUIVtbl;
struct IWindowForBindingUI {
    IWindowForBindingUIVtbl* lpVtbl;
};
#define _LPCODEINSTALL_DEFINED 
#define __ICodeInstall_INTERFACE_DEFINED__ 
typedef ICodeInstall *LPCODEINSTALL;
typedef enum __WIDL_urlmon_generated_name_00000018 {
    CIP_DISK_FULL = 0,
    CIP_ACCESS_DENIED = 1,
    CIP_NEWER_VERSION_EXISTS = 2,
    CIP_OLDER_VERSION_EXISTS = 3,
    CIP_NAME_CONFLICT = 4,
    CIP_TRUST_VERIFICATION_COMPONENT_MISSING = 5,
    CIP_EXE_SELF_REGISTERATION_TIMEOUT = 6,
    CIP_UNSAFE_TO_ABORT = 7,
    CIP_NEED_REBOOT = 8,
    CIP_NEED_REBOOT_UI_PERMISSION = 9
} CIP_STATUS;
extern const GUID IID_ICodeInstall;
typedef struct ICodeInstallVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ICodeInstall *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ICodeInstall *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ICodeInstall *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindow)(
        ICodeInstall *This,
        const GUID *const rguidReason,
        HWND *phwnd);
    HRESULT (__attribute__((__stdcall__)) *OnCodeInstallProblem)(
        ICodeInstall *This,
        ULONG ulStatusCode,
        LPCWSTR szDestination,
        LPCWSTR szSource,
        DWORD dwReserved);
   
} ICodeInstallVtbl;
struct ICodeInstall {
    ICodeInstallVtbl* lpVtbl;
};
#define _LPUri_DEFINED 
#define __IUri_INTERFACE_DEFINED__ 
typedef enum __WIDL_urlmon_generated_name_00000019 {
    Uri_PROPERTY_ABSOLUTE_URI = 0,
    Uri_PROPERTY_STRING_START = Uri_PROPERTY_ABSOLUTE_URI,
    Uri_PROPERTY_AUTHORITY = 1,
    Uri_PROPERTY_DISPLAY_URI = 2,
    Uri_PROPERTY_DOMAIN = 3,
    Uri_PROPERTY_EXTENSION = 4,
    Uri_PROPERTY_FRAGMENT = 5,
    Uri_PROPERTY_HOST = 6,
    Uri_PROPERTY_PASSWORD = 7,
    Uri_PROPERTY_PATH = 8,
    Uri_PROPERTY_PATH_AND_QUERY = 9,
    Uri_PROPERTY_QUERY = 10,
    Uri_PROPERTY_RAW_URI = 11,
    Uri_PROPERTY_SCHEME_NAME = 12,
    Uri_PROPERTY_USER_INFO = 13,
    Uri_PROPERTY_USER_NAME = 14,
    Uri_PROPERTY_STRING_LAST = Uri_PROPERTY_USER_NAME,
    Uri_PROPERTY_HOST_TYPE = 15,
    Uri_PROPERTY_DWORD_START = Uri_PROPERTY_HOST_TYPE,
    Uri_PROPERTY_PORT = 16,
    Uri_PROPERTY_SCHEME = 17,
    Uri_PROPERTY_ZONE = 18,
    Uri_PROPERTY_DWORD_LAST = Uri_PROPERTY_ZONE
} Uri_PROPERTY;
typedef enum __WIDL_urlmon_generated_name_0000001A {
    Uri_HOST_UNKNOWN = 0,
    Uri_HOST_DNS = 1,
    Uri_HOST_IPV4 = 2,
    Uri_HOST_IPV6 = 3,
    Uri_HOST_IDN = 4
} Uri_HOST_TYPE;
extern const GUID IID_IUri;
typedef struct IUriVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IUri *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IUri *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IUri *This);
    HRESULT (__attribute__((__stdcall__)) *GetPropertyBSTR)(
        IUri *This,
        Uri_PROPERTY uriProp,
        BSTR *pbstrProperty,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *GetPropertyLength)(
        IUri *This,
        Uri_PROPERTY uriProp,
        DWORD *pcchProperty,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *GetPropertyDWORD)(
        IUri *This,
        Uri_PROPERTY uriProp,
        DWORD *pdwProperty,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *HasProperty)(
        IUri *This,
        Uri_PROPERTY uriProp,
        WINBOOL *pfHasProperty);
    HRESULT (__attribute__((__stdcall__)) *GetAbsoluteUri)(
        IUri *This,
        BSTR *pbstrAbsoluteUri);
    HRESULT (__attribute__((__stdcall__)) *GetAuthority)(
        IUri *This,
        BSTR *pbstrAuthority);
    HRESULT (__attribute__((__stdcall__)) *GetDisplayUri)(
        IUri *This,
        BSTR *pbstrDisplayString);
    HRESULT (__attribute__((__stdcall__)) *GetDomain)(
        IUri *This,
        BSTR *pbstrDomain);
    HRESULT (__attribute__((__stdcall__)) *GetExtension)(
        IUri *This,
        BSTR *pbstrExtension);
    HRESULT (__attribute__((__stdcall__)) *GetFragment)(
        IUri *This,
        BSTR *pbstrFragment);
    HRESULT (__attribute__((__stdcall__)) *GetHost)(
        IUri *This,
        BSTR *pbstrHost);
    HRESULT (__attribute__((__stdcall__)) *GetPassword)(
        IUri *This,
        BSTR *pbstrPassword);
    HRESULT (__attribute__((__stdcall__)) *GetPath)(
        IUri *This,
        BSTR *pbstrPath);
    HRESULT (__attribute__((__stdcall__)) *GetPathAndQuery)(
        IUri *This,
        BSTR *pbstrPathAndQuery);
    HRESULT (__attribute__((__stdcall__)) *GetQuery)(
        IUri *This,
        BSTR *pbstrQuery);
    HRESULT (__attribute__((__stdcall__)) *GetRawUri)(
        IUri *This,
        BSTR *pbstrRawUri);
    HRESULT (__attribute__((__stdcall__)) *GetSchemeName)(
        IUri *This,
        BSTR *pbstrSchemeName);
    HRESULT (__attribute__((__stdcall__)) *GetUserInfo)(
        IUri *This,
        BSTR *pbstrUserInfo);
    HRESULT (__attribute__((__stdcall__)) *GetUserNameA)(
        IUri *This,
        BSTR *pbstrUserName);
    HRESULT (__attribute__((__stdcall__)) *GetHostType)(
        IUri *This,
        DWORD *pdwHostType);
    HRESULT (__attribute__((__stdcall__)) *GetPort)(
        IUri *This,
        DWORD *pdwPort);
    HRESULT (__attribute__((__stdcall__)) *GetScheme)(
        IUri *This,
        DWORD *pdwScheme);
    HRESULT (__attribute__((__stdcall__)) *GetZone)(
        IUri *This,
        DWORD *pdwZone);
    HRESULT (__attribute__((__stdcall__)) *GetProperties)(
        IUri *This,
        LPDWORD pdwFlags);
    HRESULT (__attribute__((__stdcall__)) *IsEqual)(
        IUri *This,
        IUri *pUri,
        WINBOOL *pfEqual);
   
} IUriVtbl;
struct IUri {
    IUriVtbl* lpVtbl;
};
extern HRESULT __attribute__((__stdcall__)) CreateUri(LPCWSTR pwzURI, DWORD dwFlags, DWORD_PTR dwReserved, IUri **ppURI);
extern HRESULT __attribute__((__stdcall__)) CreateUriWithFragment(
LPCWSTR pwzURI, LPCWSTR pwzFragment, DWORD dwFlags, DWORD_PTR dwReserved, IUri **ppURI);
extern HRESULT __attribute__((__stdcall__)) CreateUriFromMultiByteString(LPCSTR pszANSIInputUri, DWORD dwEncodingFlags, DWORD dwCodePage, DWORD dwCreateFlags, DWORD_PTR dwReserved, IUri **ppUri);
#define Uri_HAS_ABSOLUTE_URI (1 << Uri_PROPERTY_ABSOLUTE_URI)
#define Uri_HAS_AUTHORITY (1 << Uri_PROPERTY_AUTHORITY)
#define Uri_HAS_DISPLAY_URI (1 << Uri_PROPERTY_DISPLAY_URI)
#define Uri_HAS_DOMAIN (1 << Uri_PROPERTY_DOMAIN)
#define Uri_HAS_EXTENSION (1 << Uri_PROPERTY_EXTENSION)
#define Uri_HAS_FRAGMENT (1 << Uri_PROPERTY_FRAGMENT)
#define Uri_HAS_HOST (1 << Uri_PROPERTY_HOST)
#define Uri_HAS_PASSWORD (1 << Uri_PROPERTY_PASSWORD)
#define Uri_HAS_PATH (1 << Uri_PROPERTY_PATH)
#define Uri_HAS_QUERY (1 << Uri_PROPERTY_QUERY)
#define Uri_HAS_RAW_URI (1 << Uri_PROPERTY_RAW_URI)
#define Uri_HAS_SCHEME_NAME (1 << Uri_PROPERTY_SCHEME_NAME)
#define Uri_HAS_USER_NAME (1 << Uri_PROPERTY_USER_NAME)
#define Uri_HAS_PATH_AND_QUERY (1 << Uri_PROPERTY_PATH_AND_QUERY)
#define Uri_HAS_USER_INFO (1 << Uri_PROPERTY_USER_INFO)
#define Uri_HAS_HOST_TYPE (1 << Uri_PROPERTY_HOST_TYPE)
#define Uri_HAS_PORT (1 << Uri_PROPERTY_PORT)
#define Uri_HAS_SCHEME (1 << Uri_PROPERTY_SCHEME)
#define Uri_HAS_ZONE (1 << Uri_PROPERTY_ZONE)
#define Uri_CREATE_ALLOW_RELATIVE 0x1
#define Uri_CREATE_ALLOW_IMPLICIT_WILDCARD_SCHEME 0x2
#define Uri_CREATE_ALLOW_IMPLICIT_FILE_SCHEME 0x4
#define Uri_CREATE_NOFRAG 0x8
#define Uri_CREATE_NO_CANONICALIZE 0x10
#define Uri_CREATE_CANONICALIZE 0x100
#define Uri_CREATE_FILE_USE_DOS_PATH 0x20
#define Uri_CREATE_DECODE_EXTRA_INFO 0x40
#define Uri_CREATE_NO_DECODE_EXTRA_INFO 0x80
#define Uri_CREATE_CRACK_UNKNOWN_SCHEMES 0x200
#define Uri_CREATE_NO_CRACK_UNKNOWN_SCHEMES 0x400
#define Uri_CREATE_PRE_PROCESS_HTML_URI 0x800
#define Uri_CREATE_NO_PRE_PROCESS_HTML_URI 0x1000
#define Uri_CREATE_IE_SETTINGS 0x2000
#define Uri_CREATE_NO_IE_SETTINGS 0x4000
#define Uri_CREATE_NO_ENCODE_FORBIDDEN_CHARACTERS 0x8000
#define Uri_CREATE_NORMALIZE_INTL_CHARACTERS 0x10000
#define Uri_CREATE_CANONICALIZE_ABSOLUTE 0x20000
#define Uri_DISPLAY_NO_FRAGMENT 0x1
#define Uri_PUNYCODE_IDN_HOST 0x2
#define Uri_DISPLAY_IDN_HOST 0x4
#define Uri_DISPLAY_NO_PUNYCODE 0x8
#define Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8 0x1
#define Uri_ENCODING_USER_INFO_AND_PATH_IS_CP 0x2
#define Uri_ENCODING_HOST_IS_IDN 0x4
#define Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8 0x8
#define Uri_ENCODING_HOST_IS_PERCENT_ENCODED_CP 0x10
#define Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8 0x20
#define Uri_ENCODING_QUERY_AND_FRAGMENT_IS_CP 0x40
#define Uri_ENCODING_RFC (Uri_ENCODING_USER_INFO_AND_PATH_IS_PERCENT_ENCODED_UTF8 | Uri_ENCODING_HOST_IS_PERCENT_ENCODED_UTF8 | Uri_ENCODING_QUERY_AND_FRAGMENT_IS_PERCENT_ENCODED_UTF8)
#define UriBuilder_USE_ORIGINAL_FLAGS 0x1
#define __IUriContainer_INTERFACE_DEFINED__ 
extern const GUID IID_IUriContainer;
typedef struct IUriContainerVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IUriContainer *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IUriContainer *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IUriContainer *This);
    HRESULT (__attribute__((__stdcall__)) *GetIUri)(
        IUriContainer *This,
        IUri **ppIUri);
   
} IUriContainerVtbl;
struct IUriContainer {
    IUriContainerVtbl* lpVtbl;
};
#define __IUriBuilder_INTERFACE_DEFINED__ 
extern const GUID IID_IUriBuilder;
typedef struct IUriBuilderVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IUriBuilder *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IUriBuilder *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IUriBuilder *This);
    HRESULT (__attribute__((__stdcall__)) *CreateUriSimple)(
        IUriBuilder *This,
        DWORD dwAllowEncodingPropertyMask,
        DWORD_PTR dwReserved,
        IUri **ppIUri);
    HRESULT (__attribute__((__stdcall__)) *CreateUri)(
        IUriBuilder *This,
        DWORD dwCreateFlags,
        DWORD dwAllowEncodingPropertyMask,
        DWORD_PTR dwReserved,
        IUri **ppIUri);
    HRESULT (__attribute__((__stdcall__)) *CreateUriWithFlags)(
        IUriBuilder *This,
        DWORD dwCreateFlags,
        DWORD dwUriBuilderFlags,
        DWORD dwAllowEncodingPropertyMask,
        DWORD_PTR dwReserved,
        IUri **ppIUri);
    HRESULT (__attribute__((__stdcall__)) *GetIUri)(
        IUriBuilder *This,
        IUri **ppIUri);
    HRESULT (__attribute__((__stdcall__)) *SetIUri)(
        IUriBuilder *This,
        IUri *pIUri);
    HRESULT (__attribute__((__stdcall__)) *GetFragment)(
        IUriBuilder *This,
        DWORD *pcchFragment,
        LPCWSTR *ppwzFragment);
    HRESULT (__attribute__((__stdcall__)) *GetHost)(
        IUriBuilder *This,
        DWORD *pcchHost,
        LPCWSTR *ppwzHost);
    HRESULT (__attribute__((__stdcall__)) *GetPassword)(
        IUriBuilder *This,
        DWORD *pcchPassword,
        LPCWSTR *ppwzPassword);
    HRESULT (__attribute__((__stdcall__)) *GetPath)(
        IUriBuilder *This,
        DWORD *pcchPath,
        LPCWSTR *ppwzPath);
    HRESULT (__attribute__((__stdcall__)) *GetPort)(
        IUriBuilder *This,
        WINBOOL *pfHasPort,
        DWORD *pdwPort);
    HRESULT (__attribute__((__stdcall__)) *GetQuery)(
        IUriBuilder *This,
        DWORD *pcchQuery,
        LPCWSTR *ppwzQuery);
    HRESULT (__attribute__((__stdcall__)) *GetSchemeName)(
        IUriBuilder *This,
        DWORD *pcchSchemeName,
        LPCWSTR *ppwzSchemeName);
    HRESULT (__attribute__((__stdcall__)) *GetUserNameA)(
        IUriBuilder *This,
        DWORD *pcchUserName,
        LPCWSTR *ppwzUserName);
    HRESULT (__attribute__((__stdcall__)) *SetFragment)(
        IUriBuilder *This,
        LPCWSTR pwzNewValue);
    HRESULT (__attribute__((__stdcall__)) *SetHost)(
        IUriBuilder *This,
        LPCWSTR pwzNewValue);
    HRESULT (__attribute__((__stdcall__)) *SetPassword)(
        IUriBuilder *This,
        LPCWSTR pwzNewValue);
    HRESULT (__attribute__((__stdcall__)) *SetPath)(
        IUriBuilder *This,
        LPCWSTR pwzNewValue);
    HRESULT (__attribute__((__stdcall__)) *SetPort)(
        IUriBuilder *This,
        WINBOOL fHasPort,
        DWORD dwNewValue);
    HRESULT (__attribute__((__stdcall__)) *SetQuery)(
        IUriBuilder *This,
        LPCWSTR pwzNewValue);
    HRESULT (__attribute__((__stdcall__)) *SetSchemeName)(
        IUriBuilder *This,
        LPCWSTR pwzNewValue);
    HRESULT (__attribute__((__stdcall__)) *SetUserName)(
        IUriBuilder *This,
        LPCWSTR pwzNewValue);
    HRESULT (__attribute__((__stdcall__)) *RemoveProperties)(
        IUriBuilder *This,
        DWORD dwPropertyMask);
    HRESULT (__attribute__((__stdcall__)) *HasBeenModified)(
        IUriBuilder *This,
        WINBOOL *pfModified);
   
} IUriBuilderVtbl;
struct IUriBuilder {
    IUriBuilderVtbl* lpVtbl;
};
#define __IUriBuilderFactory_INTERFACE_DEFINED__ 
extern const GUID IID_IUriBuilderFactory;
typedef struct IUriBuilderFactoryVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IUriBuilderFactory *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IUriBuilderFactory *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IUriBuilderFactory *This);
    HRESULT (__attribute__((__stdcall__)) *CreateIUriBuilder)(
        IUriBuilderFactory *This,
        DWORD dwFlags,
        DWORD_PTR dwReserved,
        IUriBuilder **ppIUriBuilder);
    HRESULT (__attribute__((__stdcall__)) *CreateInitializedIUriBuilder)(
        IUriBuilderFactory *This,
        DWORD dwFlags,
        DWORD_PTR dwReserved,
        IUriBuilder **ppIUriBuilder);
   
} IUriBuilderFactoryVtbl;
struct IUriBuilderFactory {
    IUriBuilderFactoryVtbl* lpVtbl;
};
extern HRESULT __attribute__((__stdcall__)) CreateIUriBuilder(IUri *pIUri, DWORD dwFlags, DWORD_PTR dwReserved, IUriBuilder **ppIUriBuilder);
#define _LPWININETINFO_DEFINED 
#define __IWinInetInfo_INTERFACE_DEFINED__ 
typedef IWinInetInfo *LPWININETINFO;
extern const GUID IID_IWinInetInfo;
typedef struct IWinInetInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IWinInetInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IWinInetInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IWinInetInfo *This);
    HRESULT (__attribute__((__stdcall__)) *QueryOption)(
        IWinInetInfo *This,
        DWORD dwOption,
        LPVOID pBuffer,
        DWORD *pcbBuf);
   
} IWinInetInfoVtbl;
struct IWinInetInfo {
    IWinInetInfoVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IWinInetInfo_RemoteQueryOption_Proxy(
    IWinInetInfo* This,
    DWORD dwOption,
    BYTE *pBuffer,
    DWORD *pcbBuf);
void __attribute__((__stdcall__)) IWinInetInfo_RemoteQueryOption_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IWinInetInfo_QueryOption_Proxy(
    IWinInetInfo* This,
    DWORD dwOption,
    LPVOID pBuffer,
    DWORD *pcbBuf);
HRESULT __attribute__((__stdcall__)) IWinInetInfo_QueryOption_Stub(
    IWinInetInfo* This,
    DWORD dwOption,
    BYTE *pBuffer,
    DWORD *pcbBuf);
#define WININETINFO_OPTION_LOCK_HANDLE 65534
#define _LPHTTPSECURITY_DEFINED 
#define __IHttpSecurity_INTERFACE_DEFINED__ 
typedef IHttpSecurity *LPHTTPSECURITY;
extern const GUID IID_IHttpSecurity;
typedef struct IHttpSecurityVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IHttpSecurity *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IHttpSecurity *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IHttpSecurity *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindow)(
        IHttpSecurity *This,
        const GUID *const rguidReason,
        HWND *phwnd);
    HRESULT (__attribute__((__stdcall__)) *OnSecurityProblem)(
        IHttpSecurity *This,
        DWORD dwProblem);
   
} IHttpSecurityVtbl;
struct IHttpSecurity {
    IHttpSecurityVtbl* lpVtbl;
};
#define _LPWININETHTTPINFO_DEFINED 
#define __IWinInetHttpInfo_INTERFACE_DEFINED__ 
typedef IWinInetHttpInfo *LPWININETHTTPINFO;
extern const GUID IID_IWinInetHttpInfo;
typedef struct IWinInetHttpInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IWinInetHttpInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IWinInetHttpInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IWinInetHttpInfo *This);
    HRESULT (__attribute__((__stdcall__)) *QueryOption)(
        IWinInetHttpInfo *This,
        DWORD dwOption,
        LPVOID pBuffer,
        DWORD *pcbBuf);
    HRESULT (__attribute__((__stdcall__)) *QueryInfo)(
        IWinInetHttpInfo *This,
        DWORD dwOption,
        LPVOID pBuffer,
        DWORD *pcbBuf,
        DWORD *pdwFlags,
        DWORD *pdwReserved);
   
} IWinInetHttpInfoVtbl;
struct IWinInetHttpInfo {
    IWinInetHttpInfoVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IWinInetHttpInfo_RemoteQueryInfo_Proxy(
    IWinInetHttpInfo* This,
    DWORD dwOption,
    BYTE *pBuffer,
    DWORD *pcbBuf,
    DWORD *pdwFlags,
    DWORD *pdwReserved);
void __attribute__((__stdcall__)) IWinInetHttpInfo_RemoteQueryInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IWinInetHttpInfo_QueryInfo_Proxy(
    IWinInetHttpInfo* This,
    DWORD dwOption,
    LPVOID pBuffer,
    DWORD *pcbBuf,
    DWORD *pdwFlags,
    DWORD *pdwReserved);
HRESULT __attribute__((__stdcall__)) IWinInetHttpInfo_QueryInfo_Stub(
    IWinInetHttpInfo* This,
    DWORD dwOption,
    BYTE *pBuffer,
    DWORD *pcbBuf,
    DWORD *pdwFlags,
    DWORD *pdwReserved);
#define _LPWININETHTTPTIMEOUTS_DEFINED 
#define __IWinInetHttpTimeouts_INTERFACE_DEFINED__ 
extern const GUID IID_IWinInetHttpTimeouts;
typedef struct IWinInetHttpTimeoutsVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IWinInetHttpTimeouts *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IWinInetHttpTimeouts *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IWinInetHttpTimeouts *This);
    HRESULT (__attribute__((__stdcall__)) *GetRequestTimeouts)(
        IWinInetHttpTimeouts *This,
        DWORD *pdwConnectTimeout,
        DWORD *pdwSendTimeout,
        DWORD *pdwReceiveTimeout);
   
} IWinInetHttpTimeoutsVtbl;
struct IWinInetHttpTimeouts {
    IWinInetHttpTimeoutsVtbl* lpVtbl;
};
#define _LPWININETCACHEHINTS_DEFINED 
#define __IWinInetCacheHints_INTERFACE_DEFINED__ 
typedef IWinInetCacheHints *LPWININETCACHEHINTS;
extern const GUID IID_IWinInetCacheHints;
typedef struct IWinInetCacheHintsVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IWinInetCacheHints *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IWinInetCacheHints *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IWinInetCacheHints *This);
    HRESULT (__attribute__((__stdcall__)) *SetCacheExtension)(
        IWinInetCacheHints *This,
        LPCWSTR pwzExt,
        LPVOID pszCacheFile,
        DWORD *pcbCacheFile,
        DWORD *pdwWinInetError,
        DWORD *pdwReserved);
   
} IWinInetCacheHintsVtbl;
struct IWinInetCacheHints {
    IWinInetCacheHintsVtbl* lpVtbl;
};
#define _LPWININETCACHEHINTS2_DEFINED 
#define __IWinInetCacheHints2_INTERFACE_DEFINED__ 
typedef IWinInetCacheHints2 *LPWININETCACHEHINTS2;
extern const GUID IID_IWinInetCacheHints2;
typedef struct IWinInetCacheHints2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IWinInetCacheHints2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IWinInetCacheHints2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IWinInetCacheHints2 *This);
    HRESULT (__attribute__((__stdcall__)) *SetCacheExtension)(
        IWinInetCacheHints2 *This,
        LPCWSTR pwzExt,
        LPVOID pszCacheFile,
        DWORD *pcbCacheFile,
        DWORD *pdwWinInetError,
        DWORD *pdwReserved);
    HRESULT (__attribute__((__stdcall__)) *SetCacheExtension2)(
        IWinInetCacheHints2 *This,
        LPCWSTR pwzExt,
        WCHAR *pwzCacheFile,
        DWORD *pcchCacheFile,
        DWORD *pdwWinInetError,
        DWORD *pdwReserved);
   
} IWinInetCacheHints2Vtbl;
struct IWinInetCacheHints2 {
    IWinInetCacheHints2Vtbl* lpVtbl;
};
#define SID_IBindHost IID_IBindHost
#define SID_SBindHost IID_IBindHost
#define _LPBINDHOST_DEFINED 
extern const GUID SID_BindHost;
#define __IBindHost_INTERFACE_DEFINED__ 
typedef IBindHost *LPBINDHOST;
extern const GUID IID_IBindHost;
typedef struct IBindHostVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IBindHost *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IBindHost *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IBindHost *This);
    HRESULT (__attribute__((__stdcall__)) *CreateMoniker)(
        IBindHost *This,
        LPOLESTR szName,
        IBindCtx *pBC,
        IMoniker **ppmk,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *MonikerBindToStorage)(
        IBindHost *This,
        IMoniker *pMk,
        IBindCtx *pBC,
        IBindStatusCallback *pBSC,
        const IID *const riid,
        void **ppvObj);
    HRESULT (__attribute__((__stdcall__)) *MonikerBindToObject)(
        IBindHost *This,
        IMoniker *pMk,
        IBindCtx *pBC,
        IBindStatusCallback *pBSC,
        const IID *const riid,
        void **ppvObj);
   
} IBindHostVtbl;
struct IBindHost {
    IBindHostVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IBindHost_RemoteMonikerBindToStorage_Proxy(
    IBindHost* This,
    IMoniker *pMk,
    IBindCtx *pBC,
    IBindStatusCallback *pBSC,
    const IID *const riid,
    IUnknown **ppvObj);
void __attribute__((__stdcall__)) IBindHost_RemoteMonikerBindToStorage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IBindHost_RemoteMonikerBindToObject_Proxy(
    IBindHost* This,
    IMoniker *pMk,
    IBindCtx *pBC,
    IBindStatusCallback *pBSC,
    const IID *const riid,
    IUnknown **ppvObj);
void __attribute__((__stdcall__)) IBindHost_RemoteMonikerBindToObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IBindHost_MonikerBindToStorage_Proxy(
    IBindHost* This,
    IMoniker *pMk,
    IBindCtx *pBC,
    IBindStatusCallback *pBSC,
    const IID *const riid,
    void **ppvObj);
HRESULT __attribute__((__stdcall__)) IBindHost_MonikerBindToStorage_Stub(
    IBindHost* This,
    IMoniker *pMk,
    IBindCtx *pBC,
    IBindStatusCallback *pBSC,
    const IID *const riid,
    IUnknown **ppvObj);
HRESULT __attribute__((__stdcall__)) IBindHost_MonikerBindToObject_Proxy(
    IBindHost* This,
    IMoniker *pMk,
    IBindCtx *pBC,
    IBindStatusCallback *pBSC,
    const IID *const riid,
    void **ppvObj);
HRESULT __attribute__((__stdcall__)) IBindHost_MonikerBindToObject_Stub(
    IBindHost* This,
    IMoniker *pMk,
    IBindCtx *pBC,
    IBindStatusCallback *pBSC,
    const IID *const riid,
    IUnknown **ppvObj);
#define URLOSTRM_USECACHEDCOPY_ONLY 0x1
#define URLOSTRM_USECACHEDCOPY 0x2
#define URLOSTRM_GETNEWESTVERSION 0x3
struct IBindStatusCallback;
extern HRESULT __attribute__((__stdcall__)) HlinkSimpleNavigateToString(LPCWSTR szTarget, LPCWSTR szLocation, LPCWSTR szTargetFrameName, IUnknown *pUnk, IBindCtx *pbc, IBindStatusCallback *, DWORD grfHLNF, DWORD dwReserved);
extern HRESULT __attribute__((__stdcall__)) HlinkSimpleNavigateToMoniker(IMoniker *pmkTarget, LPCWSTR szLocation, LPCWSTR szTargetFrameName, IUnknown *pUnk, IBindCtx *pbc, IBindStatusCallback *, DWORD grfHLNF, DWORD dwReserved);
extern HRESULT __attribute__((__stdcall__)) URLOpenStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
extern HRESULT __attribute__((__stdcall__)) URLOpenStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
extern HRESULT __attribute__((__stdcall__)) URLOpenPullStreamA(LPUNKNOWN,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
extern HRESULT __attribute__((__stdcall__)) URLOpenPullStreamW(LPUNKNOWN,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
extern HRESULT __attribute__((__stdcall__)) URLDownloadToFileA(LPUNKNOWN,LPCSTR,LPCSTR,DWORD,LPBINDSTATUSCALLBACK);
extern HRESULT __attribute__((__stdcall__)) URLDownloadToFileW(LPUNKNOWN,LPCWSTR,LPCWSTR,DWORD,LPBINDSTATUSCALLBACK);
extern HRESULT __attribute__((__stdcall__)) URLDownloadToCacheFileA(LPUNKNOWN, LPCSTR, LPSTR, DWORD, DWORD, LPBINDSTATUSCALLBACK);
extern HRESULT __attribute__((__stdcall__)) URLDownloadToCacheFileW(LPUNKNOWN, LPCWSTR, LPWSTR, DWORD, DWORD, LPBINDSTATUSCALLBACK);
extern HRESULT __attribute__((__stdcall__)) URLOpenBlockingStreamA(LPUNKNOWN,LPCSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);
extern HRESULT __attribute__((__stdcall__)) URLOpenBlockingStreamW(LPUNKNOWN,LPCWSTR,LPSTREAM*,DWORD,LPBINDSTATUSCALLBACK);
#define URLOpenStream __MINGW_NAME_AW(URLOpenStream)
#define URLOpenPullStream __MINGW_NAME_AW(URLOpenPullStream)
#define URLDownloadToFile __MINGW_NAME_AW(URLDownloadToFile)
#define URLDownloadToCacheFile __MINGW_NAME_AW(URLDownloadToCacheFile)
#define URLOpenBlockingStream __MINGW_NAME_AW(URLOpenBlockingStream)
extern HRESULT __attribute__((__stdcall__)) HlinkGoBack(IUnknown *pUnk);
extern HRESULT __attribute__((__stdcall__)) HlinkGoForward(IUnknown *pUnk);
extern HRESULT __attribute__((__stdcall__)) HlinkNavigateString(IUnknown *pUnk, LPCWSTR szTarget);
extern HRESULT __attribute__((__stdcall__)) HlinkNavigateMoniker(IUnknown *pUnk, IMoniker *pmkTarget);
#define _LPIINTERNET 
#define __IInternet_INTERFACE_DEFINED__ 
typedef IInternet *LPIINTERNET;
extern const GUID IID_IInternet;
typedef struct IInternetVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternet *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternet *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternet *This);
   
} IInternetVtbl;
struct IInternet {
    IInternetVtbl* lpVtbl;
};
#define _LPIINTERNETBINDINFO 
#define __IInternetBindInfo_INTERFACE_DEFINED__ 
typedef IInternetBindInfo *LPIINTERNETBINDINFO;
typedef enum tagBINDSTRING {
    BINDSTRING_HEADERS = 1,
    BINDSTRING_ACCEPT_MIMES = 2,
    BINDSTRING_EXTRA_URL = 3,
    BINDSTRING_LANGUAGE = 4,
    BINDSTRING_USERNAME = 5,
    BINDSTRING_PASSWORD = 6,
    BINDSTRING_UA_PIXELS = 7,
    BINDSTRING_UA_COLOR = 8,
    BINDSTRING_OS = 9,
    BINDSTRING_USER_AGENT = 10,
    BINDSTRING_ACCEPT_ENCODINGS = 11,
    BINDSTRING_POST_COOKIE = 12,
    BINDSTRING_POST_DATA_MIME = 13,
    BINDSTRING_URL = 14,
    BINDSTRING_IID = 15,
    BINDSTRING_FLAG_BIND_TO_OBJECT = 16,
    BINDSTRING_PTR_BIND_CONTEXT = 17,
    BINDSTRING_XDR_ORIGIN = 18,
    BINDSTRING_DOWNLOADPATH = 19,
    BINDSTRING_ROOTDOC_URL = 20,
    BINDSTRING_INITIAL_FILENAME = 21,
    BINDSTRING_PROXY_USERNAME = 22,
    BINDSTRING_PROXY_PASSWORD = 23
} BINDSTRING;
extern const GUID IID_IInternetBindInfo;
typedef struct IInternetBindInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetBindInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetBindInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetBindInfo *This);
    HRESULT (__attribute__((__stdcall__)) *GetBindInfo)(
        IInternetBindInfo *This,
        DWORD *grfBINDF,
        BINDINFO *pbindinfo);
    HRESULT (__attribute__((__stdcall__)) *GetBindString)(
        IInternetBindInfo *This,
        ULONG ulStringType,
        LPOLESTR *ppwzStr,
        ULONG cEl,
        ULONG *pcElFetched);
   
} IInternetBindInfoVtbl;
struct IInternetBindInfo {
    IInternetBindInfoVtbl* lpVtbl;
};
#define _LPIINTERNETBINDINFOEX 
#define __IInternetBindInfoEx_INTERFACE_DEFINED__ 
typedef IInternetBindInfoEx *LPIINTERNETBINDINFOEX;
extern const GUID IID_IInternetBindInfoEx;
typedef struct IInternetBindInfoExVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetBindInfoEx *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetBindInfoEx *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetBindInfoEx *This);
    HRESULT (__attribute__((__stdcall__)) *GetBindInfo)(
        IInternetBindInfoEx *This,
        DWORD *grfBINDF,
        BINDINFO *pbindinfo);
    HRESULT (__attribute__((__stdcall__)) *GetBindString)(
        IInternetBindInfoEx *This,
        ULONG ulStringType,
        LPOLESTR *ppwzStr,
        ULONG cEl,
        ULONG *pcElFetched);
    HRESULT (__attribute__((__stdcall__)) *GetBindInfoEx)(
        IInternetBindInfoEx *This,
        DWORD *grfBINDF,
        BINDINFO *pbindinfo,
        DWORD *grfBINDF2,
        DWORD *pdwReserved);
   
} IInternetBindInfoExVtbl;
struct IInternetBindInfoEx {
    IInternetBindInfoExVtbl* lpVtbl;
};
#define _LPIINTERNETPROTOCOLROOT_DEFINED 
#define __IInternetProtocolRoot_INTERFACE_DEFINED__ 
typedef IInternetProtocolRoot *LPIINTERNETPROTOCOLROOT;
typedef enum _tagPI_FLAGS {
    PI_PARSE_URL = 0x1,
    PI_FILTER_MODE = 0x2,
    PI_FORCE_ASYNC = 0x4,
    PI_USE_WORKERTHREAD = 0x8,
    PI_MIMEVERIFICATION = 0x10,
    PI_CLSIDLOOKUP = 0x20,
    PI_DATAPROGRESS = 0x40,
    PI_SYNCHRONOUS = 0x80,
    PI_APARTMENTTHREADED = 0x100,
    PI_CLASSINSTALL = 0x200,
    PI_PASSONBINDCTX = 0x2000,
    PI_NOMIMEHANDLER = 0x8000,
    PI_LOADAPPDIRECT = 0x4000,
    PD_FORCE_SWITCH = 0x10000,
    PI_PREFERDEFAULTHANDLER = 0x20000
} PI_FLAGS;
typedef struct _tagPROTOCOLDATA {
    DWORD grfFlags;
    DWORD dwState;
    LPVOID pData;
    ULONG cbData;
} PROTOCOLDATA;
typedef struct _tagStartParam {
    IID iid;
    IBindCtx *pIBindCtx;
    IUnknown *pItf;
} StartParam;
extern const GUID IID_IInternetProtocolRoot;
typedef struct IInternetProtocolRootVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetProtocolRoot *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetProtocolRoot *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetProtocolRoot *This);
    HRESULT (__attribute__((__stdcall__)) *Start)(
        IInternetProtocolRoot *This,
        LPCWSTR szUrl,
        IInternetProtocolSink *pOIProtSink,
        IInternetBindInfo *pOIBindInfo,
        DWORD grfPI,
        HANDLE_PTR dwReserved);
    HRESULT (__attribute__((__stdcall__)) *Continue)(
        IInternetProtocolRoot *This,
        PROTOCOLDATA *pProtocolData);
    HRESULT (__attribute__((__stdcall__)) *Abort)(
        IInternetProtocolRoot *This,
        HRESULT hrReason,
        DWORD dwOptions);
    HRESULT (__attribute__((__stdcall__)) *Terminate)(
        IInternetProtocolRoot *This,
        DWORD dwOptions);
    HRESULT (__attribute__((__stdcall__)) *Suspend)(
        IInternetProtocolRoot *This);
    HRESULT (__attribute__((__stdcall__)) *Resume)(
        IInternetProtocolRoot *This);
   
} IInternetProtocolRootVtbl;
struct IInternetProtocolRoot {
    IInternetProtocolRootVtbl* lpVtbl;
};
#define _LPIINTERNETPROTOCOL_DEFINED 
#define __IInternetProtocol_INTERFACE_DEFINED__ 
typedef IInternetProtocol *LPIINTERNETPROTOCOL;
extern const GUID IID_IInternetProtocol;
typedef struct IInternetProtocolVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetProtocol *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetProtocol *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetProtocol *This);
    HRESULT (__attribute__((__stdcall__)) *Start)(
        IInternetProtocol *This,
        LPCWSTR szUrl,
        IInternetProtocolSink *pOIProtSink,
        IInternetBindInfo *pOIBindInfo,
        DWORD grfPI,
        HANDLE_PTR dwReserved);
    HRESULT (__attribute__((__stdcall__)) *Continue)(
        IInternetProtocol *This,
        PROTOCOLDATA *pProtocolData);
    HRESULT (__attribute__((__stdcall__)) *Abort)(
        IInternetProtocol *This,
        HRESULT hrReason,
        DWORD dwOptions);
    HRESULT (__attribute__((__stdcall__)) *Terminate)(
        IInternetProtocol *This,
        DWORD dwOptions);
    HRESULT (__attribute__((__stdcall__)) *Suspend)(
        IInternetProtocol *This);
    HRESULT (__attribute__((__stdcall__)) *Resume)(
        IInternetProtocol *This);
    HRESULT (__attribute__((__stdcall__)) *Read)(
        IInternetProtocol *This,
        void *pv,
        ULONG cb,
        ULONG *pcbRead);
    HRESULT (__attribute__((__stdcall__)) *Seek)(
        IInternetProtocol *This,
        LARGE_INTEGER dlibMove,
        DWORD dwOrigin,
        ULARGE_INTEGER *plibNewPosition);
    HRESULT (__attribute__((__stdcall__)) *LockRequest)(
        IInternetProtocol *This,
        DWORD dwOptions);
    HRESULT (__attribute__((__stdcall__)) *UnlockRequest)(
        IInternetProtocol *This);
   
} IInternetProtocolVtbl;
struct IInternetProtocol {
    IInternetProtocolVtbl* lpVtbl;
};
#define _LPIINTERNETPROTOCOLEX_DEFINED 
#define __IInternetProtocolEx_INTERFACE_DEFINED__ 
extern const GUID IID_IInternetProtocolEx;
typedef struct IInternetProtocolExVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetProtocolEx *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetProtocolEx *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetProtocolEx *This);
    HRESULT (__attribute__((__stdcall__)) *Start)(
        IInternetProtocolEx *This,
        LPCWSTR szUrl,
        IInternetProtocolSink *pOIProtSink,
        IInternetBindInfo *pOIBindInfo,
        DWORD grfPI,
        HANDLE_PTR dwReserved);
    HRESULT (__attribute__((__stdcall__)) *Continue)(
        IInternetProtocolEx *This,
        PROTOCOLDATA *pProtocolData);
    HRESULT (__attribute__((__stdcall__)) *Abort)(
        IInternetProtocolEx *This,
        HRESULT hrReason,
        DWORD dwOptions);
    HRESULT (__attribute__((__stdcall__)) *Terminate)(
        IInternetProtocolEx *This,
        DWORD dwOptions);
    HRESULT (__attribute__((__stdcall__)) *Suspend)(
        IInternetProtocolEx *This);
    HRESULT (__attribute__((__stdcall__)) *Resume)(
        IInternetProtocolEx *This);
    HRESULT (__attribute__((__stdcall__)) *Read)(
        IInternetProtocolEx *This,
        void *pv,
        ULONG cb,
        ULONG *pcbRead);
    HRESULT (__attribute__((__stdcall__)) *Seek)(
        IInternetProtocolEx *This,
        LARGE_INTEGER dlibMove,
        DWORD dwOrigin,
        ULARGE_INTEGER *plibNewPosition);
    HRESULT (__attribute__((__stdcall__)) *LockRequest)(
        IInternetProtocolEx *This,
        DWORD dwOptions);
    HRESULT (__attribute__((__stdcall__)) *UnlockRequest)(
        IInternetProtocolEx *This);
    HRESULT (__attribute__((__stdcall__)) *StartEx)(
        IInternetProtocolEx *This,
        IUri *pUri,
        IInternetProtocolSink *pOIProtSink,
        IInternetBindInfo *pOIBindInfo,
        DWORD grfPI,
        HANDLE_PTR dwReserved);
   
} IInternetProtocolExVtbl;
struct IInternetProtocolEx {
    IInternetProtocolExVtbl* lpVtbl;
};
#define _LPIINTERNETPROTOCOLSINK_DEFINED 
#define __IInternetProtocolSink_INTERFACE_DEFINED__ 
typedef IInternetProtocolSink *LPIINTERNETPROTOCOLSINK;
extern const GUID IID_IInternetProtocolSink;
typedef struct IInternetProtocolSinkVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetProtocolSink *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetProtocolSink *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetProtocolSink *This);
    HRESULT (__attribute__((__stdcall__)) *Switch)(
        IInternetProtocolSink *This,
        PROTOCOLDATA *pProtocolData);
    HRESULT (__attribute__((__stdcall__)) *ReportProgress)(
        IInternetProtocolSink *This,
        ULONG ulStatusCode,
        LPCWSTR szStatusText);
    HRESULT (__attribute__((__stdcall__)) *ReportData)(
        IInternetProtocolSink *This,
        DWORD grfBSCF,
        ULONG ulProgress,
        ULONG ulProgressMax);
    HRESULT (__attribute__((__stdcall__)) *ReportResult)(
        IInternetProtocolSink *This,
        HRESULT hrResult,
        DWORD dwError,
        LPCWSTR szResult);
   
} IInternetProtocolSinkVtbl;
struct IInternetProtocolSink {
    IInternetProtocolSinkVtbl* lpVtbl;
};
#define _LPIINTERNETPROTOCOLSINKSTACKABLE_DEFINED 
#define __IInternetProtocolSinkStackable_INTERFACE_DEFINED__ 
typedef IInternetProtocolSinkStackable *LPIINTERNETPROTOCOLSINKStackable;
extern const GUID IID_IInternetProtocolSinkStackable;
typedef struct IInternetProtocolSinkStackableVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetProtocolSinkStackable *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetProtocolSinkStackable *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetProtocolSinkStackable *This);
    HRESULT (__attribute__((__stdcall__)) *SwitchSink)(
        IInternetProtocolSinkStackable *This,
        IInternetProtocolSink *pOIProtSink);
    HRESULT (__attribute__((__stdcall__)) *CommitSwitch)(
        IInternetProtocolSinkStackable *This);
    HRESULT (__attribute__((__stdcall__)) *RollbackSwitch)(
        IInternetProtocolSinkStackable *This);
   
} IInternetProtocolSinkStackableVtbl;
struct IInternetProtocolSinkStackable {
    IInternetProtocolSinkStackableVtbl* lpVtbl;
};
#define _LPIINTERNETSESSION_DEFINED 
#define __IInternetSession_INTERFACE_DEFINED__ 
typedef IInternetSession *LPIINTERNETSESSION;
typedef enum _tagOIBDG_FLAGS {
    OIBDG_APARTMENTTHREADED = 0x100,
    OIBDG_DATAONLY = 0x1000
} OIBDG_FLAGS;
extern const GUID IID_IInternetSession;
typedef struct IInternetSessionVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetSession *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetSession *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetSession *This);
    HRESULT (__attribute__((__stdcall__)) *RegisterNameSpace)(
        IInternetSession *This,
        IClassFactory *pCF,
        const IID *const rclsid,
        LPCWSTR pwzProtocol,
        ULONG cPatterns,
        const LPCWSTR *ppwzPatterns,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *UnregisterNameSpace)(
        IInternetSession *This,
        IClassFactory *pCF,
        LPCWSTR pszProtocol);
    HRESULT (__attribute__((__stdcall__)) *RegisterMimeFilter)(
        IInternetSession *This,
        IClassFactory *pCF,
        const IID *const rclsid,
        LPCWSTR pwzType);
    HRESULT (__attribute__((__stdcall__)) *UnregisterMimeFilter)(
        IInternetSession *This,
        IClassFactory *pCF,
        LPCWSTR pwzType);
    HRESULT (__attribute__((__stdcall__)) *CreateBinding)(
        IInternetSession *This,
        LPBC pBC,
        LPCWSTR szUrl,
        IUnknown *pUnkOuter,
        IUnknown **ppUnk,
        IInternetProtocol **ppOInetProt,
        DWORD dwOption);
    HRESULT (__attribute__((__stdcall__)) *SetSessionOption)(
        IInternetSession *This,
        DWORD dwOption,
        LPVOID pBuffer,
        DWORD dwBufferLength,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *GetSessionOption)(
        IInternetSession *This,
        DWORD dwOption,
        LPVOID pBuffer,
        DWORD *pdwBufferLength,
        DWORD dwReserved);
   
} IInternetSessionVtbl;
struct IInternetSession {
    IInternetSessionVtbl* lpVtbl;
};
#define _LPIINTERNETTHREADSWITCH_DEFINED 
#define __IInternetThreadSwitch_INTERFACE_DEFINED__ 
typedef IInternetThreadSwitch *LPIINTERNETTHREADSWITCH;
extern const GUID IID_IInternetThreadSwitch;
typedef struct IInternetThreadSwitchVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetThreadSwitch *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetThreadSwitch *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetThreadSwitch *This);
    HRESULT (__attribute__((__stdcall__)) *Prepare)(
        IInternetThreadSwitch *This);
    HRESULT (__attribute__((__stdcall__)) *Continue)(
        IInternetThreadSwitch *This);
   
} IInternetThreadSwitchVtbl;
struct IInternetThreadSwitch {
    IInternetThreadSwitchVtbl* lpVtbl;
};
#define _LPIINTERNETPRIORITY_DEFINED 
#define __IInternetPriority_INTERFACE_DEFINED__ 
typedef IInternetPriority *LPIINTERNETPRIORITY;
extern const GUID IID_IInternetPriority;
typedef struct IInternetPriorityVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetPriority *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetPriority *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetPriority *This);
    HRESULT (__attribute__((__stdcall__)) *SetPriority)(
        IInternetPriority *This,
        LONG nPriority);
    HRESULT (__attribute__((__stdcall__)) *GetPriority)(
        IInternetPriority *This,
        LONG *pnPriority);
   
} IInternetPriorityVtbl;
struct IInternetPriority {
    IInternetPriorityVtbl* lpVtbl;
};
#define _LPIINTERNETPROTOCOLINFO_DEFINED 
#define __IInternetProtocolInfo_INTERFACE_DEFINED__ 
typedef IInternetProtocolInfo *LPIINTERNETPROTOCOLINFO;
typedef enum _tagPARSEACTION {
    PARSE_CANONICALIZE = 1,
    PARSE_FRIENDLY = 2,
    PARSE_SECURITY_URL = 3,
    PARSE_ROOTDOCUMENT = 4,
    PARSE_DOCUMENT = 5,
    PARSE_ANCHOR = 6,
    PARSE_ENCODE_IS_UNESCAPE = 7,
    PARSE_DECODE_IS_ESCAPE = 8,
    PARSE_PATH_FROM_URL = 9,
    PARSE_URL_FROM_PATH = 10,
    PARSE_MIME = 11,
    PARSE_SERVER = 12,
    PARSE_SCHEMA = 13,
    PARSE_SITE = 14,
    PARSE_DOMAIN = 15,
    PARSE_LOCATION = 16,
    PARSE_SECURITY_DOMAIN = 17,
    PARSE_ESCAPE = 18,
    PARSE_UNESCAPE = 19
} PARSEACTION;
typedef enum _tagPSUACTION {
    PSU_DEFAULT = 1,
    PSU_SECURITY_URL_ONLY = 2
} PSUACTION;
typedef enum _tagQUERYOPTION {
    QUERY_EXPIRATION_DATE = 1,
    QUERY_TIME_OF_LAST_CHANGE = 2,
    QUERY_CONTENT_ENCODING = 3,
    QUERY_CONTENT_TYPE = 4,
    QUERY_REFRESH = 5,
    QUERY_RECOMBINE = 6,
    QUERY_CAN_NAVIGATE = 7,
    QUERY_USES_NETWORK = 8,
    QUERY_IS_CACHED = 9,
    QUERY_IS_INSTALLEDENTRY = 10,
    QUERY_IS_CACHED_OR_MAPPED = 11,
    QUERY_USES_CACHE = 12,
    QUERY_IS_SECURE = 13,
    QUERY_IS_SAFE = 14,
    QUERY_USES_HISTORYFOLDER = 15,
    QUERY_IS_CACHED_AND_USABLE_OFFLINE = 16
} QUERYOPTION;
extern const GUID IID_IInternetProtocolInfo;
typedef struct IInternetProtocolInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetProtocolInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetProtocolInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetProtocolInfo *This);
    HRESULT (__attribute__((__stdcall__)) *ParseUrl)(
        IInternetProtocolInfo *This,
        LPCWSTR pwzUrl,
        PARSEACTION ParseAction,
        DWORD dwParseFlags,
        LPWSTR pwzResult,
        DWORD cchResult,
        DWORD *pcchResult,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *CombineUrl)(
        IInternetProtocolInfo *This,
        LPCWSTR pwzBaseUrl,
        LPCWSTR pwzRelativeUrl,
        DWORD dwCombineFlags,
        LPWSTR pwzResult,
        DWORD cchResult,
        DWORD *pcchResult,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *CompareUrl)(
        IInternetProtocolInfo *This,
        LPCWSTR pwzUrl1,
        LPCWSTR pwzUrl2,
        DWORD dwCompareFlags);
    HRESULT (__attribute__((__stdcall__)) *QueryInfo)(
        IInternetProtocolInfo *This,
        LPCWSTR pwzUrl,
        QUERYOPTION OueryOption,
        DWORD dwQueryFlags,
        LPVOID pBuffer,
        DWORD cbBuffer,
        DWORD *pcbBuf,
        DWORD dwReserved);
   
} IInternetProtocolInfoVtbl;
struct IInternetProtocolInfo {
    IInternetProtocolInfoVtbl* lpVtbl;
};
#define PARSE_ENCODE PARSE_ENCODE_IS_UNESCAPE
#define PARSE_DECODE PARSE_DECODE_IS_ESCAPE
#define IOInet IInternet
#define IOInetBindInfo IInternetBindInfo
#define IOInetBindInfoEx IInternetBindInfoEx
#define IOInetProtocolRoot IInternetProtocolRoot
#define IOInetProtocol IInternetProtocol
#define IOInetProtocolEx IInternetProtocolEx
#define IOInetProtocolSink IInternetProtocolSink
#define IOInetProtocolInfo IInternetProtocolInfo
#define IOInetSession IInternetSession
#define IOInetPriority IInternetPriority
#define IOInetThreadSwitch IInternetThreadSwitch
#define IOInetProtocolSinkStackable IInternetProtocolSinkStackable
#define LPOINET LPIINTERNET
#define LPOINETPROTOCOLINFO LPIINTERNETPROTOCOLINFO
#define LPOINETBINDINFO LPIINTERNETBINDINFO
#define LPOINETPROTOCOLROOT LPIINTERNETPROTOCOLROOT
#define LPOINETPROTOCOL LPIINTERNETPROTOCOL
#define LPOINETPROTOCOLEX LPIINTERNETPROTOCOLEX
#define LPOINETPROTOCOLSINK LPIINTERNETPROTOCOLSINK
#define LPOINETSESSION LPIINTERNETSESSION
#define LPOINETTHREADSWITCH LPIINTERNETTHREADSWITCH
#define LPOINETPRIORITY LPIINTERNETPRIORITY
#define LPOINETPROTOCOLINFO LPIINTERNETPROTOCOLINFO
#define LPOINETPROTOCOLSINKSTACKABLE LPIINTERNETPROTOCOLSINKSTACKABLE
#define IID_IOInet IID_IInternet
#define IID_IOInetBindInfo IID_IInternetBindInfo
#define IID_IOInetBindInfoEx IID_IInternetBindInfoEx
#define IID_IOInetProtocolRoot IID_IInternetProtocolRoot
#define IID_IOInetProtocol IID_IInternetProtocol
#define IID_IOInetProtocolEx IID_IInternetProtocolEx
#define IID_IOInetProtocolSink IID_IInternetProtocolSink
#define IID_IOInetProtocolInfo IID_IInternetProtocolInfo
#define IID_IOInetSession IID_IInternetSession
#define IID_IOInetPriority IID_IInternetPriority
#define IID_IOInetThreadSwitch IID_IInternetThreadSwitch
#define IID_IOInetProtocolSinkStackable IID_IInternetProtocolSinkStackable
extern HRESULT __attribute__((__stdcall__)) CoInternetParseUrl(LPCWSTR pwzUrl, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved);
extern HRESULT __attribute__((__stdcall__)) CoInternetParseIUri(IUri *pIUri, PARSEACTION ParseAction, DWORD dwFlags, LPWSTR pwzResult, DWORD cchResult, DWORD *pcchResult, DWORD_PTR dwReserved);
extern HRESULT __attribute__((__stdcall__)) CoInternetCombineUrl(LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pszResult, DWORD cchResult, DWORD *pcchResult, DWORD dwReserved);
extern HRESULT __attribute__((__stdcall__)) CoInternetCombineUrlEx(IUri *pBaseUri, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, IUri **ppCombinedUri, DWORD_PTR dwReserved);
extern HRESULT __attribute__((__stdcall__)) CoInternetCombineIUri (IUri *pBaseUri, IUri *pRelativeUri, DWORD dwCombineFlags, IUri **ppCombinedUri, DWORD_PTR dwReserved);
extern HRESULT __attribute__((__stdcall__)) CoInternetCompareUrl(LPCWSTR pwzUrl1, LPCWSTR pwzUrl2, DWORD dwFlags);
extern HRESULT __attribute__((__stdcall__)) CoInternetGetProtocolFlags(LPCWSTR pwzUrl, DWORD *pdwFlags, DWORD dwReserved);
extern HRESULT __attribute__((__stdcall__)) CoInternetQueryInfo(LPCWSTR pwzUrl, QUERYOPTION QueryOptions, DWORD dwQueryFlags, LPVOID pvBuffer, DWORD cbBuffer, DWORD *pcbBuffer, DWORD dwReserved);
extern HRESULT __attribute__((__stdcall__)) CoInternetGetSession(DWORD dwSessionMode, IInternetSession **ppIInternetSession, DWORD dwReserved);
extern HRESULT __attribute__((__stdcall__)) CoInternetGetSecurityUrl(LPCWSTR pwszUrl, LPWSTR *ppwszSecUrl, PSUACTION psuAction, DWORD dwReserved);
extern HRESULT __attribute__((__stdcall__)) AsyncInstallDistributionUnit(LPCWSTR szDistUnit, LPCWSTR szTYPE, LPCWSTR szExt, DWORD dwFileVersionMS, DWORD dwFileVersionLS, LPCWSTR szURL,IBindCtx *pbc, LPVOID pvReserved,DWORD flags);
extern HRESULT __attribute__((__stdcall__)) CoInternetGetSecurityUrlEx(IUri *pUri, IUri **ppSecUri, PSUACTION psuAction, DWORD_PTR dwReserved);
#define _INTERNETFEATURELIST_DEFINED 
typedef enum _tagINTERNETFEATURELIST {
    FEATURE_OBJECT_CACHING = 0,
    FEATURE_ZONE_ELEVATION = 1,
    FEATURE_MIME_HANDLING = 2,
    FEATURE_MIME_SNIFFING = 3,
    FEATURE_WINDOW_RESTRICTIONS = 4,
    FEATURE_WEBOC_POPUPMANAGEMENT = 5,
    FEATURE_BEHAVIORS = 6,
    FEATURE_DISABLE_MK_PROTOCOL = 7,
    FEATURE_LOCALMACHINE_LOCKDOWN = 8,
    FEATURE_SECURITYBAND = 9,
    FEATURE_RESTRICT_ACTIVEXINSTALL = 10,
    FEATURE_VALIDATE_NAVIGATE_URL = 11,
    FEATURE_RESTRICT_FILEDOWNLOAD = 12,
    FEATURE_ADDON_MANAGEMENT = 13,
    FEATURE_PROTOCOL_LOCKDOWN = 14,
    FEATURE_HTTP_USERNAME_PASSWORD_DISABLE = 15,
    FEATURE_SAFE_BINDTOOBJECT = 16,
    FEATURE_UNC_SAVEDFILECHECK = 17,
    FEATURE_GET_URL_DOM_FILEPATH_UNENCODED = 18,
    FEATURE_TABBED_BROWSING = 19,
    FEATURE_SSLUX = 20,
    FEATURE_DISABLE_NAVIGATION_SOUNDS = 21,
    FEATURE_DISABLE_LEGACY_COMPRESSION = 22,
    FEATURE_FORCE_ADDR_AND_STATUS = 23,
    FEATURE_XMLHTTP = 24,
    FEATURE_DISABLE_TELNET_PROTOCOL = 25,
    FEATURE_FEEDS = 26,
    FEATURE_BLOCK_INPUT_PROMPTS = 27,
    FEATURE_ENTRY_COUNT = 28
} INTERNETFEATURELIST;
#define SET_FEATURE_ON_THREAD 0x1
#define SET_FEATURE_ON_PROCESS 0x2
#define SET_FEATURE_IN_REGISTRY 0x4
#define SET_FEATURE_ON_THREAD_LOCALMACHINE 0x8
#define SET_FEATURE_ON_THREAD_INTRANET 0x10
#define SET_FEATURE_ON_THREAD_TRUSTED 0x20
#define SET_FEATURE_ON_THREAD_INTERNET 0x40
#define SET_FEATURE_ON_THREAD_RESTRICTED 0x80
#define GET_FEATURE_FROM_THREAD 0x1
#define GET_FEATURE_FROM_PROCESS 0x2
#define GET_FEATURE_FROM_REGISTRY 0x4
#define GET_FEATURE_FROM_THREAD_LOCALMACHINE 0x8
#define GET_FEATURE_FROM_THREAD_INTRANET 0x10
#define GET_FEATURE_FROM_THREAD_TRUSTED 0x20
#define GET_FEATURE_FROM_THREAD_INTERNET 0x40
#define GET_FEATURE_FROM_THREAD_RESTRICTED 0x80
extern HRESULT __attribute__((__stdcall__)) CoInternetSetFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, WINBOOL fEnable);
extern HRESULT __attribute__((__stdcall__)) CoInternetIsFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags);
extern HRESULT __attribute__((__stdcall__)) CoInternetIsFeatureEnabledForUrl(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, LPCWSTR szURL, IInternetSecurityManager *pSecMgr);
extern HRESULT __attribute__((__stdcall__)) CoInternetIsFeatureEnabledForIUri(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, IUri *pIUri, IInternetSecurityManagerEx2 *pSecMgr);
extern HRESULT __attribute__((__stdcall__)) CoInternetIsFeatureZoneElevationEnabled(LPCWSTR szFromURL, LPCWSTR szToURL, IInternetSecurityManager *pSecMgr, DWORD dwFlags);
extern HRESULT __attribute__((__stdcall__)) CopyStgMedium(const STGMEDIUM *pcstgmedSrc, STGMEDIUM *pstgmedDest);
extern HRESULT __attribute__((__stdcall__)) CopyBindInfo(const BINDINFO *pcbiSrc, BINDINFO *pbiDest);
extern void __attribute__((__stdcall__)) ReleaseBindInfo(BINDINFO *pbindinfo);
#define INET_E_USE_DEFAULT_PROTOCOLHANDLER _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0011))
#define INET_E_USE_DEFAULT_SETTING _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0012))
#define INET_E_DEFAULT_ACTION INET_E_USE_DEFAULT_PROTOCOLHANDLER
#define INET_E_QUERYOPTION_UNKNOWN _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0013))
#define INET_E_REDIRECTING _HRESULT_TYPEDEF_(__MSABI_LONG(0x800C0014))
#define OInetParseUrl CoInternetParseUrl
#define OInetCombineUrl CoInternetCombineUrl
#define OInetCombineUrlEx CoInternetCombineUrlEx
#define OInetCombineIUri CoInternetCombineIUri
#define OInetCompareUrl CoInternetCompareUrl
#define OInetQueryInfo CoInternetQueryInfo
#define OInetGetSession CoInternetGetSession
#define PROTOCOLFLAG_NO_PICS_CHECK 0x1
extern HRESULT __attribute__((__stdcall__)) CoInternetCreateSecurityManager(IServiceProvider *pSP, IInternetSecurityManager **ppSM, DWORD dwReserved);
extern HRESULT __attribute__((__stdcall__)) CoInternetCreateZoneManager(IServiceProvider *pSP, IInternetZoneManager **ppZM, DWORD dwReserved);
extern const IID CLSID_InternetSecurityManager;
extern const IID CLSID_InternetZoneManager;
extern const IID CLSID_PersistentZoneIdentifier;
#define SID_SInternetSecurityManager IID_IInternetSecurityManager
#define SID_SInternetSecurityManagerEx IID_IInternetSecurityManagerEx
#define SID_SInternetSecurityManagerEx2 IID_IInternetSecurityManagerEx2
#define SID_SInternetHostSecurityManager IID_IInternetHostSecurityManager
#define _LPINTERNETSECURITYMGRSITE_DEFINED 
#define __IInternetSecurityMgrSite_INTERFACE_DEFINED__ 
extern const GUID IID_IInternetSecurityMgrSite;
typedef struct IInternetSecurityMgrSiteVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetSecurityMgrSite *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetSecurityMgrSite *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetSecurityMgrSite *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindow)(
        IInternetSecurityMgrSite *This,
        HWND *phwnd);
    HRESULT (__attribute__((__stdcall__)) *EnableModeless)(
        IInternetSecurityMgrSite *This,
        WINBOOL fEnable);
   
} IInternetSecurityMgrSiteVtbl;
struct IInternetSecurityMgrSite {
    IInternetSecurityMgrSiteVtbl* lpVtbl;
};
#define _LPINTERNETSECURITYMANANGER_DEFINED 
#define __IInternetSecurityManager_INTERFACE_DEFINED__ 
#define MUTZ_NOSAVEDFILECHECK 0x1
#define MUTZ_ISFILE 0x2
#define MUTZ_ACCEPT_WILDCARD_SCHEME 0x80
#define MUTZ_ENFORCERESTRICTED 0x100
#define MUTZ_RESERVED 0x200
#define MUTZ_REQUIRESAVEDFILECHECK 0x400
#define MUTZ_DONT_UNESCAPE 0x800
#define MUTZ_DONT_USE_CACHE 0x1000
#define MUTZ_FORCE_INTRANET_FLAGS 0x2000
#define MUTZ_IGNORE_ZONE_MAPPINGS 0x4000
#define MAX_SIZE_SECURITY_ID 512
typedef enum __WIDL_urlmon_generated_name_0000001B {
    PUAF_DEFAULT = 0x0,
    PUAF_NOUI = 0x1,
    PUAF_ISFILE = 0x2,
    PUAF_WARN_IF_DENIED = 0x4,
    PUAF_FORCEUI_FOREGROUND = 0x8,
    PUAF_CHECK_TIFS = 0x10,
    PUAF_DONTCHECKBOXINDIALOG = 0x20,
    PUAF_TRUSTED = 0x40,
    PUAF_ACCEPT_WILDCARD_SCHEME = 0x80,
    PUAF_ENFORCERESTRICTED = 0x100,
    PUAF_NOSAVEDFILECHECK = 0x200,
    PUAF_REQUIRESAVEDFILECHECK = 0x400,
    PUAF_DONT_USE_CACHE = 0x1000,
    PUAF_RESERVED1 = 0x2000,
    PUAF_RESERVED2 = 0x4000,
    PUAF_LMZ_UNLOCKED = 0x10000,
    PUAF_LMZ_LOCKED = 0x20000,
    PUAF_DEFAULTZONEPOL = 0x40000,
    PUAF_NPL_USE_LOCKED_IF_RESTRICTED = 0x80000,
    PUAF_NOUIIFLOCKED = 0x100000,
    PUAF_DRAGPROTOCOLCHECK = 0x200000
} PUAF;
typedef enum __WIDL_urlmon_generated_name_0000001C {
    PUAFOUT_DEFAULT = 0x0,
    PUAFOUT_ISLOCKZONEPOLICY = 0x1
} PUAFOUT;
typedef enum __WIDL_urlmon_generated_name_0000001D {
    SZM_CREATE = 0x0,
    SZM_DELETE = 0x1
} SZM_FLAGS;
extern const GUID IID_IInternetSecurityManager;
typedef struct IInternetSecurityManagerVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetSecurityManager *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetSecurityManager *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetSecurityManager *This);
    HRESULT (__attribute__((__stdcall__)) *SetSecuritySite)(
        IInternetSecurityManager *This,
        IInternetSecurityMgrSite *pSite);
    HRESULT (__attribute__((__stdcall__)) *GetSecuritySite)(
        IInternetSecurityManager *This,
        IInternetSecurityMgrSite **ppSite);
    HRESULT (__attribute__((__stdcall__)) *MapUrlToZone)(
        IInternetSecurityManager *This,
        LPCWSTR pwszUrl,
        DWORD *pdwZone,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *GetSecurityId)(
        IInternetSecurityManager *This,
        LPCWSTR pwszUrl,
        BYTE *pbSecurityId,
        DWORD *pcbSecurityId,
        DWORD_PTR dwReserved);
    HRESULT (__attribute__((__stdcall__)) *ProcessUrlAction)(
        IInternetSecurityManager *This,
        LPCWSTR pwszUrl,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        BYTE *pContext,
        DWORD cbContext,
        DWORD dwFlags,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *QueryCustomPolicy)(
        IInternetSecurityManager *This,
        LPCWSTR pwszUrl,
        const GUID *const guidKey,
        BYTE **ppPolicy,
        DWORD *pcbPolicy,
        BYTE *pContext,
        DWORD cbContext,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *SetZoneMapping)(
        IInternetSecurityManager *This,
        DWORD dwZone,
        LPCWSTR lpszPattern,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *GetZoneMappings)(
        IInternetSecurityManager *This,
        DWORD dwZone,
        IEnumString **ppenumString,
        DWORD dwFlags);
   
} IInternetSecurityManagerVtbl;
struct IInternetSecurityManager {
    IInternetSecurityManagerVtbl* lpVtbl;
};
#define _LPINTERNETSECURITYMANANGEREX_DEFINED 
#define __IInternetSecurityManagerEx_INTERFACE_DEFINED__ 
extern const GUID IID_IInternetSecurityManagerEx;
typedef struct IInternetSecurityManagerExVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetSecurityManagerEx *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetSecurityManagerEx *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetSecurityManagerEx *This);
    HRESULT (__attribute__((__stdcall__)) *SetSecuritySite)(
        IInternetSecurityManagerEx *This,
        IInternetSecurityMgrSite *pSite);
    HRESULT (__attribute__((__stdcall__)) *GetSecuritySite)(
        IInternetSecurityManagerEx *This,
        IInternetSecurityMgrSite **ppSite);
    HRESULT (__attribute__((__stdcall__)) *MapUrlToZone)(
        IInternetSecurityManagerEx *This,
        LPCWSTR pwszUrl,
        DWORD *pdwZone,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *GetSecurityId)(
        IInternetSecurityManagerEx *This,
        LPCWSTR pwszUrl,
        BYTE *pbSecurityId,
        DWORD *pcbSecurityId,
        DWORD_PTR dwReserved);
    HRESULT (__attribute__((__stdcall__)) *ProcessUrlAction)(
        IInternetSecurityManagerEx *This,
        LPCWSTR pwszUrl,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        BYTE *pContext,
        DWORD cbContext,
        DWORD dwFlags,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *QueryCustomPolicy)(
        IInternetSecurityManagerEx *This,
        LPCWSTR pwszUrl,
        const GUID *const guidKey,
        BYTE **ppPolicy,
        DWORD *pcbPolicy,
        BYTE *pContext,
        DWORD cbContext,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *SetZoneMapping)(
        IInternetSecurityManagerEx *This,
        DWORD dwZone,
        LPCWSTR lpszPattern,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *GetZoneMappings)(
        IInternetSecurityManagerEx *This,
        DWORD dwZone,
        IEnumString **ppenumString,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *ProcessUrlActionEx)(
        IInternetSecurityManagerEx *This,
        LPCWSTR pwszUrl,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        BYTE *pContext,
        DWORD cbContext,
        DWORD dwFlags,
        DWORD dwReserved,
        DWORD *pdwOutFlags);
   
} IInternetSecurityManagerExVtbl;
struct IInternetSecurityManagerEx {
    IInternetSecurityManagerExVtbl* lpVtbl;
};
#define _LPINTERNETSECURITYMANANGEREx2_DEFINED 
#define __IInternetSecurityManagerEx2_INTERFACE_DEFINED__ 
extern const GUID IID_IInternetSecurityManagerEx2;
typedef struct IInternetSecurityManagerEx2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetSecurityManagerEx2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetSecurityManagerEx2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetSecurityManagerEx2 *This);
    HRESULT (__attribute__((__stdcall__)) *SetSecuritySite)(
        IInternetSecurityManagerEx2 *This,
        IInternetSecurityMgrSite *pSite);
    HRESULT (__attribute__((__stdcall__)) *GetSecuritySite)(
        IInternetSecurityManagerEx2 *This,
        IInternetSecurityMgrSite **ppSite);
    HRESULT (__attribute__((__stdcall__)) *MapUrlToZone)(
        IInternetSecurityManagerEx2 *This,
        LPCWSTR pwszUrl,
        DWORD *pdwZone,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *GetSecurityId)(
        IInternetSecurityManagerEx2 *This,
        LPCWSTR pwszUrl,
        BYTE *pbSecurityId,
        DWORD *pcbSecurityId,
        DWORD_PTR dwReserved);
    HRESULT (__attribute__((__stdcall__)) *ProcessUrlAction)(
        IInternetSecurityManagerEx2 *This,
        LPCWSTR pwszUrl,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        BYTE *pContext,
        DWORD cbContext,
        DWORD dwFlags,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *QueryCustomPolicy)(
        IInternetSecurityManagerEx2 *This,
        LPCWSTR pwszUrl,
        const GUID *const guidKey,
        BYTE **ppPolicy,
        DWORD *pcbPolicy,
        BYTE *pContext,
        DWORD cbContext,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *SetZoneMapping)(
        IInternetSecurityManagerEx2 *This,
        DWORD dwZone,
        LPCWSTR lpszPattern,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *GetZoneMappings)(
        IInternetSecurityManagerEx2 *This,
        DWORD dwZone,
        IEnumString **ppenumString,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *ProcessUrlActionEx)(
        IInternetSecurityManagerEx2 *This,
        LPCWSTR pwszUrl,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        BYTE *pContext,
        DWORD cbContext,
        DWORD dwFlags,
        DWORD dwReserved,
        DWORD *pdwOutFlags);
    HRESULT (__attribute__((__stdcall__)) *MapUrlToZoneEx2)(
        IInternetSecurityManagerEx2 *This,
        IUri *pUri,
        DWORD *pdwZone,
        DWORD dwFlags,
        LPWSTR *ppwszMappedUrl,
        DWORD *pdwOutFlags);
    HRESULT (__attribute__((__stdcall__)) *ProcessUrlActionEx2)(
        IInternetSecurityManagerEx2 *This,
        IUri *pUri,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        BYTE *pContext,
        DWORD cbContext,
        DWORD dwFlags,
        DWORD_PTR dwReserved,
        DWORD *pdwOutFlags);
    HRESULT (__attribute__((__stdcall__)) *GetSecurityIdEx2)(
        IInternetSecurityManagerEx2 *This,
        IUri *pUri,
        BYTE *pbSecurityId,
        DWORD *pcbSecurityId,
        DWORD_PTR dwReserved);
    HRESULT (__attribute__((__stdcall__)) *QueryCustomPolicyEx2)(
        IInternetSecurityManagerEx2 *This,
        IUri *pUri,
        const GUID *const guidKey,
        BYTE **ppPolicy,
        DWORD *pcbPolicy,
        BYTE *pContext,
        DWORD cbContext,
        DWORD_PTR dwReserved);
   
} IInternetSecurityManagerEx2Vtbl;
struct IInternetSecurityManagerEx2 {
    IInternetSecurityManagerEx2Vtbl* lpVtbl;
};
#define __IZoneIdentifier_INTERFACE_DEFINED__ 
extern const GUID IID_IZoneIdentifier;
typedef struct IZoneIdentifierVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IZoneIdentifier *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IZoneIdentifier *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IZoneIdentifier *This);
    HRESULT (__attribute__((__stdcall__)) *GetId)(
        IZoneIdentifier *This,
        DWORD *pdwZone);
    HRESULT (__attribute__((__stdcall__)) *SetId)(
        IZoneIdentifier *This,
        DWORD dwZone);
    HRESULT (__attribute__((__stdcall__)) *Remove)(
        IZoneIdentifier *This);
   
} IZoneIdentifierVtbl;
struct IZoneIdentifier {
    IZoneIdentifierVtbl* lpVtbl;
};
#define _LPINTERNETHOSTSECURITYMANANGER_DEFINED 
#define __IInternetHostSecurityManager_INTERFACE_DEFINED__ 
extern const GUID IID_IInternetHostSecurityManager;
typedef struct IInternetHostSecurityManagerVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetHostSecurityManager *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetHostSecurityManager *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetHostSecurityManager *This);
    HRESULT (__attribute__((__stdcall__)) *GetSecurityId)(
        IInternetHostSecurityManager *This,
        BYTE *pbSecurityId,
        DWORD *pcbSecurityId,
        DWORD_PTR dwReserved);
    HRESULT (__attribute__((__stdcall__)) *ProcessUrlAction)(
        IInternetHostSecurityManager *This,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        BYTE *pContext,
        DWORD cbContext,
        DWORD dwFlags,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *QueryCustomPolicy)(
        IInternetHostSecurityManager *This,
        const GUID *const guidKey,
        BYTE **ppPolicy,
        DWORD *pcbPolicy,
        BYTE *pContext,
        DWORD cbContext,
        DWORD dwReserved);
   
} IInternetHostSecurityManagerVtbl;
struct IInternetHostSecurityManager {
    IInternetHostSecurityManagerVtbl* lpVtbl;
};
#define URLACTION_MIN 0x1000
#define URLACTION_DOWNLOAD_MIN 0x1000
#define URLACTION_DOWNLOAD_SIGNED_ACTIVEX 0x1001
#define URLACTION_DOWNLOAD_UNSIGNED_ACTIVEX 0x1004
#define URLACTION_DOWNLOAD_CURR_MAX 0x1004
#define URLACTION_DOWNLOAD_MAX 0x11FF
#define URLACTION_ACTIVEX_MIN 0x1200
#define URLACTION_ACTIVEX_RUN 0x1200
#define URLPOLICY_ACTIVEX_CHECK_LIST 0x10000
#define URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY 0x1201
#define URLACTION_ACTIVEX_OVERRIDE_DATA_SAFETY 0x1202
#define URLACTION_ACTIVEX_OVERRIDE_SCRIPT_SAFETY 0x1203
#define URLACTION_SCRIPT_OVERRIDE_SAFETY 0x1401
#define URLACTION_ACTIVEX_CONFIRM_NOOBJECTSAFETY 0x1204
#define URLACTION_ACTIVEX_TREATASUNTRUSTED 0x1205
#define URLACTION_ACTIVEX_NO_WEBOC_SCRIPT 0x1206
#define URLACTION_ACTIVEX_OVERRIDE_REPURPOSEDETECTION 0x1207
#define URLACTION_ACTIVEX_OVERRIDE_OPTIN 0x1208
#define URLACTION_ACTIVEX_SCRIPTLET_RUN 0x1209
#define URLACTION_ACTIVEX_DYNSRC_VIDEO_AND_ANIMATION 0x120A
#define URLACTION_ACTIVEX_OVERRIDE_DOMAINLIST 0x120B
#define URLACTION_ACTIVEX_CURR_MAX 0x120B
#define URLACTION_ACTIVEX_MAX 0x13ff
#define URLACTION_SCRIPT_MIN 0x1400
#define URLACTION_SCRIPT_RUN 0x1400
#define URLACTION_SCRIPT_JAVA_USE 0x1402
#define URLACTION_SCRIPT_SAFE_ACTIVEX 0x1405
#define URLACTION_CROSS_DOMAIN_DATA 0x1406
#define URLACTION_SCRIPT_PASTE 0x1407
#define URLACTION_ALLOW_XDOMAIN_SUBFRAME_RESIZE 0x1408
#define URLACTION_SCRIPT_XSSFILTER 0x1409
#define URLACTION_SCRIPT_NAVIGATE 0x140A
#define URLACTION_PLUGGABLE_PROTOCOL_XHR 0x140B
#define URLACTION_SCRIPT_CURR_MAX 0x140B
#define URLACTION_SCRIPT_MAX 0x15ff
#define URLACTION_HTML_MIN 0x1600
#define URLACTION_HTML_SUBMIT_FORMS 0x1601
#define URLACTION_HTML_SUBMIT_FORMS_FROM 0x1602
#define URLACTION_HTML_SUBMIT_FORMS_TO 0x1603
#define URLACTION_HTML_FONT_DOWNLOAD 0x1604
#define URLACTION_HTML_JAVA_RUN 0x1605
#define URLACTION_HTML_USERDATA_SAVE 0x1606
#define URLACTION_HTML_SUBFRAME_NAVIGATE 0x1607
#define URLACTION_HTML_META_REFRESH 0x1608
#define URLACTION_HTML_MIXED_CONTENT 0x1609
#define URLACTION_HTML_INCLUDE_FILE_PATH 0x160A
#define URLACTION_HTML_ALLOW_INJECTED_DYNAMIC_HTML 0x160B
#define URLACTION_HTML_REQUIRE_UTF8_DOCUMENT_CODEPAGE 0x160C
#define URLACTION_HTML_ALLOW_CROSS_DOMAIN_CANVAS 0x160D
#define URLACTION_HTML_ALLOW_WINDOW_CLOSE 0x160E
#define URLACTION_HTML_ALLOW_CROSS_DOMAIN_WEBWORKER 0x160F
#define URLACTION_HTML_ALLOW_CROSS_DOMAIN_TEXTTRACK 0x1610
#define URLACTION_HTML_ALLOW_INDEXEDDB 0x1611
#define URLACTION_HTML_MAX 0x17ff
#define URLACTION_SHELL_MIN 0x1800
#define URLACTION_SHELL_INSTALL_DTITEMS 0x1800
#define URLACTION_SHELL_MOVE_OR_COPY 0x1802
#define URLACTION_SHELL_FILE_DOWNLOAD 0x1803
#define URLACTION_SHELL_VERB 0x1804
#define URLACTION_SHELL_WEBVIEW_VERB 0x1805
#define URLACTION_SHELL_SHELLEXECUTE 0x1806
#define URLACTION_SHELL_EXECUTE_HIGHRISK 0x1806
#define URLACTION_SHELL_EXECUTE_MODRISK 0x1807
#define URLACTION_SHELL_EXECUTE_LOWRISK 0x1808
#define URLACTION_SHELL_POPUPMGR 0x1809
#define URLACTION_SHELL_RTF_OBJECTS_LOAD 0x180A
#define URLACTION_SHELL_ENHANCED_DRAGDROP_SECURITY 0x180B
#define URLACTION_SHELL_EXTENSIONSECURITY 0x180C
#define URLACTION_SHELL_SECURE_DRAGSOURCE 0x180D
#define URLACTION_SHELL_CURR_MAX 0x1811
#define URLACTION_SHELL_MAX 0x19ff
#define URLACTION_NETWORK_MIN 0x1A00
#define URLACTION_CREDENTIALS_USE 0x1A00
#define URLPOLICY_CREDENTIALS_SILENT_LOGON_OK 0x0
#define URLPOLICY_CREDENTIALS_MUST_PROMPT_USER 0x10000
#define URLPOLICY_CREDENTIALS_CONDITIONAL_PROMPT 0x20000
#define URLPOLICY_CREDENTIALS_ANONYMOUS_ONLY 0x30000
#define URLACTION_AUTHENTICATE_CLIENT 0x1A01
#define URLPOLICY_AUTHENTICATE_CLEARTEXT_OK 0x0
#define URLPOLICY_AUTHENTICATE_CHALLENGE_RESPONSE 0x10000
#define URLPOLICY_AUTHENTICATE_MUTUAL_ONLY 0x30000
#define URLACTION_COOKIES 0x1A02
#define URLACTION_COOKIES_SESSION 0x1A03
#define URLACTION_CLIENT_CERT_PROMPT 0x1A04
#define URLACTION_COOKIES_THIRD_PARTY 0x1A05
#define URLACTION_COOKIES_SESSION_THIRD_PARTY 0x1A06
#define URLACTION_COOKIES_ENABLED 0x1A10
#define URLACTION_NETWORK_CURR_MAX 0x1A10
#define URLACTION_NETWORK_MAX 0x1Bff
#define URLACTION_JAVA_MIN 0x1C00
#define URLACTION_JAVA_PERMISSIONS 0x1C00
#define URLPOLICY_JAVA_PROHIBIT 0x0
#define URLPOLICY_JAVA_HIGH 0x10000
#define URLPOLICY_JAVA_MEDIUM 0x20000
#define URLPOLICY_JAVA_LOW 0x30000
#define URLPOLICY_JAVA_CUSTOM 0x800000
#define URLACTION_JAVA_CURR_MAX 0x1C00
#define URLACTION_JAVA_MAX 0x1Cff
#define URLACTION_INFODELIVERY_MIN 0x1D00
#define URLACTION_INFODELIVERY_NO_ADDING_CHANNELS 0x1D00
#define URLACTION_INFODELIVERY_NO_EDITING_CHANNELS 0x1D01
#define URLACTION_INFODELIVERY_NO_REMOVING_CHANNELS 0x1D02
#define URLACTION_INFODELIVERY_NO_ADDING_SUBSCRIPTIONS 0x1D03
#define URLACTION_INFODELIVERY_NO_EDITING_SUBSCRIPTIONS 0x1D04
#define URLACTION_INFODELIVERY_NO_REMOVING_SUBSCRIPTIONS 0x1D05
#define URLACTION_INFODELIVERY_NO_CHANNEL_LOGGING 0x1D06
#define URLACTION_INFODELIVERY_CURR_MAX 0x1D06
#define URLACTION_INFODELIVERY_MAX 0x1Dff
#define URLACTION_CHANNEL_SOFTDIST_MIN 0x1E00
#define URLACTION_CHANNEL_SOFTDIST_PERMISSIONS 0x1E05
#define URLPOLICY_CHANNEL_SOFTDIST_PROHIBIT 0x10000
#define URLPOLICY_CHANNEL_SOFTDIST_PRECACHE 0x20000
#define URLPOLICY_CHANNEL_SOFTDIST_AUTOINSTALL 0x30000
#define URLACTION_CHANNEL_SOFTDIST_MAX 0x1Eff
#define URLACTION_BEHAVIOR_MIN 0x2000
#define URLACTION_BEHAVIOR_RUN 0x2000
#define URLPOLICY_BEHAVIOR_CHECK_LIST 0x10000
#define URLACTION_FEATURE_MIN 0x2100
#define URLACTION_FEATURE_MIME_SNIFFING 0x2100
#define URLACTION_FEATURE_ZONE_ELEVATION 0x2101
#define URLACTION_FEATURE_WINDOW_RESTRICTIONS 0x2102
#define URLACTION_FEATURE_SCRIPT_STATUS_BAR 0x2103
#define URLACTION_FEATURE_FORCE_ADDR_AND_STATUS 0x2104
#define URLACTION_FEATURE_BLOCK_INPUT_PROMPTS 0x2105
#define URLACTION_FEATURE_DATA_BINDING 0x2106
#define URLACTION_FEATURE_CROSSDOMAIN_FOCUS_CHANGE 0x2107
#define URLACTION_AUTOMATIC_DOWNLOAD_UI_MIN 0x2200
#define URLACTION_AUTOMATIC_DOWNLOAD_UI 0x2200
#define URLACTION_AUTOMATIC_ACTIVEX_UI 0x2201
#define URLACTION_ALLOW_RESTRICTEDPROTOCOLS 0x2300
#define URLACTION_ALLOW_APEVALUATION 0x2301
#define URLACTION_ALLOW_XHR_EVALUATION 0x2302
#define URLACTION_WINDOWS_BROWSER_APPLICATIONS 0x2400
#define URLACTION_XPS_DOCUMENTS 0x2401
#define URLACTION_LOOSE_XAML 0x2402
#define URLACTION_LOWRIGHTS 0x2500
#define URLACTION_WINFX_SETUP 0x2600
#define URLACTION_INPRIVATE_BLOCKING 0x2700
#define URLACTION_ALLOW_AUDIO_VIDEO 0x2701
#define URLACTION_ALLOW_ACTIVEX_FILTERING 0x2702
#define URLACTION_ALLOW_STRUCTURED_STORAGE_SNIFFING 0x2703
#define URLACTION_ALLOW_AUDIO_VIDEO_PLUGINS 0x2704
#define URLACTION_ALLOW_ZONE_ELEVATION_VIA_OPT_OUT 0x2705
#define URLACTION_ALLOW_ZONE_ELEVATION_OPT_OUT_ADDITION 0x2706
#define URLACTION_ALLOW_CROSSDOMAIN_DROP_WITHIN_WINDOW 0x2708
#define URLACTION_ALLOW_CROSSDOMAIN_DROP_ACROSS_WINDOWS 0x2709
#define URLACTION_ALLOW_CROSSDOMAIN_APPCACHE_MANIFEST 0x270A
#define URLACTION_ALLOW_RENDER_LEGACY_DXTFILTERS 0x270B
#define URLPOLICY_ALLOW 0x0
#define URLPOLICY_QUERY 0x1
#define URLPOLICY_DISALLOW 0x3
#define URLPOLICY_NOTIFY_ON_ALLOW 0x10
#define URLPOLICY_NOTIFY_ON_DISALLOW 0x20
#define URLPOLICY_LOG_ON_ALLOW 0x40
#define URLPOLICY_LOG_ON_DISALLOW 0x80
#define URLPOLICY_MASK_PERMISSIONS 0x0f
#define GetUrlPolicyPermissions(dw) (dw & URLPOLICY_MASK_PERMISSIONS)
#define SetUrlPolicyPermissions(dw,dw2) ((dw) = ((dw) & ~(URLPOLICY_MASK_PERMISSIONS)) | (dw2))
#define URLPOLICY_DONTCHECKDLGBOX 0x100
extern const GUID GUID_CUSTOM_LOCALMACHINEZONEUNLOCKED;
#define _LPINTERNETZONEMANAGER_DEFINED 
#define __IInternetZoneManager_INTERFACE_DEFINED__ 
typedef IInternetZoneManager *LPURLZONEMANAGER;
typedef enum tagURLZONE {
    URLZONE_INVALID = -1,
    URLZONE_PREDEFINED_MIN = 0,
    URLZONE_LOCAL_MACHINE = 0,
    URLZONE_INTRANET = 1,
    URLZONE_TRUSTED = 2,
    URLZONE_INTERNET = 3,
    URLZONE_UNTRUSTED = 4,
    URLZONE_PREDEFINED_MAX = 999,
    URLZONE_USER_MIN = 1000,
    URLZONE_USER_MAX = 10000
} URLZONE;
#define URLZONE_ESC_FLAG 0x100
typedef enum tagURLTEMPLATE {
    URLTEMPLATE_CUSTOM = 0x0,
    URLTEMPLATE_PREDEFINED_MIN = 0x10000,
    URLTEMPLATE_LOW = 0x10000,
    URLTEMPLATE_MEDLOW = 0x10500,
    URLTEMPLATE_MEDIUM = 0x11000,
    URLTEMPLATE_MEDHIGH = 0x11500,
    URLTEMPLATE_HIGH = 0x12000,
    URLTEMPLATE_PREDEFINED_MAX = 0x20000
} URLTEMPLATE;
enum {
    MAX_ZONE_PATH = 260,
    MAX_ZONE_DESCRIPTION = 200
};
typedef enum __WIDL_urlmon_generated_name_0000001E {
    ZAFLAGS_CUSTOM_EDIT = 0x1,
    ZAFLAGS_ADD_SITES = 0x2,
    ZAFLAGS_REQUIRE_VERIFICATION = 0x4,
    ZAFLAGS_INCLUDE_PROXY_OVERRIDE = 0x8,
    ZAFLAGS_INCLUDE_INTRANET_SITES = 0x10,
    ZAFLAGS_NO_UI = 0x20,
    ZAFLAGS_SUPPORTS_VERIFICATION = 0x40,
    ZAFLAGS_UNC_AS_INTRANET = 0x80,
    ZAFLAGS_DETECT_INTRANET = 0x100,
    ZAFLAGS_USE_LOCKED_ZONES = 0x10000,
    ZAFLAGS_VERIFY_TEMPLATE_SETTINGS = 0x20000,
    ZAFLAGS_NO_CACHE = 0x40000
} ZAFLAGS;
typedef struct _ZONEATTRIBUTES {
    ULONG cbSize;
    WCHAR szDisplayName[260];
    WCHAR szDescription[200];
    WCHAR szIconPath[260];
    DWORD dwTemplateMinLevel;
    DWORD dwTemplateRecommended;
    DWORD dwTemplateCurrentLevel;
    DWORD dwFlags;
} ZONEATTRIBUTES;
typedef struct _ZONEATTRIBUTES *LPZONEATTRIBUTES;
typedef enum _URLZONEREG {
    URLZONEREG_DEFAULT = 0,
    URLZONEREG_HKLM = 1,
    URLZONEREG_HKCU = 2
} URLZONEREG;
extern const GUID IID_IInternetZoneManager;
typedef struct IInternetZoneManagerVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetZoneManager *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetZoneManager *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetZoneManager *This);
    HRESULT (__attribute__((__stdcall__)) *GetZoneAttributes)(
        IInternetZoneManager *This,
        DWORD dwZone,
        ZONEATTRIBUTES *pZoneAttributes);
    HRESULT (__attribute__((__stdcall__)) *SetZoneAttributes)(
        IInternetZoneManager *This,
        DWORD dwZone,
        ZONEATTRIBUTES *pZoneAttributes);
    HRESULT (__attribute__((__stdcall__)) *GetZoneCustomPolicy)(
        IInternetZoneManager *This,
        DWORD dwZone,
        const GUID *const guidKey,
        BYTE **ppPolicy,
        DWORD *pcbPolicy,
        URLZONEREG urlZoneReg);
    HRESULT (__attribute__((__stdcall__)) *SetZoneCustomPolicy)(
        IInternetZoneManager *This,
        DWORD dwZone,
        const GUID *const guidKey,
        BYTE *pPolicy,
        DWORD cbPolicy,
        URLZONEREG urlZoneReg);
    HRESULT (__attribute__((__stdcall__)) *GetZoneActionPolicy)(
        IInternetZoneManager *This,
        DWORD dwZone,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        URLZONEREG urlZoneReg);
    HRESULT (__attribute__((__stdcall__)) *SetZoneActionPolicy)(
        IInternetZoneManager *This,
        DWORD dwZone,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        URLZONEREG urlZoneReg);
    HRESULT (__attribute__((__stdcall__)) *PromptAction)(
        IInternetZoneManager *This,
        DWORD dwAction,
        HWND hwndParent,
        LPCWSTR pwszUrl,
        LPCWSTR pwszText,
        DWORD dwPromptFlags);
    HRESULT (__attribute__((__stdcall__)) *LogAction)(
        IInternetZoneManager *This,
        DWORD dwAction,
        LPCWSTR pwszUrl,
        LPCWSTR pwszText,
        DWORD dwLogFlags);
    HRESULT (__attribute__((__stdcall__)) *CreateZoneEnumerator)(
        IInternetZoneManager *This,
        DWORD *pdwEnum,
        DWORD *pdwCount,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *GetZoneAt)(
        IInternetZoneManager *This,
        DWORD dwEnum,
        DWORD dwIndex,
        DWORD *pdwZone);
    HRESULT (__attribute__((__stdcall__)) *DestroyZoneEnumerator)(
        IInternetZoneManager *This,
        DWORD dwEnum);
    HRESULT (__attribute__((__stdcall__)) *CopyTemplatePoliciesToZone)(
        IInternetZoneManager *This,
        DWORD dwTemplate,
        DWORD dwZone,
        DWORD dwReserved);
   
} IInternetZoneManagerVtbl;
struct IInternetZoneManager {
    IInternetZoneManagerVtbl* lpVtbl;
};
#define _LPINTERNETZONEMANAGEREX_DEFINED 
#define __IInternetZoneManagerEx_INTERFACE_DEFINED__ 
extern const GUID IID_IInternetZoneManagerEx;
typedef struct IInternetZoneManagerExVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetZoneManagerEx *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetZoneManagerEx *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetZoneManagerEx *This);
    HRESULT (__attribute__((__stdcall__)) *GetZoneAttributes)(
        IInternetZoneManagerEx *This,
        DWORD dwZone,
        ZONEATTRIBUTES *pZoneAttributes);
    HRESULT (__attribute__((__stdcall__)) *SetZoneAttributes)(
        IInternetZoneManagerEx *This,
        DWORD dwZone,
        ZONEATTRIBUTES *pZoneAttributes);
    HRESULT (__attribute__((__stdcall__)) *GetZoneCustomPolicy)(
        IInternetZoneManagerEx *This,
        DWORD dwZone,
        const GUID *const guidKey,
        BYTE **ppPolicy,
        DWORD *pcbPolicy,
        URLZONEREG urlZoneReg);
    HRESULT (__attribute__((__stdcall__)) *SetZoneCustomPolicy)(
        IInternetZoneManagerEx *This,
        DWORD dwZone,
        const GUID *const guidKey,
        BYTE *pPolicy,
        DWORD cbPolicy,
        URLZONEREG urlZoneReg);
    HRESULT (__attribute__((__stdcall__)) *GetZoneActionPolicy)(
        IInternetZoneManagerEx *This,
        DWORD dwZone,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        URLZONEREG urlZoneReg);
    HRESULT (__attribute__((__stdcall__)) *SetZoneActionPolicy)(
        IInternetZoneManagerEx *This,
        DWORD dwZone,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        URLZONEREG urlZoneReg);
    HRESULT (__attribute__((__stdcall__)) *PromptAction)(
        IInternetZoneManagerEx *This,
        DWORD dwAction,
        HWND hwndParent,
        LPCWSTR pwszUrl,
        LPCWSTR pwszText,
        DWORD dwPromptFlags);
    HRESULT (__attribute__((__stdcall__)) *LogAction)(
        IInternetZoneManagerEx *This,
        DWORD dwAction,
        LPCWSTR pwszUrl,
        LPCWSTR pwszText,
        DWORD dwLogFlags);
    HRESULT (__attribute__((__stdcall__)) *CreateZoneEnumerator)(
        IInternetZoneManagerEx *This,
        DWORD *pdwEnum,
        DWORD *pdwCount,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *GetZoneAt)(
        IInternetZoneManagerEx *This,
        DWORD dwEnum,
        DWORD dwIndex,
        DWORD *pdwZone);
    HRESULT (__attribute__((__stdcall__)) *DestroyZoneEnumerator)(
        IInternetZoneManagerEx *This,
        DWORD dwEnum);
    HRESULT (__attribute__((__stdcall__)) *CopyTemplatePoliciesToZone)(
        IInternetZoneManagerEx *This,
        DWORD dwTemplate,
        DWORD dwZone,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *GetZoneActionPolicyEx)(
        IInternetZoneManagerEx *This,
        DWORD dwZone,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        URLZONEREG urlZoneReg,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *SetZoneActionPolicyEx)(
        IInternetZoneManagerEx *This,
        DWORD dwZone,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        URLZONEREG urlZoneReg,
        DWORD dwFlags);
   
} IInternetZoneManagerExVtbl;
struct IInternetZoneManagerEx {
    IInternetZoneManagerExVtbl* lpVtbl;
};
#define _LPINTERNETZONEMANAGEREX2_DEFINED 
#define SECURITY_IE_STATE_GREEN 0x0
#define SECURITY_IE_STATE_RED 0x1
#define __IInternetZoneManagerEx2_INTERFACE_DEFINED__ 
extern const GUID IID_IInternetZoneManagerEx2;
typedef struct IInternetZoneManagerEx2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IInternetZoneManagerEx2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IInternetZoneManagerEx2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IInternetZoneManagerEx2 *This);
    HRESULT (__attribute__((__stdcall__)) *GetZoneAttributes)(
        IInternetZoneManagerEx2 *This,
        DWORD dwZone,
        ZONEATTRIBUTES *pZoneAttributes);
    HRESULT (__attribute__((__stdcall__)) *SetZoneAttributes)(
        IInternetZoneManagerEx2 *This,
        DWORD dwZone,
        ZONEATTRIBUTES *pZoneAttributes);
    HRESULT (__attribute__((__stdcall__)) *GetZoneCustomPolicy)(
        IInternetZoneManagerEx2 *This,
        DWORD dwZone,
        const GUID *const guidKey,
        BYTE **ppPolicy,
        DWORD *pcbPolicy,
        URLZONEREG urlZoneReg);
    HRESULT (__attribute__((__stdcall__)) *SetZoneCustomPolicy)(
        IInternetZoneManagerEx2 *This,
        DWORD dwZone,
        const GUID *const guidKey,
        BYTE *pPolicy,
        DWORD cbPolicy,
        URLZONEREG urlZoneReg);
    HRESULT (__attribute__((__stdcall__)) *GetZoneActionPolicy)(
        IInternetZoneManagerEx2 *This,
        DWORD dwZone,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        URLZONEREG urlZoneReg);
    HRESULT (__attribute__((__stdcall__)) *SetZoneActionPolicy)(
        IInternetZoneManagerEx2 *This,
        DWORD dwZone,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        URLZONEREG urlZoneReg);
    HRESULT (__attribute__((__stdcall__)) *PromptAction)(
        IInternetZoneManagerEx2 *This,
        DWORD dwAction,
        HWND hwndParent,
        LPCWSTR pwszUrl,
        LPCWSTR pwszText,
        DWORD dwPromptFlags);
    HRESULT (__attribute__((__stdcall__)) *LogAction)(
        IInternetZoneManagerEx2 *This,
        DWORD dwAction,
        LPCWSTR pwszUrl,
        LPCWSTR pwszText,
        DWORD dwLogFlags);
    HRESULT (__attribute__((__stdcall__)) *CreateZoneEnumerator)(
        IInternetZoneManagerEx2 *This,
        DWORD *pdwEnum,
        DWORD *pdwCount,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *GetZoneAt)(
        IInternetZoneManagerEx2 *This,
        DWORD dwEnum,
        DWORD dwIndex,
        DWORD *pdwZone);
    HRESULT (__attribute__((__stdcall__)) *DestroyZoneEnumerator)(
        IInternetZoneManagerEx2 *This,
        DWORD dwEnum);
    HRESULT (__attribute__((__stdcall__)) *CopyTemplatePoliciesToZone)(
        IInternetZoneManagerEx2 *This,
        DWORD dwTemplate,
        DWORD dwZone,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *GetZoneActionPolicyEx)(
        IInternetZoneManagerEx2 *This,
        DWORD dwZone,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        URLZONEREG urlZoneReg,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *SetZoneActionPolicyEx)(
        IInternetZoneManagerEx2 *This,
        DWORD dwZone,
        DWORD dwAction,
        BYTE *pPolicy,
        DWORD cbPolicy,
        URLZONEREG urlZoneReg,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *GetZoneAttributesEx)(
        IInternetZoneManagerEx2 *This,
        DWORD dwZone,
        ZONEATTRIBUTES *pZoneAttributes,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *GetZoneSecurityState)(
        IInternetZoneManagerEx2 *This,
        DWORD dwZoneIndex,
        WINBOOL fRespectPolicy,
        LPDWORD pdwState,
        WINBOOL *pfPolicyEncountered);
    HRESULT (__attribute__((__stdcall__)) *GetIESecurityState)(
        IInternetZoneManagerEx2 *This,
        WINBOOL fRespectPolicy,
        LPDWORD pdwState,
        WINBOOL *pfPolicyEncountered,
        WINBOOL fNoCache);
    HRESULT (__attribute__((__stdcall__)) *FixUnsecureSettings)(
        IInternetZoneManagerEx2 *This);
   
} IInternetZoneManagerEx2Vtbl;
struct IInternetZoneManagerEx2 {
    IInternetZoneManagerEx2Vtbl* lpVtbl;
};
extern const IID CLSID_SoftDistExt;
#define _LPSOFTDISTEXT_DEFINED 
#define SOFTDIST_FLAG_USAGE_EMAIL 0x1
#define SOFTDIST_FLAG_USAGE_PRECACHE 0x2
#define SOFTDIST_FLAG_USAGE_AUTOINSTALL 0x4
#define SOFTDIST_FLAG_DELETE_SUBSCRIPTION 0x8
#define SOFTDIST_ADSTATE_NONE 0x0
#define SOFTDIST_ADSTATE_AVAILABLE 0x1
#define SOFTDIST_ADSTATE_DOWNLOADED 0x2
#define SOFTDIST_ADSTATE_INSTALLED 0x3
typedef struct _tagCODEBASEHOLD {
    ULONG cbSize;
    LPWSTR szDistUnit;
    LPWSTR szCodeBase;
    DWORD dwVersionMS;
    DWORD dwVersionLS;
    DWORD dwStyle;
} CODEBASEHOLD;
typedef struct _tagCODEBASEHOLD *LPCODEBASEHOLD;
typedef struct _tagSOFTDISTINFO {
    ULONG cbSize;
    DWORD dwFlags;
    DWORD dwAdState;
    LPWSTR szTitle;
    LPWSTR szAbstract;
    LPWSTR szHREF;
    DWORD dwInstalledVersionMS;
    DWORD dwInstalledVersionLS;
    DWORD dwUpdateVersionMS;
    DWORD dwUpdateVersionLS;
    DWORD dwAdvertisedVersionMS;
    DWORD dwAdvertisedVersionLS;
    DWORD dwReserved;
} SOFTDISTINFO;
typedef struct _tagSOFTDISTINFO *LPSOFTDISTINFO;
#define __ISoftDistExt_INTERFACE_DEFINED__ 
extern const GUID IID_ISoftDistExt;
typedef struct ISoftDistExtVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ISoftDistExt *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ISoftDistExt *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ISoftDistExt *This);
    HRESULT (__attribute__((__stdcall__)) *ProcessSoftDist)(
        ISoftDistExt *This,
        LPCWSTR szCDFURL,
        IXMLElement *pSoftDistElement,
        LPSOFTDISTINFO lpsdi);
    HRESULT (__attribute__((__stdcall__)) *GetFirstCodeBase)(
        ISoftDistExt *This,
        LPWSTR *szCodeBase,
        LPDWORD dwMaxSize);
    HRESULT (__attribute__((__stdcall__)) *GetNextCodeBase)(
        ISoftDistExt *This,
        LPWSTR *szCodeBase,
        LPDWORD dwMaxSize);
    HRESULT (__attribute__((__stdcall__)) *AsyncInstallDistributionUnit)(
        ISoftDistExt *This,
        IBindCtx *pbc,
        LPVOID pvReserved,
        DWORD flags,
        LPCODEBASEHOLD lpcbh);
   
} ISoftDistExtVtbl;
struct ISoftDistExt {
    ISoftDistExtVtbl* lpVtbl;
};
extern HRESULT __attribute__((__stdcall__)) GetSoftwareUpdateInfo(LPCWSTR szDistUnit, LPSOFTDISTINFO psdi);
extern HRESULT __attribute__((__stdcall__)) SetSoftwareUpdateAdvertisementState(LPCWSTR szDistUnit, DWORD dwAdState, DWORD dwAdvertisedVersionMS, DWORD dwAdvertisedVersionLS);
#define _LPCATALOGFILEINFO_DEFINED 
#define __ICatalogFileInfo_INTERFACE_DEFINED__ 
typedef ICatalogFileInfo *LPCATALOGFILEINFO;
extern const GUID IID_ICatalogFileInfo;
typedef struct ICatalogFileInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ICatalogFileInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ICatalogFileInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ICatalogFileInfo *This);
    HRESULT (__attribute__((__stdcall__)) *GetCatalogFile)(
        ICatalogFileInfo *This,
        LPSTR *ppszCatalogFile);
    HRESULT (__attribute__((__stdcall__)) *GetJavaTrust)(
        ICatalogFileInfo *This,
        void **ppJavaTrust);
   
} ICatalogFileInfoVtbl;
struct ICatalogFileInfo {
    ICatalogFileInfoVtbl* lpVtbl;
};
#define _LPDATAFILTER_DEFINED 
#define __IDataFilter_INTERFACE_DEFINED__ 
typedef IDataFilter *LPDATAFILTER;
extern const GUID IID_IDataFilter;
typedef struct IDataFilterVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IDataFilter *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IDataFilter *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IDataFilter *This);
    HRESULT (__attribute__((__stdcall__)) *DoEncode)(
        IDataFilter *This,
        DWORD dwFlags,
        LONG lInBufferSize,
        BYTE *pbInBuffer,
        LONG lOutBufferSize,
        BYTE *pbOutBuffer,
        LONG lInBytesAvailable,
        LONG *plInBytesRead,
        LONG *plOutBytesWritten,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *DoDecode)(
        IDataFilter *This,
        DWORD dwFlags,
        LONG lInBufferSize,
        BYTE *pbInBuffer,
        LONG lOutBufferSize,
        BYTE *pbOutBuffer,
        LONG lInBytesAvailable,
        LONG *plInBytesRead,
        LONG *plOutBytesWritten,
        DWORD dwReserved);
    HRESULT (__attribute__((__stdcall__)) *SetEncodingLevel)(
        IDataFilter *This,
        DWORD dwEncLevel);
   
} IDataFilterVtbl;
struct IDataFilter {
    IDataFilterVtbl* lpVtbl;
};
#define _LPENCODINGFILTERFACTORY_DEFINED 
typedef struct _tagPROTOCOLFILTERDATA {
    DWORD cbSize;
    IInternetProtocolSink *pProtocolSink;
    IInternetProtocol *pProtocol;
    IUnknown *pUnk;
    DWORD dwFilterFlags;
} PROTOCOLFILTERDATA;
#define __IEncodingFilterFactory_INTERFACE_DEFINED__ 
typedef IEncodingFilterFactory *LPENCODINGFILTERFACTORY;
typedef struct _tagDATAINFO {
    ULONG ulTotalSize;
    ULONG ulavrPacketSize;
    ULONG ulConnectSpeed;
    ULONG ulProcessorSpeed;
} DATAINFO;
extern const GUID IID_IEncodingFilterFactory;
typedef struct IEncodingFilterFactoryVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IEncodingFilterFactory *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IEncodingFilterFactory *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IEncodingFilterFactory *This);
    HRESULT (__attribute__((__stdcall__)) *FindBestFilter)(
        IEncodingFilterFactory *This,
        LPCWSTR pwzCodeIn,
        LPCWSTR pwzCodeOut,
        DATAINFO info,
        IDataFilter **ppDF);
    HRESULT (__attribute__((__stdcall__)) *GetDefaultFilter)(
        IEncodingFilterFactory *This,
        LPCWSTR pwzCodeIn,
        LPCWSTR pwzCodeOut,
        IDataFilter **ppDF);
   
} IEncodingFilterFactoryVtbl;
struct IEncodingFilterFactory {
    IEncodingFilterFactoryVtbl* lpVtbl;
};
#define _HITLOGGING_DEFINED 
WINBOOL __attribute__((__stdcall__)) IsLoggingEnabledA(LPCSTR pszUrl);
WINBOOL __attribute__((__stdcall__)) IsLoggingEnabledW(LPCWSTR pwszUrl);
#define IsLoggingEnabled __MINGW_NAME_AW(IsLoggingEnabled)
typedef struct _tagHIT_LOGGING_INFO {
    DWORD dwStructSize;
    LPSTR lpszLoggedUrlName;
    SYSTEMTIME StartTime;
    SYSTEMTIME EndTime;
    LPSTR lpszExtendedInfo;
} HIT_LOGGING_INFO;
typedef struct _tagHIT_LOGGING_INFO *LPHIT_LOGGING_INFO;
WINBOOL __attribute__((__stdcall__)) WriteHitLogging(LPHIT_LOGGING_INFO lpLogginginfo);
#define CONFIRMSAFETYACTION_LOADOBJECT 0x1
struct CONFIRMSAFETY {
    CLSID clsid;
    IUnknown *pUnk;
    DWORD dwFlags;
};
extern const GUID GUID_CUSTOM_CONFIRMOBJECTSAFETY;
#define _LPIWRAPPEDPROTOCOL_DEFINED 
#define __IWrappedProtocol_INTERFACE_DEFINED__ 
typedef IWrappedProtocol *LPIWRAPPEDPROTOCOL;
extern const GUID IID_IWrappedProtocol;
typedef struct IWrappedProtocolVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IWrappedProtocol *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IWrappedProtocol *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IWrappedProtocol *This);
    HRESULT (__attribute__((__stdcall__)) *GetWrapperCode)(
        IWrappedProtocol *This,
        LONG *pnCode,
        DWORD_PTR dwReserved);
   
} IWrappedProtocolVtbl;
struct IWrappedProtocol {
    IWrappedProtocolVtbl* lpVtbl;
};
#define _LPGETBINDHANDLE_DEFINED 
#define __IGetBindHandle_INTERFACE_DEFINED__ 
typedef IGetBindHandle *LPGETBINDHANDLE;
typedef enum __WIDL_urlmon_generated_name_0000001F {
    BINDHANDLETYPES_APPCACHE = 0x0,
    BINDHANDLETYPES_DEPENDENCY = 0x1,
    BINDHANDLETYPES_COUNT = 0x2
} BINDHANDLETYPES;
extern const GUID IID_IGetBindHandle;
typedef struct IGetBindHandleVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IGetBindHandle *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IGetBindHandle *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IGetBindHandle *This);
    HRESULT (__attribute__((__stdcall__)) *GetBindHandle)(
        IGetBindHandle *This,
        BINDHANDLETYPES enumRequestedHandle,
        HANDLE *pRetHandle);
   
} IGetBindHandleVtbl;
struct IGetBindHandle {
    IGetBindHandleVtbl* lpVtbl;
};
#define _XHRPLUGGABLEPROTOCOL_DEFINED 
typedef struct _tagPROTOCOL_ARGUMENT {
    LPCWSTR szMethod;
    LPCWSTR szTargetUrl;
} PROTOCOL_ARGUMENT;
typedef struct _tagPROTOCOL_ARGUMENT *LPPROTOCOL_ARGUMENT;
#define _LPBINDCALLBACKREDIRECT_DEFINED 
#define __IBindCallbackRedirect_INTERFACE_DEFINED__ 
typedef IBindCallbackRedirect *LPBINDCALLBACKREDIRECT;
extern const GUID IID_IBindCallbackRedirect;
typedef struct IBindCallbackRedirectVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IBindCallbackRedirect *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IBindCallbackRedirect *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IBindCallbackRedirect *This);
    HRESULT (__attribute__((__stdcall__)) *Redirect)(
        IBindCallbackRedirect *This,
        LPCWSTR lpcUrl,
        VARIANT_BOOL *vbCancel);
   
} IBindCallbackRedirectVtbl;
struct IBindCallbackRedirect {
    IBindCallbackRedirectVtbl* lpVtbl;
};
ULONG __attribute__((__stdcall__)) STGMEDIUM_UserSize (ULONG *, ULONG, STGMEDIUM *);
unsigned char * __attribute__((__stdcall__)) STGMEDIUM_UserMarshal (ULONG *, unsigned char *, STGMEDIUM *);
unsigned char * __attribute__((__stdcall__)) STGMEDIUM_UserUnmarshal(ULONG *, unsigned char *, STGMEDIUM *);
void __attribute__((__stdcall__)) STGMEDIUM_UserFree (ULONG *, STGMEDIUM *);
ULONG __attribute__((__stdcall__)) CLIPFORMAT_UserSize (ULONG *, ULONG, CLIPFORMAT *);
unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserMarshal (ULONG *, unsigned char *, CLIPFORMAT *);
unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserUnmarshal(ULONG *, unsigned char *, CLIPFORMAT *);
void __attribute__((__stdcall__)) CLIPFORMAT_UserFree (ULONG *, CLIPFORMAT *);
ULONG __attribute__((__stdcall__)) HWND_UserSize (ULONG *, ULONG, HWND *);
unsigned char * __attribute__((__stdcall__)) HWND_UserMarshal (ULONG *, unsigned char *, HWND *);
unsigned char * __attribute__((__stdcall__)) HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
void __attribute__((__stdcall__)) HWND_UserFree (ULONG *, HWND *);
ULONG __attribute__((__stdcall__)) BSTR_UserSize (ULONG *, ULONG, BSTR *);
unsigned char * __attribute__((__stdcall__)) BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *);
unsigned char * __attribute__((__stdcall__)) BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void __attribute__((__stdcall__)) BSTR_UserFree (ULONG *, BSTR *);
#undef interface
#define interface struct
#define __propidl_h__ 
#define __IPropertyStorage_FWD_DEFINED__ 
typedef struct IPropertyStorage IPropertyStorage;
#define __IPropertySetStorage_FWD_DEFINED__ 
typedef struct IPropertySetStorage IPropertySetStorage;
#define __IEnumSTATPROPSTG_FWD_DEFINED__ 
typedef struct IEnumSTATPROPSTG IEnumSTATPROPSTG;
#define __IEnumSTATPROPSETSTG_FWD_DEFINED__ 
typedef struct IEnumSTATPROPSETSTG IEnumSTATPROPSETSTG;
#undef interface
#define interface struct
#undef interface
#define interface struct
#undef interface
#define interface struct
typedef struct tagVersionedStream {
    GUID guidVersion;
    IStream *pStream;
} VERSIONEDSTREAM;
typedef struct tagVersionedStream *LPVERSIONEDSTREAM;
#define PROPSETFLAG_DEFAULT (0)
#define PROPSETFLAG_NONSIMPLE (1)
#define PROPSETFLAG_ANSI (2)
#define PROPSETFLAG_UNBUFFERED (4)
#define PROPSETFLAG_CASE_SENSITIVE (8)
#define PROPSET_BEHAVIOR_CASE_SENSITIVE (1)
typedef struct tagPROPVARIANT PROPVARIANT;
typedef struct tagCAC {
    ULONG cElems;
    CHAR *pElems;
} CAC;
typedef struct tagCAUB {
    ULONG cElems;
    UCHAR *pElems;
} CAUB;
typedef struct tagCAI {
    ULONG cElems;
    SHORT *pElems;
} CAI;
typedef struct tagCAUI {
    ULONG cElems;
    USHORT *pElems;
} CAUI;
typedef struct tagCAL {
    ULONG cElems;
    LONG *pElems;
} CAL;
typedef struct tagCAUL {
    ULONG cElems;
    ULONG *pElems;
} CAUL;
typedef struct tagCAFLT {
    ULONG cElems;
    FLOAT *pElems;
} CAFLT;
typedef struct tagCADBL {
    ULONG cElems;
    DOUBLE *pElems;
} CADBL;
typedef struct tagCACY {
    ULONG cElems;
    CY *pElems;
} CACY;
typedef struct tagCADATE {
    ULONG cElems;
    DATE *pElems;
} CADATE;
typedef struct tagCABSTR {
    ULONG cElems;
    BSTR *pElems;
} CABSTR;
typedef struct tagCABSTRBLOB {
    ULONG cElems;
    BSTRBLOB *pElems;
} CABSTRBLOB;
typedef struct tagCABOOL {
    ULONG cElems;
    VARIANT_BOOL *pElems;
} CABOOL;
typedef struct tagCASCODE {
    ULONG cElems;
    SCODE *pElems;
} CASCODE;
typedef struct tagCAPROPVARIANT {
    ULONG cElems;
    PROPVARIANT *pElems;
} CAPROPVARIANT;
typedef struct tagCAH {
    ULONG cElems;
    LARGE_INTEGER *pElems;
} CAH;
typedef struct tagCAUH {
    ULONG cElems;
    ULARGE_INTEGER *pElems;
} CAUH;
typedef struct tagCALPSTR {
    ULONG cElems;
    LPSTR *pElems;
} CALPSTR;
typedef struct tagCALPWSTR {
    ULONG cElems;
    LPWSTR *pElems;
} CALPWSTR;
typedef struct tagCAFILETIME {
    ULONG cElems;
    FILETIME *pElems;
} CAFILETIME;
typedef struct tagCACLIPDATA {
    ULONG cElems;
    CLIPDATA *pElems;
} CACLIPDATA;
typedef struct tagCACLSID {
    ULONG cElems;
    CLSID *pElems;
} CACLSID;
typedef WORD PROPVAR_PAD1;
typedef WORD PROPVAR_PAD2;
typedef WORD PROPVAR_PAD3;
#define tag_inner_PROPVARIANT 
  struct tagPROPVARIANT {
    __extension__ union {
      __extension__
struct {
    VARTYPE vt;
    PROPVAR_PAD1 wReserved1;
    PROPVAR_PAD2 wReserved2;
    PROPVAR_PAD3 wReserved3;
    __extension__ union {
        CHAR cVal;
        UCHAR bVal;
        SHORT iVal;
        USHORT uiVal;
        LONG lVal;
        ULONG ulVal;
        INT intVal;
        UINT uintVal;
        LARGE_INTEGER hVal;
        ULARGE_INTEGER uhVal;
        FLOAT fltVal;
        DOUBLE dblVal;
        VARIANT_BOOL boolVal;
        SCODE scode;
        CY cyVal;
        DATE date;
        FILETIME filetime;
        CLSID *puuid;
        CLIPDATA *pclipdata;
        BSTR bstrVal;
        BSTRBLOB bstrblobVal;
        BLOB blob;
        LPSTR pszVal;
        LPWSTR pwszVal;
        IUnknown *punkVal;
        IDispatch *pdispVal;
        IStream *pStream;
        IStorage *pStorage;
        LPVERSIONEDSTREAM pVersionedStream;
        LPSAFEARRAY parray;
        CAC cac;
        CAUB caub;
        CAI cai;
        CAUI caui;
        CAL cal;
        CAUL caul;
        CAH cah;
        CAUH cauh;
        CAFLT caflt;
        CADBL cadbl;
        CABOOL cabool;
        CASCODE cascode;
        CACY cacy;
        CADATE cadate;
        CAFILETIME cafiletime;
        CACLSID cauuid;
        CACLIPDATA caclipdata;
        CABSTR cabstr;
        CABSTRBLOB cabstrblob;
        CALPSTR calpstr;
        CALPWSTR calpwstr;
        CAPROPVARIANT capropvar;
        CHAR *pcVal;
        UCHAR *pbVal;
        SHORT *piVal;
        USHORT *puiVal;
        LONG *plVal;
        ULONG *pulVal;
        INT *pintVal;
        UINT *puintVal;
        FLOAT *pfltVal;
        DOUBLE *pdblVal;
        VARIANT_BOOL *pboolVal;
        DECIMAL *pdecVal;
        SCODE *pscode;
        CY *pcyVal;
        DATE *pdate;
        BSTR *pbstrVal;
        IUnknown **ppunkVal;
        IDispatch **ppdispVal;
        LPSAFEARRAY *pparray;
        PROPVARIANT *pvarVal;
    } ;
};
    DECIMAL decVal;
  };
};
typedef struct tagPROPVARIANT * LPPROPVARIANT;
#define _REFPROPVARIANT_DEFINED 
#define REFPROPVARIANT const PROPVARIANT * __MIDL_CONST
#define PID_DICTIONARY (0x0)
#define PID_CODEPAGE (0x1)
#define PID_FIRST_USABLE (0x2)
#define PID_FIRST_NAME_DEFAULT (0xfff)
#define PID_LOCALE (0x80000000)
#define PID_MODIFY_TIME (0x80000001)
#define PID_SECURITY (0x80000002)
#define PID_BEHAVIOR (0x80000003)
#define PID_ILLEGAL (0xffffffff)
#define PID_MIN_READONLY (0x80000000)
#define PID_MAX_READONLY (0xbfffffff)
#define PIDDI_THUMBNAIL __MSABI_LONG(0x2)
#define PIDSI_TITLE __MSABI_LONG(0x2)
#define PIDSI_SUBJECT __MSABI_LONG(0x3)
#define PIDSI_AUTHOR __MSABI_LONG(0x4)
#define PIDSI_KEYWORDS __MSABI_LONG(0x5)
#define PIDSI_COMMENTS __MSABI_LONG(0x6)
#define PIDSI_TEMPLATE __MSABI_LONG(0x7)
#define PIDSI_LASTAUTHOR __MSABI_LONG(0x8)
#define PIDSI_REVNUMBER __MSABI_LONG(0x9)
#define PIDSI_EDITTIME __MSABI_LONG(0xa)
#define PIDSI_LASTPRINTED __MSABI_LONG(0xb)
#define PIDSI_CREATE_DTM __MSABI_LONG(0xc)
#define PIDSI_LASTSAVE_DTM __MSABI_LONG(0xd)
#define PIDSI_PAGECOUNT __MSABI_LONG(0xe)
#define PIDSI_WORDCOUNT __MSABI_LONG(0xf)
#define PIDSI_CHARCOUNT __MSABI_LONG(0x10)
#define PIDSI_THUMBNAIL __MSABI_LONG(0x11)
#define PIDSI_APPNAME __MSABI_LONG(0x12)
#define PIDSI_DOC_SECURITY __MSABI_LONG(0x13)
#define PIDDSI_CATEGORY 0x00000002
#define PIDDSI_PRESFORMAT 0x00000003
#define PIDDSI_BYTECOUNT 0x00000004
#define PIDDSI_LINECOUNT 0x00000005
#define PIDDSI_PARCOUNT 0x00000006
#define PIDDSI_SLIDECOUNT 0x00000007
#define PIDDSI_NOTECOUNT 0x00000008
#define PIDDSI_HIDDENCOUNT 0x00000009
#define PIDDSI_MMCLIPCOUNT 0x0000000A
#define PIDDSI_SCALE 0x0000000B
#define PIDDSI_HEADINGPAIR 0x0000000C
#define PIDDSI_DOCPARTS 0x0000000D
#define PIDDSI_MANAGER 0x0000000E
#define PIDDSI_COMPANY 0x0000000F
#define PIDDSI_LINKSDIRTY 0x00000010
#define PIDMSI_EDITOR __MSABI_LONG(0x2)
#define PIDMSI_SUPPLIER __MSABI_LONG(0x3)
#define PIDMSI_SOURCE __MSABI_LONG(0x4)
#define PIDMSI_SEQUENCE_NO __MSABI_LONG(0x5)
#define PIDMSI_PROJECT __MSABI_LONG(0x6)
#define PIDMSI_STATUS __MSABI_LONG(0x7)
#define PIDMSI_OWNER __MSABI_LONG(0x8)
#define PIDMSI_RATING __MSABI_LONG(0x9)
#define PIDMSI_PRODUCTION __MSABI_LONG(0xa)
#define PIDMSI_COPYRIGHT __MSABI_LONG(0xb)
enum PIDMSI_STATUS_VALUE {
    PIDMSI_STATUS_NORMAL = 0,
    PIDMSI_STATUS_NEW = 1,
    PIDMSI_STATUS_PRELIM = 2,
    PIDMSI_STATUS_DRAFT = 3,
    PIDMSI_STATUS_INPROGRESS = 4,
    PIDMSI_STATUS_EDIT = 5,
    PIDMSI_STATUS_REVIEW = 6,
    PIDMSI_STATUS_PROOF = 7,
    PIDMSI_STATUS_FINAL = 8,
    PIDMSI_STATUS_OTHER = 0x7fff
};
#define PRSPEC_INVALID (0xffffffff)
#define PRSPEC_LPWSTR (0)
#define PRSPEC_PROPID (1)
typedef struct tagPROPSPEC {
    ULONG ulKind;
    union {
        PROPID propid;
        LPOLESTR lpwstr;
    } ;
} PROPSPEC;
typedef struct tagSTATPROPSTG {
    LPOLESTR lpwstrName;
    PROPID propid;
    VARTYPE vt;
} STATPROPSTG;
#define PROPSETHDR_OSVER_KIND(dwOSVer) HIWORD((dwOSVer))
#define PROPSETHDR_OSVER_MAJOR(dwOSVer) LOBYTE(LOWORD((dwOSVer)))
#define PROPSETHDR_OSVER_MINOR(dwOSVer) HIBYTE(LOWORD((dwOSVer)))
#define PROPSETHDR_OSVERSION_UNKNOWN 0xffffffff
typedef struct tagSTATPROPSETSTG {
    FMTID fmtid;
    CLSID clsid;
    DWORD grfFlags;
    FILETIME mtime;
    FILETIME ctime;
    FILETIME atime;
    DWORD dwOSVersion;
} STATPROPSETSTG;
#define __IPropertyStorage_INTERFACE_DEFINED__ 
extern const GUID IID_IPropertyStorage;
typedef struct IPropertyStorageVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPropertyStorage *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPropertyStorage *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPropertyStorage *This);
    HRESULT (__attribute__((__stdcall__)) *ReadMultiple)(
        IPropertyStorage *This,
        ULONG cpspec,
        const PROPSPEC rgpspec[],
        PROPVARIANT rgpropvar[]);
    HRESULT (__attribute__((__stdcall__)) *WriteMultiple)(
        IPropertyStorage *This,
        ULONG cpspec,
        const PROPSPEC rgpspec[],
        const PROPVARIANT rgpropvar[],
        PROPID propidNameFirst);
    HRESULT (__attribute__((__stdcall__)) *DeleteMultiple)(
        IPropertyStorage *This,
        ULONG cpspec,
        const PROPSPEC rgpspec[]);
    HRESULT (__attribute__((__stdcall__)) *ReadPropertyNames)(
        IPropertyStorage *This,
        ULONG cpropid,
        const PROPID rgpropid[],
        LPOLESTR rglpwstrName[]);
    HRESULT (__attribute__((__stdcall__)) *WritePropertyNames)(
        IPropertyStorage *This,
        ULONG cpropid,
        const PROPID rgpropid[],
        const LPOLESTR rglpwstrName[]);
    HRESULT (__attribute__((__stdcall__)) *DeletePropertyNames)(
        IPropertyStorage *This,
        ULONG cpropid,
        const PROPID rgpropid[]);
    HRESULT (__attribute__((__stdcall__)) *Commit)(
        IPropertyStorage *This,
        DWORD grfCommitFlags);
    HRESULT (__attribute__((__stdcall__)) *Revert)(
        IPropertyStorage *This);
    HRESULT (__attribute__((__stdcall__)) *Enum)(
        IPropertyStorage *This,
        IEnumSTATPROPSTG **ppenum);
    HRESULT (__attribute__((__stdcall__)) *SetTimes)(
        IPropertyStorage *This,
        const FILETIME *pctime,
        const FILETIME *patime,
        const FILETIME *pmtime);
    HRESULT (__attribute__((__stdcall__)) *SetClass)(
        IPropertyStorage *This,
        const IID *const clsid);
    HRESULT (__attribute__((__stdcall__)) *Stat)(
        IPropertyStorage *This,
        STATPROPSETSTG *pstatpsstg);
   
} IPropertyStorageVtbl;
struct IPropertyStorage {
    IPropertyStorageVtbl* lpVtbl;
};
#define __IPropertySetStorage_INTERFACE_DEFINED__ 
typedef IPropertySetStorage *LPPROPERTYSETSTORAGE;
extern const GUID IID_IPropertySetStorage;
typedef struct IPropertySetStorageVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPropertySetStorage *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPropertySetStorage *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPropertySetStorage *This);
    HRESULT (__attribute__((__stdcall__)) *Create)(
        IPropertySetStorage *This,
        const IID *const rfmtid,
        const CLSID *pclsid,
        DWORD grfFlags,
        DWORD grfMode,
        IPropertyStorage **ppprstg);
    HRESULT (__attribute__((__stdcall__)) *Open)(
        IPropertySetStorage *This,
        const IID *const rfmtid,
        DWORD grfMode,
        IPropertyStorage **ppprstg);
    HRESULT (__attribute__((__stdcall__)) *Delete)(
        IPropertySetStorage *This,
        const IID *const rfmtid);
    HRESULT (__attribute__((__stdcall__)) *Enum)(
        IPropertySetStorage *This,
        IEnumSTATPROPSETSTG **ppenum);
   
} IPropertySetStorageVtbl;
struct IPropertySetStorage {
    IPropertySetStorageVtbl* lpVtbl;
};
#define __IEnumSTATPROPSTG_INTERFACE_DEFINED__ 
typedef IEnumSTATPROPSTG *LPENUMSTATPROPSTG;
extern const GUID IID_IEnumSTATPROPSTG;
typedef struct IEnumSTATPROPSTGVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IEnumSTATPROPSTG *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IEnumSTATPROPSTG *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IEnumSTATPROPSTG *This);
    HRESULT (__attribute__((__stdcall__)) *Next)(
        IEnumSTATPROPSTG *This,
        ULONG celt,
        STATPROPSTG *rgelt,
        ULONG *pceltFetched);
    HRESULT (__attribute__((__stdcall__)) *Skip)(
        IEnumSTATPROPSTG *This,
        ULONG celt);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        IEnumSTATPROPSTG *This);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IEnumSTATPROPSTG *This,
        IEnumSTATPROPSTG **ppenum);
   
} IEnumSTATPROPSTGVtbl;
struct IEnumSTATPROPSTG {
    IEnumSTATPROPSTGVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IEnumSTATPROPSTG_RemoteNext_Proxy(
    IEnumSTATPROPSTG* This,
    ULONG celt,
    STATPROPSTG *rgelt,
    ULONG *pceltFetched);
void __attribute__((__stdcall__)) IEnumSTATPROPSTG_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IEnumSTATPROPSTG_Next_Proxy(
    IEnumSTATPROPSTG* This,
    ULONG celt,
    STATPROPSTG *rgelt,
    ULONG *pceltFetched);
HRESULT __attribute__((__stdcall__)) IEnumSTATPROPSTG_Next_Stub(
    IEnumSTATPROPSTG* This,
    ULONG celt,
    STATPROPSTG *rgelt,
    ULONG *pceltFetched);
#define __IEnumSTATPROPSETSTG_INTERFACE_DEFINED__ 
typedef IEnumSTATPROPSETSTG *LPENUMSTATPROPSETSTG;
extern const GUID IID_IEnumSTATPROPSETSTG;
typedef struct IEnumSTATPROPSETSTGVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IEnumSTATPROPSETSTG *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IEnumSTATPROPSETSTG *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IEnumSTATPROPSETSTG *This);
    HRESULT (__attribute__((__stdcall__)) *Next)(
        IEnumSTATPROPSETSTG *This,
        ULONG celt,
        STATPROPSETSTG *rgelt,
        ULONG *pceltFetched);
    HRESULT (__attribute__((__stdcall__)) *Skip)(
        IEnumSTATPROPSETSTG *This,
        ULONG celt);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        IEnumSTATPROPSETSTG *This);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IEnumSTATPROPSETSTG *This,
        IEnumSTATPROPSETSTG **ppenum);
   
} IEnumSTATPROPSETSTGVtbl;
struct IEnumSTATPROPSETSTG {
    IEnumSTATPROPSETSTGVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IEnumSTATPROPSETSTG_RemoteNext_Proxy(
    IEnumSTATPROPSETSTG* This,
    ULONG celt,
    STATPROPSETSTG *rgelt,
    ULONG *pceltFetched);
void __attribute__((__stdcall__)) IEnumSTATPROPSETSTG_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IEnumSTATPROPSETSTG_Next_Proxy(
    IEnumSTATPROPSETSTG* This,
    ULONG celt,
    STATPROPSETSTG *rgelt,
    ULONG *pceltFetched);
HRESULT __attribute__((__stdcall__)) IEnumSTATPROPSETSTG_Next_Stub(
    IEnumSTATPROPSETSTG* This,
    ULONG celt,
    STATPROPSETSTG *rgelt,
    ULONG *pceltFetched);
typedef IPropertyStorage *LPPROPERTYSTORAGE;
  extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) PropVariantCopy(PROPVARIANT *pvarDest,const PROPVARIANT *pvarSrc);
  extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) PropVariantClear(PROPVARIANT *pvar);
  extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) FreePropVariantArray(ULONG cVariants, PROPVARIANT *rgvars);
#define _PROPVARIANTINIT_DEFINED_ 
#define PropVariantInit(pvar) memset ((pvar), 0, sizeof (PROPVARIANT))
  extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgCreatePropStg(IUnknown *pUnk, const IID *const fmtid, const CLSID *pclsid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg);
  extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgOpenPropStg(IUnknown *pUnk, const IID *const fmtid, DWORD grfFlags, DWORD dwReserved, IPropertyStorage **ppPropStg);
  extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) StgCreatePropSetStg(IStorage *pStorage, DWORD dwReserved, IPropertySetStorage **ppPropSetStg);
#define CCH_MAX_PROPSTG_NAME 31
  extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) FmtIdToPropStgName(const FMTID *pfmtid, LPOLESTR oszName);
  extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) PropStgNameToFmtId(const LPOLESTR oszName, FMTID *pfmtid);
#define _SERIALIZEDPROPERTYVALUE_DEFINED_ 
typedef struct tagSERIALIZEDPROPERTYVALUE {
  DWORD dwType;
  BYTE rgb[1];
} SERIALIZEDPROPERTYVALUE;
extern SERIALIZEDPROPERTYVALUE * __attribute__((__stdcall__)) StgConvertVariantToProperty(const PROPVARIANT *pvar, USHORT CodePage, SERIALIZEDPROPERTYVALUE *pprop, ULONG *pcb, PROPID pid, BOOLEAN fReserved, ULONG *pcIndirect);
ULONG __attribute__((__stdcall__)) BSTR_UserSize (ULONG *, ULONG, BSTR *);
unsigned char * __attribute__((__stdcall__)) BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *);
unsigned char * __attribute__((__stdcall__)) BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void __attribute__((__stdcall__)) BSTR_UserFree (ULONG *, BSTR *);
ULONG __attribute__((__stdcall__)) LPSAFEARRAY_UserSize (ULONG *, ULONG, LPSAFEARRAY *);
unsigned char * __attribute__((__stdcall__)) LPSAFEARRAY_UserMarshal (ULONG *, unsigned char *, LPSAFEARRAY *);
unsigned char * __attribute__((__stdcall__)) LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *);
void __attribute__((__stdcall__)) LPSAFEARRAY_UserFree (ULONG *, LPSAFEARRAY *);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateStdProgressIndicator (HWND hwndParent, LPCOLESTR pszTitle, IBindStatusCallback *pIbscCaller, IBindStatusCallback **ppIbsc);
#pragma pack(pop)
#define _OLEAUTO_H_ 
#pragma pack(push,8)
#define WINOLEAUTAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI
#define WINOLEAUTAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI
extern const IID IID_StdOle;
#define STDOLE_MAJORVERNUM 0x1
#define STDOLE_MINORVERNUM 0x0
#define STDOLE_LCID 0x0000
#define STDOLE2_MAJORVERNUM 0x2
#define STDOLE2_MINORVERNUM 0x0
#define STDOLE2_LCID 0x0000
#undef interface
#define interface struct
extern __attribute__((dllimport)) BSTR __attribute__((__stdcall__)) SysAllocString(const OLECHAR *);
extern __attribute__((dllimport)) INT __attribute__((__stdcall__)) SysReAllocString(BSTR *,const OLECHAR *);
extern __attribute__((dllimport)) BSTR __attribute__((__stdcall__)) SysAllocStringLen(const OLECHAR *,UINT);
extern __attribute__((dllimport)) INT __attribute__((__stdcall__)) SysReAllocStringLen(BSTR *,const OLECHAR *,UINT);
extern __attribute__((dllimport)) void __attribute__((__stdcall__)) SysFreeString(BSTR);
extern __attribute__((dllimport)) UINT __attribute__((__stdcall__)) SysStringLen(BSTR);
extern __attribute__((dllimport)) UINT __attribute__((__stdcall__)) SysStringByteLen(BSTR bstr);
extern __attribute__((dllimport)) BSTR __attribute__((__stdcall__)) SysAllocStringByteLen(LPCSTR psz,UINT len);
extern __attribute__((dllimport)) INT __attribute__((__stdcall__)) DosDateTimeToVariantTime(USHORT wDosDate,USHORT wDosTime,DOUBLE *pvtime);
extern __attribute__((dllimport)) INT __attribute__((__stdcall__)) VariantTimeToDosDateTime(DOUBLE vtime,USHORT *pwDosDate,USHORT *pwDosTime);
extern __attribute__((dllimport)) INT __attribute__((__stdcall__)) SystemTimeToVariantTime(LPSYSTEMTIME lpSystemTime,DOUBLE *pvtime);
extern __attribute__((dllimport)) INT __attribute__((__stdcall__)) VariantTimeToSystemTime(DOUBLE vtime,LPSYSTEMTIME lpSystemTime);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayAllocDescriptor(UINT cDims,SAFEARRAY **ppsaOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayAllocDescriptorEx(VARTYPE vt,UINT cDims,SAFEARRAY **ppsaOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayAllocData(SAFEARRAY *psa);
extern __attribute__((dllimport)) SAFEARRAY * __attribute__((__stdcall__)) SafeArrayCreate(VARTYPE vt,UINT cDims,SAFEARRAYBOUND *rgsabound);
extern __attribute__((dllimport)) SAFEARRAY * __attribute__((__stdcall__)) SafeArrayCreateEx(VARTYPE vt,UINT cDims,SAFEARRAYBOUND *rgsabound,PVOID pvExtra);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayCopyData(SAFEARRAY *psaSource,SAFEARRAY *psaTarget);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayDestroyDescriptor(SAFEARRAY *psa);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayDestroyData(SAFEARRAY *psa);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayDestroy(SAFEARRAY *psa);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayRedim(SAFEARRAY *psa,SAFEARRAYBOUND *psaboundNew);
extern __attribute__((dllimport)) UINT __attribute__((__stdcall__)) SafeArrayGetDim(SAFEARRAY *psa);
extern __attribute__((dllimport)) UINT __attribute__((__stdcall__)) SafeArrayGetElemsize(SAFEARRAY *psa);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayGetUBound(SAFEARRAY *psa,UINT nDim,LONG *plUbound);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayGetLBound(SAFEARRAY *psa,UINT nDim,LONG *plLbound);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayLock(SAFEARRAY *psa);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayUnlock(SAFEARRAY *psa);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayAccessData(SAFEARRAY *psa,void **ppvData);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayUnaccessData(SAFEARRAY *psa);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayGetElement(SAFEARRAY *psa,LONG *rgIndices,void *pv);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayPutElement(SAFEARRAY *psa,LONG *rgIndices,void *pv);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayCopy(SAFEARRAY *psa,SAFEARRAY **ppsaOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayPtrOfIndex(SAFEARRAY *psa,LONG *rgIndices,void **ppvData);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArraySetRecordInfo(SAFEARRAY *psa,IRecordInfo *prinfo);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayGetRecordInfo(SAFEARRAY *psa,IRecordInfo **prinfo);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArraySetIID(SAFEARRAY *psa,const GUID *const guid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayGetIID(SAFEARRAY *psa,GUID *pguid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SafeArrayGetVartype(SAFEARRAY *psa,VARTYPE *pvt);
extern __attribute__((dllimport)) SAFEARRAY * __attribute__((__stdcall__)) SafeArrayCreateVector(VARTYPE vt,LONG lLbound,ULONG cElements);
extern __attribute__((dllimport)) SAFEARRAY * __attribute__((__stdcall__)) SafeArrayCreateVectorEx(VARTYPE vt,LONG lLbound,ULONG cElements,PVOID pvExtra);
extern __attribute__((dllimport)) void __attribute__((__stdcall__)) VariantInit(VARIANTARG *pvarg);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VariantClear(VARIANTARG *pvarg);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VariantCopy(VARIANTARG *pvargDest,VARIANTARG *pvargSrc);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VariantCopyInd(VARIANT *pvarDest,VARIANTARG *pvargSrc);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VariantChangeType(VARIANTARG *pvargDest,VARIANTARG *pvarSrc,USHORT wFlags,VARTYPE vt);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VariantChangeTypeEx(VARIANTARG *pvargDest,VARIANTARG *pvarSrc,LCID lcid,USHORT wFlags,VARTYPE vt);
#define VARIANT_NOVALUEPROP 0x01
#define VARIANT_ALPHABOOL 0x02
#define VARIANT_NOUSEROVERRIDE 0x04
#define VARIANT_CALENDAR_HIJRI 0x08
#define VARIANT_LOCALBOOL 0x10
#define VARIANT_CALENDAR_THAI 0x20
#define VARIANT_CALENDAR_GREGORIAN 0x40
#define VARIANT_USE_NLS 0x80
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VectorFromBstr (BSTR bstr,SAFEARRAY **ppsa);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) BstrFromVector (SAFEARRAY *psa,BSTR *pbstr);
#define VAR_TIMEVALUEONLY ((DWORD)0x00000001)
#define VAR_DATEVALUEONLY ((DWORD)0x00000002)
#define VAR_VALIDDATE ((DWORD)0x00000004)
#define VAR_CALENDAR_HIJRI ((DWORD)0x00000008)
#define VAR_LOCALBOOL ((DWORD)0x00000010)
#define VAR_FORMAT_NOSUBSTITUTE ((DWORD)0x00000020)
#define VAR_FOURDIGITYEARS ((DWORD)0x00000040)
#define LOCALE_USE_NLS 0x10000000
#define VAR_CALENDAR_THAI ((DWORD)0x00000080)
#define VAR_CALENDAR_GREGORIAN ((DWORD)0x00000100)
#define VTDATEGRE_MAX 2958465
#define VTDATEGRE_MIN -657434
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromI2(SHORT sIn,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromI4(LONG lIn,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromI8(LONG64 i64In,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromR4(FLOAT fltIn,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromR8(DOUBLE dblIn,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromCy(CY cyIn,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromDate(DATE dateIn,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromStr(OLECHAR *strIn,LCID lcid,ULONG dwFlags,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromDisp(IDispatch *pdispIn,LCID lcid,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromBool(VARIANT_BOOL boolIn,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromI1(CHAR cIn,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromUI2(USHORT uiIn,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromUI4(ULONG ulIn,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromUI8(ULONG64 ui64In,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI1FromDec(DECIMAL *pdecIn,BYTE *pbOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromUI1(BYTE bIn,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromI4(LONG lIn,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromI8(LONG64 i64In,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromR4(FLOAT fltIn,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromR8(DOUBLE dblIn,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromCy(CY cyIn,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromDate(DATE dateIn,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromStr(OLECHAR *strIn,LCID lcid,ULONG dwFlags,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromDisp(IDispatch *pdispIn,LCID lcid,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromBool(VARIANT_BOOL boolIn,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromI1(CHAR cIn,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromUI2(USHORT uiIn,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromUI4(ULONG ulIn,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromUI8(ULONG64 ui64In,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI2FromDec(DECIMAL *pdecIn,SHORT *psOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromUI1(BYTE bIn,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromI2(SHORT sIn,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromI8(LONG64 i64In,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromR4(FLOAT fltIn,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromR8(DOUBLE dblIn,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromCy(CY cyIn,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromDate(DATE dateIn,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromStr(OLECHAR *strIn,LCID lcid,ULONG dwFlags,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromDisp(IDispatch *pdispIn,LCID lcid,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromBool(VARIANT_BOOL boolIn,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromI1(CHAR cIn,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromUI2(USHORT uiIn,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromUI4(ULONG ulIn,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromUI8(ULONG64 ui64In,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromDec(DECIMAL *pdecIn,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromInt(INT intIn,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromUI1(BYTE bIn,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromI2(SHORT sIn,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromI4(LONG lIn,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromR4(FLOAT fltIn,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromR8(DOUBLE dblIn,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromCy(CY cyIn,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromDate(DATE dateIn,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromStr(OLECHAR *strIn,LCID lcid,unsigned long dwFlags,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromDisp(IDispatch *pdispIn,LCID lcid,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromBool(VARIANT_BOOL boolIn,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromI1(CHAR cIn,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromUI2(USHORT uiIn,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromUI4(ULONG ulIn,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromUI8(ULONG64 ui64In,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromDec(DECIMAL *pdecIn,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI8FromInt(INT intIn,LONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromUI1(BYTE bIn,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromI2(SHORT sIn,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromI4(LONG lIn,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromI8(LONG64 i64In,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromR8(DOUBLE dblIn,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromCy(CY cyIn,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromDate(DATE dateIn,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromStr(OLECHAR *strIn,LCID lcid,ULONG dwFlags,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromDisp(IDispatch *pdispIn,LCID lcid,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromBool(VARIANT_BOOL boolIn,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromI1(CHAR cIn,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromUI2(USHORT uiIn,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromUI4(ULONG ulIn,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromUI8(ULONG64 ui64In,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR4FromDec(DECIMAL *pdecIn,FLOAT *pfltOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromUI1(BYTE bIn,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromI2(SHORT sIn,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromI4(LONG lIn,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromI8(LONG64 i64In,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromR4(FLOAT fltIn,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromCy(CY cyIn,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromDate(DATE dateIn,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromStr(OLECHAR *strIn,LCID lcid,ULONG dwFlags,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromDisp(IDispatch *pdispIn,LCID lcid,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromBool(VARIANT_BOOL boolIn,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromI1(CHAR cIn,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromUI2(USHORT uiIn,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromUI4(ULONG ulIn,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromUI8(ULONG64 ui64In,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarR8FromDec(DECIMAL *pdecIn,DOUBLE *pdblOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromUI1(BYTE bIn,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromI2(SHORT sIn,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromI4(LONG lIn,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromI8(LONG64 i64In,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromR4(FLOAT fltIn,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromR8(DOUBLE dblIn,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromCy(CY cyIn,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromStr(OLECHAR *strIn,LCID lcid,ULONG dwFlags,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromDisp(IDispatch *pdispIn,LCID lcid,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromBool(VARIANT_BOOL boolIn,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromI1(CHAR cIn,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromUI2(USHORT uiIn,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromUI4(ULONG ulIn,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromUI8(ULONG64 ui64In,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromDec(DECIMAL *pdecIn,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromUI1(BYTE bIn,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromI2(SHORT sIn,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromI4(LONG lIn,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromI8(LONG64 i64In,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromR4(FLOAT fltIn,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromR8(DOUBLE dblIn,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromDate(DATE dateIn,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromStr(OLECHAR *strIn,LCID lcid,ULONG dwFlags,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromDisp(IDispatch *pdispIn,LCID lcid,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromBool(VARIANT_BOOL boolIn,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromI1(CHAR cIn,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromUI2(USHORT uiIn,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromUI4(ULONG ulIn,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromUI8(ULONG64 ui64In,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarCyFromDec(DECIMAL *pdecIn,CY *pcyOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromUI1(BYTE bVal,LCID lcid,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromI2(SHORT iVal,LCID lcid,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromI4(LONG lIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromI8(LONG64 i64In,LCID lcid,unsigned long dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromR4(FLOAT fltIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromR8(DOUBLE dblIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromCy(CY cyIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromDate(DATE dateIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromDisp(IDispatch *pdispIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromBool(VARIANT_BOOL boolIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromI1(CHAR cIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromUI2(USHORT uiIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromUI4(ULONG ulIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromUI8(ULONG64 ui64In,LCID lcid,unsigned long dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBstrFromDec(DECIMAL *pdecIn,LCID lcid,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromUI1(BYTE bIn,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromI2(SHORT sIn,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromI4(LONG lIn,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromI8(LONG64 i64In,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromR4(FLOAT fltIn,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromR8(DOUBLE dblIn,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromDate(DATE dateIn,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromCy(CY cyIn,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromStr(OLECHAR *strIn,LCID lcid,ULONG dwFlags,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromDisp(IDispatch *pdispIn,LCID lcid,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromI1(CHAR cIn,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromUI2(USHORT uiIn,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromUI4(ULONG ulIn,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromUI8(ULONG64 i64In,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarBoolFromDec(DECIMAL *pdecIn,VARIANT_BOOL *pboolOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromUI1(BYTE bIn,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromI2(SHORT uiIn,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromI4(LONG lIn,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromI8(LONG64 i64In,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromR4(FLOAT fltIn,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromR8(DOUBLE dblIn,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromDate(DATE dateIn,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromCy(CY cyIn,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromStr(OLECHAR *strIn,LCID lcid,ULONG dwFlags,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromDisp(IDispatch *pdispIn,LCID lcid,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromBool(VARIANT_BOOL boolIn,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromUI2(USHORT uiIn,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromUI4(ULONG ulIn,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromUI8(ULONG64 i64In,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI1FromDec(DECIMAL *pdecIn,CHAR *pcOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromUI1(BYTE bIn,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromI2(SHORT uiIn,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromI4(LONG lIn,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromI8(LONG64 i64In,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromR4(FLOAT fltIn,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromR8(DOUBLE dblIn,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromDate(DATE dateIn,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromCy(CY cyIn,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromStr(OLECHAR *strIn,LCID lcid,ULONG dwFlags,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromDisp(IDispatch *pdispIn,LCID lcid,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromBool(VARIANT_BOOL boolIn,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromI1(CHAR cIn,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromUI4(ULONG ulIn,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromUI8(ULONG64 i64In,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI2FromDec(DECIMAL *pdecIn,USHORT *puiOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromUI1(BYTE bIn,ULONG *pulOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromI2(SHORT uiIn,ULONG *pulOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromI4(LONG lIn,ULONG *pulOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromI8(LONG64 i64In,ULONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromR4(FLOAT fltIn,ULONG *pulOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromR8(DOUBLE dblIn,ULONG *pulOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromDate(DATE dateIn,ULONG *pulOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromCy(CY cyIn,ULONG *pulOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromStr(OLECHAR *strIn,LCID lcid,ULONG dwFlags,ULONG *pulOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromDisp(IDispatch *pdispIn,LCID lcid,ULONG *pulOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromBool(VARIANT_BOOL boolIn,ULONG *pulOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromI1(CHAR cIn,ULONG *pulOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromUI2(USHORT uiIn,ULONG *pulOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromUI8(ULONG64 ui64In,ULONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI4FromDec(DECIMAL *pdecIn,ULONG *pulOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromUI1(BYTE bIn,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromI2(SHORT sIn,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromI4(LONG lIn,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromI8(LONG64 ui64In,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromR4(FLOAT fltIn,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromR8(DOUBLE dblIn,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromCy(CY cyIn,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromDate(DATE dateIn,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromStr(OLECHAR *strIn,LCID lcid,unsigned long dwFlags,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromDisp(IDispatch *pdispIn,LCID lcid,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromBool(VARIANT_BOOL boolIn,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromI1(CHAR cIn,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromUI2(USHORT uiIn,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromUI4(ULONG ulIn,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromDec(DECIMAL *pdecIn,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUI8FromInt(INT intIn,ULONG64 *pi64Out);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromUI1(BYTE bIn,DECIMAL *pdecOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromI2(SHORT uiIn,DECIMAL *pdecOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromI4(LONG lIn,DECIMAL *pdecOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromI8(LONG64 i64In,DECIMAL *pdecOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromR4(FLOAT fltIn,DECIMAL *pdecOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromR8(DOUBLE dblIn,DECIMAL *pdecOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromDate(DATE dateIn,DECIMAL *pdecOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromCy(CY cyIn,DECIMAL *pdecOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromStr(OLECHAR *strIn,LCID lcid,ULONG dwFlags,DECIMAL *pdecOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromDisp(IDispatch *pdispIn,LCID lcid,DECIMAL *pdecOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromBool(VARIANT_BOOL boolIn,DECIMAL *pdecOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromI1(CHAR cIn,DECIMAL *pdecOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromUI2(USHORT uiIn,DECIMAL *pdecOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromUI4(ULONG ulIn,DECIMAL *pdecOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDecFromUI8(ULONG64 ui64In,DECIMAL *pdecOut);
#define VarUI4FromUI4(in,pOut) (*(pOut) = (in))
#define VarI4FromI4(in,pOut) (*(pOut) = (in))
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromI8(LONG64 i64In,LONG *plOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarI4FromUI8(ULONG64 ui64In,LONG *plOut);
#define VarUI8FromUI8(in,pOut) (*(pOut) = (in))
#define VarI8FromI8(in,pOut) (*(pOut) = (in))
#define VarUI1FromInt VarUI1FromI4
#define VarUI1FromUint VarUI1FromUI4
#define VarI2FromInt VarI2FromI4
#define VarI2FromUint VarI2FromUI4
#define VarI4FromInt VarI4FromI4
#define VarI4FromUint VarI4FromUI4
#define VarI8FromInt VarI8FromI4
#define VarI8FromUint VarI8FromUI4
#define VarR4FromInt VarR4FromI4
#define VarR4FromUint VarR4FromUI4
#define VarR8FromInt VarR8FromI4
#define VarR8FromUint VarR8FromUI4
#define VarDateFromInt VarDateFromI4
#define VarDateFromUint VarDateFromUI4
#define VarCyFromInt VarCyFromI4
#define VarCyFromUint VarCyFromUI4
#define VarBstrFromInt VarBstrFromI4
#define VarBstrFromUint VarBstrFromUI4
#define VarBoolFromInt VarBoolFromI4
#define VarBoolFromUint VarBoolFromUI4
#define VarI1FromInt VarI1FromI4
#define VarI1FromUint VarI1FromUI4
#define VarUI2FromInt VarUI2FromI4
#define VarUI2FromUint VarUI2FromUI4
#define VarUI4FromInt VarUI4FromI4
#define VarUI4FromUint VarUI4FromUI4
#define VarDecFromInt VarDecFromI4
#define VarDecFromUint VarDecFromUI4
#define VarIntFromUI1 VarI4FromUI1
#define VarIntFromI2 VarI4FromI2
#define VarIntFromI4 VarI4FromI4
#define VarIntFromI8 VarI4FromI8
#define VarIntFromR4 VarI4FromR4
#define VarIntFromR8 VarI4FromR8
#define VarIntFromDate VarI4FromDate
#define VarIntFromCy VarI4FromCy
#define VarIntFromStr VarI4FromStr
#define VarIntFromDisp VarI4FromDisp
#define VarIntFromBool VarI4FromBool
#define VarIntFromI1 VarI4FromI1
#define VarIntFromUI2 VarI4FromUI2
#define VarIntFromUI4 VarI4FromUI4
#define VarIntFromUI8 VarI4FromUI8
#define VarIntFromDec VarI4FromDec
#define VarIntFromUint VarI4FromUI4
#define VarUintFromUI1 VarUI4FromUI1
#define VarUintFromI2 VarUI4FromI2
#define VarUintFromI4 VarUI4FromI4
#define VarUintFromI8 VarUI4FromI8
#define VarUintFromR4 VarUI4FromR4
#define VarUintFromR8 VarUI4FromR8
#define VarUintFromDate VarUI4FromDate
#define VarUintFromCy VarUI4FromCy
#define VarUintFromStr VarUI4FromStr
#define VarUintFromDisp VarUI4FromDisp
#define VarUintFromBool VarUI4FromBool
#define VarUintFromI1 VarUI4FromI1
#define VarUintFromUI2 VarUI4FromUI2
#define VarUintFromUI4 VarUI4FromUI4
#define VarUintFromUI8 VarUI4FromUI8
#define VarUintFromDec VarUI4FromDec
#define VarUintFromInt VarUI4FromI4
typedef struct {
  INT cDig;
  ULONG dwInFlags;
  ULONG dwOutFlags;
  INT cchUsed;
  INT nBaseShift;
  INT nPwr10;
} NUMPARSE;
#define NUMPRS_LEADING_WHITE 0x0001
#define NUMPRS_TRAILING_WHITE 0x0002
#define NUMPRS_LEADING_PLUS 0x0004
#define NUMPRS_TRAILING_PLUS 0x0008
#define NUMPRS_LEADING_MINUS 0x0010
#define NUMPRS_TRAILING_MINUS 0x0020
#define NUMPRS_HEX_OCT 0x0040
#define NUMPRS_PARENS 0x0080
#define NUMPRS_DECIMAL 0x0100
#define NUMPRS_THOUSANDS 0x0200
#define NUMPRS_CURRENCY 0x0400
#define NUMPRS_EXPONENT 0x0800
#define NUMPRS_USE_ALL 0x1000
#define NUMPRS_STD 0x1FFF
#define NUMPRS_NEG 0x10000
#define NUMPRS_INEXACT 0x20000
#define VTBIT_I1 (1 << VT_I1)
#define VTBIT_UI1 (1 << VT_UI1)
#define VTBIT_I2 (1 << VT_I2)
#define VTBIT_UI2 (1 << VT_UI2)
#define VTBIT_I4 (1 << VT_I4)
#define VTBIT_UI4 (1 << VT_UI4)
#define VTBIT_I8 (1 << VT_I8)
#define VTBIT_UI8 (1 << VT_UI8)
#define VTBIT_R4 (1 << VT_R4)
#define VTBIT_R8 (1 << VT_R8)
#define VTBIT_CY (1 << VT_CY)
#define VTBIT_DECIMAL (1 << VT_DECIMAL)
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarParseNumFromStr(OLECHAR *strIn,LCID lcid,ULONG dwFlags,NUMPARSE *pnumprs,BYTE *rgbDig);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarNumFromParseNum(NUMPARSE *pnumprs,BYTE *rgbDig,ULONG dwVtBits,VARIANT *pvar);
extern HRESULT __attribute__((__stdcall__)) VarAdd(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarAnd(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarCat(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarDiv(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarEqv(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarIdiv(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarImp(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarMod(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarMul(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarOr(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarPow(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarSub(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarXor(LPVARIANT pvarLeft,LPVARIANT pvarRight,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarAbs(LPVARIANT pvarIn,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarFix(LPVARIANT pvarIn,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarInt(LPVARIANT pvarIn,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarNeg(LPVARIANT pvarIn,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarNot(LPVARIANT pvarIn,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarRound(LPVARIANT pvarIn,int cDecimals,LPVARIANT pvarResult);
extern HRESULT __attribute__((__stdcall__)) VarCmp(LPVARIANT pvarLeft,LPVARIANT pvarRight,LCID lcid,ULONG dwFlags);
extern HRESULT __attribute__((__stdcall__)) VarDecAdd(LPDECIMAL pdecLeft,LPDECIMAL pdecRight,LPDECIMAL pdecResult);
extern HRESULT __attribute__((__stdcall__)) VarDecDiv(LPDECIMAL pdecLeft,LPDECIMAL pdecRight,LPDECIMAL pdecResult);
extern HRESULT __attribute__((__stdcall__)) VarDecMul(LPDECIMAL pdecLeft,LPDECIMAL pdecRight,LPDECIMAL pdecResult);
extern HRESULT __attribute__((__stdcall__)) VarDecSub(LPDECIMAL pdecLeft,LPDECIMAL pdecRight,LPDECIMAL pdecResult);
extern HRESULT __attribute__((__stdcall__)) VarDecAbs(LPDECIMAL pdecIn,LPDECIMAL pdecResult);
extern HRESULT __attribute__((__stdcall__)) VarDecFix(LPDECIMAL pdecIn,LPDECIMAL pdecResult);
extern HRESULT __attribute__((__stdcall__)) VarDecInt(LPDECIMAL pdecIn,LPDECIMAL pdecResult);
extern HRESULT __attribute__((__stdcall__)) VarDecNeg(LPDECIMAL pdecIn,LPDECIMAL pdecResult);
extern HRESULT __attribute__((__stdcall__)) VarDecRound(LPDECIMAL pdecIn,int cDecimals,LPDECIMAL pdecResult);
extern HRESULT __attribute__((__stdcall__)) VarDecCmp(LPDECIMAL pdecLeft,LPDECIMAL pdecRight);
extern HRESULT __attribute__((__stdcall__)) VarDecCmpR8(LPDECIMAL pdecLeft,double dblRight);
extern HRESULT __attribute__((__stdcall__)) VarCyAdd(CY cyLeft,CY cyRight,LPCY pcyResult);
extern HRESULT __attribute__((__stdcall__)) VarCyMul(CY cyLeft,CY cyRight,LPCY pcyResult);
extern HRESULT __attribute__((__stdcall__)) VarCyMulI4(CY cyLeft,long lRight,LPCY pcyResult);
extern HRESULT __attribute__((__stdcall__)) VarCyMulI8(CY cyLeft,LONG64 lRight,LPCY pcyResult);
extern HRESULT __attribute__((__stdcall__)) VarCySub(CY cyLeft,CY cyRight,LPCY pcyResult);
extern HRESULT __attribute__((__stdcall__)) VarCyAbs(CY cyIn,LPCY pcyResult);
extern HRESULT __attribute__((__stdcall__)) VarCyFix(CY cyIn,LPCY pcyResult);
extern HRESULT __attribute__((__stdcall__)) VarCyInt(CY cyIn,LPCY pcyResult);
extern HRESULT __attribute__((__stdcall__)) VarCyNeg(CY cyIn,LPCY pcyResult);
extern HRESULT __attribute__((__stdcall__)) VarCyRound(CY cyIn,int cDecimals,LPCY pcyResult);
extern HRESULT __attribute__((__stdcall__)) VarCyCmp(CY cyLeft,CY cyRight);
extern HRESULT __attribute__((__stdcall__)) VarCyCmpR8(CY cyLeft,double dblRight);
extern HRESULT __attribute__((__stdcall__)) VarBstrCat(BSTR bstrLeft,BSTR bstrRight,LPBSTR pbstrResult);
extern HRESULT __attribute__((__stdcall__)) VarBstrCmp(BSTR bstrLeft,BSTR bstrRight,LCID lcid,ULONG dwFlags);
extern HRESULT __attribute__((__stdcall__)) VarR8Pow(double dblLeft,double dblRight,double *pdblResult);
extern HRESULT __attribute__((__stdcall__)) VarR4CmpR8(float fltLeft,double dblRight);
extern HRESULT __attribute__((__stdcall__)) VarR8Round(double dblIn,int cDecimals,double *pdblResult);
#define VARCMP_LT 0
#define VARCMP_EQ 1
#define VARCMP_GT 2
#define VARCMP_NULL 3
#define VT_HARDTYPE VT_RESERVED
typedef struct {
  SYSTEMTIME st;
  USHORT wDayOfYear;
} UDATE;
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromUdate(UDATE *pudateIn,ULONG dwFlags,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarDateFromUdateEx(UDATE *pudateIn,LCID lcid,ULONG dwFlags,DATE *pdateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarUdateFromDate(DATE dateIn,ULONG dwFlags,UDATE *pudateOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) GetAltMonthNames(LCID lcid,LPOLESTR **prgp);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarFormat(LPVARIANT pvarIn,LPOLESTR pstrFormat,int iFirstDay,int iFirstWeek,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarFormatDateTime(LPVARIANT pvarIn,int iNamedFormat,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarFormatNumber(LPVARIANT pvarIn,int iNumDig,int iIncLead,int iUseParens,int iGroup,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarFormatPercent(LPVARIANT pvarIn,int iNumDig,int iIncLead,int iUseParens,int iGroup,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarFormatCurrency(LPVARIANT pvarIn,int iNumDig,int iIncLead,int iUseParens,int iGroup,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarWeekdayName(int iWeekday,int fAbbrev,int iFirstDay,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarMonthName(int iMonth,int fAbbrev,ULONG dwFlags,BSTR *pbstrOut);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarFormatFromTokens(LPVARIANT pvarIn,LPOLESTR pstrFormat,LPBYTE pbTokCur,ULONG dwFlags,BSTR *pbstrOut,LCID lcid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) VarTokenizeFormatString(LPOLESTR pstrFormat,LPBYTE rgbTok,int cbTok,int iFirstDay,int iFirstWeek,LCID lcid,int *pcbActual);
#define DEFINED_LPTYPELIB 
typedef ITypeLib *LPTYPELIB;
#define DEFINED_DISPID_MEMBERID 
typedef LONG DISPID;
typedef DISPID MEMBERID;
#define MEMBERID_NIL DISPID_UNKNOWN
#define ID_DEFAULTINST -2
#define DISPATCH_METHOD 0x1
#define DISPATCH_PROPERTYGET 0x2
#define DISPATCH_PROPERTYPUT 0x4
#define DISPATCH_PROPERTYPUTREF 0x8
#define DEFINDE_LPTYPEINFO 
typedef ITypeInfo *LPTYPEINFO;
#define DEFINED_LPTYPECOMP 
typedef ITypeComp *LPTYPECOMP;
#define DEFINED_LPCREATETYPELIB 
typedef ICreateTypeLib *LPCREATETYPELIB;
#define DEFINE_LPCREATETYPEINFO 
typedef ICreateTypeInfo *LPCREATETYPEINFO;
extern __attribute__((dllimport)) ULONG __attribute__((__stdcall__)) LHashValOfNameSysA(SYSKIND syskind,LCID lcid,LPCSTR szName);
extern __attribute__((dllimport)) ULONG __attribute__((__stdcall__)) LHashValOfNameSys(SYSKIND syskind,LCID lcid,const OLECHAR *szName);
#define LHashValOfName(lcid,szName) LHashValOfNameSys(SYS_WIN32,lcid,szName)
#define WHashValOfLHashVal(lhashval) ((USHORT) (0x0000ffff & (lhashval)))
#define IsHashValCompatible(lhashval1,lhashval2) ((WINBOOL) ((0x00ff0000 & (lhashval1))==(0x00ff0000 & (lhashval2))))
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) LoadTypeLib(const OLECHAR *szFile,ITypeLib **pptlib);
typedef enum tagREGKIND {
  REGKIND_DEFAULT,REGKIND_REGISTER,REGKIND_NONE
} REGKIND;
#define LOAD_TLB_AS_32BIT 0x20
#define LOAD_TLB_AS_64BIT 0x40
#define MASK_TO_RESET_TLB_BITS ~(LOAD_TLB_AS_32BIT | LOAD_TLB_AS_64BIT)
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) LoadTypeLibEx(LPCOLESTR szFile,REGKIND regkind,ITypeLib **pptlib);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) LoadRegTypeLib(const GUID *const rguid,WORD wVerMajor,WORD wVerMinor,LCID lcid,ITypeLib **pptlib);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) QueryPathOfRegTypeLib(const GUID *const guid,USHORT wMaj,USHORT wMin,LCID lcid,LPBSTR lpbstrPathName);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) RegisterTypeLib(ITypeLib *ptlib,OLECHAR *szFullPath,OLECHAR *szHelpDir);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) UnRegisterTypeLib(const GUID *const libID,WORD wVerMajor,WORD wVerMinor,LCID lcid,SYSKIND syskind);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateTypeLib(SYSKIND syskind,const OLECHAR *szFile,ICreateTypeLib **ppctlib);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateTypeLib2(SYSKIND syskind,LPCOLESTR szFile,ICreateTypeLib2 **ppctlib);
#define DEFINED_LPDISPATCH 
typedef IDispatch *LPDISPATCH;
typedef struct tagPARAMDATA {
  OLECHAR *szName;
  VARTYPE vt;
} PARAMDATA,*LPPARAMDATA;
typedef struct tagMETHODDATA {
  OLECHAR *szName;
  PARAMDATA *ppdata;
  DISPID dispid;
  UINT iMeth;
  CALLCONV cc;
  UINT cArgs;
  WORD wFlags;
  VARTYPE vtReturn;
} METHODDATA,*LPMETHODDATA;
typedef struct tagINTERFACEDATA {
  METHODDATA *pmethdata;
  UINT cMembers;
} INTERFACEDATA,*LPINTERFACEDATA;
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) DispGetParam(DISPPARAMS *pdispparams,UINT position,VARTYPE vtTarg,VARIANT *pvarResult,UINT *puArgErr);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) DispGetIDsOfNames(ITypeInfo *ptinfo,OLECHAR **rgszNames,UINT cNames,DISPID *rgdispid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) DispInvoke(void *_this,ITypeInfo *ptinfo,DISPID dispidMember,WORD wFlags,DISPPARAMS *pparams,VARIANT *pvarResult,EXCEPINFO *pexcepinfo,UINT *puArgErr);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateDispTypeInfo(INTERFACEDATA *pidata,LCID lcid,ITypeInfo **pptinfo);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateStdDispatch(IUnknown *punkOuter,void *pvThis,ITypeInfo *ptinfo,IUnknown **ppunkStdDisp);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) DispCallFunc(void *pvInstance,ULONG_PTR oVft,CALLCONV cc,VARTYPE vtReturn,UINT cActuals,VARTYPE *prgvt,VARIANTARG **prgpvarg,VARIANT *pvargResult);
#define ACTIVEOBJECT_STRONG 0x0
#define ACTIVEOBJECT_WEAK 0x1
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) RegisterActiveObject(IUnknown *punk,const IID *const rclsid,DWORD dwFlags,DWORD *pdwRegister);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) RevokeActiveObject(DWORD dwRegister,void *pvReserved);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) GetActiveObject(const IID *const rclsid,void *pvReserved,IUnknown **ppunk);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SetErrorInfo(ULONG dwReserved,IErrorInfo *perrinfo);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) GetErrorInfo(ULONG dwReserved,IErrorInfo **pperrinfo);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateErrorInfo(ICreateErrorInfo **pperrinfo);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) GetRecordInfoFromTypeInfo(ITypeInfo *pTypeInfo,IRecordInfo **ppRecInfo);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) GetRecordInfoFromGuids(const GUID *const rGuidTypeLib,ULONG uVerMajor,ULONG uVerMinor,LCID lcid,const GUID *const rGuidTypeInfo,IRecordInfo **ppRecInfo);
extern __attribute__((dllimport)) ULONG __attribute__((__stdcall__)) OaBuildVersion(void);
extern __attribute__((dllimport)) void __attribute__((__stdcall__)) ClearCustData(LPCUSTDATA pCustData);
#define V_UNION(X,Y) ((X)->Y)
#define V_VT(X) ((X)->vt)
#define V_RECORDINFO(X) ((X)->pRecInfo)
#define V_RECORD(X) ((X)->pvRecord)
#define V_ISBYREF(X) (V_VT(X)&VT_BYREF)
#define V_ISARRAY(X) (V_VT(X)&VT_ARRAY)
#define V_ISVECTOR(X) (V_VT(X)&VT_VECTOR)
#define V_NONE(X) V_I2(X)
#define V_UI1(X) V_UNION(X,bVal)
#define V_UI1REF(X) V_UNION(X,pbVal)
#define V_I2(X) V_UNION(X,iVal)
#define V_I2REF(X) V_UNION(X,piVal)
#define V_I4(X) V_UNION(X,lVal)
#define V_I4REF(X) V_UNION(X,plVal)
#define V_I8(X) V_UNION(X,llVal)
#define V_I8REF(X) V_UNION(X,pllVal)
#define V_R4(X) V_UNION(X,fltVal)
#define V_R4REF(X) V_UNION(X,pfltVal)
#define V_R8(X) V_UNION(X,dblVal)
#define V_R8REF(X) V_UNION(X,pdblVal)
#define V_I1(X) V_UNION(X,cVal)
#define V_I1REF(X) V_UNION(X,pcVal)
#define V_UI2(X) V_UNION(X,uiVal)
#define V_UI2REF(X) V_UNION(X,puiVal)
#define V_UI4(X) V_UNION(X,ulVal)
#define V_UI4REF(X) V_UNION(X,pulVal)
#define V_UI8(X) V_UNION(X,ullVal)
#define V_UI8REF(X) V_UNION(X,pullVal)
#define V_INT(X) V_UNION(X,intVal)
#define V_INTREF(X) V_UNION(X,pintVal)
#define V_UINT(X) V_UNION(X,uintVal)
#define V_UINTREF(X) V_UNION(X,puintVal)
#define V_INT_PTR(X) V_UNION(X,lVal)
#define V_UINT_PTR(X) V_UNION(X,ulVal)
#define V_INT_PTRREF(X) V_UNION(X,plVal)
#define V_UINT_PTRREF(X) V_UNION(X,pulVal)
#define V_CY(X) V_UNION(X,cyVal)
#define V_CYREF(X) V_UNION(X,pcyVal)
#define V_DATE(X) V_UNION(X,date)
#define V_DATEREF(X) V_UNION(X,pdate)
#define V_BSTR(X) V_UNION(X,bstrVal)
#define V_BSTRREF(X) V_UNION(X,pbstrVal)
#define V_DISPATCH(X) V_UNION(X,pdispVal)
#define V_DISPATCHREF(X) V_UNION(X,ppdispVal)
#define V_ERROR(X) V_UNION(X,scode)
#define V_ERRORREF(X) V_UNION(X,pscode)
#define V_BOOL(X) V_UNION(X,boolVal)
#define V_BOOLREF(X) V_UNION(X,pboolVal)
#define V_UNKNOWN(X) V_UNION(X,punkVal)
#define V_UNKNOWNREF(X) V_UNION(X,ppunkVal)
#define V_VARIANTREF(X) V_UNION(X,pvarVal)
#define V_ARRAY(X) V_UNION(X,parray)
#define V_ARRAYREF(X) V_UNION(X,pparray)
#define V_BYREF(X) V_UNION(X,byref)
#define V_DECIMAL(X) V_UNION(X,decVal)
#define V_DECIMALREF(X) V_UNION(X,pdecVal)
#pragma pack(pop)
#define E_DRAW VIEW_E_DRAW
#define DATA_E_FORMATETC DV_E_FORMATETC
#define OLEIVERB_PRIMARY (__MSABI_LONG(0))
#define OLEIVERB_SHOW (-__MSABI_LONG(1))
#define OLEIVERB_OPEN (-__MSABI_LONG(2))
#define OLEIVERB_HIDE (-__MSABI_LONG(3))
#define OLEIVERB_UIACTIVATE (-__MSABI_LONG(4))
#define OLEIVERB_INPLACEACTIVATE (-__MSABI_LONG(5))
#define OLEIVERB_DISCARDUNDOSTATE (-__MSABI_LONG(6))
#define EMBDHLP_INPROC_HANDLER __MSABI_LONG(0x0000)
#define EMBDHLP_INPROC_SERVER __MSABI_LONG(0x0001)
#define EMBDHLP_CREATENOW __MSABI_LONG(0x00000000)
#define EMBDHLP_DELAYCREATE __MSABI_LONG(0x00010000)
#define OLECREATE_LEAVERUNNING 0x1
#undef interface
#define interface struct
extern __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) OleBuildVersion (void);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateDataAdviseHolder (LPDATAADVISEHOLDER *ppDAHolder);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) ReadClassStg (LPSTORAGE pStg, CLSID *pclsid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) WriteClassStg (LPSTORAGE pStg, const IID *const rclsid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) ReadClassStm (LPSTREAM pStm, CLSID *pclsid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) WriteClassStm (LPSTREAM pStm, const IID *const rclsid);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) WriteFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT cf, LPOLESTR lpszUserType);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) ReadFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT *pcf, LPOLESTR *lplpszUserType);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleInitialize (LPVOID pvReserved);
extern __attribute__((dllimport)) void __attribute__((__stdcall__)) OleUninitialize (void);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleQueryLinkFromData (LPDATAOBJECT pSrcDataObject);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleQueryCreateFromData (LPDATAOBJECT pSrcDataObject);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreate (const IID *const rclsid, const IID *const riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreateEx (const IID *const rclsid, const IID *const riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD *rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink *lpAdviseSink, DWORD *rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreateFromData (LPDATAOBJECT pSrcDataObj, const IID *const riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreateFromDataEx (LPDATAOBJECT pSrcDataObj, const IID *const riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD *rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink *lpAdviseSink, DWORD *rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreateLinkFromData (LPDATAOBJECT pSrcDataObj, const IID *const riid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreateLinkFromDataEx (LPDATAOBJECT pSrcDataObj, const IID *const riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD *rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink *lpAdviseSink, DWORD *rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreateStaticFromData (LPDATAOBJECT pSrcDataObj, const IID *const iid, DWORD renderopt, LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreateLink (LPMONIKER pmkLinkSrc, const IID *const riid, DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreateLinkEx (LPMONIKER pmkLinkSrc, const IID *const riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD *rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink *lpAdviseSink, DWORD *rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreateLinkToFile (LPCOLESTR lpszFileName, const IID *const riid, DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreateLinkToFileEx (LPCOLESTR lpszFileName, const IID *const riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD *rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink *lpAdviseSink, DWORD *rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreateFromFile (const IID *const rclsid, LPCOLESTR lpszFileName, const IID *const riid, DWORD renderopt, LPFORMATETC lpFormatEtc, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreateFromFileEx (const IID *const rclsid, LPCOLESTR lpszFileName, const IID *const riid, DWORD dwFlags, DWORD renderopt, ULONG cFormats, DWORD *rgAdvf, LPFORMATETC rgFormatEtc, IAdviseSink *lpAdviseSink, DWORD *rgdwConnection, LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleLoad (LPSTORAGE pStg, const IID *const riid, LPOLECLIENTSITE pClientSite, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleSave (LPPERSISTSTORAGE pPS, LPSTORAGE pStg, WINBOOL fSameAsLoad);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleLoadFromStream (LPSTREAM pStm, const IID *const iidInterface, LPVOID *ppvObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleSaveToStream (LPPERSISTSTREAM pPStm, LPSTREAM pStm);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleSetContainedObject (LPUNKNOWN pUnknown, WINBOOL fContained);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleNoteObjectVisible (LPUNKNOWN pUnknown, WINBOOL fVisible);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) RegisterDragDrop (HWND hwnd, LPDROPTARGET pDropTarget);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) RevokeDragDrop (HWND hwnd);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) DoDragDrop (LPDATAOBJECT pDataObj, LPDROPSOURCE pDropSource, DWORD dwOKEffects, LPDWORD pdwEffect);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleSetClipboard (LPDATAOBJECT pDataObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleGetClipboard (LPDATAOBJECT *ppDataObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleFlushClipboard (void);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleIsCurrentClipboard (LPDATAOBJECT pDataObj);
extern __attribute__((dllimport)) HOLEMENU __attribute__((__stdcall__)) OleCreateMenuDescriptor (HMENU hmenuCombined, LPOLEMENUGROUPWIDTHS lpMenuWidths);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleSetMenuDescriptor (HOLEMENU holemenu, HWND hwndFrame, HWND hwndActiveObject, LPOLEINPLACEFRAME lpFrame, LPOLEINPLACEACTIVEOBJECT lpActiveObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleDestroyMenuDescriptor (HOLEMENU holemenu);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame, LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg);
extern __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) OleDuplicateData (HANDLE hSrc, CLIPFORMAT cfFormat, UINT uiFlags);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleDraw (LPUNKNOWN pUnknown, DWORD dwAspect, HDC hdcDraw, LPCRECT lprcBounds);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleRun (LPUNKNOWN pUnknown);
extern __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) OleIsRunning (LPOLEOBJECT pObject);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleLockRunning (LPUNKNOWN pUnknown, WINBOOL fLock, WINBOOL fLastUnlockCloses);
extern __attribute__((dllimport)) void __attribute__((__stdcall__)) ReleaseStgMedium (LPSTGMEDIUM);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateOleAdviseHolder (LPOLEADVISEHOLDER *ppOAHolder);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreateDefaultHandler (const IID *const clsid, LPUNKNOWN pUnkOuter, const IID *const riid, LPVOID *lplpObj);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleCreateEmbeddingHelper (const IID *const clsid, LPUNKNOWN pUnkOuter, DWORD flags, LPCLASSFACTORY pCF, const IID *const riid, LPVOID *lplpObj);
extern __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) IsAccelerator (HACCEL hAccel, int cAccelEntries, LPMSG lpMsg, WORD *lpwCmd);
extern __attribute__((dllimport)) HGLOBAL __attribute__((__stdcall__)) OleGetIconOfFile (LPOLESTR lpszPath, WINBOOL fUseFileAsLabel);
extern __attribute__((dllimport)) HGLOBAL __attribute__((__stdcall__)) OleGetIconOfClass (const IID *const rclsid, LPOLESTR lpszLabel, WINBOOL fUseTypeAsLabel);
extern __attribute__((dllimport)) HGLOBAL __attribute__((__stdcall__)) OleMetafilePictFromIconAndLabel (HICON hIcon, LPOLESTR lpszLabel, LPOLESTR lpszSourceFile, UINT iIconIndex);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleRegGetUserType (const IID *const clsid, DWORD dwFormOfType, LPOLESTR *pszUserType);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleRegGetMiscStatus (const IID *const clsid, DWORD dwAspect, DWORD *pdwStatus);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleRegEnumFormatEtc (const IID *const clsid, DWORD dwDirection, LPENUMFORMATETC *ppenum);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleRegEnumVerbs (const IID *const clsid, LPENUMOLEVERB *ppenum);
typedef struct _OLESTREAM *LPOLESTREAM;
typedef struct _OLESTREAMVTBL {
  DWORD (__attribute__((__stdcall__)) *Get) (LPOLESTREAM, void *, DWORD);
  DWORD (__attribute__((__stdcall__)) *Put) (LPOLESTREAM, const void *, DWORD);
} OLESTREAMVTBL;
typedef OLESTREAMVTBL *LPOLESTREAMVTBL;
typedef struct _OLESTREAM {
  LPOLESTREAMVTBL lpstbl;
} OLESTREAM;
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleConvertOLESTREAMToIStorage (LPOLESTREAM lpolestream, LPSTORAGE pstg, const DVTARGETDEVICE *ptd);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleConvertIStorageToOLESTREAM (LPSTORAGE pstg, LPOLESTREAM lpolestream);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) GetHGlobalFromILockBytes (LPLOCKBYTES plkbyt, HGLOBAL *phglobal);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) CreateILockBytesOnHGlobal (HGLOBAL hGlobal, WINBOOL fDeleteOnRelease, LPLOCKBYTES *pplkbyt);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleDoAutoConvert (LPSTORAGE pStg, LPCLSID pClsidNew);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleGetAutoConvert (const IID *const clsidOld, LPCLSID pClsidNew);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleSetAutoConvert (const IID *const clsidOld, const IID *const clsidNew);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) GetConvertStg (LPSTORAGE pStg);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) SetConvertStg (LPSTORAGE pStg, WINBOOL fConvert);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleConvertIStorageToOLESTREAMEx (LPSTORAGE pstg, CLIPFORMAT cfFormat, LONG lWidth, LONG lHeight, DWORD dwSize, LPSTGMEDIUM pmedium, LPOLESTREAM polestm);
extern __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) OleConvertOLESTREAMToIStorageEx (LPOLESTREAM polestm, LPSTORAGE pstg, CLIPFORMAT *pcfFormat, LONG *plwWidth, LONG *plHeight, DWORD *pdwSize, LPSTGMEDIUM pmedium);
#pragma pack(pop)
extern const GUID GUID_DEVINTERFACE_DISK;
extern const GUID GUID_DEVINTERFACE_CDROM;
extern const GUID GUID_DEVINTERFACE_PARTITION;
extern const GUID GUID_DEVINTERFACE_TAPE;
extern const GUID GUID_DEVINTERFACE_WRITEONCEDISK;
extern const GUID GUID_DEVINTERFACE_VOLUME;
extern const GUID GUID_DEVINTERFACE_MEDIUMCHANGER;
extern const GUID GUID_DEVINTERFACE_FLOPPY;
extern const GUID GUID_DEVINTERFACE_CDCHANGER;
extern const GUID GUID_DEVINTERFACE_STORAGEPORT;
extern const GUID GUID_DEVINTERFACE_VMLUN;
extern const GUID GUID_DEVINTERFACE_SES;
extern const GUID GUID_DEVINTERFACE_ZNSDISK;
#define WDI_STORAGE_PREDICT_FAILURE_DPS_GUID {0xe9f2d03a,0x747c,0x41c2,{0xbb,0x9a,0x02,0xc6,0x2b,0x6d,0x5f,0xcb}};
extern const GUID GUID_DEVINTERFACE_SERVICE_VOLUME;
extern const GUID GUID_DEVINTERFACE_HIDDEN_VOLUME;
extern const GUID GUID_DEVINTERFACE_UNIFIED_ACCESS_RPMB;
extern const GUID GUID_DEVINTERFACE_SCM_PHYSICAL_DEVICE;
extern const GUID GUID_SCM_PD_HEALTH_NOTIFICATION;
extern const GUID GUID_SCM_PD_PASSTHROUGH_INVDIMM;
extern const GUID GUID_DEVINTERFACE_COMPORT;
extern const GUID GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR;
#define DiskClassGuid GUID_DEVINTERFACE_DISK
#define CdRomClassGuid GUID_DEVINTERFACE_CDROM
#define PartitionClassGuid GUID_DEVINTERFACE_PARTITION
#define TapeClassGuid GUID_DEVINTERFACE_TAPE
#define WriteOnceDiskClassGuid GUID_DEVINTERFACE_WRITEONCEDISK
#define VolumeClassGuid GUID_DEVINTERFACE_VOLUME
#define MediumChangerClassGuid GUID_DEVINTERFACE_MEDIUMCHANGER
#define FloppyClassGuid GUID_DEVINTERFACE_FLOPPY
#define CdChangerClassGuid GUID_DEVINTERFACE_CDCHANGER
#define StoragePortClassGuid GUID_DEVINTERFACE_STORAGEPORT
#define HiddenVolumeClassGuid GUID_DEVINTERFACE_HIDDEN_VOLUME
#define GUID_CLASS_COMPORT GUID_DEVINTERFACE_COMPORT
#define GUID_SERENUM_BUS_ENUMERATOR GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR
#define _WINIOCTL_ 
#define _DEVIOCTL_ 
#define DEVICE_TYPE DWORD
#define FILE_DEVICE_BEEP 0x00000001
#define FILE_DEVICE_CD_ROM 0x00000002
#define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003
#define FILE_DEVICE_CONTROLLER 0x00000004
#define FILE_DEVICE_DATALINK 0x00000005
#define FILE_DEVICE_DFS 0x00000006
#define FILE_DEVICE_DISK 0x00000007
#define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008
#define FILE_DEVICE_FILE_SYSTEM 0x00000009
#define FILE_DEVICE_INPORT_PORT 0x0000000a
#define FILE_DEVICE_KEYBOARD 0x0000000b
#define FILE_DEVICE_MAILSLOT 0x0000000c
#define FILE_DEVICE_MIDI_IN 0x0000000d
#define FILE_DEVICE_MIDI_OUT 0x0000000e
#define FILE_DEVICE_MOUSE 0x0000000f
#define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010
#define FILE_DEVICE_NAMED_PIPE 0x00000011
#define FILE_DEVICE_NETWORK 0x00000012
#define FILE_DEVICE_NETWORK_BROWSER 0x00000013
#define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014
#define FILE_DEVICE_NULL 0x00000015
#define FILE_DEVICE_PARALLEL_PORT 0x00000016
#define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017
#define FILE_DEVICE_PRINTER 0x00000018
#define FILE_DEVICE_SCANNER 0x00000019
#define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a
#define FILE_DEVICE_SERIAL_PORT 0x0000001b
#define FILE_DEVICE_SCREEN 0x0000001c
#define FILE_DEVICE_SOUND 0x0000001d
#define FILE_DEVICE_STREAMS 0x0000001e
#define FILE_DEVICE_TAPE 0x0000001f
#define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020
#define FILE_DEVICE_TRANSPORT 0x00000021
#define FILE_DEVICE_UNKNOWN 0x00000022
#define FILE_DEVICE_VIDEO 0x00000023
#define FILE_DEVICE_VIRTUAL_DISK 0x00000024
#define FILE_DEVICE_WAVE_IN 0x00000025
#define FILE_DEVICE_WAVE_OUT 0x00000026
#define FILE_DEVICE_8042_PORT 0x00000027
#define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028
#define FILE_DEVICE_BATTERY 0x00000029
#define FILE_DEVICE_BUS_EXTENDER 0x0000002a
#define FILE_DEVICE_MODEM 0x0000002b
#define FILE_DEVICE_VDM 0x0000002c
#define FILE_DEVICE_MASS_STORAGE 0x0000002d
#define FILE_DEVICE_SMB 0x0000002e
#define FILE_DEVICE_KS 0x0000002f
#define FILE_DEVICE_CHANGER 0x00000030
#define FILE_DEVICE_SMARTCARD 0x00000031
#define FILE_DEVICE_ACPI 0x00000032
#define FILE_DEVICE_DVD 0x00000033
#define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034
#define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035
#define FILE_DEVICE_DFS_VOLUME 0x00000036
#define FILE_DEVICE_SERENUM 0x00000037
#define FILE_DEVICE_TERMSRV 0x00000038
#define FILE_DEVICE_KSEC 0x00000039
#define FILE_DEVICE_FIPS 0x0000003A
#define FILE_DEVICE_INFINIBAND 0x0000003B
#define FILE_DEVICE_VMBUS 0x0000003E
#define FILE_DEVICE_CRYPT_PROVIDER 0x0000003F
#define FILE_DEVICE_WPD 0x00000040
#define FILE_DEVICE_BLUETOOTH 0x00000041
#define FILE_DEVICE_MT_COMPOSITE 0x00000042
#define FILE_DEVICE_MT_TRANSPORT 0x00000043
#define FILE_DEVICE_BIOMETRIC 0x00000044
#define FILE_DEVICE_PMI 0x00000045
#define FILE_DEVICE_EHSTOR 0x00000046
#define FILE_DEVICE_DEVAPI 0x00000047
#define FILE_DEVICE_GPIO 0x00000048
#define FILE_DEVICE_USBEX 0x00000049
#define FILE_DEVICE_CONSOLE 0x00000050
#define FILE_DEVICE_NFP 0x00000051
#define FILE_DEVICE_SYSENV 0x00000052
#define FILE_DEVICE_VIRTUAL_BLOCK 0x00000053
#define FILE_DEVICE_POINT_OF_SERVICE 0x00000054
#define FILE_DEVICE_STORAGE_REPLICATION 0x00000055
#define FILE_DEVICE_TRUST_ENV 0x00000056
#define FILE_DEVICE_UCM 0x00000057
#define FILE_DEVICE_UCMTCPCI 0x00000058
#define FILE_DEVICE_PERSISTENT_MEMORY 0x00000059
#define FILE_DEVICE_NVDIMM 0x0000005a
#define FILE_DEVICE_HOLOGRAPHIC 0x0000005b
#define FILE_DEVICE_SDFXHCI 0x0000005c
#define FILE_DEVICE_UCMUCSI 0x0000005d
#define FILE_DEVICE_PRM 0x0000005e
#define FILE_DEVICE_EVENT_COLLECTOR 0x0000005f
#define FILE_DEVICE_USB4 0x00000060
#define FILE_DEVICE_SOUNDWIRE 0x00000061
#define CTL_CODE(DeviceType,Function,Method,Access) (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
#define DEVICE_TYPE_FROM_CTL_CODE(ctrlCode) (((DWORD)(ctrlCode & 0xffff0000)) >> 16)
#define METHOD_FROM_CTL_CODE(ctrlCode) ((DWORD)(ctrlCode & 3))
#define METHOD_BUFFERED 0
#define METHOD_IN_DIRECT 1
#define METHOD_OUT_DIRECT 2
#define METHOD_NEITHER 3
#define METHOD_DIRECT_TO_HARDWARE METHOD_IN_DIRECT
#define METHOD_DIRECT_FROM_HARDWARE METHOD_OUT_DIRECT
#define FILE_ANY_ACCESS 0
#define FILE_SPECIAL_ACCESS (FILE_ANY_ACCESS)
#define FILE_READ_ACCESS (0x0001)
#define FILE_WRITE_ACCESS (0x0002)
#define _NTDDSTOR_H_ 
#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE
#define IOCTL_STORAGE_CHECK_VERIFY CTL_CODE(IOCTL_STORAGE_BASE,0x0200,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_STORAGE_CHECK_VERIFY2 CTL_CODE(IOCTL_STORAGE_BASE,0x0200,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_MEDIA_REMOVAL CTL_CODE(IOCTL_STORAGE_BASE,0x0201,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE,0x0202,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_STORAGE_LOAD_MEDIA CTL_CODE(IOCTL_STORAGE_BASE,0x0203,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_STORAGE_LOAD_MEDIA2 CTL_CODE(IOCTL_STORAGE_BASE,0x0203,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_RESERVE CTL_CODE(IOCTL_STORAGE_BASE,0x0204,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_STORAGE_RELEASE CTL_CODE(IOCTL_STORAGE_BASE,0x0205,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_STORAGE_FIND_NEW_DEVICES CTL_CODE(IOCTL_STORAGE_BASE,0x0206,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_STORAGE_EJECTION_CONTROL CTL_CODE(IOCTL_STORAGE_BASE,0x0250,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_MCN_CONTROL CTL_CODE(IOCTL_STORAGE_BASE,0x0251,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_GET_MEDIA_TYPES CTL_CODE(IOCTL_STORAGE_BASE,0x0300,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_GET_MEDIA_TYPES_EX CTL_CODE(IOCTL_STORAGE_BASE,0x0301,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER CTL_CODE(IOCTL_STORAGE_BASE,0x0304,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_GET_HOTPLUG_INFO CTL_CODE(IOCTL_STORAGE_BASE,0x0305,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_SET_HOTPLUG_INFO CTL_CODE(IOCTL_STORAGE_BASE,0x0306,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE,0x0400,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE,0x0401,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_STORAGE_BREAK_RESERVATION CTL_CODE(IOCTL_STORAGE_BASE,0x0405,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_STORAGE_PERSISTENT_RESERVE_IN CTL_CODE(IOCTL_STORAGE_BASE, 0x0406, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_PERSISTENT_RESERVE_OUT CTL_CODE(IOCTL_STORAGE_BASE, 0x0407, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_GET_DEVICE_NUMBER CTL_CODE(IOCTL_STORAGE_BASE,0x0420,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_GET_DEVICE_NUMBER_EX CTL_CODE(IOCTL_STORAGE_BASE,0x0421,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_PREDICT_FAILURE CTL_CODE(IOCTL_STORAGE_BASE,0x0440,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_FAILURE_PREDICTION_CONFIG CTL_CODE(IOCTL_STORAGE_BASE,0x0441,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_GET_COUNTERS CTL_CODE(IOCTL_STORAGE_BASE,0x442,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_READ_CAPACITY CTL_CODE(IOCTL_STORAGE_BASE,0x0450,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_STORAGE_GET_DEVICE_TELEMETRY CTL_CODE(IOCTL_STORAGE_BASE, 0x0470, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_DEVICE_TELEMETRY_NOTIFY CTL_CODE(IOCTL_STORAGE_BASE, 0x0471, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_DEVICE_TELEMETRY_QUERY_CAPS CTL_CODE(IOCTL_STORAGE_BASE, 0x0472, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_GET_DEVICE_TELEMETRY_RAW CTL_CODE(IOCTL_STORAGE_BASE, 0x0473, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_SET_TEMPERATURE_THRESHOLD CTL_CODE(IOCTL_STORAGE_BASE, 0x0480, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_PROTOCOL_COMMAND CTL_CODE(IOCTL_STORAGE_BASE, 0x04F0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_SET_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x04FF, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_QUERY_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES CTL_CODE(IOCTL_STORAGE_BASE, 0x0501, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_GET_LB_PROVISIONING_MAP_RESOURCES CTL_CODE(IOCTL_STORAGE_BASE, 0x0502, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_REINITIALIZE_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0590, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_GET_BC_PROPERTIES CTL_CODE(IOCTL_STORAGE_BASE, 0x0600, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_ALLOCATE_BC_STREAM CTL_CODE(IOCTL_STORAGE_BASE, 0x0601, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_FREE_BC_STREAM CTL_CODE(IOCTL_STORAGE_BASE, 0x0602, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_CHECK_PRIORITY_HINT_SUPPORT CTL_CODE(IOCTL_STORAGE_BASE, 0x0620, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_START_DATA_INTEGRITY_CHECK CTL_CODE(IOCTL_STORAGE_BASE, 0x0621, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_STOP_DATA_INTEGRITY_CHECK CTL_CODE(IOCTL_STORAGE_BASE, 0x0622, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define OBSOLETE_IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE,0x0400,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define OBSOLETE_IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE,0x0401,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_FIRMWARE_GET_INFO CTL_CODE(IOCTL_STORAGE_BASE, 0x0700, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_FIRMWARE_DOWNLOAD CTL_CODE(IOCTL_STORAGE_BASE, 0x0701, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_FIRMWARE_ACTIVATE CTL_CODE(IOCTL_STORAGE_BASE, 0x0702, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_ENABLE_IDLE_POWER CTL_CODE(IOCTL_STORAGE_BASE, 0x0720, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_GET_IDLE_POWERUP_REASON CTL_CODE(IOCTL_STORAGE_BASE, 0x0721, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_POWER_ACTIVE CTL_CODE(IOCTL_STORAGE_BASE, 0x0722, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_POWER_IDLE CTL_CODE(IOCTL_STORAGE_BASE, 0x0723, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_EVENT_NOTIFICATION CTL_CODE(IOCTL_STORAGE_BASE, 0x0724, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_DEVICE_POWER_CAP CTL_CODE(IOCTL_STORAGE_BASE, 0x0725, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_RPMB_COMMAND CTL_CODE(IOCTL_STORAGE_BASE, 0x0726, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_ATTRIBUTE_MANAGEMENT CTL_CODE(IOCTL_STORAGE_BASE, 0x0727, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_DIAGNOSTIC CTL_CODE(IOCTL_STORAGE_BASE, 0x0728, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_GET_PHYSICAL_ELEMENT_STATUS CTL_CODE(IOCTL_STORAGE_BASE, 0x0729, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_REMOVE_ELEMENT_AND_TRUNCATE CTL_CODE(IOCTL_STORAGE_BASE, 0x0730, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG CTL_CODE(IOCTL_STORAGE_BASE, 0x0731, METHOD_BUFFERED, FILE_ANY_ACCESS)
typedef struct _STORAGE_READ_CAPACITY {
  ULONG Version;
  ULONG Size;
  ULONG BlockLength;
  LARGE_INTEGER NumberOfBlocks;
  LARGE_INTEGER DiskLength;
} STORAGE_READ_CAPACITY, *PSTORAGE_READ_CAPACITY;
#define IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES CTL_CODE(IOCTL_STORAGE_BASE, 0x0501, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define DeviceDsmActionFlag_NonDestructive 0x80000000
#define DeviceDsmAction_None 0
#define DeviceDsmAction_Trim 1
#define DeviceDsmAction_Notification (2 | DeviceDsmActionFlag_NonDestructive)
#define IsDsmActionNonDestructive(x) ((BOOLEAN)(!!((x) & DeviceDsmActionFlag_NonDestructive)))
#define DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE __MSABI_LONG(0x00000001)
#define DEVICE_DSM_NOTIFY_FLAG_BEGIN 0x00000001
#define DEVICE_DSM_NOTIFY_FLAG_END 0x00000002
#define IOCTL_STORAGE_BC_VERSION 1
#define STORAGE_PRIORITY_HINT_SUPPORTED 0x0001
  typedef DWORD DEVICE_DATA_MANAGEMENT_SET_ACTION;
  typedef struct _DEVICE_MANAGE_DATA_SET_ATTRIBUTES {
    DWORD Size;
    DEVICE_DATA_MANAGEMENT_SET_ACTION Action;
    DWORD Flags;
    DWORD ParameterBlockOffset;
    DWORD ParameterBlockLength;
    DWORD DataSetRangesOffset;
    DWORD DataSetRangesLength;
  } DEVICE_MANAGE_DATA_SET_ATTRIBUTES, *PDEVICE_MANAGE_DATA_SET_ATTRIBUTES;
  typedef struct _DEVICE_DATA_SET_RANGE {
    LONGLONG StartingOffset;
    DWORDLONG LengthInBytes;
  } DEVICE_DATA_SET_RANGE, *PDEVICE_DATA_SET_RANGE;
  typedef struct _DEVICE_DSM_NOTIFICATION_PARAMETERS {
    ULONG Size;
    ULONG Flags;
    ULONG NumFileTypeIDs;
    GUID FileTypeID[1];
  } DEVICE_DSM_NOTIFICATION_PARAMETERS, *PDEVICE_DSM_NOTIFICATION_PARAMETERS;
  typedef struct _STORAGE_GET_BC_PROPERTIES_OUTPUT {
    ULONG MaximumRequestsPerPeriod;
    ULONG MinimumPeriod;
    ULONGLONG MaximumRequestSize;
    ULONG EstimatedTimePerRequest;
    ULONG NumOutStandingRequests;
    ULONGLONG RequestSize;
  } STORAGE_GET_BC_PROPERTIES_OUTPUT, *PSTORAGE_GET_BC_PROPERTIES_OUTPUT;
  typedef struct _STORAGE_ALLOCATE_BC_STREAM_INPUT {
    ULONG Version;
    ULONG RequestsPerPeriod;
    ULONG Period;
    BOOLEAN RetryFailures;
    BOOLEAN Discardable;
    BOOLEAN Reserved1[2];
    ULONG AccessType;
    ULONG AccessMode;
  } STORAGE_ALLOCATE_BC_STREAM_INPUT, *PSTORAGE_ALLOCATE_BC_STREAM_INPUT;
  typedef struct _STORAGE_ALLOCATE_BC_STREAM_OUTPUT {
    ULONGLONG RequestSize;
    ULONG NumOutStandingRequests;
  } STORAGE_ALLOCATE_BC_STREAM_OUTPUT, *PSTORAGE_ALLOCATE_BC_STREAM_OUTPUT;
  typedef struct _STORAGE_PRIORITY_HINT_SUPPORT {
    ULONG SupportFlags;
  } STORAGE_PRIORITY_HINT_SUPPORT, *PSTORAGE_PRIORITY_HINT_SUPPORT;
  typedef struct _STORAGE_MEDIA_SERIAL_NUMBER_DATA {
    USHORT Reserved;
    USHORT SerialNumberLength;
    UCHAR SerialNumber[0];
  } STORAGE_MEDIA_SERIAL_NUMBER_DATA, *PSTORAGE_MEDIA_SERIAL_NUMBER_DATA;
  typedef struct _PERSISTENT_RESERVE_COMMAND {
    ULONG Version;
    ULONG Size;
    __extension__ union {
      struct {
        UCHAR ServiceAction:5;
        UCHAR Reserved1:3;
        USHORT AllocationLength;
      } PR_IN;
      struct {
        UCHAR ServiceAction:5;
        UCHAR Reserved1:3;
        UCHAR Type:4;
        UCHAR Scope:4;
        UCHAR ParameterList[0];
      } PR_OUT;
    } ;
  } PERSISTENT_RESERVE_COMMAND, *PPERSISTENT_RESERVE_COMMAND;
  typedef struct _STORAGE_HOTPLUG_INFO {
    DWORD Size;
    BOOLEAN MediaRemovable;
    BOOLEAN MediaHotplug;
    BOOLEAN DeviceHotplug;
    BOOLEAN WriteCacheEnableOverride;
  } STORAGE_HOTPLUG_INFO,*PSTORAGE_HOTPLUG_INFO;
  typedef struct _STORAGE_DEVICE_NUMBER {
    DWORD DeviceType;
    DWORD DeviceNumber;
    DWORD PartitionNumber;
  } STORAGE_DEVICE_NUMBER,*PSTORAGE_DEVICE_NUMBER;
  typedef struct _STORAGE_DEVICE_NUMBERS {
    DWORD Version;
    DWORD Size;
    DWORD NumberOfDevices;
    STORAGE_DEVICE_NUMBER Devices[1];
  } STORAGE_DEVICE_NUMBERS,*PSTORAGE_DEVICE_NUMBERS;
#define STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_CONFLICT 0x1
#define STORAGE_DEVICE_FLAGS_RANDOM_DEVICEGUID_REASON_NOHWID 0x2
#define STORAGE_DEVICE_FLAGS_PAGE_83_DEVICEGUID 0x4
  typedef struct _STORAGE_DEVICE_NUMBER_EX {
    DWORD Version;
    DWORD Size;
    DWORD Flags;
    DWORD DeviceType;
    DWORD DeviceNumber;
    GUID DeviceGuid;
    DWORD PartitionNumber;
  } STORAGE_DEVICE_NUMBER_EX,*PSTORAGE_DEVICE_NUMBER_EX;
  typedef struct _STORAGE_BUS_RESET_REQUEST {
    BYTE PathId;
  } STORAGE_BUS_RESET_REQUEST,*PSTORAGE_BUS_RESET_REQUEST;
  typedef struct STORAGE_BREAK_RESERVATION_REQUEST {
    DWORD Length;
    BYTE _unused;
    BYTE PathId;
    BYTE TargetId;
    BYTE Lun;
  } STORAGE_BREAK_RESERVATION_REQUEST,*PSTORAGE_BREAK_RESERVATION_REQUEST;
  typedef struct _PREVENT_MEDIA_REMOVAL {
    BOOLEAN PreventMediaRemoval;
  } PREVENT_MEDIA_REMOVAL,*PPREVENT_MEDIA_REMOVAL;
  typedef struct _CLASS_MEDIA_CHANGE_CONTEXT {
    DWORD MediaChangeCount;
    DWORD NewState;
  } CLASS_MEDIA_CHANGE_CONTEXT,*PCLASS_MEDIA_CHANGE_CONTEXT;
  typedef struct _TAPE_STATISTICS {
    DWORD Version;
    DWORD Flags;
    LARGE_INTEGER RecoveredWrites;
    LARGE_INTEGER UnrecoveredWrites;
    LARGE_INTEGER RecoveredReads;
    LARGE_INTEGER UnrecoveredReads;
    BYTE CompressionRatioReads;
    BYTE CompressionRatioWrites;
  } TAPE_STATISTICS,*PTAPE_STATISTICS;
#define RECOVERED_WRITES_VALID 0x00000001
#define UNRECOVERED_WRITES_VALID 0x00000002
#define RECOVERED_READS_VALID 0x00000004
#define UNRECOVERED_READS_VALID 0x00000008
#define WRITE_COMPRESSION_INFO_VALID 0x00000010
#define READ_COMPRESSION_INFO_VALID 0x00000020
  typedef struct _TAPE_GET_STATISTICS {
    DWORD Operation;
  } TAPE_GET_STATISTICS,*PTAPE_GET_STATISTICS;
#define TAPE_RETURN_STATISTICS __MSABI_LONG(0)
#define TAPE_RETURN_ENV_INFO __MSABI_LONG(1)
#define TAPE_RESET_STATISTICS __MSABI_LONG(2)
  typedef enum _STORAGE_MEDIA_TYPE {
    DDS_4mm = 0x20,
    MiniQic,
    Travan,
    QIC,
    MP_8mm,
    AME_8mm,
    AIT1_8mm,
    DLT,
    NCTP,
    IBM_3480,
    IBM_3490E,
    IBM_Magstar_3590,
    IBM_Magstar_MP,
    STK_DATA_D3,
    SONY_DTF,
    DV_6mm,
    DMI,
    SONY_D2,
    CLEANER_CARTRIDGE,
    CD_ROM,
    CD_R,
    CD_RW,
    DVD_ROM,
    DVD_R,
    DVD_RW,
    MO_3_RW,
    MO_5_WO,
    MO_5_RW,
    MO_5_LIMDOW,
    PC_5_WO,
    PC_5_RW,
    PD_5_RW,
    ABL_5_WO,
    PINNACLE_APEX_5_RW,
    SONY_12_WO,
    PHILIPS_12_WO,
    HITACHI_12_WO,
    CYGNET_12_WO,
    KODAK_14_WO,
    MO_NFR_525,
    NIKON_12_RW,
    IOMEGA_ZIP,
    IOMEGA_JAZ,
    SYQUEST_EZ135,
    SYQUEST_EZFLYER,
    SYQUEST_SYJET,
    AVATAR_F2,
    MP2_8mm,
    DST_S,
    DST_M,
    DST_L,
    VXATape_1,
    VXATape_2,
    STK_9840,
    LTO_Ultrium,
    LTO_Accelis,
    DVD_RAM,
    AIT_8mm,
    ADR_1,
    ADR_2,
    STK_9940,
    SAIT,
    VXATape
  } STORAGE_MEDIA_TYPE, *PSTORAGE_MEDIA_TYPE;
#define MEDIA_ERASEABLE 0x00000001
#define MEDIA_WRITE_ONCE 0x00000002
#define MEDIA_READ_ONLY 0x00000004
#define MEDIA_READ_WRITE 0x00000008
#define MEDIA_WRITE_PROTECTED 0x00000100
#define MEDIA_CURRENTLY_MOUNTED 0x80000000
  typedef enum _STORAGE_BUS_TYPE {
    BusTypeUnknown = 0x00,
    BusTypeScsi = 0x1,
    BusTypeAtapi = 0x2,
    BusTypeAta = 0x3,
    BusType1394 = 0x4,
    BusTypeSsa = 0x5,
    BusTypeFibre = 0x6,
    BusTypeUsb = 0x7,
    BusTypeRAID = 0x8,
    BusTypeiScsi = 0x9,
    BusTypeSas = 0xA,
    BusTypeSata = 0xB,
    BusTypeSd = 0xC,
    BusTypeMmc = 0xD,
    BusTypeMax,
    BusTypeMaxReserved = 0x7F
  } STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE;
#define SupportsDeviceSharing(BusType) ((BusType == BusTypeScsi) || (BusType == BusTypeFibre) || (BusType == BusTypeiScsi) || (BusType == BusTypeSas) || (BusType == BusTypeSpaces))
  typedef struct _DEVICE_MEDIA_INFO {
    union {
      struct {
 LARGE_INTEGER Cylinders;
 STORAGE_MEDIA_TYPE MediaType;
 DWORD TracksPerCylinder;
 DWORD SectorsPerTrack;
 DWORD BytesPerSector;
 DWORD NumberMediaSides;
 DWORD MediaCharacteristics;
      } DiskInfo;
      struct {
 LARGE_INTEGER Cylinders;
 STORAGE_MEDIA_TYPE MediaType;
 DWORD TracksPerCylinder;
 DWORD SectorsPerTrack;
 DWORD BytesPerSector;
 DWORD NumberMediaSides;
 DWORD MediaCharacteristics;
      } RemovableDiskInfo;
      struct {
 STORAGE_MEDIA_TYPE MediaType;
 DWORD MediaCharacteristics;
 DWORD CurrentBlockSize;
 STORAGE_BUS_TYPE BusType;
 union {
   struct {
     BYTE MediumType;
     BYTE DensityCode;
   } ScsiInformation;
 } BusSpecificData;
      } TapeInfo;
    } DeviceSpecific;
  } DEVICE_MEDIA_INFO,*PDEVICE_MEDIA_INFO;
  typedef struct _GET_MEDIA_TYPES {
    DWORD DeviceType;
    DWORD MediaInfoCount;
    DEVICE_MEDIA_INFO MediaInfo[1];
  } GET_MEDIA_TYPES,*PGET_MEDIA_TYPES;
  typedef struct _STORAGE_PREDICT_FAILURE {
    DWORD PredictFailure;
    BYTE VendorSpecific[512];
  } STORAGE_PREDICT_FAILURE,*PSTORAGE_PREDICT_FAILURE;
  typedef struct _STORAGE_FAILURE_PREDICTION_CONFIG {
    DWORD Version;
    DWORD Size;
    BOOLEAN Set;
    BOOLEAN Enabled;
    WORD Reserved;
  } STORAGE_FAILURE_PREDICTION_CONFIG,*PSTORAGE_FAILURE_PREDICTION_CONFIG;
#define STORAGE_FAILURE_PREDICTION_CONFIG_V1 1
#define _NTDDDISK_H_ 
#define IOCTL_DISK_BASE FILE_DEVICE_DISK
#define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_DISK_BASE,0x0000,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_GET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE,0x0001,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_DISK_SET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE,0x0002,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_GET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,0x0003,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_DISK_SET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,0x0004,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_VERIFY CTL_CODE(IOCTL_DISK_BASE,0x0005,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_FORMAT_TRACKS CTL_CODE(IOCTL_DISK_BASE,0x0006,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_REASSIGN_BLOCKS CTL_CODE(IOCTL_DISK_BASE,0x0007,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_PERFORMANCE CTL_CODE(IOCTL_DISK_BASE,0x0008,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_IS_WRITABLE CTL_CODE(IOCTL_DISK_BASE,0x0009,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_LOGGING CTL_CODE(IOCTL_DISK_BASE,0x000a,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_FORMAT_TRACKS_EX CTL_CODE(IOCTL_DISK_BASE,0x000b,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_HISTOGRAM_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,0x000c,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_HISTOGRAM_DATA CTL_CODE(IOCTL_DISK_BASE,0x000d,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_HISTOGRAM_RESET CTL_CODE(IOCTL_DISK_BASE,0x000e,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_REQUEST_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,0x000f,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_REQUEST_DATA CTL_CODE(IOCTL_DISK_BASE,0x0010,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_PERFORMANCE_OFF CTL_CODE(IOCTL_DISK_BASE,0x0018,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_CONTROLLER_NUMBER CTL_CODE(IOCTL_DISK_BASE,0x0011,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define SMART_GET_VERSION CTL_CODE(IOCTL_DISK_BASE,0x0020,METHOD_BUFFERED,FILE_READ_ACCESS)
#define SMART_SEND_DRIVE_COMMAND CTL_CODE(IOCTL_DISK_BASE,0x0021,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define SMART_RCV_DRIVE_DATA CTL_CODE(IOCTL_DISK_BASE,0x0022,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_GET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x0012,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_SET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x0013,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_GET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x0014,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_SET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x0015,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_CREATE_DISK CTL_CODE(IOCTL_DISK_BASE,0x0016,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_GET_LENGTH_INFO CTL_CODE(IOCTL_DISK_BASE,0x0017,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_DISK_GET_DRIVE_GEOMETRY_EX CTL_CODE(IOCTL_DISK_BASE,0x0028,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_REASSIGN_BLOCKS_EX CTL_CODE(IOCTL_DISK_BASE,0x0029,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_UPDATE_DRIVE_SIZE CTL_CODE(IOCTL_DISK_BASE,0x0032,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_GROW_PARTITION CTL_CODE(IOCTL_DISK_BASE,0x0034,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_GET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x0035,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_DISK_SET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x0036,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define OBSOLETE_DISK_GET_WRITE_CACHE_STATE CTL_CODE(IOCTL_DISK_BASE,0x0037,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_DISK_DELETE_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,0x0040,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_UPDATE_PROPERTIES CTL_CODE(IOCTL_DISK_BASE,0x0050,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_RESET_SNAPSHOT_INFO CTL_CODE(IOCTL_DISK_BASE,0x0084,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_FORMAT_DRIVE CTL_CODE(IOCTL_DISK_BASE,0x00f3,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_SENSE_DEVICE CTL_CODE(IOCTL_DISK_BASE,0x00f8,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_DISK_CHECK_VERIFY CTL_CODE(IOCTL_DISK_BASE,0x0200,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE,0x0201,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x0202,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_DISK_LOAD_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x0203,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_DISK_RESERVE CTL_CODE(IOCTL_DISK_BASE,0x0204,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_DISK_RELEASE CTL_CODE(IOCTL_DISK_BASE,0x0205,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_DISK_FIND_NEW_DEVICES CTL_CODE(IOCTL_DISK_BASE,0x0206,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_DISK_GET_MEDIA_TYPES CTL_CODE(IOCTL_DISK_BASE,0x0300,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_STORAGE_QUERY_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define PARTITION_ENTRY_UNUSED 0x00
#define PARTITION_FAT_12 0x01
#define PARTITION_XENIX_1 0x02
#define PARTITION_XENIX_2 0x03
#define PARTITION_FAT_16 0x04
#define PARTITION_EXTENDED 0x05
#define PARTITION_HUGE 0x06
#define PARTITION_IFS 0x07
#define PARTITION_OS2BOOTMGR 0x0A
#define PARTITION_FAT32 0x0B
#define PARTITION_FAT32_XINT13 0x0C
#define PARTITION_XINT13 0x0E
#define PARTITION_XINT13_EXTENDED 0x0F
#define PARTITION_PREP 0x41
#define PARTITION_LDM 0x42
#define PARTITION_UNIX 0x63
#define VALID_NTFT 0xC0
#define PARTITION_NTFT 0x80
#define IsRecognizedPartition(PartitionType) (((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_FAT_12)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_IFS)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_HUGE)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_FAT32)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_FAT32_XINT13)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_XINT13)) || ((PartitionType)==PARTITION_FAT_12) || ((PartitionType)==PARTITION_FAT_16) || ((PartitionType)==PARTITION_IFS) || ((PartitionType)==PARTITION_HUGE) || ((PartitionType)==PARTITION_FAT32) || ((PartitionType)==PARTITION_FAT32_XINT13) || ((PartitionType)==PARTITION_XINT13))
#define IsContainerPartition(PartitionType) ((PartitionType==PARTITION_EXTENDED) || (PartitionType==PARTITION_XINT13_EXTENDED))
#define IsFTPartition(PartitionType) (((PartitionType)&PARTITION_NTFT) && IsRecognizedPartition(PartitionType))
typedef enum _MEDIA_TYPE {
  Unknown,F5_1Pt2_512,F3_1Pt44_512,F3_2Pt88_512,F3_20Pt8_512,F3_720_512,F5_360_512,F5_320_512,F5_320_1024,F5_180_512,F5_160_512,
  RemovableMedia,FixedMedia,F3_120M_512,F3_640_512,F5_640_512,F5_720_512,F3_1Pt2_512,F3_1Pt23_1024,F5_1Pt23_1024,F3_128Mb_512,
  F3_230Mb_512,F8_256_128,F3_200Mb_512,F3_240M_512,F3_32M_512
} MEDIA_TYPE,*PMEDIA_TYPE;
typedef struct _FORMAT_PARAMETERS {
  MEDIA_TYPE MediaType;
  DWORD StartCylinderNumber;
  DWORD EndCylinderNumber;
  DWORD StartHeadNumber;
  DWORD EndHeadNumber;
} FORMAT_PARAMETERS,*PFORMAT_PARAMETERS;
typedef WORD BAD_TRACK_NUMBER;
typedef WORD *PBAD_TRACK_NUMBER;
typedef struct _FORMAT_EX_PARAMETERS {
  MEDIA_TYPE MediaType;
  DWORD StartCylinderNumber;
  DWORD EndCylinderNumber;
  DWORD StartHeadNumber;
  DWORD EndHeadNumber;
  WORD FormatGapLength;
  WORD SectorsPerTrack;
  WORD SectorNumber[1];
} FORMAT_EX_PARAMETERS,*PFORMAT_EX_PARAMETERS;
typedef struct _DISK_GEOMETRY {
  LARGE_INTEGER Cylinders;
  MEDIA_TYPE MediaType;
  DWORD TracksPerCylinder;
  DWORD SectorsPerTrack;
  DWORD BytesPerSector;
} DISK_GEOMETRY,*PDISK_GEOMETRY;
#define WMI_DISK_GEOMETRY_GUID { 0x25007f51,0x57c2,0x11d1,{ 0xa5,0x28,0x0,0xa0,0xc9,0x6,0x29,0x10 } }
typedef struct _PARTITION_INFORMATION {
  LARGE_INTEGER StartingOffset;
  LARGE_INTEGER PartitionLength;
  DWORD HiddenSectors;
  DWORD PartitionNumber;
  BYTE PartitionType;
  BOOLEAN BootIndicator;
  BOOLEAN RecognizedPartition;
  BOOLEAN RewritePartition;
} PARTITION_INFORMATION,*PPARTITION_INFORMATION;
typedef struct _SET_PARTITION_INFORMATION {
  BYTE PartitionType;
} SET_PARTITION_INFORMATION,*PSET_PARTITION_INFORMATION;
typedef struct _DRIVE_LAYOUT_INFORMATION {
  DWORD PartitionCount;
  DWORD Signature;
  PARTITION_INFORMATION PartitionEntry[1];
} DRIVE_LAYOUT_INFORMATION,*PDRIVE_LAYOUT_INFORMATION;
typedef struct _VERIFY_INFORMATION {
  LARGE_INTEGER StartingOffset;
  DWORD Length;
} VERIFY_INFORMATION,*PVERIFY_INFORMATION;
typedef struct _REASSIGN_BLOCKS {
  WORD Reserved;
  WORD Count;
  DWORD BlockNumber[1];
} REASSIGN_BLOCKS,*PREASSIGN_BLOCKS;
#pragma pack(push,1)
typedef struct _REASSIGN_BLOCKS_EX {
  WORD Reserved;
  WORD Count;
  LARGE_INTEGER BlockNumber[1];
} REASSIGN_BLOCKS_EX,*PREASSIGN_BLOCKS_EX;
#pragma pack(pop)
typedef enum _PARTITION_STYLE {
  PARTITION_STYLE_MBR,PARTITION_STYLE_GPT,PARTITION_STYLE_RAW
} PARTITION_STYLE;
typedef struct _PARTITION_INFORMATION_GPT {
  GUID PartitionType;
  GUID PartitionId;
  DWORD64 Attributes;
  WCHAR Name [36];
} PARTITION_INFORMATION_GPT,*PPARTITION_INFORMATION_GPT;
#define GPT_ATTRIBUTE_PLATFORM_REQUIRED (0x0000000000000001)
#define GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER (0x8000000000000000)
#define GPT_BASIC_DATA_ATTRIBUTE_HIDDEN (0x4000000000000000)
#define GPT_BASIC_DATA_ATTRIBUTE_SHADOW_COPY (0x2000000000000000)
#define GPT_BASIC_DATA_ATTRIBUTE_READ_ONLY (0x1000000000000000)
typedef struct _PARTITION_INFORMATION_MBR {
  BYTE PartitionType;
  BOOLEAN BootIndicator;
  BOOLEAN RecognizedPartition;
  DWORD HiddenSectors;
} PARTITION_INFORMATION_MBR,*PPARTITION_INFORMATION_MBR;
typedef SET_PARTITION_INFORMATION SET_PARTITION_INFORMATION_MBR;
typedef PARTITION_INFORMATION_GPT SET_PARTITION_INFORMATION_GPT;
typedef struct _SET_PARTITION_INFORMATION_EX {
  PARTITION_STYLE PartitionStyle;
  __extension__ union {
    SET_PARTITION_INFORMATION_MBR Mbr;
    SET_PARTITION_INFORMATION_GPT Gpt;
  } ;
} SET_PARTITION_INFORMATION_EX,*PSET_PARTITION_INFORMATION_EX;
typedef struct _CREATE_DISK_GPT {
  GUID DiskId;
  DWORD MaxPartitionCount;
} CREATE_DISK_GPT,*PCREATE_DISK_GPT;
typedef struct _CREATE_DISK_MBR {
  DWORD Signature;
} CREATE_DISK_MBR,*PCREATE_DISK_MBR;
typedef struct _CREATE_DISK {
  PARTITION_STYLE PartitionStyle;
  __extension__ union {
    CREATE_DISK_MBR Mbr;
    CREATE_DISK_GPT Gpt;
  } ;
} CREATE_DISK,*PCREATE_DISK;
typedef struct _GET_LENGTH_INFORMATION {
  LARGE_INTEGER Length;
} GET_LENGTH_INFORMATION,*PGET_LENGTH_INFORMATION;
typedef struct _PARTITION_INFORMATION_EX {
  PARTITION_STYLE PartitionStyle;
  LARGE_INTEGER StartingOffset;
  LARGE_INTEGER PartitionLength;
  DWORD PartitionNumber;
  BOOLEAN RewritePartition;
  __extension__ union {
    PARTITION_INFORMATION_MBR Mbr;
    PARTITION_INFORMATION_GPT Gpt;
  } ;
} PARTITION_INFORMATION_EX,*PPARTITION_INFORMATION_EX;
typedef struct _DRIVE_LAYOUT_INFORMATION_GPT {
  GUID DiskId;
  LARGE_INTEGER StartingUsableOffset;
  LARGE_INTEGER UsableLength;
  DWORD MaxPartitionCount;
} DRIVE_LAYOUT_INFORMATION_GPT,*PDRIVE_LAYOUT_INFORMATION_GPT;
typedef struct _DRIVE_LAYOUT_INFORMATION_MBR {
  DWORD Signature;
} DRIVE_LAYOUT_INFORMATION_MBR,*PDRIVE_LAYOUT_INFORMATION_MBR;
typedef struct _DRIVE_LAYOUT_INFORMATION_EX {
  DWORD PartitionStyle;
  DWORD PartitionCount;
  __extension__ union {
    DRIVE_LAYOUT_INFORMATION_MBR Mbr;
    DRIVE_LAYOUT_INFORMATION_GPT Gpt;
  } ;
  PARTITION_INFORMATION_EX PartitionEntry[1];
} DRIVE_LAYOUT_INFORMATION_EX,*PDRIVE_LAYOUT_INFORMATION_EX;
typedef enum _DETECTION_TYPE {
  DetectNone,DetectInt13,DetectExInt13
} DETECTION_TYPE;
typedef struct _DISK_INT13_INFO {
  WORD DriveSelect;
  DWORD MaxCylinders;
  WORD SectorsPerTrack;
  WORD MaxHeads;
  WORD NumberDrives;
} DISK_INT13_INFO,*PDISK_INT13_INFO;
typedef struct _DISK_EX_INT13_INFO {
  WORD ExBufferSize;
  WORD ExFlags;
  DWORD ExCylinders;
  DWORD ExHeads;
  DWORD ExSectorsPerTrack;
  DWORD64 ExSectorsPerDrive;
  WORD ExSectorSize;
  WORD ExReserved;
} DISK_EX_INT13_INFO,*PDISK_EX_INT13_INFO;
typedef struct _DISK_DETECTION_INFO {
  DWORD SizeOfDetectInfo;
  DETECTION_TYPE DetectionType;
  __extension__ union {
    __extension__ struct {
      DISK_INT13_INFO Int13;
      DISK_EX_INT13_INFO ExInt13;
    } ;
  } ;
} DISK_DETECTION_INFO,*PDISK_DETECTION_INFO;
typedef struct _DISK_PARTITION_INFO {
  DWORD SizeOfPartitionInfo;
  PARTITION_STYLE PartitionStyle;
  __extension__ union {
    struct {
      DWORD Signature;
      DWORD CheckSum;
    } Mbr;
    struct {
      GUID DiskId;
    } Gpt;
  } ;
} DISK_PARTITION_INFO,*PDISK_PARTITION_INFO;
#define DiskGeometryGetPartition(Geometry) ((PDISK_PARTITION_INFO)((Geometry)->Data))
#define DiskGeometryGetDetect(Geometry) ((PDISK_DETECTION_INFO)(((DWORD_PTR)DiskGeometryGetPartition(Geometry)+ DiskGeometryGetPartition(Geometry)->SizeOfPartitionInfo)))
typedef struct _DISK_GEOMETRY_EX {
  DISK_GEOMETRY Geometry;
  LARGE_INTEGER DiskSize;
  BYTE Data[1];
} DISK_GEOMETRY_EX,*PDISK_GEOMETRY_EX;
typedef struct _DISK_CONTROLLER_NUMBER {
  DWORD ControllerNumber;
  DWORD DiskNumber;
} DISK_CONTROLLER_NUMBER,*PDISK_CONTROLLER_NUMBER;
typedef enum {
  EqualPriority,KeepPrefetchedData,KeepReadData
} DISK_CACHE_RETENTION_PRIORITY;
typedef struct _DISK_CACHE_INFORMATION {
  BOOLEAN ParametersSavable;
  BOOLEAN ReadCacheEnabled;
  BOOLEAN WriteCacheEnabled;
  DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority;
  DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority;
  WORD DisablePrefetchTransferLength;
  BOOLEAN PrefetchScalar;
  __extension__ union {
    struct {
      WORD Minimum;
      WORD Maximum;
      WORD MaximumBlocks;
    } ScalarPrefetch;
    struct {
      WORD Minimum;
      WORD Maximum;
    } BlockPrefetch;
  } ;
} DISK_CACHE_INFORMATION,*PDISK_CACHE_INFORMATION;
typedef struct _DISK_GROW_PARTITION {
  DWORD PartitionNumber;
  LARGE_INTEGER BytesToGrow;
} DISK_GROW_PARTITION,*PDISK_GROW_PARTITION;
#define HIST_NO_OF_BUCKETS 24
typedef struct _HISTOGRAM_BUCKET {
  DWORD Reads;
  DWORD Writes;
} HISTOGRAM_BUCKET,*PHISTOGRAM_BUCKET;
#define HISTOGRAM_BUCKET_SIZE sizeof(HISTOGRAM_BUCKET)
typedef struct _DISK_HISTOGRAM {
  LARGE_INTEGER DiskSize;
  LARGE_INTEGER Start;
  LARGE_INTEGER End;
  LARGE_INTEGER Average;
  LARGE_INTEGER AverageRead;
  LARGE_INTEGER AverageWrite;
  DWORD Granularity;
  DWORD Size;
  DWORD ReadCount;
  DWORD WriteCount;
  PHISTOGRAM_BUCKET Histogram;
} DISK_HISTOGRAM,*PDISK_HISTOGRAM;
#define DISK_HISTOGRAM_SIZE sizeof(DISK_HISTOGRAM)
typedef struct _DISK_PERFORMANCE {
  LARGE_INTEGER BytesRead;
  LARGE_INTEGER BytesWritten;
  LARGE_INTEGER ReadTime;
  LARGE_INTEGER WriteTime;
  LARGE_INTEGER IdleTime;
  DWORD ReadCount;
  DWORD WriteCount;
  DWORD QueueDepth;
  DWORD SplitCount;
  LARGE_INTEGER QueryTime;
  DWORD StorageDeviceNumber;
  WCHAR StorageManagerName[8];
} DISK_PERFORMANCE,*PDISK_PERFORMANCE;
typedef struct _DISK_RECORD {
  LARGE_INTEGER ByteOffset;
  LARGE_INTEGER StartTime;
  LARGE_INTEGER EndTime;
  PVOID VirtualAddress;
  DWORD NumberOfBytes;
  BYTE DeviceNumber;
  BOOLEAN ReadRequest;
} DISK_RECORD,*PDISK_RECORD;
typedef struct _DISK_LOGGING {
  BYTE Function;
  PVOID BufferAddress;
  DWORD BufferSize;
} DISK_LOGGING,*PDISK_LOGGING;
#define DISK_LOGGING_START 0
#define DISK_LOGGING_STOP 1
#define DISK_LOGGING_DUMP 2
#define DISK_BINNING 3
typedef enum _BIN_TYPES {
  RequestSize,RequestLocation
} BIN_TYPES;
typedef struct _BIN_RANGE {
  LARGE_INTEGER StartValue;
  LARGE_INTEGER Length;
} BIN_RANGE,*PBIN_RANGE;
typedef struct _PERF_BIN {
  DWORD NumberOfBins;
  DWORD TypeOfBin;
  BIN_RANGE BinsRanges[1];
} PERF_BIN,*PPERF_BIN;
typedef struct _BIN_COUNT {
  BIN_RANGE BinRange;
  DWORD BinCount;
} BIN_COUNT,*PBIN_COUNT;
typedef struct _BIN_RESULTS {
  DWORD NumberOfBins;
  BIN_COUNT BinCounts[1];
} BIN_RESULTS,*PBIN_RESULTS;
#pragma pack(push,1)
typedef struct _GETVERSIONINPARAMS {
  BYTE bVersion;
  BYTE bRevision;
  BYTE bReserved;
  BYTE bIDEDeviceMap;
  DWORD fCapabilities;
  DWORD dwReserved[4];
} GETVERSIONINPARAMS,*PGETVERSIONINPARAMS,*LPGETVERSIONINPARAMS;
#pragma pack(pop)
#define CAP_ATA_ID_CMD 1
#define CAP_ATAPI_ID_CMD 2
#define CAP_SMART_CMD 4
#pragma pack(push,1)
typedef struct _IDEREGS {
  BYTE bFeaturesReg;
  BYTE bSectorCountReg;
  BYTE bSectorNumberReg;
  BYTE bCylLowReg;
  BYTE bCylHighReg;
  BYTE bDriveHeadReg;
  BYTE bCommandReg;
  BYTE bReserved;
} IDEREGS,*PIDEREGS,*LPIDEREGS;
#pragma pack(pop)
#define ATAPI_ID_CMD 0xA1
#define ID_CMD 0xEC
#define SMART_CMD 0xB0
#define SMART_CYL_LOW 0x4F
#define SMART_CYL_HI 0xC2
#pragma pack(push,1)
typedef struct _SENDCMDINPARAMS {
  DWORD cBufferSize;
  IDEREGS irDriveRegs;
  BYTE bDriveNumber;
  BYTE bReserved[3];
  DWORD dwReserved[4];
  BYTE bBuffer[1];
} SENDCMDINPARAMS,*PSENDCMDINPARAMS,*LPSENDCMDINPARAMS;
#pragma pack(pop)
#pragma pack(push,1)
typedef struct _DRIVERSTATUS {
  BYTE bDriverError;
  BYTE bIDEError;
  BYTE bReserved[2];
  DWORD dwReserved[2];
} DRIVERSTATUS,*PDRIVERSTATUS,*LPDRIVERSTATUS;
#pragma pack(pop)
#define SMART_NO_ERROR 0
#define SMART_IDE_ERROR 1
#define SMART_INVALID_FLAG 2
#define SMART_INVALID_COMMAND 3
#define SMART_INVALID_BUFFER 4
#define SMART_INVALID_DRIVE 5
#define SMART_INVALID_IOCTL 6
#define SMART_ERROR_NO_MEM 7
#define SMART_INVALID_REGISTER 8
#define SMART_NOT_SUPPORTED 9
#define SMART_NO_IDE_DEVICE 10
#define SMART_OFFLINE_ROUTINE_OFFLINE 0
#define SMART_SHORT_SELFTEST_OFFLINE 1
#define SMART_EXTENDED_SELFTEST_OFFLINE 2
#define SMART_ABORT_OFFLINE_SELFTEST 127
#define SMART_SHORT_SELFTEST_CAPTIVE 129
#define SMART_EXTENDED_SELFTEST_CAPTIVE 130
#pragma pack(push,1)
typedef struct _SENDCMDOUTPARAMS {
  DWORD cBufferSize;
  DRIVERSTATUS DriverStatus;
  BYTE bBuffer[1];
} SENDCMDOUTPARAMS,*PSENDCMDOUTPARAMS,*LPSENDCMDOUTPARAMS;
#pragma pack(pop)
#define READ_ATTRIBUTE_BUFFER_SIZE 512
#define IDENTIFY_BUFFER_SIZE 512
#define READ_THRESHOLD_BUFFER_SIZE 512
#define SMART_LOG_SECTOR_SIZE 512
#define READ_ATTRIBUTES 0xD0
#define READ_THRESHOLDS 0xD1
#define ENABLE_DISABLE_AUTOSAVE 0xD2
#define SAVE_ATTRIBUTE_VALUES 0xD3
#define EXECUTE_OFFLINE_DIAGS 0xD4
#define SMART_READ_LOG 0xD5
#define SMART_WRITE_LOG 0xd6
#define ENABLE_SMART 0xD8
#define DISABLE_SMART 0xD9
#define RETURN_SMART_STATUS 0xDA
#define ENABLE_DISABLE_AUTO_OFFLINE 0xDB
#define IOCTL_CHANGER_BASE FILE_DEVICE_CHANGER
#define IOCTL_CHANGER_GET_PARAMETERS CTL_CODE(IOCTL_CHANGER_BASE,0x0000,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_CHANGER_GET_STATUS CTL_CODE(IOCTL_CHANGER_BASE,0x0001,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_CHANGER_GET_PRODUCT_DATA CTL_CODE(IOCTL_CHANGER_BASE,0x0002,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_CHANGER_SET_ACCESS CTL_CODE(IOCTL_CHANGER_BASE,0x0004,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_CHANGER_GET_ELEMENT_STATUS CTL_CODE(IOCTL_CHANGER_BASE,0x0005,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS CTL_CODE(IOCTL_CHANGER_BASE,0x0006,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_CHANGER_SET_POSITION CTL_CODE(IOCTL_CHANGER_BASE,0x0007,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_CHANGER_EXCHANGE_MEDIUM CTL_CODE(IOCTL_CHANGER_BASE,0x0008,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_CHANGER_MOVE_MEDIUM CTL_CODE(IOCTL_CHANGER_BASE,0x0009,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_CHANGER_REINITIALIZE_TRANSPORT CTL_CODE(IOCTL_CHANGER_BASE,0x000A,METHOD_BUFFERED,FILE_READ_ACCESS)
#define IOCTL_CHANGER_QUERY_VOLUME_TAGS CTL_CODE(IOCTL_CHANGER_BASE,0x000B,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define MAX_VOLUME_ID_SIZE 36
#define MAX_VOLUME_TEMPLATE_SIZE 40
#define VENDOR_ID_LENGTH 8
#define PRODUCT_ID_LENGTH 16
#define REVISION_LENGTH 4
#define SERIAL_NUMBER_LENGTH 32
typedef enum _ELEMENT_TYPE {
  AllElements,ChangerTransport,ChangerSlot,ChangerIEPort,ChangerDrive,ChangerDoor,ChangerKeypad,ChangerMaxElement
} ELEMENT_TYPE,*PELEMENT_TYPE;
typedef struct _CHANGER_ELEMENT {
  ELEMENT_TYPE ElementType;
  DWORD ElementAddress;
} CHANGER_ELEMENT,*PCHANGER_ELEMENT;
typedef struct _CHANGER_ELEMENT_LIST {
  CHANGER_ELEMENT Element;
  DWORD NumberOfElements;
} CHANGER_ELEMENT_LIST ,*PCHANGER_ELEMENT_LIST;
#define CHANGER_BAR_CODE_SCANNER_INSTALLED 0x00000001
#define CHANGER_INIT_ELEM_STAT_WITH_RANGE 0x00000002
#define CHANGER_CLOSE_IEPORT 0x00000004
#define CHANGER_OPEN_IEPORT 0x00000008
#define CHANGER_STATUS_NON_VOLATILE 0x00000010
#define CHANGER_EXCHANGE_MEDIA 0x00000020
#define CHANGER_CLEANER_SLOT 0x00000040
#define CHANGER_LOCK_UNLOCK 0x00000080
#define CHANGER_CARTRIDGE_MAGAZINE 0x00000100
#define CHANGER_MEDIUM_FLIP 0x00000200
#define CHANGER_POSITION_TO_ELEMENT 0x00000400
#define CHANGER_REPORT_IEPORT_STATE 0x00000800
#define CHANGER_STORAGE_DRIVE 0x00001000
#define CHANGER_STORAGE_IEPORT 0x00002000
#define CHANGER_STORAGE_SLOT 0x00004000
#define CHANGER_STORAGE_TRANSPORT 0x00008000
#define CHANGER_DRIVE_CLEANING_REQUIRED 0x00010000
#define CHANGER_PREDISMOUNT_EJECT_REQUIRED 0x00020000
#define CHANGER_CLEANER_ACCESS_NOT_VALID 0x00040000
#define CHANGER_PREMOUNT_EJECT_REQUIRED 0x00080000
#define CHANGER_VOLUME_IDENTIFICATION 0x00100000
#define CHANGER_VOLUME_SEARCH 0x00200000
#define CHANGER_VOLUME_ASSERT 0x00400000
#define CHANGER_VOLUME_REPLACE 0x00800000
#define CHANGER_VOLUME_UNDEFINE 0x01000000
#define CHANGER_SERIAL_NUMBER_VALID 0x04000000
#define CHANGER_DEVICE_REINITIALIZE_CAPABLE 0x08000000
#define CHANGER_KEYPAD_ENABLE_DISABLE 0x10000000
#define CHANGER_DRIVE_EMPTY_ON_DOOR_ACCESS 0x20000000
#define CHANGER_RESERVED_BIT 0x80000000
#define CHANGER_PREDISMOUNT_ALIGN_TO_SLOT 0x80000001
#define CHANGER_PREDISMOUNT_ALIGN_TO_DRIVE 0x80000002
#define CHANGER_CLEANER_AUTODISMOUNT 0x80000004
#define CHANGER_TRUE_EXCHANGE_CAPABLE 0x80000008
#define CHANGER_SLOTS_USE_TRAYS 0x80000010
#define CHANGER_RTN_MEDIA_TO_ORIGINAL_ADDR 0x80000020
#define CHANGER_CLEANER_OPS_NOT_SUPPORTED 0x80000040
#define CHANGER_IEPORT_USER_CONTROL_OPEN 0x80000080
#define CHANGER_IEPORT_USER_CONTROL_CLOSE 0x80000100
#define CHANGER_MOVE_EXTENDS_IEPORT 0x80000200
#define CHANGER_MOVE_RETRACTS_IEPORT 0x80000400
#define CHANGER_TO_TRANSPORT 0x01
#define CHANGER_TO_SLOT 0x02
#define CHANGER_TO_IEPORT 0x04
#define CHANGER_TO_DRIVE 0x08
#define LOCK_UNLOCK_IEPORT 0x01
#define LOCK_UNLOCK_DOOR 0x02
#define LOCK_UNLOCK_KEYPAD 0x04
typedef struct _GET_CHANGER_PARAMETERS {
  DWORD Size;
  WORD NumberTransportElements;
  WORD NumberStorageElements;
  WORD NumberCleanerSlots;
  WORD NumberIEElements;
  WORD NumberDataTransferElements;
  WORD NumberOfDoors;
  WORD FirstSlotNumber;
  WORD FirstDriveNumber;
  WORD FirstTransportNumber;
  WORD FirstIEPortNumber;
  WORD FirstCleanerSlotAddress;
  WORD MagazineSize;
  DWORD DriveCleanTimeout;
  DWORD Features0;
  DWORD Features1;
  BYTE MoveFromTransport;
  BYTE MoveFromSlot;
  BYTE MoveFromIePort;
  BYTE MoveFromDrive;
  BYTE ExchangeFromTransport;
  BYTE ExchangeFromSlot;
  BYTE ExchangeFromIePort;
  BYTE ExchangeFromDrive;
  BYTE LockUnlockCapabilities;
  BYTE PositionCapabilities;
  BYTE Reserved1[2];
  DWORD Reserved2[2];
} GET_CHANGER_PARAMETERS,*PGET_CHANGER_PARAMETERS;
typedef struct _CHANGER_PRODUCT_DATA {
  BYTE VendorId[8];
  BYTE ProductId[16];
  BYTE Revision[4];
  BYTE SerialNumber[32];
  BYTE DeviceType;
} CHANGER_PRODUCT_DATA,*PCHANGER_PRODUCT_DATA;
#define LOCK_ELEMENT 0
#define UNLOCK_ELEMENT 1
#define EXTEND_IEPORT 2
#define RETRACT_IEPORT 3
typedef struct _CHANGER_SET_ACCESS {
  CHANGER_ELEMENT Element;
  DWORD Control;
} CHANGER_SET_ACCESS,*PCHANGER_SET_ACCESS;
typedef struct _CHANGER_READ_ELEMENT_STATUS {
  CHANGER_ELEMENT_LIST ElementList;
  BOOLEAN VolumeTagInfo;
} CHANGER_READ_ELEMENT_STATUS,*PCHANGER_READ_ELEMENT_STATUS;
typedef struct _CHANGER_ELEMENT_STATUS {
  CHANGER_ELEMENT Element;
  CHANGER_ELEMENT SrcElementAddress;
  DWORD Flags;
  DWORD ExceptionCode;
  BYTE TargetId;
  BYTE Lun;
  WORD Reserved;
  BYTE PrimaryVolumeID[36];
  BYTE AlternateVolumeID[36];
} CHANGER_ELEMENT_STATUS,*PCHANGER_ELEMENT_STATUS;
typedef struct _CHANGER_ELEMENT_STATUS_EX {
  CHANGER_ELEMENT Element;
  CHANGER_ELEMENT SrcElementAddress;
  DWORD Flags;
  DWORD ExceptionCode;
  BYTE TargetId;
  BYTE Lun;
  WORD Reserved;
  BYTE PrimaryVolumeID[36];
  BYTE AlternateVolumeID[36];
  BYTE VendorIdentification[8];
  BYTE ProductIdentification[16];
  BYTE SerialNumber[32];
} CHANGER_ELEMENT_STATUS_EX,*PCHANGER_ELEMENT_STATUS_EX;
#define ELEMENT_STATUS_FULL 0x00000001
#define ELEMENT_STATUS_IMPEXP 0x00000002
#define ELEMENT_STATUS_EXCEPT 0x00000004
#define ELEMENT_STATUS_ACCESS 0x00000008
#define ELEMENT_STATUS_EXENAB 0x00000010
#define ELEMENT_STATUS_INENAB 0x00000020
#define ELEMENT_STATUS_PRODUCT_DATA 0x00000040
#define ELEMENT_STATUS_LUN_VALID 0x00001000
#define ELEMENT_STATUS_ID_VALID 0x00002000
#define ELEMENT_STATUS_NOT_BUS 0x00008000
#define ELEMENT_STATUS_INVERT 0x00400000
#define ELEMENT_STATUS_SVALID 0x00800000
#define ELEMENT_STATUS_PVOLTAG 0x10000000
#define ELEMENT_STATUS_AVOLTAG 0x20000000
#define ERROR_LABEL_UNREADABLE 0x00000001
#define ERROR_LABEL_QUESTIONABLE 0x00000002
#define ERROR_SLOT_NOT_PRESENT 0x00000004
#define ERROR_DRIVE_NOT_INSTALLED 0x00000008
#define ERROR_TRAY_MALFUNCTION 0x00000010
#define ERROR_INIT_STATUS_NEEDED 0x00000011
#define ERROR_UNHANDLED_ERROR 0xFFFFFFFF
typedef struct _CHANGER_INITIALIZE_ELEMENT_STATUS {
  CHANGER_ELEMENT_LIST ElementList;
  BOOLEAN BarCodeScan;
} CHANGER_INITIALIZE_ELEMENT_STATUS,*PCHANGER_INITIALIZE_ELEMENT_STATUS;
typedef struct _CHANGER_SET_POSITION {
  CHANGER_ELEMENT Transport;
  CHANGER_ELEMENT Destination;
  BOOLEAN Flip;
} CHANGER_SET_POSITION,*PCHANGER_SET_POSITION;
typedef struct _CHANGER_EXCHANGE_MEDIUM {
  CHANGER_ELEMENT Transport;
  CHANGER_ELEMENT Source;
  CHANGER_ELEMENT Destination1;
  CHANGER_ELEMENT Destination2;
  BOOLEAN Flip1;
  BOOLEAN Flip2;
} CHANGER_EXCHANGE_MEDIUM,*PCHANGER_EXCHANGE_MEDIUM;
typedef struct _CHANGER_MOVE_MEDIUM {
  CHANGER_ELEMENT Transport;
  CHANGER_ELEMENT Source;
  CHANGER_ELEMENT Destination;
  BOOLEAN Flip;
} CHANGER_MOVE_MEDIUM,*PCHANGER_MOVE_MEDIUM;
typedef struct _CHANGER_SEND_VOLUME_TAG_INFORMATION {
  CHANGER_ELEMENT StartingElement;
  DWORD ActionCode;
  BYTE VolumeIDTemplate[40];
} CHANGER_SEND_VOLUME_TAG_INFORMATION,*PCHANGER_SEND_VOLUME_TAG_INFORMATION;
typedef struct _READ_ELEMENT_ADDRESS_INFO {
  DWORD NumberOfElements;
  CHANGER_ELEMENT_STATUS ElementStatus[1];
} READ_ELEMENT_ADDRESS_INFO,*PREAD_ELEMENT_ADDRESS_INFO;
#define SEARCH_ALL 0x0
#define SEARCH_PRIMARY 0x1
#define SEARCH_ALTERNATE 0x2
#define SEARCH_ALL_NO_SEQ 0x4
#define SEARCH_PRI_NO_SEQ 0x5
#define SEARCH_ALT_NO_SEQ 0x6
#define ASSERT_PRIMARY 0x8
#define ASSERT_ALTERNATE 0x9
#define REPLACE_PRIMARY 0xA
#define REPLACE_ALTERNATE 0xB
#define UNDEFINE_PRIMARY 0xC
#define UNDEFINE_ALTERNATE 0xD
typedef enum _CHANGER_DEVICE_PROBLEM_TYPE {
  DeviceProblemNone,DeviceProblemHardware,DeviceProblemCHMError,DeviceProblemDoorOpen,DeviceProblemCalibrationError,DeviceProblemTargetFailure,
  DeviceProblemCHMMoveError,DeviceProblemCHMZeroError,DeviceProblemCartridgeInsertError,DeviceProblemPositionError,DeviceProblemSensorError,
  DeviceProblemCartridgeEjectError,DeviceProblemGripperError,DeviceProblemDriveError
} CHANGER_DEVICE_PROBLEM_TYPE,*PCHANGER_DEVICE_PROBLEM_TYPE;
#define IOCTL_SERIAL_LSRMST_INSERT CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERENUM_EXPOSE_HARDWARE CTL_CODE(FILE_DEVICE_SERENUM,128,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERENUM_REMOVE_HARDWARE CTL_CODE(FILE_DEVICE_SERENUM,129,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERENUM_PORT_DESC CTL_CODE(FILE_DEVICE_SERENUM,130,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SERENUM_GET_PORT_NAME CTL_CODE(FILE_DEVICE_SERENUM,131,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define SERIAL_LSRMST_ESCAPE ((BYTE)0x00)
#define SERIAL_LSRMST_LSR_DATA ((BYTE)0x01)
#define SERIAL_LSRMST_LSR_NODATA ((BYTE)0x02)
#define SERIAL_LSRMST_MST ((BYTE)0x03)
#define SERIAL_IOC_FCR_FIFO_ENABLE ((DWORD)0x00000001)
#define SERIAL_IOC_FCR_RCVR_RESET ((DWORD)0x00000002)
#define SERIAL_IOC_FCR_XMIT_RESET ((DWORD)0x00000004)
#define SERIAL_IOC_FCR_DMA_MODE ((DWORD)0x00000008)
#define SERIAL_IOC_FCR_RES1 ((DWORD)0x00000010)
#define SERIAL_IOC_FCR_RES2 ((DWORD)0x00000020)
#define SERIAL_IOC_FCR_RCVR_TRIGGER_LSB ((DWORD)0x00000040)
#define SERIAL_IOC_FCR_RCVR_TRIGGER_MSB ((DWORD)0x00000080)
#define SERIAL_IOC_MCR_DTR ((DWORD)0x00000001)
#define SERIAL_IOC_MCR_RTS ((DWORD)0x00000002)
#define SERIAL_IOC_MCR_OUT1 ((DWORD)0x00000004)
#define SERIAL_IOC_MCR_OUT2 ((DWORD)0x00000008)
#define SERIAL_IOC_MCR_LOOP ((DWORD)0x00000010)
#define _FILESYSTEMFSCTL_ 
#define FSCTL_REQUEST_OPLOCK_LEVEL_1 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,0,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_REQUEST_OPLOCK_LEVEL_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,1,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_REQUEST_BATCH_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM,2,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,3,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM,4,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_OPLOCK_BREAK_NOTIFY CTL_CODE(FILE_DEVICE_FILE_SYSTEM,5,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,6,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,7,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,8,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_IS_VOLUME_MOUNTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,10,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_IS_PATHNAME_VALID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,11,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM,12,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_QUERY_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,14,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,15,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,16,METHOD_BUFFERED,FILE_READ_DATA | FILE_WRITE_DATA)
#define FSCTL_SET_BOOTLOADER_ACCESSED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,19,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_MARK_AS_SYSTEM_HIVE FSCTL_SET_BOOTLOADER_ACCESSED
#define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,20,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM,21,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM,22,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_REQUEST_FILTER_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM,23,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,24,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,25,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM,26,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM,27,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,28,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,29,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
#define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM,30,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,32,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_FIND_FILES_BY_SID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,35,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_SET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,38,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
#define FSCTL_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,39,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_DELETE_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,40,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
#define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM,41,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
#define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM,42,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM,43,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
#define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,44,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_SECURITY_ID_CHECK CTL_CODE(FILE_DEVICE_FILE_SYSTEM,45,METHOD_NEITHER,FILE_READ_DATA)
#define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM,46,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,47,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
#define FSCTL_CREATE_OR_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,48,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,49,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
#define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,50,METHOD_BUFFERED,FILE_WRITE_DATA)
#define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM,51,METHOD_NEITHER,FILE_READ_DATA)
#define FSCTL_ENABLE_UPGRADE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,52,METHOD_BUFFERED,FILE_WRITE_DATA)
#define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,53,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,54,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,55,METHOD_NEITHER,FILE_SPECIAL_ACCESS)
#define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,56,METHOD_NEITHER,FILE_SPECIAL_ACCESS)
#define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM,57,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,58,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM,59,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_EXTEND_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,60,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_QUERY_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM,61,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_DELETE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM,62,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_MARK_HANDLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,63,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_SIS_COPYFILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,64,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define FSCTL_SIS_LINK_FILES CTL_CODE(FILE_DEVICE_FILE_SYSTEM,65,METHOD_BUFFERED,FILE_READ_DATA | FILE_WRITE_DATA)
#define FSCTL_HSM_MSG CTL_CODE(FILE_DEVICE_FILE_SYSTEM,66,METHOD_BUFFERED,FILE_READ_DATA | FILE_WRITE_DATA)
#define FSCTL_HSM_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,68,METHOD_NEITHER,FILE_READ_DATA | FILE_WRITE_DATA)
#define FSCTL_RECALL_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,69,METHOD_NEITHER,FILE_ANY_ACCESS)
#define FSCTL_READ_FROM_PLEX CTL_CODE(FILE_DEVICE_FILE_SYSTEM,71,METHOD_OUT_DIRECT,FILE_READ_DATA)
#define FSCTL_FILE_PREFETCH CTL_CODE(FILE_DEVICE_FILE_SYSTEM,72,METHOD_BUFFERED,FILE_SPECIAL_ACCESS)
typedef struct _PATHNAME_BUFFER {
  DWORD PathNameLength;
  WCHAR Name[1];
} PATHNAME_BUFFER,*PPATHNAME_BUFFER;
typedef struct _FSCTL_QUERY_FAT_BPB_BUFFER {
  BYTE First0x24BytesOfBootSector[0x24];
} FSCTL_QUERY_FAT_BPB_BUFFER,*PFSCTL_QUERY_FAT_BPB_BUFFER;
typedef struct {
  LARGE_INTEGER VolumeSerialNumber;
  LARGE_INTEGER NumberSectors;
  LARGE_INTEGER TotalClusters;
  LARGE_INTEGER FreeClusters;
  LARGE_INTEGER TotalReserved;
  DWORD BytesPerSector;
  DWORD BytesPerCluster;
  DWORD BytesPerFileRecordSegment;
  DWORD ClustersPerFileRecordSegment;
  LARGE_INTEGER MftValidDataLength;
  LARGE_INTEGER MftStartLcn;
  LARGE_INTEGER Mft2StartLcn;
  LARGE_INTEGER MftZoneStart;
  LARGE_INTEGER MftZoneEnd;
} NTFS_VOLUME_DATA_BUFFER,*PNTFS_VOLUME_DATA_BUFFER;
typedef struct {
  DWORD ByteCount;
  WORD MajorVersion;
  WORD MinorVersion;
} NTFS_EXTENDED_VOLUME_DATA,*PNTFS_EXTENDED_VOLUME_DATA;
typedef struct {
  LARGE_INTEGER StartingLcn;
} STARTING_LCN_INPUT_BUFFER,*PSTARTING_LCN_INPUT_BUFFER;
typedef struct {
  LARGE_INTEGER StartingLcn;
  LARGE_INTEGER BitmapSize;
  BYTE Buffer[1];
} VOLUME_BITMAP_BUFFER,*PVOLUME_BITMAP_BUFFER;
typedef struct {
  LARGE_INTEGER StartingVcn;
} STARTING_VCN_INPUT_BUFFER,*PSTARTING_VCN_INPUT_BUFFER;
typedef struct RETRIEVAL_POINTERS_BUFFER {
  DWORD ExtentCount;
  LARGE_INTEGER StartingVcn;
  struct {
    LARGE_INTEGER NextVcn;
    LARGE_INTEGER Lcn;
  } Extents[1];
} RETRIEVAL_POINTERS_BUFFER,*PRETRIEVAL_POINTERS_BUFFER;
typedef struct {
  LARGE_INTEGER FileReferenceNumber;
} NTFS_FILE_RECORD_INPUT_BUFFER,*PNTFS_FILE_RECORD_INPUT_BUFFER;
typedef struct {
  LARGE_INTEGER FileReferenceNumber;
  DWORD FileRecordLength;
  BYTE FileRecordBuffer[1];
} NTFS_FILE_RECORD_OUTPUT_BUFFER,*PNTFS_FILE_RECORD_OUTPUT_BUFFER;
typedef struct {
  HANDLE FileHandle;
  LARGE_INTEGER StartingVcn;
  LARGE_INTEGER StartingLcn;
  DWORD ClusterCount;
} MOVE_FILE_DATA,*PMOVE_FILE_DATA;
typedef struct _MOVE_FILE_RECORD_DATA {
  HANDLE FileHandle;
  LARGE_INTEGER SourceFileRecord;
  LARGE_INTEGER TargetFileRecord;
} MOVE_FILE_RECORD_DATA, *PMOVE_FILE_RECORD_DATA;
typedef struct {
  DWORD Restart;
  SID Sid;
} FIND_BY_SID_DATA,*PFIND_BY_SID_DATA;
typedef struct {
  DWORD NextEntryOffset;
  DWORD FileIndex;
  DWORD FileNameLength;
  WCHAR FileName[1];
} FIND_BY_SID_OUTPUT,*PFIND_BY_SID_OUTPUT;
typedef struct {
  DWORDLONG StartFileReferenceNumber;
  USN LowUsn;
  USN HighUsn;
} MFT_ENUM_DATA,*PMFT_ENUM_DATA;
typedef struct {
  DWORDLONG MaximumSize;
  DWORDLONG AllocationDelta;
} CREATE_USN_JOURNAL_DATA,*PCREATE_USN_JOURNAL_DATA;
typedef struct {
  USN StartUsn;
  DWORD ReasonMask;
  DWORD ReturnOnlyOnClose;
  DWORDLONG Timeout;
  DWORDLONG BytesToWaitFor;
  DWORDLONG UsnJournalID;
} READ_USN_JOURNAL_DATA,*PREAD_USN_JOURNAL_DATA;
typedef struct {
  DWORD RecordLength;
  WORD MajorVersion;
  WORD MinorVersion;
  DWORDLONG FileReferenceNumber;
  DWORDLONG ParentFileReferenceNumber;
  USN Usn;
  LARGE_INTEGER TimeStamp;
  DWORD Reason;
  DWORD SourceInfo;
  DWORD SecurityId;
  DWORD FileAttributes;
  WORD FileNameLength;
  WORD FileNameOffset;
  WCHAR FileName[1];
} USN_RECORD,*PUSN_RECORD;
#define USN_PAGE_SIZE (0x1000)
#define USN_REASON_DATA_OVERWRITE (0x00000001)
#define USN_REASON_DATA_EXTEND (0x00000002)
#define USN_REASON_DATA_TRUNCATION (0x00000004)
#define USN_REASON_NAMED_DATA_OVERWRITE (0x00000010)
#define USN_REASON_NAMED_DATA_EXTEND (0x00000020)
#define USN_REASON_NAMED_DATA_TRUNCATION (0x00000040)
#define USN_REASON_FILE_CREATE (0x00000100)
#define USN_REASON_FILE_DELETE (0x00000200)
#define USN_REASON_EA_CHANGE (0x00000400)
#define USN_REASON_SECURITY_CHANGE (0x00000800)
#define USN_REASON_RENAME_OLD_NAME (0x00001000)
#define USN_REASON_RENAME_NEW_NAME (0x00002000)
#define USN_REASON_INDEXABLE_CHANGE (0x00004000)
#define USN_REASON_BASIC_INFO_CHANGE (0x00008000)
#define USN_REASON_HARD_LINK_CHANGE (0x00010000)
#define USN_REASON_COMPRESSION_CHANGE (0x00020000)
#define USN_REASON_ENCRYPTION_CHANGE (0x00040000)
#define USN_REASON_OBJECT_ID_CHANGE (0x00080000)
#define USN_REASON_REPARSE_POINT_CHANGE (0x00100000)
#define USN_REASON_STREAM_CHANGE (0x00200000)
#define USN_REASON_TRANSACTED_CHANGE (0x00400000)
#define USN_REASON_CLOSE (0x80000000)
typedef struct {
  DWORDLONG UsnJournalID;
  USN FirstUsn;
  USN NextUsn;
  USN LowestValidUsn;
  USN MaxUsn;
  DWORDLONG MaximumSize;
  DWORDLONG AllocationDelta;
} USN_JOURNAL_DATA,*PUSN_JOURNAL_DATA;
typedef struct {
  DWORDLONG UsnJournalID;
  DWORD DeleteFlags;
} DELETE_USN_JOURNAL_DATA,*PDELETE_USN_JOURNAL_DATA;
#define USN_DELETE_FLAG_DELETE (0x00000001)
#define USN_DELETE_FLAG_NOTIFY (0x00000002)
#define USN_DELETE_VALID_FLAGS (0x00000003)
typedef struct {
  DWORD UsnSourceInfo;
  HANDLE VolumeHandle;
  DWORD HandleInfo;
} MARK_HANDLE_INFO,*PMARK_HANDLE_INFO;
#define USN_SOURCE_DATA_MANAGEMENT (0x00000001)
#define USN_SOURCE_AUXILIARY_DATA (0x00000002)
#define USN_SOURCE_REPLICATION_MANAGEMENT (0x00000004)
#define MARK_HANDLE_PROTECT_CLUSTERS (0x00000001)
#define MARK_HANDLE_TXF_SYSTEM_LOG (0x00000004)
#define MARK_HANDLE_NOT_TXF_SYSTEM_LOG (0x00000008)
#define MARK_HANDLE_REALTIME (0x00000020)
#define MARK_HANDLE_NOT_REALTIME (0x00000040)
typedef struct {
  ACCESS_MASK DesiredAccess;
  DWORD SecurityIds[1];
} BULK_SECURITY_TEST_DATA,*PBULK_SECURITY_TEST_DATA;
#define VOLUME_IS_DIRTY (0x00000001)
#define VOLUME_UPGRADE_SCHEDULED (0x00000002)
#define VOLUME_SESSION_OPEN (0x00000004)
typedef struct _FILE_PREFETCH {
  DWORD Type;
  DWORD Count;
  DWORDLONG Prefetch[1];
} FILE_PREFETCH,*PFILE_PREFETCH;
typedef struct _FILE_PREFETCH_EX {
  ULONG Type;
  ULONG Count;
  PVOID Context;
  ULONGLONG Prefetch[1];
} FILE_PREFETCH_EX, *PFILE_PREFETCH_EX;
#define FILE_PREFETCH_TYPE_FOR_CREATE 0x1
#define FILE_PREFETCH_TYPE_FOR_DIRENUM 0x2
#define FILE_PREFETCH_TYPE_FOR_CREATE_EX 0x3
#define FILE_PREFETCH_TYPE_FOR_DIRENUM_EX 0x4
#define FILE_PREFETCH_TYPE_MAX 0x4
typedef struct _FILESYSTEM_STATISTICS {
  WORD FileSystemType;
  WORD Version;
  DWORD SizeOfCompleteStructure;
  DWORD UserFileReads;
  DWORD UserFileReadBytes;
  DWORD UserDiskReads;
  DWORD UserFileWrites;
  DWORD UserFileWriteBytes;
  DWORD UserDiskWrites;
  DWORD MetaDataReads;
  DWORD MetaDataReadBytes;
  DWORD MetaDataDiskReads;
  DWORD MetaDataWrites;
  DWORD MetaDataWriteBytes;
  DWORD MetaDataDiskWrites;
} FILESYSTEM_STATISTICS,*PFILESYSTEM_STATISTICS;
#define FILESYSTEM_STATISTICS_TYPE_NTFS 1
#define FILESYSTEM_STATISTICS_TYPE_FAT 2
#define FILESYSTEM_STATISTICS_TYPE_EXFAT 3
typedef struct _FAT_STATISTICS {
  DWORD CreateHits;
  DWORD SuccessfulCreates;
  DWORD FailedCreates;
  DWORD NonCachedReads;
  DWORD NonCachedReadBytes;
  DWORD NonCachedWrites;
  DWORD NonCachedWriteBytes;
  DWORD NonCachedDiskReads;
  DWORD NonCachedDiskWrites;
} FAT_STATISTICS,*PFAT_STATISTICS;
typedef struct _EXFAT_STATISTICS {
  DWORD CreateHits;
  DWORD SuccessfulCreates;
  DWORD FailedCreates;
  DWORD NonCachedReads;
  DWORD NonCachedReadBytes;
  DWORD NonCachedWrites;
  DWORD NonCachedWriteBytes;
  DWORD NonCachedDiskReads;
  DWORD NonCachedDiskWrites;
} EXFAT_STATISTICS, *PEXFAT_STATISTICS;
typedef struct _NTFS_STATISTICS {
  DWORD LogFileFullExceptions;
  DWORD OtherExceptions;
  DWORD MftReads;
  DWORD MftReadBytes;
  DWORD MftWrites;
  DWORD MftWriteBytes;
  struct {
    WORD Write;
    WORD Create;
    WORD SetInfo;
    WORD Flush;
  } MftWritesUserLevel;
  WORD MftWritesFlushForLogFileFull;
  WORD MftWritesLazyWriter;
  WORD MftWritesUserRequest;
  DWORD Mft2Writes;
  DWORD Mft2WriteBytes;
  struct {
    WORD Write;
    WORD Create;
    WORD SetInfo;
    WORD Flush;
  } Mft2WritesUserLevel;
  WORD Mft2WritesFlushForLogFileFull;
  WORD Mft2WritesLazyWriter;
  WORD Mft2WritesUserRequest;
  DWORD RootIndexReads;
  DWORD RootIndexReadBytes;
  DWORD RootIndexWrites;
  DWORD RootIndexWriteBytes;
  DWORD BitmapReads;
  DWORD BitmapReadBytes;
  DWORD BitmapWrites;
  DWORD BitmapWriteBytes;
  WORD BitmapWritesFlushForLogFileFull;
  WORD BitmapWritesLazyWriter;
  WORD BitmapWritesUserRequest;
  struct {
    WORD Write;
    WORD Create;
    WORD SetInfo;
  } BitmapWritesUserLevel;
  DWORD MftBitmapReads;
  DWORD MftBitmapReadBytes;
  DWORD MftBitmapWrites;
  DWORD MftBitmapWriteBytes;
  WORD MftBitmapWritesFlushForLogFileFull;
  WORD MftBitmapWritesLazyWriter;
  WORD MftBitmapWritesUserRequest;
  struct {
    WORD Write;
    WORD Create;
    WORD SetInfo;
    WORD Flush;
  } MftBitmapWritesUserLevel;
  DWORD UserIndexReads;
  DWORD UserIndexReadBytes;
  DWORD UserIndexWrites;
  DWORD UserIndexWriteBytes;
  DWORD LogFileReads;
  DWORD LogFileReadBytes;
  DWORD LogFileWrites;
  DWORD LogFileWriteBytes;
  struct {
    DWORD Calls;
    DWORD Clusters;
    DWORD Hints;
    DWORD RunsReturned;
    DWORD HintsHonored;
    DWORD HintsClusters;
    DWORD Cache;
    DWORD CacheClusters;
    DWORD CacheMiss;
    DWORD CacheMissClusters;
  } Allocate;
} NTFS_STATISTICS,*PNTFS_STATISTICS;
typedef struct _FILE_OBJECTID_BUFFER {
  BYTE ObjectId[16];
  __extension__ union {
    __extension__ struct {
      BYTE BirthVolumeId[16];
      BYTE BirthObjectId[16];
      BYTE DomainId[16];
    } ;
    BYTE ExtendedInfo[48];
  } ;
} FILE_OBJECTID_BUFFER,*PFILE_OBJECTID_BUFFER;
typedef struct _FILE_SET_SPARSE_BUFFER {
  BOOLEAN SetSparse;
} FILE_SET_SPARSE_BUFFER,*PFILE_SET_SPARSE_BUFFER;
typedef struct _FILE_ZERO_DATA_INFORMATION {
  LARGE_INTEGER FileOffset;
  LARGE_INTEGER BeyondFinalZero;
} FILE_ZERO_DATA_INFORMATION,*PFILE_ZERO_DATA_INFORMATION;
typedef struct _FILE_ALLOCATED_RANGE_BUFFER {
  LARGE_INTEGER FileOffset;
  LARGE_INTEGER Length;
} FILE_ALLOCATED_RANGE_BUFFER,*PFILE_ALLOCATED_RANGE_BUFFER;
typedef struct _ENCRYPTION_BUFFER {
  DWORD EncryptionOperation;
  BYTE Private[1];
} ENCRYPTION_BUFFER,*PENCRYPTION_BUFFER;
#define FILE_SET_ENCRYPTION 0x00000001
#define FILE_CLEAR_ENCRYPTION 0x00000002
#define STREAM_SET_ENCRYPTION 0x00000003
#define STREAM_CLEAR_ENCRYPTION 0x00000004
#define MAXIMUM_ENCRYPTION_VALUE 0x00000004
typedef struct _DECRYPTION_STATUS_BUFFER {
  BOOLEAN NoEncryptedStreams;
} DECRYPTION_STATUS_BUFFER,*PDECRYPTION_STATUS_BUFFER;
#define ENCRYPTION_FORMAT_DEFAULT (0x01)
#define COMPRESSION_FORMAT_SPARSE (0x4000)
typedef struct _REQUEST_RAW_ENCRYPTED_DATA {
  LONGLONG FileOffset;
  DWORD Length;
} REQUEST_RAW_ENCRYPTED_DATA,*PREQUEST_RAW_ENCRYPTED_DATA;
typedef struct _ENCRYPTED_DATA_INFO {
  DWORDLONG StartingFileOffset;
  DWORD OutputBufferOffset;
  DWORD BytesWithinFileSize;
  DWORD BytesWithinValidDataLength;
  WORD CompressionFormat;
  BYTE DataUnitShift;
  BYTE ChunkShift;
  BYTE ClusterShift;
  BYTE EncryptionFormat;
  WORD NumberOfDataBlocks;
  DWORD DataBlockSize[1];
} ENCRYPTED_DATA_INFO;
typedef ENCRYPTED_DATA_INFO *PENCRYPTED_DATA_INFO;
typedef struct _PLEX_READ_DATA_REQUEST {
  LARGE_INTEGER ByteOffset;
  DWORD ByteLength;
  DWORD PlexNumber;
} PLEX_READ_DATA_REQUEST,*PPLEX_READ_DATA_REQUEST;
typedef struct _SI_COPYFILE {
  DWORD SourceFileNameLength;
  DWORD DestinationFileNameLength;
  DWORD Flags;
  WCHAR FileNameBuffer[1];
} SI_COPYFILE,*PSI_COPYFILE;
#define COPYFILE_SIS_LINK 0x0001
#define COPYFILE_SIS_REPLACE 0x0002
#define COPYFILE_SIS_FLAGS 0x0003
typedef struct _STORAGE_DESCRIPTOR_HEADER {
  DWORD Version;
  DWORD Size;
} STORAGE_DESCRIPTOR_HEADER, *PSTORAGE_DESCRIPTOR_HEADER;
typedef enum _STORAGE_PROPERTY_ID {
  StorageDeviceProperty = 0,
  StorageAdapterProperty,
  StorageDeviceIdProperty,
  StorageDeviceUniqueIdProperty,
  StorageDeviceWriteCacheProperty,
  StorageMiniportProperty,
  StorageAccessAlignmentProperty,
  StorageDeviceSeekPenaltyProperty,
  StorageDeviceTrimProperty,
  StorageDeviceWriteAggregationProperty,
  StorageDeviceDeviceTelemetryProperty,
  StorageDeviceLBProvisioningProperty,
  StorageDevicePowerProperty,
  StorageDeviceCopyOffloadProperty,
  StorageDeviceResiliencyProperty,
  StorageDeviceMediumProductType,
  StorageAdapterRpmbProperty,
  StorageAdapterCryptoProperty,
  StorageDeviceIoCapabilityProperty = 48,
  StorageAdapterProtocolSpecificProperty,
  StorageDeviceProtocolSpecificProperty,
  StorageAdapterTemperatureProperty,
  StorageDeviceTemperatureProperty,
  StorageAdapterPhysicalTopologyProperty,
  StorageDevicePhysicalTopologyProperty,
  StorageDeviceAttributesProperty,
  StorageDeviceManagementStatus,
  StorageAdapterSerialNumberProperty,
  StorageDeviceLocationProperty,
  StorageDeviceNumaProperty,
  StorageDeviceZonedDeviceProperty,
  StorageDeviceUnsafeShutdownCount,
  StorageDeviceEnduranceProperty,
  StorageDeviceLedStateProperty,
  StorageDeviceSelfEncryptionProperty = 64,
  StorageFruIdProperty
} STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID;
typedef enum _STORAGE_QUERY_TYPE {
  PropertyStandardQuery = 0,
  PropertyExistsQuery = 1,
  PropertyMaskQuery = 2,
  PropertyQueryMaxDefined = 3
} STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE;
typedef enum _STORAGE_SET_TYPE {
  PropertyStandardSet = 0,
  PropertyExistsSet,
  PropertySetMaxDefined
} STORAGE_SET_TYPE, *PSTORAGE_SET_TYPE;
typedef struct _STORAGE_PROPERTY_QUERY {
  STORAGE_PROPERTY_ID PropertyId;
  STORAGE_QUERY_TYPE QueryType;
  BYTE AdditionalParameters[1];
} STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY;
typedef struct _STORAGE_PROPERTY_SET {
  STORAGE_PROPERTY_ID PropertyId;
  STORAGE_SET_TYPE SetType;
  BYTE AdditionalParameters[1];
} STORAGE_PROPERTY_SET, *PSTORAGE_PROPERTY_SET;
typedef struct _STORAGE_DEVICE_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  BYTE DeviceType;
  BYTE DeviceTypeModifier;
  BOOLEAN RemovableMedia;
  BOOLEAN CommandQueueing;
  DWORD VendorIdOffset;
  DWORD ProductIdOffset;
  DWORD ProductRevisionOffset;
  DWORD SerialNumberOffset;
  STORAGE_BUS_TYPE BusType;
  DWORD RawPropertiesLength;
  BYTE RawDeviceProperties[1];
} STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
typedef struct _STORAGE_ADAPTER_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  DWORD MaximumTransferLength;
  DWORD MaximumPhysicalPages;
  DWORD AlignmentMask;
  BOOLEAN AdapterUsesPio;
  BOOLEAN AdapterScansDown;
  BOOLEAN CommandQueueing;
  BOOLEAN AcceleratedTransfer;
  BYTE BusType;
  WORD BusMajorVersion;
  WORD BusMinorVersion;
} STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR;
typedef struct _STORAGE_DEVICE_ID_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  DWORD NumberOfIdentifiers;
  BYTE Identifiers[1];
} STORAGE_DEVICE_ID_DESCRIPTOR, *PSTORAGE_DEVICE_ID_DESCRIPTOR;
typedef struct _VOLUME_GET_GPT_ATTRIBUTES_INFORMATION {
  ULONGLONG GptAttributes;
} VOLUME_GET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_GET_GPT_ATTRIBUTES_INFORMATION;
#define FSCTL_MAKE_MEDIA_COMPATIBLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 76, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_SET_DEFECT_MANAGEMENT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 77, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_QUERY_SPARING_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 78, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_QUERY_ON_DISK_VOLUME_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 79, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_SET_VOLUME_COMPRESSION_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,80, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
#define FSCTL_TXFS_MODIFY_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM,81, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_TXFS_QUERY_RM_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,82, METHOD_BUFFERED, FILE_READ_DATA)
#define FSCTL_TXFS_ROLLFORWARD_REDO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,84, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_TXFS_ROLLFORWARD_UNDO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,85, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_TXFS_START_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM,86, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_TXFS_SHUTDOWN_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 87, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_TXFS_READ_BACKUP_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,88, METHOD_BUFFERED, FILE_READ_DATA)
#define FSCTL_TXFS_WRITE_BACKUP_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,89, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_TXFS_CREATE_SECONDARY_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM,90,METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_TXFS_GET_METADATA_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,91, METHOD_BUFFERED, FILE_READ_DATA)
#define FSCTL_TXFS_GET_TRANSACTED_VERSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,92, METHOD_BUFFERED, FILE_READ_DATA)
#define FSCTL_TXFS_SAVEPOINT_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,94, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_TXFS_CREATE_MINIVERSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 95, METHOD_BUFFERED, FILE_WRITE_DATA)
#define FSCTL_TXFS_TRANSACTION_ACTIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,99, METHOD_BUFFERED, FILE_READ_DATA)
#define FSCTL_SET_ZERO_ON_DEALLOCATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,101, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
#define FSCTL_SET_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 102, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_GET_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 103, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_WAIT_FOR_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 104, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_INITIATE_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 106, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_CSC_INTERNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 107, METHOD_NEITHER, FILE_ANY_ACCESS)
#define FSCTL_SHRINK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 108, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
#define FSCTL_SET_SHORT_NAME_BEHAVIOR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 109, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_DFSR_SET_GHOST_HANDLE_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 110, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_TXFS_LIST_TRANSACTION_LOCKED_FILES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_READ_DATA)
#define FSCTL_TXFS_LIST_TRANSACTIONS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 121, METHOD_BUFFERED, FILE_READ_DATA)
#define FSCTL_QUERY_PAGEFILE_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 122, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_RESET_VOLUME_ALLOCATION_HINTS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 123, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_TXFS_READ_BACKUP_INFORMATION2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 126, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define SET_REPAIR_ENABLED 0x00000001
#define SET_REPAIR_VOLUME_BITMAP_SCAN 0x00000002
#define SET_REPAIR_DELETE_CROSSLINK 0x00000004
#define SET_REPAIR_WARN_ABOUT_DATA_LOSS 0x00000008
#define SET_REPAIR_DISABLED_AND_BUGCHECK_ON_CORRUPT 0x00000010
typedef struct _FILE_MAKE_COMPATIBLE_BUFFER {
  BOOLEAN CloseDisc;
} FILE_MAKE_COMPATIBLE_BUFFER, *PFILE_MAKE_COMPATIBLE_BUFFER;
typedef struct _FILE_SET_DEFECT_MGMT_BUFFER {
  BOOLEAN Disable;
} FILE_SET_DEFECT_MGMT_BUFFER, *PFILE_SET_DEFECT_MGMT_BUFFER;
typedef struct _FILE_QUERY_SPARING_BUFFER {
  ULONG SparingUnitBytes;
  BOOLEAN SoftwareSparing;
  ULONG TotalSpareBlocks;
  ULONG FreeSpareBlocks;
} FILE_QUERY_SPARING_BUFFER, *PFILE_QUERY_SPARING_BUFFER;
typedef struct _FILE_QUERY_ON_DISK_VOL_INFO_BUFFER {
  LARGE_INTEGER DirectoryCount;
  LARGE_INTEGER FileCount;
  WORD FsFormatMajVersion;
  WORD FsFormatMinVersion;
  WCHAR FsFormatName[12];
  LARGE_INTEGER FormatTime;
  LARGE_INTEGER LastUpdateTime;
  WCHAR CopyrightInfo[34];
  WCHAR AbstractInfo[34];
  WCHAR FormattingImplementationInfo[34];
  WCHAR LastModifyingImplementationInfo[34];
} FILE_QUERY_ON_DISK_VOL_INFO_BUFFER, *PFILE_QUERY_ON_DISK_VOL_INFO_BUFFER;
#define SET_REPAIR_ENABLED 0x00000001
#define SET_REPAIR_VOLUME_BITMAP_SCAN 0x00000002
#define SET_REPAIR_DELETE_CROSSLINK 0x00000004
#define SET_REPAIR_WARN_ABOUT_DATA_LOSS 0x00000008
#define SET_REPAIR_DISABLED_AND_BUGCHECK_ON_CORRUPT 0x00000010
#define SET_REPAIR_VALID_MASK 0x0000001F
typedef enum _SHRINK_VOLUME_REQUEST_TYPES {
  ShrinkPrepare = 1,
  ShrinkCommit,
  ShrinkAbort
} SHRINK_VOLUME_REQUEST_TYPES;
typedef struct _SHRINK_VOLUME_INFORMATION {
  SHRINK_VOLUME_REQUEST_TYPES ShrinkRequestType;
  DWORDLONG Flags;
  LONGLONG NewNumberOfSectors;
} SHRINK_VOLUME_INFORMATION, *PSHRINK_VOLUME_INFORMATION;
#define TXFS_RM_FLAG_LOGGING_MODE 0x00000001
#define TXFS_RM_FLAG_RENAME_RM 0x00000002
#define TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MAX 0x00000004
#define TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MIN 0x00000008
#define TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS 0x00000010
#define TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT 0x00000020
#define TXFS_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE 0x00000040
#define TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX 0x00000080
#define TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN 0x00000100
#define TXFS_RM_FLAG_GROW_LOG 0x00000400
#define TXFS_RM_FLAG_SHRINK_LOG 0x00000800
#define TXFS_RM_FLAG_ENFORCE_MINIMUM_SIZE 0x00001000
#define TXFS_RM_FLAG_PRESERVE_CHANGES 0x00002000
#define TXFS_RM_FLAG_RESET_RM_AT_NEXT_START 0x00004000
#define TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START 0x00008000
#define TXFS_RM_FLAG_PREFER_CONSISTENCY 0x00010000
#define TXFS_RM_FLAG_PREFER_AVAILABILITY 0x00020000
#define TXFS_LOGGING_MODE_SIMPLE 1
#define TXFS_LOGGING_MODE_FULL 2
#define TXFS_TRANSACTION_STATE_NONE 0
#define TXFS_TRANSACTION_STATE_ACTIVE 1
#define TXFS_TRANSACTION_STATE_PREPARED 2
#define TXFS_TRANSACTION_STATE_NOTACTIVE 3
#define TXFS_MODIFY_RM_VALID_FLAGS (TXFS_RM_FLAG_LOGGING_MODE | TXFS_RM_FLAG_RENAME_RM | TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MAX | TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MIN | TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS | TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT | TXFS_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE | TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX | TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN | TXFS_RM_FLAG_SHRINK_LOG | TXFS_RM_FLAG_GROW_LOG | TXFS_RM_FLAG_ENFORCE_MINIMUM_SIZE | TXFS_RM_FLAG_PRESERVE_CHANGES | TXFS_RM_FLAG_RESET_RM_AT_NEXT_START | TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START | TXFS_RM_FLAG_PREFER_CONSISTENCY | TXFS_RM_FLAG_PREFER_AVAILABILITY)
typedef struct _TXFS_MODIFY_RM {
  ULONG Flags;
  ULONG LogContainerCountMax;
  ULONG LogContainerCountMin;
  ULONG LogContainerCount;
  ULONG LogGrowthIncrement;
  ULONG LogAutoShrinkPercentage;
  ULONGLONG Reserved;
  USHORT LoggingMode;
} TXFS_MODIFY_RM, *PTXFS_MODIFY_RM;
#define TXFS_RM_STATE_NOT_STARTED 0
#define TXFS_RM_STATE_STARTING 1
#define TXFS_RM_STATE_ACTIVE 2
#define TXFS_RM_STATE_SHUTTING_DOWN 3
#define TXFS_QUERY_RM_INFORMATION_VALID_FLAGS (TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS | TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT | TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX | TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN | TXFS_RM_FLAG_RESET_RM_AT_NEXT_START | TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START | TXFS_RM_FLAG_PREFER_CONSISTENCY | TXFS_RM_FLAG_PREFER_AVAILABILITY)
typedef struct _TXFS_QUERY_RM_INFORMATION {
  ULONG BytesRequired;
  ULONGLONG TailLsn;
  ULONGLONG CurrentLsn;
  ULONGLONG ArchiveTailLsn;
  ULONGLONG LogContainerSize;
  LARGE_INTEGER HighestVirtualClock;
  ULONG LogContainerCount;
  ULONG LogContainerCountMax;
  ULONG LogContainerCountMin;
  ULONG LogGrowthIncrement;
  ULONG LogAutoShrinkPercentage;
  ULONG Flags;
  USHORT LoggingMode;
  USHORT Reserved;
  ULONG RmState;
  ULONGLONG LogCapacity;
  ULONGLONG LogFree;
  ULONGLONG TopsSize;
  ULONGLONG TopsUsed;
  ULONGLONG TransactionCount;
  ULONGLONG OnePCCount;
  ULONGLONG TwoPCCount;
  ULONGLONG NumberLogFileFull;
  ULONGLONG OldestTransactionAge;
  GUID RMName;
  ULONG TmLogPathOffset;
} TXFS_QUERY_RM_INFORMATION, *PTXFS_QUERY_RM_INFORMATION;
#define TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_REDO_LSN 0x01
#define TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_VIRTUAL_CLOCK 0x02
#define TXFS_ROLLFORWARD_REDO_VALID_FLAGS (TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_REDO_LSN | TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_VIRTUAL_CLOCK)
typedef struct _TXFS_ROLLFORWARD_REDO_INFORMATION {
  LARGE_INTEGER LastVirtualClock;
  ULONGLONG LastRedoLsn;
  ULONGLONG HighestRecoveryLsn;
  ULONG Flags;
} TXFS_ROLLFORWARD_REDO_INFORMATION, *PTXFS_ROLLFORWARD_REDO_INFORMATION;
#define TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MAX 0x00000001
#define TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MIN 0x00000002
#define TXFS_START_RM_FLAG_LOG_CONTAINER_SIZE 0x00000004
#define TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS 0x00000008
#define TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT 0x00000010
#define TXFS_START_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE 0x00000020
#define TXFS_START_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX 0x00000040
#define TXFS_START_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN 0x00000080
#define TXFS_START_RM_FLAG_RECOVER_BEST_EFFORT 0x00000200
#define TXFS_START_RM_FLAG_LOGGING_MODE 0x00000400
#define TXFS_START_RM_FLAG_PRESERVE_CHANGES 0x00000800
#define TXFS_START_RM_FLAG_PREFER_CONSISTENCY 0x00001000
#define TXFS_START_RM_FLAG_PREFER_AVAILABILITY 0x00002000
#define TXFS_START_RM_VALID_FLAGS (TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MAX | TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MIN | TXFS_START_RM_FLAG_LOG_CONTAINER_SIZE | TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS | TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT | TXFS_START_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE | TXFS_START_RM_FLAG_RECOVER_BEST_EFFORT | TXFS_START_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX | TXFS_START_RM_FLAG_LOGGING_MODE | TXFS_START_RM_FLAG_PRESERVE_CHANGES | TXFS_START_RM_FLAG_PREFER_CONSISTENCY | TXFS_START_RM_FLAG_PREFER_AVAILABILITY)
typedef struct _TXFS_START_RM_INFORMATION {
  ULONG Flags;
  ULONGLONG LogContainerSize;
  ULONG LogContainerCountMin;
  ULONG LogContainerCountMax;
  ULONG LogGrowthIncrement;
  ULONG LogAutoShrinkPercentage;
  ULONG TmLogPathOffset;
  USHORT TmLogPathLength;
  USHORT LoggingMode;
  USHORT LogPathLength;
  USHORT Reserved;
  WCHAR LogPath[1];
} TXFS_START_RM_INFORMATION, *PTXFS_START_RM_INFORMATION;
typedef struct _TXFS_GET_METADATA_INFO_OUT {
  struct {
    LONGLONG LowPart;
    LONGLONG HighPart;
  } TxfFileId;
  GUID LockingTransaction;
  ULONGLONG LastLsn;
  ULONG TransactionState;
} TXFS_GET_METADATA_INFO_OUT, *PTXFS_GET_METADATA_INFO_OUT;
#define TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY_FLAG_CREATED 0x00000001
#define TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY_FLAG_DELETED 0x00000002
typedef struct _TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY {
  ULONGLONG Offset;
  ULONG NameFlags;
  LONGLONG FileId;
  ULONG Reserved1;
  ULONG Reserved2;
  LONGLONG Reserved3;
  WCHAR FileName[1];
} TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY, *PTXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY;
typedef struct _TXFS_LIST_TRANSACTION_LOCKED_FILES {
  GUID KtmTransaction;
  ULONGLONG NumberOfFiles;
  ULONGLONG BufferSizeRequired;
  ULONGLONG Offset;
} TXFS_LIST_TRANSACTION_LOCKED_FILES, *PTXFS_LIST_TRANSACTION_LOCKED_FILES;
typedef struct _TXFS_LIST_TRANSACTIONS_ENTRY {
  GUID TransactionId;
  ULONG TransactionState;
  ULONG Reserved1;
  ULONG Reserved2;
  LONGLONG Reserved3;
} TXFS_LIST_TRANSACTIONS_ENTRY, *PTXFS_LIST_TRANSACTIONS_ENTRY;
typedef struct _TXFS_LIST_TRANSACTIONS {
  ULONGLONG NumberOfTransactions;
  ULONGLONG BufferSizeRequired;
} TXFS_LIST_TRANSACTIONS, *PTXFS_LIST_TRANSACTIONS;
typedef struct _TXFS_READ_BACKUP_INFORMATION_OUT {
  __extension__ union {
    ULONG BufferLength;
    UCHAR Buffer;
  } ;
} TXFS_READ_BACKUP_INFORMATION_OUT, *PTXFS_READ_BACKUP_INFORMATION_OUT;
typedef struct _TXFS_WRITE_BACKUP_INFORMATION {
  UCHAR Buffer;
} TXFS_WRITE_BACKUP_INFORMATION, *PTXFS_WRITE_BACKUP_INFORMATION;
#define TXFS_TRANSACTED_VERSION_NONTRANSACTED 0xFFFFFFFE
#define TXFS_TRANSACTED_VERSION_UNCOMMITTED 0xFFFFFFFF
typedef struct _TXFS_GET_TRANSACTED_VERSION {
  ULONG ThisBaseVersion;
  ULONG LatestVersion;
  USHORT ThisMiniVersion;
  USHORT FirstMiniVersion;
  USHORT LatestMiniVersion;
} TXFS_GET_TRANSACTED_VERSION, *PTXFS_GET_TRANSACTED_VERSION;
#define TXFS_SAVEPOINT_SET 1
#define TXFS_SAVEPOINT_ROLLBACK 2
#define TXFS_SAVEPOINT_CLEAR 4
#define TXFS_SAVEPOINT_CLEAR_ALL 16
typedef struct _TXFS_SAVEPOINT_INFORMATION {
  HANDLE KtmTransaction;
  ULONG ActionCode;
  ULONG SavepointId;
} TXFS_SAVEPOINT_INFORMATION, *PTXFS_SAVEPOINT_INFORMATION;
typedef struct _TXFS_CREATE_MINIVERSION_INFO {
  USHORT StructureVersion;
  USHORT StructureLength;
  ULONG BaseVersion;
  USHORT MiniVersion;
} TXFS_CREATE_MINIVERSION_INFO, *PTXFS_CREATE_MINIVERSION_INFO;
typedef struct _TXFS_TRANSACTION_ACTIVE_INFO {
  BOOLEAN TransactionsActiveAtSnapshot;
} TXFS_TRANSACTION_ACTIVE_INFO, *PTXFS_TRANSACTION_ACTIVE_INFO;
typedef enum _WRITE_CACHE_TYPE {
  WriteCacheTypeUnknown = 0,
  WriteCacheTypeNone = 1,
  WriteCacheTypeWriteBack = 2,
  WriteCacheTypeWriteThrough = 3
} WRITE_CACHE_TYPE;
typedef enum _WRITE_CACHE_ENABLE {
  WriteCacheEnableUnknown = 0,
  WriteCacheDisabled = 1,
  WriteCacheEnabled = 2
} WRITE_CACHE_ENABLE;
typedef enum _WRITE_CACHE_CHANGE {
  WriteCacheChangeUnknown = 0,
  WriteCacheNotChangeable = 1,
  WriteCacheChangeable = 2
} WRITE_CACHE_CHANGE;
typedef enum _WRITE_THROUGH {
  WriteThroughUnknown = 0,
  WriteThroughNotSupported = 1,
  WriteThroughSupported = 2
} WRITE_THROUGH;
typedef struct _STORAGE_WRITE_CACHE_PROPERTY {
  DWORD Version;
  DWORD Size;
  WRITE_CACHE_TYPE WriteCacheType;
  WRITE_CACHE_ENABLE WriteCacheEnabled;
  WRITE_CACHE_CHANGE WriteCacheChangeable;
  WRITE_THROUGH WriteThroughSupported;
  BOOLEAN FlushCacheSupported;
  BOOLEAN UserDefinedPowerProtection;
  BOOLEAN NVCacheEnabled;
} STORAGE_WRITE_CACHE_PROPERTY, *PSTORAGE_WRITE_CACHE_PROPERTY;
typedef enum _STORAGE_PORT_CODE_SET {
  StoragePortCodeSetReserved = 0,
  StoragePortCodeSetStorport = 1,
  StoragePortCodeSetSCSIport = 2,
  StoragePortCodeSetSpaceport = 3,
  StoragePortCodeSetATAport = 4,
  StoragePortCodeSetUSBport = 5,
  StoragePortCodeSetSBP2port = 6,
  StoragePortCodeSetSDport = 7
} STORAGE_PORT_CODE_SET, *PSTORAGE_PORT_CODE_SET;
typedef struct _STORAGE_MINIPORT_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  STORAGE_PORT_CODE_SET Portdriver;
  BOOLEAN LUNResetSupported;
  BOOLEAN TargetResetSupported;
} STORAGE_MINIPORT_DESCRIPTOR, *PSTORAGE_MINIPORT_DESCRIPTOR;
typedef enum _STORAGE_IDENTIFIER_CODE_SET {
  StorageIdCodeSetReserved = 0,
  StorageIdCodeSetBinary = 1,
  StorageIdCodeSetAscii = 2,
  StorageIdCodeSetUtf8 = 3
} STORAGE_IDENTIFIER_CODE_SET, *PSTORAGE_IDENTIFIER_CODE_SET;
typedef enum _STORAGE_IDENTIFIER_TYPE {
  StorageIdTypeVendorSpecific = 0,
  StorageIdTypeVendorId = 1,
  StorageIdTypeEUI64 = 2,
  StorageIdTypeFCPHName = 3,
  StorageIdTypePortRelative = 4,
  StorageIdTypeTargetPortGroup = 5,
  StorageIdTypeLogicalUnitGroup = 6,
  StorageIdTypeMD5LogicalUnitIdentifier = 7,
  StorageIdTypeScsiNameString = 8
} STORAGE_IDENTIFIER_TYPE, *PSTORAGE_IDENTIFIER_TYPE;
#define StorageIdTypeNAA StorageIdTypeFCPHName
typedef enum _STORAGE_ID_NAA_FORMAT {
  StorageIdNAAFormatIEEEExtended = 2,
  StorageIdNAAFormatIEEERegistered = 3,
  StorageIdNAAFormatIEEEERegisteredExtended = 5
} STORAGE_ID_NAA_FORMAT, *PSTORAGE_ID_NAA_FORMAT;
typedef enum _STORAGE_ASSOCIATION_TYPE {
  StorageIdAssocDevice = 0,
  StorageIdAssocPort = 1,
  StorageIdAssocTarget = 2
} STORAGE_ASSOCIATION_TYPE, *PSTORAGE_ASSOCIATION_TYPE;
typedef struct _STORAGE_IDENTIFIER {
  STORAGE_IDENTIFIER_CODE_SET CodeSet;
  STORAGE_IDENTIFIER_TYPE Type;
  USHORT IdentifierSize;
  USHORT NextOffset;
  STORAGE_ASSOCIATION_TYPE Association;
  UCHAR Identifier[1];
} STORAGE_IDENTIFIER, *PSTORAGE_IDENTIFIER;
typedef struct _STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  DWORD BytesPerCacheLine;
  DWORD BytesOffsetForCacheAlignment;
  DWORD BytesPerLogicalSector;
  DWORD BytesPerPhysicalSector;
  DWORD BytesOffsetForSectorAlignment;
} STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR, *PSTORAGE_ACCESS_ALIGNMENT_DESCRIPTOR;
typedef struct _STORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  DWORD MediumProductType;
} STORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR, *PSTORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR;
typedef struct _DEVICE_SEEK_PENALTY_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  BOOLEAN IncursSeekPenalty;
} DEVICE_SEEK_PENALTY_DESCRIPTOR, *PDEVICE_SEEK_PENALTY_DESCRIPTOR;
typedef struct _DEVICE_WRITE_AGGREGATION_DESCRIPTOR {
  ULONG Version;
  ULONG Size;
  BOOLEAN BenefitsFromWriteAggregation;
} DEVICE_WRITE_AGGREGATION_DESCRIPTOR, *PDEVICE_WRITE_AGGREGATION_DESCRIPTOR;
typedef struct _DEVICE_TRIM_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  BOOLEAN TrimEnabled;
} DEVICE_TRIM_DESCRIPTOR, *PDEVICE_TRIM_DESCRIPTOR;
typedef struct _DEVICE_LB_PROVISIONING_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  BYTE ThinProvisioningEnabled : 1;
  BYTE ThinProvisioningReadZeros : 1;
  BYTE AnchorSupported : 3;
  BYTE UnmapGranularityAlignmentValid : 1;
  BYTE GetFreeSpaceSupported : 1;
  BYTE MapSupported : 1;
  BYTE Reserved1[7];
  DWORDLONG OptimalUnmapGranularity;
  DWORDLONG UnmapGranularityAlignment;
} DEVICE_LB_PROVISIONING_DESCRIPTOR, *PDEVICE_LB_PROVISIONING_DESCRIPTOR;
#define DEVICE_LB_PROVISIONING_DESCRIPTOR_V1_SIZE RTL_SIZEOF_THROUGH_FIELD(DEVICE_LB_PROVISIONING_DESCRIPTOR, UnmapGranularityAlignment)
typedef struct _STORAGE_LB_PROVISIONING_MAP_RESOURCES {
  DWORD Size;
  DWORD Version;
  BYTE AvailableMappingResourcesValid : 1;
  BYTE UsedMappingResourcesValid : 1;
  BYTE Reserved0 : 6;
  BYTE Reserved1[3];
  BYTE AvailableMappingResourcesScope : 2;
  BYTE UsedMappingResourcesScope : 2;
  BYTE Reserved2 : 4;
  BYTE Reserved3[3];
  DWORDLONG AvailableMappingResources;
  DWORDLONG UsedMappingResources;
} STORAGE_LB_PROVISIONING_MAP_RESOURCES, *PSTORAGE_LB_PROVISIONING_MAP_RESOURCES;
typedef struct _DEVICE_POWER_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  BOOLEAN DeviceAttentionSupported;
  BOOLEAN AsynchronousNotificationSupported;
  BOOLEAN IdlePowerManagementEnabled;
  BOOLEAN D3ColdEnabled;
  BOOLEAN D3ColdSupported;
  BOOLEAN NoVerifyDuringIdlePower;
  BYTE Reserved[2];
  DWORD IdleTimeoutInMS;
} DEVICE_POWER_DESCRIPTOR, *PDEVICE_POWER_DESCRIPTOR;
typedef struct _DEVICE_COPY_OFFLOAD_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  DWORD MaximumTokenLifetime;
  DWORD DefaultTokenLifetime;
  DWORDLONG MaximumTransferSize;
  DWORDLONG OptimalTransferCount;
  DWORD MaximumDataDescriptors;
  DWORD MaximumTransferLengthPerDescriptor;
  DWORD OptimalTransferLengthPerDescriptor;
  WORD OptimalTransferLengthGranularity;
  BYTE Reserved[2];
} DEVICE_COPY_OFFLOAD_DESCRIPTOR, *PDEVICE_COPY_OFFLOAD_DESCRIPTOR;
typedef struct _STORAGE_DEVICE_RESILIENCY_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  DWORD NameOffset;
  DWORD NumberOfLogicalCopies;
  DWORD NumberOfPhysicalCopies;
  DWORD PhysicalDiskRedundancy;
  DWORD NumberOfColumns;
  DWORD Interleave;
} STORAGE_DEVICE_RESILIENCY_DESCRIPTOR, *PSTORAGE_DEVICE_RESILIENCY_DESCRIPTOR;
typedef enum _STORAGE_RPMB_FRAME_TYPE {
  StorageRpmbFrameTypeUnknown = 0,
  StorageRpmbFrameTypeStandard,
  StorageRpmbFrameTypeMax
} STORAGE_RPMB_FRAME_TYPE, *PSTORAGE_RPMB_FRAME_TYPE;
#define STORAGE_RPMB_DESCRIPTOR_VERSION_1 1
#define STORAGE_RPMB_MINIMUM_RELIABLE_WRITE_SIZE 512
typedef struct _STORAGE_RPMB_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  DWORD SizeInBytes;
  DWORD MaxReliableWriteSizeInBytes;
  STORAGE_RPMB_FRAME_TYPE FrameFormat;
} STORAGE_RPMB_DESCRIPTOR, *PSTORAGE_RPMB_DESCRIPTOR;
typedef enum _STORAGE_CRYPTO_ALGORITHM_ID {
  StorageCryptoAlgorithmUnknown = 0,
  StorageCryptoAlgorithmXTSAES = 1,
  StorageCryptoAlgorithmBitlockerAESCBC,
  StorageCryptoAlgorithmAESECB,
  StorageCryptoAlgorithmESSIVAESCBC,
  StorageCryptoAlgorithmMax
} STORAGE_CRYPTO_ALGORITHM_ID, *PSTORAGE_CRYPTO_ALGORITHM_ID;
typedef enum _STORAGE_CRYPTO_KEY_SIZE {
  StorageCryptoKeySizeUnknown = 0,
  StorageCryptoKeySize128Bits = 1,
  StorageCryptoKeySize192Bits,
  StorageCryptoKeySize256Bits,
  StorageCryptoKeySize512Bits
} STORAGE_CRYPTO_KEY_SIZE, *PSTORAGE_CRYPTO_KEY_SIZE;
#define STORAGE_CRYPTO_CAPABILITY_VERSION_1 1
typedef struct _STORAGE_CRYPTO_CAPABILITY {
  DWORD Version;
  DWORD Size;
  DWORD CryptoCapabilityIndex;
  STORAGE_CRYPTO_ALGORITHM_ID AlgorithmId;
  STORAGE_CRYPTO_KEY_SIZE KeySize;
  DWORD DataUnitSizeBitmask;
} STORAGE_CRYPTO_CAPABILITY, *PSTORAGE_CRYPTO_CAPABILITY;
#define STORAGE_CRYPTO_DESCRIPTOR_VERSION_1 1
typedef struct _STORAGE_CRYPTO_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  DWORD NumKeysSupported;
  DWORD NumCryptoCapabilities;
  STORAGE_CRYPTO_CAPABILITY CryptoCapabilities[1];
} STORAGE_CRYPTO_DESCRIPTOR, *PSTORAGE_CRYPTO_DESCRIPTOR;
#define STORAGE_TIER_NAME_LENGTH (256)
#define STORAGE_TIER_DESCRIPTION_LENGTH (512)
#define STORAGE_TIER_FLAG_NO_SEEK_PENALTY (0x00020000)
#define STORAGE_TIER_FLAG_WRITE_BACK_CACHE (0x00200000)
#define STORAGE_TIER_FLAG_READ_CACHE (0x00400000)
#define STORAGE_TIER_FLAG_PARITY (0x00800000)
#define STORAGE_TIER_FLAG_SMR (0x01000000)
typedef enum _STORAGE_TIER_MEDIA_TYPE {
  StorageTierMediaTypeUnspecified = 0,
  StorageTierMediaTypeDisk = 1,
  StorageTierMediaTypeSsd = 2,
  StorageTierMediaTypeScm = 4,
  StorageTierMediaTypeMax
} STORAGE_TIER_MEDIA_TYPE, *PSTORAGE_TIER_MEDIA_TYPE;
typedef enum _STORAGE_TIER_CLASS {
  StorageTierClassUnspecified = 0,
  StorageTierClassCapacity,
  StorageTierClassPerformance,
  StorageTierClassMax
} STORAGE_TIER_CLASS, *PSTORAGE_TIER_CLASS;
typedef struct _STORAGE_TIER {
  GUID Id;
  WCHAR Name[(256)];
  WCHAR Description[(256)];
  DWORDLONG Flags;
  DWORDLONG ProvisionedCapacity;
  STORAGE_TIER_MEDIA_TYPE MediaType;
  STORAGE_TIER_CLASS Class;
} STORAGE_TIER, *PSTORAGE_TIER;
typedef struct _STORAGE_DEVICE_TIERING_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  DWORD Flags;
  DWORD TotalNumberOfTiers;
  DWORD NumberOfTiersReturned;
  STORAGE_TIER Tiers[1];
} STORAGE_DEVICE_TIERING_DESCRIPTOR, *PSTORAGE_DEVICE_TIERING_DESCRIPTOR;
typedef struct _STORAGE_DEVICE_FAULT_DOMAIN_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  DWORD NumberOfFaultDomains;
  GUID FaultDomainIds[1];
} STORAGE_DEVICE_FAULT_DOMAIN_DESCRIPTOR, *PSTORAGE_DEVICE_FAULT_DOMAIN_DESCRIPTOR;
typedef enum _STORAGE_PROTOCOL_TYPE {
  ProtocolTypeUnknown = 0x00,
  ProtocolTypeScsi,
  ProtocolTypeAta,
  ProtocolTypeNvme,
  ProtocolTypeSd,
  ProtocolTypeUfs,
  ProtocolTypeProprietary = 0x7E,
  ProtocolTypeMaxReserved = 0x7F
} STORAGE_PROTOCOL_TYPE, *PSTORAGE_PROTOCOL_TYPE;
typedef enum _STORAGE_PROTOCOL_NVME_DATA_TYPE {
  NVMeDataTypeUnknown = 0,
  NVMeDataTypeIdentify,
  NVMeDataTypeLogPage,
  NVMeDataTypeFeature
} STORAGE_PROTOCOL_NVME_DATA_TYPE, *PSTORAGE_PROTOCOL_NVME_DATA_TYPE;
typedef enum _STORAGE_PROTOCOL_ATA_DATA_TYPE {
  AtaDataTypeUnknown = 0,
  AtaDataTypeIdentify,
  AtaDataTypeLogPage
} STORAGE_PROTOCOL_ATA_DATA_TYPE, *PSTORAGE_PROTOCOL_ATA_DATA_TYPE;
typedef enum _STORAGE_PROTOCOL_UFS_DATA_TYPE {
  UfsDataTypeUnknown = 0,
  UfsDataTypeQueryDescriptor,
  UfsDataTypeQueryAttribute,
  UfsDataTypeQueryFlag,
  UfsDataTypeQueryDmeAttribute,
  UfsDataTypeQueryDmePeerAttribute,
  UfsDataTypeMax
} STORAGE_PROTOCOL_UFS_DATA_TYPE, *PSTORAGE_PROTOCOL_UFS_DATA_TYPE;
typedef union _STORAGE_PROTOCOL_DATA_SUBVALUE_GET_LOG_PAGE {
  __extension__ struct {
    DWORD RetainAsynEvent : 1;
    DWORD LogSpecificField : 4;
    DWORD Reserved : 27;
  };
  DWORD AsUlong;
} STORAGE_PROTOCOL_DATA_SUBVALUE_GET_LOG_PAGE, *PSTORAGE_PROTOCOL_DATA_SUBVALUE_GET_LOG_PAGE;
typedef struct _STORAGE_PROTOCOL_SPECIFIC_DATA {
  STORAGE_PROTOCOL_TYPE ProtocolType;
  DWORD DataType;
  DWORD ProtocolDataRequestValue;
  DWORD ProtocolDataRequestSubValue;
  DWORD ProtocolDataOffset;
  DWORD ProtocolDataLength;
  DWORD FixedProtocolReturnData;
  DWORD ProtocolDataRequestSubValue2;
  DWORD ProtocolDataRequestSubValue3;
  DWORD ProtocolDataRequestSubValue4;
} STORAGE_PROTOCOL_SPECIFIC_DATA, *PSTORAGE_PROTOCOL_SPECIFIC_DATA;
typedef struct _STORAGE_PROTOCOL_SPECIFIC_DATA_EXT {
  STORAGE_PROTOCOL_TYPE ProtocolType;
  DWORD DataType;
  DWORD ProtocolDataValue;
  DWORD ProtocolDataSubValue;
  DWORD ProtocolDataOffset;
  DWORD ProtocolDataLength;
  DWORD FixedProtocolReturnData;
  DWORD ProtocolDataSubValue2;
  DWORD ProtocolDataSubValue3;
  DWORD ProtocolDataSubValue4;
  DWORD ProtocolDataSubValue5;
  DWORD Reserved[5];
} STORAGE_PROTOCOL_SPECIFIC_DATA_EXT, *PSTORAGE_PROTOCOL_SPECIFIC_DATA_EXT;
typedef struct _STORAGE_PROTOCOL_DATA_DESCRIPTOR {
  DWORD Version;
  DWORD Size;
  STORAGE_PROTOCOL_SPECIFIC_DATA ProtocolSpecificData;
} STORAGE_PROTOCOL_DATA_DESCRIPTOR, *PSTORAGE_PROTOCOL_DATA_DESCRIPTOR;
typedef struct _STORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT {
  DWORD Version;
  DWORD Size;
  STORAGE_PROTOCOL_SPECIFIC_DATA_EXT ProtocolSpecificData;
} STORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT, *PSTORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT;
#define IOCTL_VOLUME_BASE ((DWORD) 'V')
#define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS CTL_CODE(IOCTL_VOLUME_BASE,0,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_VOLUME_SUPPORTS_ONLINE_OFFLINE CTL_CODE(IOCTL_VOLUME_BASE,1,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_VOLUME_ONLINE CTL_CODE(IOCTL_VOLUME_BASE,2,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_VOLUME_OFFLINE CTL_CODE(IOCTL_VOLUME_BASE,3,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_VOLUME_IS_OFFLINE CTL_CODE(IOCTL_VOLUME_BASE,4,METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VOLUME_IS_IO_CAPABLE CTL_CODE(IOCTL_VOLUME_BASE,5,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_VOLUME_QUERY_FAILOVER_SET CTL_CODE(IOCTL_VOLUME_BASE,6,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_VOLUME_QUERY_VOLUME_NUMBER CTL_CODE(IOCTL_VOLUME_BASE,7,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_VOLUME_LOGICAL_TO_PHYSICAL CTL_CODE(IOCTL_VOLUME_BASE,8,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_VOLUME_PHYSICAL_TO_LOGICAL CTL_CODE(IOCTL_VOLUME_BASE,9,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_VOLUME_IS_CLUSTERED CTL_CODE(IOCTL_VOLUME_BASE,12,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_VOLUME_GET_GPT_ATTRIBUTES CTL_CODE(IOCTL_VOLUME_BASE,14,METHOD_BUFFERED,FILE_ANY_ACCESS)
typedef struct _DISK_EXTENT {
  DWORD DiskNumber;
  LARGE_INTEGER StartingOffset;
  LARGE_INTEGER ExtentLength;
} DISK_EXTENT,*PDISK_EXTENT;
typedef struct _VOLUME_DISK_EXTENTS {
  DWORD NumberOfDiskExtents;
  DISK_EXTENT Extents[1];
} VOLUME_DISK_EXTENTS,*PVOLUME_DISK_EXTENTS;
#define _NTDDSCRD_H2_ 
  typedef WORD UWORD;
#define FILE_DEVICE_SMARTCARD 0x00000031
#define SCARD_ATR_LENGTH 33
#define SCARD_PROTOCOL_UNDEFINED 0x00000000
#define SCARD_PROTOCOL_T0 0x00000001
#define SCARD_PROTOCOL_T1 0x00000002
#define SCARD_PROTOCOL_RAW 0x00010000
#define SCARD_PROTOCOL_Tx (SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1)
#define SCARD_PROTOCOL_DEFAULT 0x80000000
#define SCARD_PROTOCOL_OPTIMAL 0x00000000
#define SCARD_POWER_DOWN 0
#define SCARD_COLD_RESET 1
#define SCARD_WARM_RESET 2
#define SCARD_CTL_CODE(code) CTL_CODE(FILE_DEVICE_SMARTCARD,(code),METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SMARTCARD_POWER SCARD_CTL_CODE(1)
#define IOCTL_SMARTCARD_GET_ATTRIBUTE SCARD_CTL_CODE(2)
#define IOCTL_SMARTCARD_SET_ATTRIBUTE SCARD_CTL_CODE(3)
#define IOCTL_SMARTCARD_CONFISCATE SCARD_CTL_CODE(4)
#define IOCTL_SMARTCARD_TRANSMIT SCARD_CTL_CODE(5)
#define IOCTL_SMARTCARD_EJECT SCARD_CTL_CODE(6)
#define IOCTL_SMARTCARD_SWALLOW SCARD_CTL_CODE(7)
#define IOCTL_SMARTCARD_IS_PRESENT SCARD_CTL_CODE(10)
#define IOCTL_SMARTCARD_IS_ABSENT SCARD_CTL_CODE(11)
#define IOCTL_SMARTCARD_SET_PROTOCOL SCARD_CTL_CODE(12)
#define IOCTL_SMARTCARD_GET_STATE SCARD_CTL_CODE(14)
#define IOCTL_SMARTCARD_GET_LAST_ERROR SCARD_CTL_CODE(15)
#define IOCTL_SMARTCARD_GET_PERF_CNTR SCARD_CTL_CODE(16)
#define MAXIMUM_ATTR_STRING_LENGTH 32
#define MAXIMUM_SMARTCARD_READERS 10
#define SCARD_ATTR_VALUE(Class,Tag) ((((ULONG)(Class)) << 16) | ((ULONG)(Tag)))
#define SCARD_CLASS_VENDOR_INFO 1
#define SCARD_CLASS_COMMUNICATIONS 2
#define SCARD_CLASS_PROTOCOL 3
#define SCARD_CLASS_POWER_MGMT 4
#define SCARD_CLASS_SECURITY 5
#define SCARD_CLASS_MECHANICAL 6
#define SCARD_CLASS_VENDOR_DEFINED 7
#define SCARD_CLASS_IFD_PROTOCOL 8
#define SCARD_CLASS_ICC_STATE 9
#define SCARD_CLASS_PERF 0x7ffe
#define SCARD_CLASS_SYSTEM 0x7fff
#define SCARD_ATTR_VENDOR_NAME SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO,0x0100)
#define SCARD_ATTR_VENDOR_IFD_TYPE SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO,0x0101)
#define SCARD_ATTR_VENDOR_IFD_VERSION SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO,0x0102)
#define SCARD_ATTR_VENDOR_IFD_SERIAL_NO SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_INFO,0x0103)
#define SCARD_ATTR_CHANNEL_ID SCARD_ATTR_VALUE(SCARD_CLASS_COMMUNICATIONS,0x0110)
#define SCARD_ATTR_PROTOCOL_TYPES SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0120)
#define SCARD_ATTR_DEFAULT_CLK SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0121)
#define SCARD_ATTR_MAX_CLK SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0122)
#define SCARD_ATTR_DEFAULT_DATA_RATE SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0123)
#define SCARD_ATTR_MAX_DATA_RATE SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0124)
#define SCARD_ATTR_MAX_IFSD SCARD_ATTR_VALUE(SCARD_CLASS_PROTOCOL,0x0125)
#define SCARD_ATTR_POWER_MGMT_SUPPORT SCARD_ATTR_VALUE(SCARD_CLASS_POWER_MGMT,0x0131)
#define SCARD_ATTR_USER_TO_CARD_AUTH_DEVICE SCARD_ATTR_VALUE(SCARD_CLASS_SECURITY,0x0140)
#define SCARD_ATTR_USER_AUTH_INPUT_DEVICE SCARD_ATTR_VALUE(SCARD_CLASS_SECURITY,0x0142)
#define SCARD_ATTR_CHARACTERISTICS SCARD_ATTR_VALUE(SCARD_CLASS_MECHANICAL,0x0150)
#define SCARD_ATTR_CURRENT_PROTOCOL_TYPE SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0201)
#define SCARD_ATTR_CURRENT_CLK SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0202)
#define SCARD_ATTR_CURRENT_F SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0203)
#define SCARD_ATTR_CURRENT_D SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0204)
#define SCARD_ATTR_CURRENT_N SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0205)
#define SCARD_ATTR_CURRENT_W SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0206)
#define SCARD_ATTR_CURRENT_IFSC SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0207)
#define SCARD_ATTR_CURRENT_IFSD SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0208)
#define SCARD_ATTR_CURRENT_BWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x0209)
#define SCARD_ATTR_CURRENT_CWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x020a)
#define SCARD_ATTR_CURRENT_EBC_ENCODING SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x020b)
#define SCARD_ATTR_EXTENDED_BWT SCARD_ATTR_VALUE(SCARD_CLASS_IFD_PROTOCOL,0x020c)
#define SCARD_ATTR_ICC_PRESENCE SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0300)
#define SCARD_ATTR_ICC_INTERFACE_STATUS SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0301)
#define SCARD_ATTR_CURRENT_IO_STATE SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0302)
#define SCARD_ATTR_ATR_STRING SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0303)
#define SCARD_ATTR_ICC_TYPE_PER_ATR SCARD_ATTR_VALUE(SCARD_CLASS_ICC_STATE,0x0304)
#define SCARD_ATTR_ESC_RESET SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED,0xA000)
#define SCARD_ATTR_ESC_CANCEL SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED,0xA003)
#define SCARD_ATTR_ESC_AUTHREQUEST SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED,0xA005)
#define SCARD_ATTR_MAXINPUT SCARD_ATTR_VALUE(SCARD_CLASS_VENDOR_DEFINED,0xA007)
#define SCARD_ATTR_DEVICE_UNIT SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0001)
#define SCARD_ATTR_DEVICE_IN_USE SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0002)
#define SCARD_ATTR_DEVICE_FRIENDLY_NAME_A SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0003)
#define SCARD_ATTR_DEVICE_SYSTEM_NAME_A SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0004)
#define SCARD_ATTR_DEVICE_FRIENDLY_NAME_W SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0005)
#define SCARD_ATTR_DEVICE_SYSTEM_NAME_W SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0006)
#define SCARD_ATTR_SUPRESS_T1_IFS_REQUEST SCARD_ATTR_VALUE(SCARD_CLASS_SYSTEM,0x0007)
#define SCARD_PERF_NUM_TRANSMISSIONS SCARD_ATTR_VALUE(SCARD_CLASS_PERF,0x0001)
#define SCARD_PERF_BYTES_TRANSMITTED SCARD_ATTR_VALUE(SCARD_CLASS_PERF,0x0002)
#define SCARD_PERF_TRANSMISSION_TIME SCARD_ATTR_VALUE(SCARD_CLASS_PERF,0x0003)
#define SCARD_ATTR_DEVICE_FRIENDLY_NAME __MINGW_NAME_UAW(SCARD_ATTR_DEVICE_FRIENDLY_NAME)
#define SCARD_ATTR_DEVICE_SYSTEM_NAME __MINGW_NAME_UAW(SCARD_ATTR_DEVICE_SYSTEM_NAME)
#define SCARD_T0_HEADER_LENGTH 7
#define SCARD_T0_CMD_LENGTH 5
#define SCARD_T1_PROLOGUE_LENGTH 3
#define SCARD_T1_EPILOGUE_LENGTH 2
#define SCARD_T1_MAX_IFS 254
#define SCARD_UNKNOWN 0
#define SCARD_ABSENT 1
#define SCARD_PRESENT 2
#define SCARD_SWALLOWED 3
#define SCARD_POWERED 4
#define SCARD_NEGOTIABLE 5
#define SCARD_SPECIFIC 6
  typedef struct _SCARD_IO_REQUEST {
    DWORD dwProtocol;
    DWORD cbPciLength;
  } SCARD_IO_REQUEST,*PSCARD_IO_REQUEST,*LPSCARD_IO_REQUEST;
  typedef const SCARD_IO_REQUEST *LPCSCARD_IO_REQUEST;
  typedef struct {
    BYTE
      bCla,bIns,bP1,bP2,bP3;
  } SCARD_T0_COMMAND,*LPSCARD_T0_COMMAND;
  typedef struct {
    SCARD_IO_REQUEST ioRequest;
    BYTE bSw1,bSw2;
    __extension__ union {
      SCARD_T0_COMMAND CmdBytes;
      BYTE rgbHeader[5];
    };
  } SCARD_T0_REQUEST;
  typedef SCARD_T0_REQUEST *PSCARD_T0_REQUEST,*LPSCARD_T0_REQUEST;
  typedef struct {
    SCARD_IO_REQUEST ioRequest;
  } SCARD_T1_REQUEST;
  typedef SCARD_T1_REQUEST *PSCARD_T1_REQUEST,*LPSCARD_T1_REQUEST;
#define SCARD_READER_SWALLOWS 0x00000001
#define SCARD_READER_EJECTS 0x00000002
#define SCARD_READER_CONFISCATES 0x00000004
#define SCARD_READER_TYPE_SERIAL 0x01
#define SCARD_READER_TYPE_PARALELL 0x02
#define SCARD_READER_TYPE_KEYBOARD 0x04
#define SCARD_READER_TYPE_SCSI 0x08
#define SCARD_READER_TYPE_IDE 0x10
#define SCARD_READER_TYPE_USB 0x20
#define SCARD_READER_TYPE_PCMCIA 0x40
#define SCARD_READER_TYPE_VENDOR 0xF0
#define _LPCBYTE_DEFINED 
  typedef const BYTE *LPCBYTE;
#define WINSCARDAPI 
#define WINSCARDDATA __declspec(dllimport)
  __attribute__((dllimport)) extern const SCARD_IO_REQUEST g_rgSCardT0Pci,g_rgSCardT1Pci,g_rgSCardRawPci;
#define SCARD_PCI_T0 (&g_rgSCardT0Pci)
#define SCARD_PCI_T1 (&g_rgSCardT1Pci)
#define SCARD_PCI_RAW (&g_rgSCardRawPci)
  typedef ULONG_PTR SCARDCONTEXT;
  typedef SCARDCONTEXT *PSCARDCONTEXT,*LPSCARDCONTEXT;
  typedef ULONG_PTR SCARDHANDLE;
  typedef SCARDHANDLE *PSCARDHANDLE,*LPSCARDHANDLE;
#define SCARD_AUTOALLOCATE (DWORD)(-1)
#define SCARD_SCOPE_USER 0
#define SCARD_SCOPE_TERMINAL 1
#define SCARD_SCOPE_SYSTEM 2
  extern LONG __attribute__((__stdcall__)) SCardEstablishContext(DWORD dwScope,LPCVOID pvReserved1,LPCVOID pvReserved2,LPSCARDCONTEXT phContext);
  extern LONG __attribute__((__stdcall__)) SCardReleaseContext(SCARDCONTEXT hContext);
  extern LONG __attribute__((__stdcall__)) SCardIsValidContext(SCARDCONTEXT hContext);
#define SCARD_ALL_READERS TEXT("SCard$AllReaders\000")
#define SCARD_DEFAULT_READERS TEXT("SCard$DefaultReaders\000")
#define SCARD_LOCAL_READERS TEXT("SCard$LocalReaders\000")
#define SCARD_SYSTEM_READERS TEXT("SCard$SystemReaders\000")
#define SCARD_PROVIDER_PRIMARY 1
#define SCARD_PROVIDER_CSP 2
#define SCardListReaderGroups __MINGW_NAME_AW(SCardListReaderGroups)
#define SCardListReaders __MINGW_NAME_AW(SCardListReaders)
#define SCardListCards __MINGW_NAME_AW(SCardListCards)
#define SCardListInterfaces __MINGW_NAME_AW(SCardListInterfaces)
#define SCardGetProviderId __MINGW_NAME_AW(SCardGetProviderId)
#define SCardGetCardTypeProviderName __MINGW_NAME_AW(SCardGetCardTypeProviderName)
#define SCardIntroduceReaderGroup __MINGW_NAME_AW(SCardIntroduceReaderGroup)
#define SCardForgetReaderGroup __MINGW_NAME_AW(SCardForgetReaderGroup)
#define SCardIntroduceReader __MINGW_NAME_AW(SCardIntroduceReader)
#define SCardForgetReader __MINGW_NAME_AW(SCardForgetReader)
#define SCardAddReaderToGroup __MINGW_NAME_AW(SCardAddReaderToGroup)
#define SCardRemoveReaderFromGroup __MINGW_NAME_AW(SCardRemoveReaderFromGroup)
#define SCardIntroduceCardType __MINGW_NAME_AW(SCardIntroduceCardType)
#define SCardSetCardTypeProviderName __MINGW_NAME_AW(SCardSetCardTypeProviderName)
#define SCardForgetCardType __MINGW_NAME_AW(SCardForgetCardType)
  extern LONG __attribute__((__stdcall__)) SCardListReaderGroupsA(SCARDCONTEXT hContext,LPSTR mszGroups,LPDWORD pcchGroups);
  extern LONG __attribute__((__stdcall__)) SCardListReaderGroupsW(SCARDCONTEXT hContext,LPWSTR mszGroups,LPDWORD pcchGroups);
  extern LONG __attribute__((__stdcall__)) SCardListReadersA(SCARDCONTEXT hContext,LPCSTR mszGroups,LPSTR mszReaders,LPDWORD pcchReaders);
  extern LONG __attribute__((__stdcall__)) SCardListReadersW(SCARDCONTEXT hContext,LPCWSTR mszGroups,LPWSTR mszReaders,LPDWORD pcchReaders);
  extern LONG __attribute__((__stdcall__)) SCardListCardsA(SCARDCONTEXT hContext,LPCBYTE pbAtr,LPCGUID rgquidInterfaces,DWORD cguidInterfaceCount,LPSTR mszCards,LPDWORD pcchCards);
  extern LONG __attribute__((__stdcall__)) SCardListCardsW(SCARDCONTEXT hContext,LPCBYTE pbAtr,LPCGUID rgquidInterfaces,DWORD cguidInterfaceCount,LPWSTR mszCards,LPDWORD pcchCards);
#define SCardListCardTypes SCardListCards
  extern LONG __attribute__((__stdcall__)) SCardListInterfacesA(SCARDCONTEXT hContext,LPCSTR szCard,LPGUID pguidInterfaces,LPDWORD pcguidInterfaces);
  extern LONG __attribute__((__stdcall__)) SCardListInterfacesW(SCARDCONTEXT hContext,LPCWSTR szCard,LPGUID pguidInterfaces,LPDWORD pcguidInterfaces);
  extern LONG __attribute__((__stdcall__)) SCardGetProviderIdA(SCARDCONTEXT hContext,LPCSTR szCard,LPGUID pguidProviderId);
  extern LONG __attribute__((__stdcall__)) SCardGetProviderIdW(SCARDCONTEXT hContext,LPCWSTR szCard,LPGUID pguidProviderId);
  extern LONG __attribute__((__stdcall__)) SCardGetCardTypeProviderNameA(SCARDCONTEXT hContext,LPCSTR szCardName,DWORD dwProviderId,LPSTR szProvider,LPDWORD pcchProvider);
  extern LONG __attribute__((__stdcall__)) SCardGetCardTypeProviderNameW(SCARDCONTEXT hContext,LPCWSTR szCardName,DWORD dwProviderId,LPWSTR szProvider,LPDWORD pcchProvider);
  extern LONG __attribute__((__stdcall__)) SCardIntroduceReaderGroupA(SCARDCONTEXT hContext,LPCSTR szGroupName);
  extern LONG __attribute__((__stdcall__)) SCardIntroduceReaderGroupW(SCARDCONTEXT hContext,LPCWSTR szGroupName);
  extern LONG __attribute__((__stdcall__)) SCardForgetReaderGroupA(SCARDCONTEXT hContext,LPCSTR szGroupName);
  extern LONG __attribute__((__stdcall__)) SCardForgetReaderGroupW(SCARDCONTEXT hContext,LPCWSTR szGroupName);
  extern LONG __attribute__((__stdcall__)) SCardIntroduceReaderA(SCARDCONTEXT hContext,LPCSTR szReaderName,LPCSTR szDeviceName);
  extern LONG __attribute__((__stdcall__)) SCardIntroduceReaderW(SCARDCONTEXT hContext,LPCWSTR szReaderName,LPCWSTR szDeviceName);
  extern LONG __attribute__((__stdcall__)) SCardForgetReaderA(SCARDCONTEXT hContext,LPCSTR szReaderName);
  extern LONG __attribute__((__stdcall__)) SCardForgetReaderW(SCARDCONTEXT hContext,LPCWSTR szReaderName);
  extern LONG __attribute__((__stdcall__)) SCardAddReaderToGroupA(SCARDCONTEXT hContext,LPCSTR szReaderName,LPCSTR szGroupName);
  extern LONG __attribute__((__stdcall__)) SCardAddReaderToGroupW(SCARDCONTEXT hContext,LPCWSTR szReaderName,LPCWSTR szGroupName);
  extern LONG __attribute__((__stdcall__)) SCardRemoveReaderFromGroupA(SCARDCONTEXT hContext,LPCSTR szReaderName,LPCSTR szGroupName);
  extern LONG __attribute__((__stdcall__)) SCardRemoveReaderFromGroupW(SCARDCONTEXT hContext,LPCWSTR szReaderName,LPCWSTR szGroupName);
  extern LONG __attribute__((__stdcall__)) SCardIntroduceCardTypeA(SCARDCONTEXT hContext,LPCSTR szCardName,LPCGUID pguidPrimaryProvider,LPCGUID rgguidInterfaces,DWORD dwInterfaceCount,LPCBYTE pbAtr,LPCBYTE pbAtrMask,DWORD cbAtrLen);
  extern LONG __attribute__((__stdcall__)) SCardIntroduceCardTypeW(SCARDCONTEXT hContext,LPCWSTR szCardName,LPCGUID pguidPrimaryProvider,LPCGUID rgguidInterfaces,DWORD dwInterfaceCount,LPCBYTE pbAtr,LPCBYTE pbAtrMask,DWORD cbAtrLen);
#define PCSCardIntroduceCardType(hContext,szCardName,pbAtr,pbAtrMask,cbAtrLen,pguidPrimaryProvider,rgguidInterfaces,dwInterfaceCount) SCardIntroduceCardType(hContext,szCardName,pguidPrimaryProvider,rgguidInterfaces,dwInterfaceCount,pbAtr,pbAtrMask,cbAtrLen)
  extern LONG __attribute__((__stdcall__)) SCardSetCardTypeProviderNameA(SCARDCONTEXT hContext,LPCSTR szCardName,DWORD dwProviderId,LPCSTR szProvider);
  extern LONG __attribute__((__stdcall__)) SCardSetCardTypeProviderNameW(SCARDCONTEXT hContext,LPCWSTR szCardName,DWORD dwProviderId,LPCWSTR szProvider);
  extern LONG __attribute__((__stdcall__)) SCardForgetCardTypeA(SCARDCONTEXT hContext,LPCSTR szCardName);
  extern LONG __attribute__((__stdcall__)) SCardForgetCardTypeW(SCARDCONTEXT hContext,LPCWSTR szCardName);
  extern LONG __attribute__((__stdcall__)) SCardFreeMemory(SCARDCONTEXT hContext,LPCVOID pvMem);
  extern HANDLE __attribute__((__stdcall__)) SCardAccessStartedEvent(void);
  extern void __attribute__((__stdcall__)) SCardReleaseStartedEvent(void);
  typedef struct {
    LPCSTR szReader;
    LPVOID pvUserData;
    DWORD dwCurrentState;
    DWORD dwEventState;
    DWORD cbAtr;
    BYTE rgbAtr[36];
  } SCARD_READERSTATEA,*PSCARD_READERSTATEA,*LPSCARD_READERSTATEA;
  typedef struct {
    LPCWSTR szReader;
    LPVOID pvUserData;
    DWORD dwCurrentState;
    DWORD dwEventState;
    DWORD cbAtr;
    BYTE rgbAtr[36];
  } SCARD_READERSTATEW,*PSCARD_READERSTATEW,*LPSCARD_READERSTATEW;
  typedef SCARD_READERSTATEA SCARD_READERSTATE;
  typedef PSCARD_READERSTATEA PSCARD_READERSTATE;
  typedef LPSCARD_READERSTATEA LPSCARD_READERSTATE;
#define SCardLocateCards __MINGW_NAME_AW(SCardLocateCards)
#define SCardLocateCardsByATR __MINGW_NAME_AW(SCardLocateCardsByATR)
#define SCardGetStatusChange __MINGW_NAME_AW(SCardGetStatusChange)
#define SCardConnect __MINGW_NAME_AW(SCardConnect)
#define SCardStatus __MINGW_NAME_AW(SCardStatus)
#define SCARD_READERSTATE_A SCARD_READERSTATEA
#define SCARD_READERSTATE_W SCARD_READERSTATEW
#define PSCARD_READERSTATE_A PSCARD_READERSTATEA
#define PSCARD_READERSTATE_W PSCARD_READERSTATEW
#define LPSCARD_READERSTATE_A LPSCARD_READERSTATEA
#define LPSCARD_READERSTATE_W LPSCARD_READERSTATEW
#define SCARD_STATE_UNAWARE 0x00000000
#define SCARD_STATE_IGNORE 0x00000001
#define SCARD_STATE_CHANGED 0x00000002
#define SCARD_STATE_UNKNOWN 0x00000004
#define SCARD_STATE_UNAVAILABLE 0x00000008
#define SCARD_STATE_EMPTY 0x00000010
#define SCARD_STATE_PRESENT 0x00000020
#define SCARD_STATE_ATRMATCH 0x00000040
#define SCARD_STATE_EXCLUSIVE 0x00000080
#define SCARD_STATE_INUSE 0x00000100
#define SCARD_STATE_MUTE 0x00000200
#define SCARD_STATE_UNPOWERED 0x00000400
  extern LONG __attribute__((__stdcall__)) SCardLocateCardsA(SCARDCONTEXT hContext,LPCSTR mszCards,LPSCARD_READERSTATEA rgReaderStates,DWORD cReaders);
  extern LONG __attribute__((__stdcall__)) SCardLocateCardsW(SCARDCONTEXT hContext,LPCWSTR mszCards,LPSCARD_READERSTATEW rgReaderStates,DWORD cReaders);
  typedef struct _SCARD_ATRMASK {
    DWORD cbAtr;
    BYTE rgbAtr[36];
    BYTE rgbMask[36];
  } SCARD_ATRMASK,*PSCARD_ATRMASK,*LPSCARD_ATRMASK;
  extern LONG __attribute__((__stdcall__)) SCardLocateCardsByATRA(SCARDCONTEXT hContext,LPSCARD_ATRMASK rgAtrMasks,DWORD cAtrs,LPSCARD_READERSTATEA rgReaderStates,DWORD cReaders);
  extern LONG __attribute__((__stdcall__)) SCardLocateCardsByATRW(SCARDCONTEXT hContext,LPSCARD_ATRMASK rgAtrMasks,DWORD cAtrs,LPSCARD_READERSTATEW rgReaderStates,DWORD cReaders);
  extern LONG __attribute__((__stdcall__)) SCardGetStatusChangeA(SCARDCONTEXT hContext,DWORD dwTimeout,LPSCARD_READERSTATEA rgReaderStates,DWORD cReaders);
  extern LONG __attribute__((__stdcall__)) SCardGetStatusChangeW(SCARDCONTEXT hContext,DWORD dwTimeout,LPSCARD_READERSTATEW rgReaderStates,DWORD cReaders);
  extern LONG __attribute__((__stdcall__)) SCardCancel(SCARDCONTEXT hContext);
#define SCARD_SHARE_EXCLUSIVE 1
#define SCARD_SHARE_SHARED 2
#define SCARD_SHARE_DIRECT 3
#define SCARD_LEAVE_CARD 0
#define SCARD_RESET_CARD 1
#define SCARD_UNPOWER_CARD 2
#define SCARD_EJECT_CARD 3
  extern LONG __attribute__((__stdcall__)) SCardConnectA(SCARDCONTEXT hContext,LPCSTR szReader,DWORD dwShareMode,DWORD dwPreferredProtocols,LPSCARDHANDLE phCard,LPDWORD pdwActiveProtocol);
  extern LONG __attribute__((__stdcall__)) SCardConnectW(SCARDCONTEXT hContext,LPCWSTR szReader,DWORD dwShareMode,DWORD dwPreferredProtocols,LPSCARDHANDLE phCard,LPDWORD pdwActiveProtocol);
  extern LONG __attribute__((__stdcall__)) SCardReconnect(SCARDHANDLE hCard,DWORD dwShareMode,DWORD dwPreferredProtocols,DWORD dwInitialization,LPDWORD pdwActiveProtocol);
  extern LONG __attribute__((__stdcall__)) SCardDisconnect(SCARDHANDLE hCard,DWORD dwDisposition);
  extern LONG __attribute__((__stdcall__)) SCardBeginTransaction(SCARDHANDLE hCard);
  extern LONG __attribute__((__stdcall__)) SCardEndTransaction(SCARDHANDLE hCard,DWORD dwDisposition);
  extern LONG __attribute__((__stdcall__)) SCardCancelTransaction(SCARDHANDLE hCard);
  extern LONG __attribute__((__stdcall__)) SCardState(SCARDHANDLE hCard,LPDWORD pdwState,LPDWORD pdwProtocol,LPBYTE pbAtr,LPDWORD pcbAtrLen);
  extern LONG __attribute__((__stdcall__)) SCardStatusA(SCARDHANDLE hCard,LPSTR szReaderName,LPDWORD pcchReaderLen,LPDWORD pdwState,LPDWORD pdwProtocol,LPBYTE pbAtr,LPDWORD pcbAtrLen);
  extern LONG __attribute__((__stdcall__)) SCardStatusW(SCARDHANDLE hCard,LPWSTR szReaderName,LPDWORD pcchReaderLen,LPDWORD pdwState,LPDWORD pdwProtocol,LPBYTE pbAtr,LPDWORD pcbAtrLen);
  extern LONG __attribute__((__stdcall__)) SCardTransmit(SCARDHANDLE hCard,LPCSCARD_IO_REQUEST pioSendPci,LPCBYTE pbSendBuffer,DWORD cbSendLength,LPSCARD_IO_REQUEST pioRecvPci,LPBYTE pbRecvBuffer,LPDWORD pcbRecvLength);
  extern LONG __attribute__((__stdcall__)) SCardControl(SCARDHANDLE hCard,DWORD dwControlCode,LPCVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned);
  extern LONG __attribute__((__stdcall__)) SCardGetAttrib(SCARDHANDLE hCard,DWORD dwAttrId,LPBYTE pbAttr,LPDWORD pcbAttrLen);
#define SCardGetReaderCapabilities SCardGetAttrib
  extern LONG __attribute__((__stdcall__)) SCardSetAttrib(SCARDHANDLE hCard,DWORD dwAttrId,LPCBYTE pbAttr,DWORD cbAttrLen);
#define SCardSetReaderCapabilities SCardSetAttrib
#define SC_DLG_MINIMAL_UI 0x01
#define SC_DLG_NO_UI 0x02
#define SC_DLG_FORCE_UI 0x04
#define SCERR_NOCARDNAME 0x4000
#define SCERR_NOGUIDS 0x8000
#define LPOCNCONNPROC __MINGW_NAME_AW(LPOCNCONNPROC)
  typedef SCARDHANDLE (__attribute__((__stdcall__)) *LPOCNCONNPROCA) (SCARDCONTEXT,LPSTR,LPSTR,PVOID);
  typedef SCARDHANDLE (__attribute__((__stdcall__)) *LPOCNCONNPROCW) (SCARDCONTEXT,LPWSTR,LPWSTR,PVOID);
  typedef WINBOOL (__attribute__((__stdcall__)) *LPOCNCHKPROC) (SCARDCONTEXT,SCARDHANDLE,PVOID);
  typedef void (__attribute__((__stdcall__)) *LPOCNDSCPROC) (SCARDCONTEXT,SCARDHANDLE,PVOID);
  typedef struct {
    DWORD dwStructSize;
    LPSTR lpstrGroupNames;
    DWORD nMaxGroupNames;
    LPCGUID rgguidInterfaces;
    DWORD cguidInterfaces;
    LPSTR lpstrCardNames;
    DWORD nMaxCardNames;
    LPOCNCHKPROC lpfnCheck;
    LPOCNCONNPROCA lpfnConnect;
    LPOCNDSCPROC lpfnDisconnect;
    LPVOID pvUserData;
    DWORD dwShareMode;
    DWORD dwPreferredProtocols;
  } OPENCARD_SEARCH_CRITERIAA,*POPENCARD_SEARCH_CRITERIAA,*LPOPENCARD_SEARCH_CRITERIAA;
  typedef struct {
    DWORD dwStructSize;
    LPWSTR lpstrGroupNames;
    DWORD nMaxGroupNames;
    LPCGUID rgguidInterfaces;
    DWORD cguidInterfaces;
    LPWSTR lpstrCardNames;
    DWORD nMaxCardNames;
    LPOCNCHKPROC lpfnCheck;
    LPOCNCONNPROCW lpfnConnect;
    LPOCNDSCPROC lpfnDisconnect;
    LPVOID pvUserData;
    DWORD dwShareMode;
    DWORD dwPreferredProtocols;
  } OPENCARD_SEARCH_CRITERIAW,*POPENCARD_SEARCH_CRITERIAW,*LPOPENCARD_SEARCH_CRITERIAW;
  typedef OPENCARD_SEARCH_CRITERIAA OPENCARD_SEARCH_CRITERIA;
  typedef POPENCARD_SEARCH_CRITERIAA POPENCARD_SEARCH_CRITERIA;
  typedef LPOPENCARD_SEARCH_CRITERIAA LPOPENCARD_SEARCH_CRITERIA;
  typedef struct {
    DWORD dwStructSize;
    SCARDCONTEXT hSCardContext;
    HWND hwndOwner;
    DWORD dwFlags;
    LPCSTR lpstrTitle;
    LPCSTR lpstrSearchDesc;
    HICON hIcon;
    POPENCARD_SEARCH_CRITERIAA pOpenCardSearchCriteria;
    LPOCNCONNPROCA lpfnConnect;
    LPVOID pvUserData;
    DWORD dwShareMode;
    DWORD dwPreferredProtocols;
    LPSTR lpstrRdr;
    DWORD nMaxRdr;
    LPSTR lpstrCard;
    DWORD nMaxCard;
    DWORD dwActiveProtocol;
    SCARDHANDLE hCardHandle;
  } OPENCARDNAME_EXA,*POPENCARDNAME_EXA,*LPOPENCARDNAME_EXA;
  typedef struct {
    DWORD dwStructSize;
    SCARDCONTEXT hSCardContext;
    HWND hwndOwner;
    DWORD dwFlags;
    LPCWSTR lpstrTitle;
    LPCWSTR lpstrSearchDesc;
    HICON hIcon;
    POPENCARD_SEARCH_CRITERIAW pOpenCardSearchCriteria;
    LPOCNCONNPROCW lpfnConnect;
    LPVOID pvUserData;
    DWORD dwShareMode;
    DWORD dwPreferredProtocols;
    LPWSTR lpstrRdr;
    DWORD nMaxRdr;
    LPWSTR lpstrCard;
    DWORD nMaxCard;
    DWORD dwActiveProtocol;
    SCARDHANDLE hCardHandle;
  } OPENCARDNAME_EXW,*POPENCARDNAME_EXW,*LPOPENCARDNAME_EXW;
  typedef OPENCARDNAME_EXA OPENCARDNAME_EX;
  typedef POPENCARDNAME_EXA POPENCARDNAME_EX;
  typedef LPOPENCARDNAME_EXA LPOPENCARDNAME_EX;
#define OPENCARDNAMEA_EX OPENCARDNAME_EXA
#define OPENCARDNAMEW_EX OPENCARDNAME_EXW
#define POPENCARDNAMEA_EX POPENCARDNAME_EXA
#define POPENCARDNAMEW_EX POPENCARDNAME_EXW
#define LPOPENCARDNAMEA_EX LPOPENCARDNAME_EXA
#define LPOPENCARDNAMEW_EX LPOPENCARDNAME_EXW
#define SCardUIDlgSelectCard __MINGW_NAME_AW(SCardUIDlgSelectCard)
  extern LONG __attribute__((__stdcall__)) SCardUIDlgSelectCardA(LPOPENCARDNAME_EXA);
  extern LONG __attribute__((__stdcall__)) SCardUIDlgSelectCardW(LPOPENCARDNAME_EXW);
  typedef struct {
    DWORD dwStructSize;
    HWND hwndOwner;
    SCARDCONTEXT hSCardContext;
    LPSTR lpstrGroupNames;
    DWORD nMaxGroupNames;
    LPSTR lpstrCardNames;
    DWORD nMaxCardNames;
    LPCGUID rgguidInterfaces;
    DWORD cguidInterfaces;
    LPSTR lpstrRdr;
    DWORD nMaxRdr;
    LPSTR lpstrCard;
    DWORD nMaxCard;
    LPCSTR lpstrTitle;
    DWORD dwFlags;
    LPVOID pvUserData;
    DWORD dwShareMode;
    DWORD dwPreferredProtocols;
    DWORD dwActiveProtocol;
    LPOCNCONNPROCA lpfnConnect;
    LPOCNCHKPROC lpfnCheck;
    LPOCNDSCPROC lpfnDisconnect;
    SCARDHANDLE hCardHandle;
  } OPENCARDNAMEA,*POPENCARDNAMEA,*LPOPENCARDNAMEA;
  typedef struct {
    DWORD dwStructSize;
    HWND hwndOwner;
    SCARDCONTEXT hSCardContext;
    LPWSTR lpstrGroupNames;
    DWORD nMaxGroupNames;
    LPWSTR lpstrCardNames;
    DWORD nMaxCardNames;
    LPCGUID rgguidInterfaces;
    DWORD cguidInterfaces;
    LPWSTR lpstrRdr;
    DWORD nMaxRdr;
    LPWSTR lpstrCard;
    DWORD nMaxCard;
    LPCWSTR lpstrTitle;
    DWORD dwFlags;
    LPVOID pvUserData;
    DWORD dwShareMode;
    DWORD dwPreferredProtocols;
    DWORD dwActiveProtocol;
    LPOCNCONNPROCW lpfnConnect;
    LPOCNCHKPROC lpfnCheck;
    LPOCNDSCPROC lpfnDisconnect;
    SCARDHANDLE hCardHandle;
  } OPENCARDNAMEW,*POPENCARDNAMEW,*LPOPENCARDNAMEW;
  typedef OPENCARDNAMEA OPENCARDNAME;
  typedef POPENCARDNAMEA POPENCARDNAME;
  typedef LPOPENCARDNAMEA LPOPENCARDNAME;
#define OPENCARDNAME_A OPENCARDNAMEA
#define OPENCARDNAME_W OPENCARDNAMEW
#define POPENCARDNAME_A POPENCARDNAMEA
#define POPENCARDNAME_W POPENCARDNAMEW
#define LPOPENCARDNAME_A LPOPENCARDNAMEA
#define LPOPENCARDNAME_W LPOPENCARDNAMEW
#define GetOpenCardName __MINGW_NAME_AW(GetOpenCardName)
  extern LONG __attribute__((__stdcall__)) GetOpenCardNameA(LPOPENCARDNAMEA);
  extern LONG __attribute__((__stdcall__)) GetOpenCardNameW(LPOPENCARDNAMEW);
  extern LONG __attribute__((__stdcall__)) SCardDlgExtendedError(void);
LONG __attribute__((__stdcall__)) SCardGetTransmitCount(
  SCARDHANDLE hCard,
  LPDWORD pcTransmitCount
);
LONG __attribute__((__stdcall__)) SCardReadCacheA(
  SCARDCONTEXT hContext,
  UUID *CardIdentifier,
  DWORD FreshnessCounter,
  LPSTR LookupName,
  PBYTE Data,
  DWORD *DataLen
);
LONG __attribute__((__stdcall__)) SCardReadCacheW(
  SCARDCONTEXT hContext,
  UUID *CardIdentifier,
  DWORD FreshnessCounter,
  LPWSTR LookupName,
  PBYTE Data,
  DWORD *DataLen
);
#define SCardReadCache __MINGW_NAME_AW(SCardReadCache)
LONG __attribute__((__stdcall__)) SCardWriteCacheA(
  SCARDCONTEXT hContext,
  UUID *CardIdentifier,
  DWORD FreshnessCounter,
  LPSTR LookupName,
  PBYTE Data,
  DWORD DataLen
);
LONG __attribute__((__stdcall__)) SCardWriteCacheW(
  SCARDCONTEXT hContext,
  UUID *CardIdentifier,
  DWORD FreshnessCounter,
  LPWSTR LookupName,
  PBYTE Data,
  DWORD DataLen
);
#define SCardWriteCache __MINGW_NAME_AW(SCardWriteCache)
#define _WINSPOOL_ 
#define _PRSHT_H_ 
#define WINCOMMCTRLAPI DECLSPEC_IMPORT
#define CCSIZEOF_STRUCT(structname,member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member))
#pragma pack(push,4)
#define SNDMSG SendMessage
#define MAXPROPPAGES 100
  struct _PSP;
  struct _PROPSHEETPAGEA;
  struct _PROPSHEETPAGEW;
  typedef struct _PSP *HPROPSHEETPAGE;
  typedef UINT (__attribute__((__stdcall__)) *LPFNPSPCALLBACKA)(HWND hwnd,UINT uMsg,struct _PROPSHEETPAGEA *ppsp);
  typedef UINT (__attribute__((__stdcall__)) *LPFNPSPCALLBACKW)(HWND hwnd,UINT uMsg,struct _PROPSHEETPAGEW *ppsp);
#define LPFNPSPCALLBACK __MINGW_NAME_AW(LPFNPSPCALLBACK)
#define PSP_DEFAULT 0x00000000
#define PSP_DLGINDIRECT 0x00000001
#define PSP_USEHICON 0x00000002
#define PSP_USEICONID 0x00000004
#define PSP_USETITLE 0x00000008
#define PSP_RTLREADING 0x00000010
#define PSP_HASHELP 0x00000020
#define PSP_USEREFPARENT 0x00000040
#define PSP_USECALLBACK 0x00000080
#define PSP_PREMATURE 0x00000400
#define PSP_HIDEHEADER 0x00000800
#define PSP_USEHEADERTITLE 0x00001000
#define PSP_USEHEADERSUBTITLE 0x00002000
#define PSP_USEFUSIONCONTEXT 0x00004000
#define PSPCB_ADDREF 0
#define PSPCB_RELEASE 1
#define PSPCB_CREATE 2
#define PROPSHEETPAGEA_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEA,pcRefParent)
#define PROPSHEETPAGEW_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEW,pcRefParent)
#define PROPSHEETPAGEA_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEA,pszHeaderSubTitle)
#define PROPSHEETPAGEW_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETPAGEW,pszHeaderSubTitle)
  typedef LPCDLGTEMPLATE PROPSHEETPAGE_RESOURCE;
#define PROPSHEETPAGEA_V1_FIELDS DWORD dwSize,dwFlags; HINSTANCE hInstance; __C89_NAMELESS union { LPCSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } DUMMYUNIONNAME; __C89_NAMELESS union { HICON hIcon; LPCSTR pszIcon; } DUMMYUNIONNAME2; LPCSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKA pfnCallback; UINT *pcRefParent;
#define PROPSHEETPAGEW_V1_FIELDS DWORD dwSize, dwFlags; HINSTANCE hInstance; __C89_NAMELESS union { LPCWSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } DUMMYUNIONNAME; __C89_NAMELESS union { HICON hIcon; LPCWSTR pszIcon; } DUMMYUNIONNAME2; LPCWSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKW pfnCallback; UINT *pcRefParent;
#define _PROPSHEETPAGEA_V3 _PROPSHEETPAGEA
#define _PROPSHEETPAGEW_V3 _PROPSHEETPAGEW
  typedef struct _PROPSHEETPAGEA_V1 {
    DWORD dwSize,dwFlags; HINSTANCE hInstance; __extension__ union { LPCSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } ; __extension__ union { HICON hIcon; LPCSTR pszIcon; } ; LPCSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKA pfnCallback; UINT *pcRefParent;
  } PROPSHEETPAGEA_V1,*LPPROPSHEETPAGEA_V1;
  typedef const PROPSHEETPAGEA_V1 *LPCPROPSHEETPAGEA_V1;
  typedef struct _PROPSHEETPAGEA_V2 {
    DWORD dwSize,dwFlags; HINSTANCE hInstance; __extension__ union { LPCSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } ; __extension__ union { HICON hIcon; LPCSTR pszIcon; } ; LPCSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKA pfnCallback; UINT *pcRefParent;
      LPCSTR pszHeaderTitle;
    LPCSTR pszHeaderSubTitle;
  } PROPSHEETPAGEA_V2,*LPPROPSHEETPAGEA_V2;
  typedef const PROPSHEETPAGEA_V2 *LPCPROPSHEETPAGEA_V2;
  typedef struct _PROPSHEETPAGEA {
    DWORD dwSize,dwFlags; HINSTANCE hInstance; __extension__ union { LPCSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } ; __extension__ union { HICON hIcon; LPCSTR pszIcon; } ; LPCSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKA pfnCallback; UINT *pcRefParent;
      LPCSTR pszHeaderTitle;
    LPCSTR pszHeaderSubTitle;
    HANDLE hActCtx;
  } PROPSHEETPAGEA_V3,*LPPROPSHEETPAGEA_V3;
  typedef const PROPSHEETPAGEA_V3 *LPCPROPSHEETPAGEA_V3;
  typedef struct _PROPSHEETPAGEW_V1 {
    DWORD dwSize, dwFlags; HINSTANCE hInstance; __extension__ union { LPCWSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } ; __extension__ union { HICON hIcon; LPCWSTR pszIcon; } ; LPCWSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKW pfnCallback; UINT *pcRefParent;
  } PROPSHEETPAGEW_V1,*LPPROPSHEETPAGEW_V1;
  typedef const PROPSHEETPAGEW_V1 *LPCPROPSHEETPAGEW_V1;
  typedef struct _PROPSHEETPAGEW_V2 {
    DWORD dwSize, dwFlags; HINSTANCE hInstance; __extension__ union { LPCWSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } ; __extension__ union { HICON hIcon; LPCWSTR pszIcon; } ; LPCWSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKW pfnCallback; UINT *pcRefParent;
      LPCWSTR pszHeaderTitle;
    LPCWSTR pszHeaderSubTitle;
  } PROPSHEETPAGEW_V2,*LPPROPSHEETPAGEW_V2;
  typedef const PROPSHEETPAGEW_V2 *LPCPROPSHEETPAGEW_V2;
  typedef struct _PROPSHEETPAGEW {
    DWORD dwSize, dwFlags; HINSTANCE hInstance; __extension__ union { LPCWSTR pszTemplate; PROPSHEETPAGE_RESOURCE pResource; } ; __extension__ union { HICON hIcon; LPCWSTR pszIcon; } ; LPCWSTR pszTitle; DLGPROC pfnDlgProc; LPARAM lParam; LPFNPSPCALLBACKW pfnCallback; UINT *pcRefParent;
      LPCWSTR pszHeaderTitle;
    LPCWSTR pszHeaderSubTitle;
    HANDLE hActCtx;
  } PROPSHEETPAGEW_V3,*LPPROPSHEETPAGEW_V3;
  typedef const PROPSHEETPAGEW_V3 *LPCPROPSHEETPAGEW_V3;
  typedef PROPSHEETPAGEA_V3 PROPSHEETPAGEA_LATEST;
  typedef PROPSHEETPAGEW_V3 PROPSHEETPAGEW_LATEST;
  typedef LPPROPSHEETPAGEA_V3 LPPROPSHEETPAGEA_LATEST;
  typedef LPPROPSHEETPAGEW_V3 LPPROPSHEETPAGEW_LATEST;
  typedef LPCPROPSHEETPAGEA_V3 LPCPROPSHEETPAGEA_LATEST;
  typedef LPCPROPSHEETPAGEW_V3 LPCPROPSHEETPAGEW_LATEST;
  typedef PROPSHEETPAGEA_V3 PROPSHEETPAGEA;
  typedef PROPSHEETPAGEW_V3 PROPSHEETPAGEW;
  typedef LPPROPSHEETPAGEA_V3 LPPROPSHEETPAGEA;
  typedef LPPROPSHEETPAGEW_V3 LPPROPSHEETPAGEW;
  typedef LPCPROPSHEETPAGEA_V3 LPCPROPSHEETPAGEA;
  typedef LPCPROPSHEETPAGEW_V3 LPCPROPSHEETPAGEW;
#define PROPSHEETPAGE __MINGW_NAME_AW(PROPSHEETPAGE)
#define LPPROPSHEETPAGE __MINGW_NAME_AW(LPPROPSHEETPAGE)
#define LPCPROPSHEETPAGE __MINGW_NAME_AW(LPCPROPSHEETPAGE)
#define PROPSHEETPAGE_V1_SIZE __MINGW_NAME_AW_EXT(PROPSHEETPAGE,_V1_SIZE)
#define PROPSHEETPAGE_V2_SIZE __MINGW_NAME_AW_EXT(PROPSHEETPAGE,_V2_SIZE)
#define PROPSHEETPAGE_V1 __MINGW_NAME_AW_EXT(PROPSHEETPAGE,_V1)
#define LPPROPSHEETPAGE_V1 __MINGW_NAME_AW_EXT(LPPROPSHEETPAGE,_V1)
#define LPCPROPSHEETPAGE_V1 __MINGW_NAME_AW_EXT(LPCPROPSHEETPAGE,_V1)
#define PROPSHEETPAGE_V2 __MINGW_NAME_AW_EXT(PROPSHEETPAGE,_V2)
#define LPPROPSHEETPAGE_V2 __MINGW_NAME_AW_EXT(LPPROPSHEETPAGE,_V2)
#define LPCPROPSHEETPAGE_V2 __MINGW_NAME_AW_EXT(LPCPROPSHEETPAGE,_V2)
#define PROPSHEETPAGE_V3 __MINGW_NAME_AW_EXT(PROPSHEETPAGE,_V3)
#define LPPROPSHEETPAGE_V3 __MINGW_NAME_AW_EXT(LPPROPSHEETPAGE,_V3)
#define LPCPROPSHEETPAGE_V3 __MINGW_NAME_AW_EXT(LPCPROPSHEETPAGE,_V3)
#define PROPSHEETPAGE_LATEST __MINGW_NAME_AW_EXT(PROPSHEETPAGE,_LATEST)
#define LPPROPSHEETPAGE_LATEST __MINGW_NAME_AW_EXT(LPPROPSHEETPAGE,_LATEST)
#define LPCPROPSHEETPAGE_LATEST __MINGW_NAME_AW_EXT(LPCPROPSHEETPAGE,_LATEST)
#define PSH_DEFAULT 0x00000000
#define PSH_PROPTITLE 0x00000001
#define PSH_USEHICON 0x00000002
#define PSH_USEICONID 0x00000004
#define PSH_PROPSHEETPAGE 0x00000008
#define PSH_WIZARDHASFINISH 0x00000010
#define PSH_WIZARD 0x00000020
#define PSH_USEPSTARTPAGE 0x00000040
#define PSH_NOAPPLYNOW 0x00000080
#define PSH_USECALLBACK 0x00000100
#define PSH_HASHELP 0x00000200
#define PSH_MODELESS 0x00000400
#define PSH_RTLREADING 0x00000800
#define PSH_WIZARDCONTEXTHELP 0x00001000
#define PSH_WIZARD97 0x01000000
#define PSH_WATERMARK 0x00008000
#define PSH_USEHBMWATERMARK 0x00010000
#define PSH_USEHPLWATERMARK 0x00020000
#define PSH_STRETCHWATERMARK 0x00040000
#define PSH_HEADER 0x00080000
#define PSH_USEHBMHEADER 0x00100000
#define PSH_USEPAGELANG 0x00200000
#define PSH_WIZARD_LITE 0x00400000
#define PSH_NOCONTEXTHELP 0x02000000
  typedef int (__attribute__((__stdcall__)) *PFNPROPSHEETCALLBACK)(HWND,UINT,LPARAM);
#define PROPSHEETHEADERA_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERA,pfnCallback)
#define PROPSHEETHEADERW_V1_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERW,pfnCallback)
#define PROPSHEETHEADERA_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERA,DUMMYUNION5_MEMBER(hbmHeader))
#define PROPSHEETHEADERW_V2_SIZE CCSIZEOF_STRUCT(PROPSHEETHEADERW,DUMMYUNION5_MEMBER(hbmHeader))
  typedef struct _PROPSHEETHEADERA {
    DWORD dwSize;
    DWORD dwFlags;
    HWND hwndParent;
    HINSTANCE hInstance;
    __extension__ union {
      HICON hIcon;
      LPCSTR pszIcon;
    } ;
    LPCSTR pszCaption;
    UINT nPages;
    __extension__ union {
      UINT nStartPage;
      LPCSTR pStartPage;
    } ;
    __extension__ union {
      LPCPROPSHEETPAGEA ppsp;
      HPROPSHEETPAGE *phpage;
    } ;
    PFNPROPSHEETCALLBACK pfnCallback;
    __extension__ union {
      HBITMAP hbmWatermark;
      LPCSTR pszbmWatermark;
    } ;
    HPALETTE hplWatermark;
    __extension__ union {
      HBITMAP hbmHeader;
      LPCSTR pszbmHeader;
    } ;
  } PROPSHEETHEADERA,*LPPROPSHEETHEADERA;
  typedef const PROPSHEETHEADERA *LPCPROPSHEETHEADERA;
  typedef struct _PROPSHEETHEADERW {
    DWORD dwSize;
    DWORD dwFlags;
    HWND hwndParent;
    HINSTANCE hInstance;
    __extension__ union {
      HICON hIcon;
      LPCWSTR pszIcon;
    } ;
    LPCWSTR pszCaption;
    UINT nPages;
    __extension__ union {
      UINT nStartPage;
      LPCWSTR pStartPage;
    } ;
    __extension__ union {
      LPCPROPSHEETPAGEW ppsp;
      HPROPSHEETPAGE *phpage;
    } ;
    PFNPROPSHEETCALLBACK pfnCallback;
    __extension__ union {
      HBITMAP hbmWatermark;
      LPCWSTR pszbmWatermark;
    } ;
    HPALETTE hplWatermark;
    __extension__ union {
      HBITMAP hbmHeader;
      LPCWSTR pszbmHeader;
    } ;
  } PROPSHEETHEADERW,*LPPROPSHEETHEADERW;
  typedef const PROPSHEETHEADERW *LPCPROPSHEETHEADERW;
#define PROPSHEETHEADER __MINGW_NAME_AW(PROPSHEETHEADER)
#define LPPROPSHEETHEADER __MINGW_NAME_AW(LPPROPSHEETHEADER)
#define LPCPROPSHEETHEADER __MINGW_NAME_AW(LPCPROPSHEETHEADER)
#define PROPSHEETHEADER_V1_SIZE __MINGW_NAME_AW_EXT(PROPSHEETHEADER,_V1_SIZE)
#define PROPSHEETHEADER_V2_SIZE __MINGW_NAME_AW_EXT(PROPSHEETHEADER,_V2_SIZE)
#define PSCB_INITIALIZED 1
#define PSCB_PRECREATE 2
#define PSCB_BUTTONPRESSED 3
  __attribute__((dllimport)) HPROPSHEETPAGE __attribute__((__stdcall__)) CreatePropertySheetPageA(LPCPROPSHEETPAGEA constPropSheetPagePointer);
  __attribute__((dllimport)) HPROPSHEETPAGE __attribute__((__stdcall__)) CreatePropertySheetPageW(LPCPROPSHEETPAGEW constPropSheetPagePointer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DestroyPropertySheetPage(HPROPSHEETPAGE);
  __attribute__((dllimport)) INT_PTR __attribute__((__stdcall__)) PropertySheetA(LPCPROPSHEETHEADERA);
  __attribute__((dllimport)) INT_PTR __attribute__((__stdcall__)) PropertySheetW(LPCPROPSHEETHEADERW);
#define CreatePropertySheetPage __MINGW_NAME_AW(CreatePropertySheetPage)
#define PropertySheet __MINGW_NAME_AW(PropertySheet)
  typedef WINBOOL (__attribute__((__stdcall__)) *LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE,LPARAM);
  typedef WINBOOL (__attribute__((__stdcall__)) *LPFNADDPROPSHEETPAGES)(LPVOID,LPFNADDPROPSHEETPAGE,LPARAM);
  typedef struct _PSHNOTIFY {
    NMHDR hdr;
    LPARAM lParam;
  } PSHNOTIFY,*LPPSHNOTIFY;
#define PSN_FIRST (0U-200U)
#define PSN_LAST (0U-299U)
#define PSN_SETACTIVE (PSN_FIRST-0)
#define PSN_KILLACTIVE (PSN_FIRST-1)
#define PSN_APPLY (PSN_FIRST-2)
#define PSN_RESET (PSN_FIRST-3)
#define PSN_HELP (PSN_FIRST-5)
#define PSN_WIZBACK (PSN_FIRST-6)
#define PSN_WIZNEXT (PSN_FIRST-7)
#define PSN_WIZFINISH (PSN_FIRST-8)
#define PSN_QUERYCANCEL (PSN_FIRST-9)
#define PSN_GETOBJECT (PSN_FIRST-10)
#define PSN_TRANSLATEACCELERATOR (PSN_FIRST-12)
#define PSN_QUERYINITIALFOCUS (PSN_FIRST-13)
#define PSNRET_NOERROR 0
#define PSNRET_INVALID 1
#define PSNRET_INVALID_NOCHANGEPAGE 2
#define PSNRET_MESSAGEHANDLED 3
#define PSM_SETCURSEL (WM_USER + 101)
#define PropSheet_SetCurSel(hDlg,hpage,index) SNDMSG(hDlg,PSM_SETCURSEL,(WPARAM)index,(LPARAM)hpage)
#define PSM_REMOVEPAGE (WM_USER + 102)
#define PropSheet_RemovePage(hDlg,index,hpage) SNDMSG(hDlg,PSM_REMOVEPAGE,index,(LPARAM)hpage)
#define PSM_ADDPAGE (WM_USER + 103)
#define PropSheet_AddPage(hDlg,hpage) SNDMSG(hDlg,PSM_ADDPAGE,0,(LPARAM)hpage)
#define PSM_CHANGED (WM_USER + 104)
#define PropSheet_Changed(hDlg,hwnd) SNDMSG(hDlg,PSM_CHANGED,(WPARAM)hwnd,(LPARAM)0)
#define PSM_RESTARTWINDOWS (WM_USER + 105)
#define PropSheet_RestartWindows(hDlg) SNDMSG(hDlg,PSM_RESTARTWINDOWS,(WPARAM)0,(LPARAM)0)
#define PSM_REBOOTSYSTEM (WM_USER + 106)
#define PropSheet_RebootSystem(hDlg) SNDMSG(hDlg,PSM_REBOOTSYSTEM,(WPARAM)0,(LPARAM)0)
#define PSM_CANCELTOCLOSE (WM_USER + 107)
#define PropSheet_CancelToClose(hDlg) PostMessage(hDlg,PSM_CANCELTOCLOSE,(WPARAM)0,(LPARAM)0)
#define PSM_QUERYSIBLINGS (WM_USER + 108)
#define PropSheet_QuerySiblings(hDlg,wParam,lParam) SNDMSG(hDlg,PSM_QUERYSIBLINGS,wParam,lParam)
#define PSM_UNCHANGED (WM_USER + 109)
#define PropSheet_UnChanged(hDlg,hwnd) SNDMSG(hDlg,PSM_UNCHANGED,(WPARAM)hwnd,(LPARAM)0)
#define PSM_APPLY (WM_USER + 110)
#define PropSheet_Apply(hDlg) SNDMSG(hDlg,PSM_APPLY,(WPARAM)0,(LPARAM)0)
#define PSM_SETTITLEA (WM_USER + 111)
#define PSM_SETTITLEW (WM_USER + 120)
#define PSM_SETTITLE __MINGW_NAME_AW(PSM_SETTITLE)
#define PropSheet_SetTitle(hDlg,wStyle,lpszText) SNDMSG(hDlg,PSM_SETTITLE,wStyle,(LPARAM)(LPCTSTR)(lpszText))
#define PSM_SETWIZBUTTONS (WM_USER + 112)
#define PropSheet_SetWizButtons(hDlg,dwFlags) PostMessage(hDlg,PSM_SETWIZBUTTONS,(WPARAM)0,(LPARAM)dwFlags)
#define PSWIZB_BACK 0x00000001
#define PSWIZB_NEXT 0x00000002
#define PSWIZB_FINISH 0x00000004
#define PSWIZB_DISABLEDFINISH 0x00000008
#define PSM_PRESSBUTTON (WM_USER + 113)
#define PropSheet_PressButton(hDlg,iButton) PostMessage(hDlg,PSM_PRESSBUTTON,(WPARAM)iButton,(LPARAM)0)
#define PSBTN_BACK 0
#define PSBTN_NEXT 1
#define PSBTN_FINISH 2
#define PSBTN_OK 3
#define PSBTN_APPLYNOW 4
#define PSBTN_CANCEL 5
#define PSBTN_HELP 6
#define PSBTN_MAX 6
#define PSM_SETCURSELID (WM_USER + 114)
#define PropSheet_SetCurSelByID(hDlg,id) SNDMSG(hDlg,PSM_SETCURSELID,0,(LPARAM)id)
#define PSM_SETFINISHTEXTA (WM_USER + 115)
#define PSM_SETFINISHTEXTW (WM_USER + 121)
#define PSM_SETFINISHTEXT __MINGW_NAME_AW(PSM_SETFINISHTEXT)
#define PropSheet_SetFinishText(hDlg,lpszText) SNDMSG(hDlg,PSM_SETFINISHTEXT,0,(LPARAM)lpszText)
#define PSM_GETTABCONTROL (WM_USER + 116)
#define PropSheet_GetTabControl(hDlg) (HWND)SNDMSG(hDlg,PSM_GETTABCONTROL,0,0)
#define PSM_ISDIALOGMESSAGE (WM_USER + 117)
#define PropSheet_IsDialogMessage(hDlg,pMsg) (WINBOOL)SNDMSG(hDlg,PSM_ISDIALOGMESSAGE,0,(LPARAM)pMsg)
#define PSM_GETCURRENTPAGEHWND (WM_USER + 118)
#define PropSheet_GetCurrentPageHwnd(hDlg) (HWND)SNDMSG(hDlg,PSM_GETCURRENTPAGEHWND,(WPARAM)0,(LPARAM)0)
#define PSM_INSERTPAGE (WM_USER + 119)
#define PropSheet_InsertPage(hDlg,index,hpage) SNDMSG(hDlg,PSM_INSERTPAGE,(WPARAM)(index),(LPARAM)(hpage))
#define PSM_SETHEADERTITLEA (WM_USER + 125)
#define PSM_SETHEADERTITLEW (WM_USER + 126)
#define PSM_SETHEADERTITLE __MINGW_NAME_AW(PSM_SETHEADERTITLE)
#define PropSheet_SetHeaderTitle(hDlg,index,lpszText) SNDMSG(hDlg,PSM_SETHEADERTITLE,(WPARAM)(index),(LPARAM)(lpszText))
#define PSM_SETHEADERSUBTITLEA (WM_USER + 127)
#define PSM_SETHEADERSUBTITLEW (WM_USER + 128)
#define PSM_SETHEADERSUBTITLE __MINGW_NAME_AW(PSM_SETHEADERSUBTITLE)
#define PropSheet_SetHeaderSubTitle(hDlg,index,lpszText) SNDMSG(hDlg,PSM_SETHEADERSUBTITLE,(WPARAM)(index),(LPARAM)(lpszText))
#define PSM_HWNDTOINDEX (WM_USER + 129)
#define PropSheet_HwndToIndex(hDlg,hwnd) (int)SNDMSG(hDlg,PSM_HWNDTOINDEX,(WPARAM)(hwnd),0)
#define PSM_INDEXTOHWND (WM_USER + 130)
#define PropSheet_IndexToHwnd(hDlg,i) (HWND)SNDMSG(hDlg,PSM_INDEXTOHWND,(WPARAM)(i),0)
#define PSM_PAGETOINDEX (WM_USER + 131)
#define PropSheet_PageToIndex(hDlg,hpage) (int)SNDMSG(hDlg,PSM_PAGETOINDEX,0,(LPARAM)(hpage))
#define PSM_INDEXTOPAGE (WM_USER + 132)
#define PropSheet_IndexToPage(hDlg,i) (HPROPSHEETPAGE)SNDMSG(hDlg,PSM_INDEXTOPAGE,(WPARAM)(i),0)
#define PSM_IDTOINDEX (WM_USER + 133)
#define PropSheet_IdToIndex(hDlg,id) (int)SNDMSG(hDlg,PSM_IDTOINDEX,0,(LPARAM)(id))
#define PSM_INDEXTOID (WM_USER + 134)
#define PropSheet_IndexToId(hDlg,i) SNDMSG(hDlg,PSM_INDEXTOID,(WPARAM)(i),0)
#define PSM_GETRESULT (WM_USER + 135)
#define PropSheet_GetResult(hDlg) SNDMSG(hDlg,PSM_GETRESULT,0,0)
#define PSM_RECALCPAGESIZES (WM_USER + 136)
#define PropSheet_RecalcPageSizes(hDlg) SNDMSG(hDlg,PSM_RECALCPAGESIZES,0,0)
#define ID_PSRESTARTWINDOWS 0x2
#define ID_PSREBOOTSYSTEM (ID_PSRESTARTWINDOWS | 0x1)
#define WIZ_CXDLG 276
#define WIZ_CYDLG 140
#define WIZ_CXBMP 80
#define WIZ_BODYX 92
#define WIZ_BODYCX 184
#define PROP_SM_CXDLG 212
#define PROP_SM_CYDLG 188
#define PROP_MED_CXDLG 227
#define PROP_MED_CYDLG 215
#define PROP_LG_CXDLG 252
#define PROP_LG_CYDLG 218
#pragma pack(pop)
  typedef struct _PRINTER_INFO_1A {
    DWORD Flags;
    LPSTR pDescription;
    LPSTR pName;
    LPSTR pComment;
  } PRINTER_INFO_1A,*PPRINTER_INFO_1A,*LPPRINTER_INFO_1A;
  typedef struct _PRINTER_INFO_1W {
    DWORD Flags;
    LPWSTR pDescription;
    LPWSTR pName;
    LPWSTR pComment;
  } PRINTER_INFO_1W,*PPRINTER_INFO_1W,*LPPRINTER_INFO_1W;
  typedef PRINTER_INFO_1A PRINTER_INFO_1;
  typedef PPRINTER_INFO_1A PPRINTER_INFO_1;
  typedef LPPRINTER_INFO_1A LPPRINTER_INFO_1;
  typedef struct _PRINTER_INFO_2A {
    LPSTR pServerName;
    LPSTR pPrinterName;
    LPSTR pShareName;
    LPSTR pPortName;
    LPSTR pDriverName;
    LPSTR pComment;
    LPSTR pLocation;
    LPDEVMODEA pDevMode;
    LPSTR pSepFile;
    LPSTR pPrintProcessor;
    LPSTR pDatatype;
    LPSTR pParameters;
    PSECURITY_DESCRIPTOR pSecurityDescriptor;
    DWORD Attributes;
    DWORD Priority;
    DWORD DefaultPriority;
    DWORD StartTime;
    DWORD UntilTime;
    DWORD Status;
    DWORD cJobs;
    DWORD AveragePPM;
  } PRINTER_INFO_2A,*PPRINTER_INFO_2A,*LPPRINTER_INFO_2A;
  typedef struct _PRINTER_INFO_2W {
    LPWSTR pServerName;
    LPWSTR pPrinterName;
    LPWSTR pShareName;
    LPWSTR pPortName;
    LPWSTR pDriverName;
    LPWSTR pComment;
    LPWSTR pLocation;
    LPDEVMODEW pDevMode;
    LPWSTR pSepFile;
    LPWSTR pPrintProcessor;
    LPWSTR pDatatype;
    LPWSTR pParameters;
    PSECURITY_DESCRIPTOR pSecurityDescriptor;
    DWORD Attributes;
    DWORD Priority;
    DWORD DefaultPriority;
    DWORD StartTime;
    DWORD UntilTime;
    DWORD Status;
    DWORD cJobs;
    DWORD AveragePPM;
  } PRINTER_INFO_2W,*PPRINTER_INFO_2W,*LPPRINTER_INFO_2W;
  typedef PRINTER_INFO_2A PRINTER_INFO_2;
  typedef PPRINTER_INFO_2A PPRINTER_INFO_2;
  typedef LPPRINTER_INFO_2A LPPRINTER_INFO_2;
  typedef struct _PRINTER_INFO_3 {
    PSECURITY_DESCRIPTOR pSecurityDescriptor;
  } PRINTER_INFO_3,*PPRINTER_INFO_3,*LPPRINTER_INFO_3;
  typedef struct _PRINTER_INFO_4A {
    LPSTR pPrinterName;
    LPSTR pServerName;
    DWORD Attributes;
  } PRINTER_INFO_4A,*PPRINTER_INFO_4A,*LPPRINTER_INFO_4A;
  typedef struct _PRINTER_INFO_4W {
    LPWSTR pPrinterName;
    LPWSTR pServerName;
    DWORD Attributes;
  } PRINTER_INFO_4W,*PPRINTER_INFO_4W,*LPPRINTER_INFO_4W;
  typedef PRINTER_INFO_4A PRINTER_INFO_4;
  typedef PPRINTER_INFO_4A PPRINTER_INFO_4;
  typedef LPPRINTER_INFO_4A LPPRINTER_INFO_4;
  typedef struct _PRINTER_INFO_5A {
    LPSTR pPrinterName;
    LPSTR pPortName;
    DWORD Attributes;
    DWORD DeviceNotSelectedTimeout;
    DWORD TransmissionRetryTimeout;
  } PRINTER_INFO_5A,*PPRINTER_INFO_5A,*LPPRINTER_INFO_5A;
  typedef struct _PRINTER_INFO_5W {
    LPWSTR pPrinterName;
    LPWSTR pPortName;
    DWORD Attributes;
    DWORD DeviceNotSelectedTimeout;
    DWORD TransmissionRetryTimeout;
  } PRINTER_INFO_5W,*PPRINTER_INFO_5W,*LPPRINTER_INFO_5W;
  typedef PRINTER_INFO_5A PRINTER_INFO_5;
  typedef PPRINTER_INFO_5A PPRINTER_INFO_5;
  typedef LPPRINTER_INFO_5A LPPRINTER_INFO_5;
  typedef struct _PRINTER_INFO_6 {
    DWORD dwStatus;
  } PRINTER_INFO_6,*PPRINTER_INFO_6,*LPPRINTER_INFO_6;
  typedef struct _PRINTER_INFO_7A {
    LPSTR pszObjectGUID;
    DWORD dwAction;
  } PRINTER_INFO_7A,*PPRINTER_INFO_7A,*LPPRINTER_INFO_7A;
  typedef struct _PRINTER_INFO_7W {
    LPWSTR pszObjectGUID;
    DWORD dwAction;
  } PRINTER_INFO_7W,*PPRINTER_INFO_7W,*LPPRINTER_INFO_7W;
  typedef PRINTER_INFO_7A PRINTER_INFO_7;
  typedef PPRINTER_INFO_7A PPRINTER_INFO_7;
  typedef LPPRINTER_INFO_7A LPPRINTER_INFO_7;
#define DSPRINT_PUBLISH 0x00000001
#define DSPRINT_UPDATE 0x00000002
#define DSPRINT_UNPUBLISH 0x00000004
#define DSPRINT_REPUBLISH 0x00000008
#define DSPRINT_PENDING 0x80000000
  typedef struct _PRINTER_INFO_8A {
    LPDEVMODEA pDevMode;
  } PRINTER_INFO_8A,*PPRINTER_INFO_8A,*LPPRINTER_INFO_8A;
  typedef struct _PRINTER_INFO_8W {
    LPDEVMODEW pDevMode;
  } PRINTER_INFO_8W,*PPRINTER_INFO_8W,*LPPRINTER_INFO_8W;
  typedef PRINTER_INFO_8A PRINTER_INFO_8;
  typedef PPRINTER_INFO_8A PPRINTER_INFO_8;
  typedef LPPRINTER_INFO_8A LPPRINTER_INFO_8;
  typedef struct _PRINTER_INFO_9A {
    LPDEVMODEA pDevMode;
  } PRINTER_INFO_9A,*PPRINTER_INFO_9A,*LPPRINTER_INFO_9A;
  typedef struct _PRINTER_INFO_9W {
    LPDEVMODEW pDevMode;
  } PRINTER_INFO_9W,*PPRINTER_INFO_9W,*LPPRINTER_INFO_9W;
  typedef PRINTER_INFO_9A PRINTER_INFO_9;
  typedef PPRINTER_INFO_9A PPRINTER_INFO_9;
  typedef LPPRINTER_INFO_9A LPPRINTER_INFO_9;
#define PRINTER_CONTROL_PAUSE 1
#define PRINTER_CONTROL_RESUME 2
#define PRINTER_CONTROL_PURGE 3
#define PRINTER_CONTROL_SET_STATUS 4
#define PRINTER_STATUS_PAUSED 0x00000001
#define PRINTER_STATUS_ERROR 0x00000002
#define PRINTER_STATUS_PENDING_DELETION 0x00000004
#define PRINTER_STATUS_PAPER_JAM 0x00000008
#define PRINTER_STATUS_PAPER_OUT 0x00000010
#define PRINTER_STATUS_MANUAL_FEED 0x00000020
#define PRINTER_STATUS_PAPER_PROBLEM 0x00000040
#define PRINTER_STATUS_OFFLINE 0x00000080
#define PRINTER_STATUS_IO_ACTIVE 0x00000100
#define PRINTER_STATUS_BUSY 0x00000200
#define PRINTER_STATUS_PRINTING 0x00000400
#define PRINTER_STATUS_OUTPUT_BIN_FULL 0x00000800
#define PRINTER_STATUS_NOT_AVAILABLE 0x00001000
#define PRINTER_STATUS_WAITING 0x00002000
#define PRINTER_STATUS_PROCESSING 0x00004000
#define PRINTER_STATUS_INITIALIZING 0x00008000
#define PRINTER_STATUS_WARMING_UP 0x00010000
#define PRINTER_STATUS_TONER_LOW 0x00020000
#define PRINTER_STATUS_NO_TONER 0x00040000
#define PRINTER_STATUS_PAGE_PUNT 0x00080000
#define PRINTER_STATUS_USER_INTERVENTION 0x00100000
#define PRINTER_STATUS_OUT_OF_MEMORY 0x00200000
#define PRINTER_STATUS_DOOR_OPEN 0x00400000
#define PRINTER_STATUS_SERVER_UNKNOWN 0x00800000
#define PRINTER_STATUS_POWER_SAVE 0x01000000
#define PRINTER_ATTRIBUTE_QUEUED 0x00000001
#define PRINTER_ATTRIBUTE_DIRECT 0x00000002
#define PRINTER_ATTRIBUTE_DEFAULT 0x00000004
#define PRINTER_ATTRIBUTE_SHARED 0x00000008
#define PRINTER_ATTRIBUTE_NETWORK 0x00000010
#define PRINTER_ATTRIBUTE_HIDDEN 0x00000020
#define PRINTER_ATTRIBUTE_LOCAL 0x00000040
#define PRINTER_ATTRIBUTE_ENABLE_DEVQ 0x00000080
#define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS 0x00000100
#define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST 0x00000200
#define PRINTER_ATTRIBUTE_WORK_OFFLINE 0x00000400
#define PRINTER_ATTRIBUTE_ENABLE_BIDI 0x00000800
#define PRINTER_ATTRIBUTE_RAW_ONLY 0x00001000
#define PRINTER_ATTRIBUTE_PUBLISHED 0x00002000
#define PRINTER_ATTRIBUTE_FAX 0x00004000
#define PRINTER_ATTRIBUTE_TS 0x00008000
#define NO_PRIORITY 0
#define MAX_PRIORITY 99
#define MIN_PRIORITY 1
#define DEF_PRIORITY 1
  typedef struct _JOB_INFO_1A {
    DWORD JobId;
    LPSTR pPrinterName;
    LPSTR pMachineName;
    LPSTR pUserName;
    LPSTR pDocument;
    LPSTR pDatatype;
    LPSTR pStatus;
    DWORD Status;
    DWORD Priority;
    DWORD Position;
    DWORD TotalPages;
    DWORD PagesPrinted;
    SYSTEMTIME Submitted;
  } JOB_INFO_1A,*PJOB_INFO_1A,*LPJOB_INFO_1A;
  typedef struct _JOB_INFO_1W {
    DWORD JobId;
    LPWSTR pPrinterName;
    LPWSTR pMachineName;
    LPWSTR pUserName;
    LPWSTR pDocument;
    LPWSTR pDatatype;
    LPWSTR pStatus;
    DWORD Status;
    DWORD Priority;
    DWORD Position;
    DWORD TotalPages;
    DWORD PagesPrinted;
    SYSTEMTIME Submitted;
  } JOB_INFO_1W,*PJOB_INFO_1W,*LPJOB_INFO_1W;
  typedef JOB_INFO_1A JOB_INFO_1;
  typedef PJOB_INFO_1A PJOB_INFO_1;
  typedef LPJOB_INFO_1A LPJOB_INFO_1;
  typedef struct _JOB_INFO_2A {
    DWORD JobId;
    LPSTR pPrinterName;
    LPSTR pMachineName;
    LPSTR pUserName;
    LPSTR pDocument;
    LPSTR pNotifyName;
    LPSTR pDatatype;
    LPSTR pPrintProcessor;
    LPSTR pParameters;
    LPSTR pDriverName;
    LPDEVMODEA pDevMode;
    LPSTR pStatus;
    PSECURITY_DESCRIPTOR pSecurityDescriptor;
    DWORD Status;
    DWORD Priority;
    DWORD Position;
    DWORD StartTime;
    DWORD UntilTime;
    DWORD TotalPages;
    DWORD Size;
    SYSTEMTIME Submitted;
    DWORD Time;
    DWORD PagesPrinted;
  } JOB_INFO_2A,*PJOB_INFO_2A,*LPJOB_INFO_2A;
  typedef struct _JOB_INFO_2W {
    DWORD JobId;
    LPWSTR pPrinterName;
    LPWSTR pMachineName;
    LPWSTR pUserName;
    LPWSTR pDocument;
    LPWSTR pNotifyName;
    LPWSTR pDatatype;
    LPWSTR pPrintProcessor;
    LPWSTR pParameters;
    LPWSTR pDriverName;
    LPDEVMODEW pDevMode;
    LPWSTR pStatus;
    PSECURITY_DESCRIPTOR pSecurityDescriptor;
    DWORD Status;
    DWORD Priority;
    DWORD Position;
    DWORD StartTime;
    DWORD UntilTime;
    DWORD TotalPages;
    DWORD Size;
    SYSTEMTIME Submitted;
    DWORD Time;
    DWORD PagesPrinted;
  } JOB_INFO_2W,*PJOB_INFO_2W,*LPJOB_INFO_2W;
  typedef JOB_INFO_2A JOB_INFO_2;
  typedef PJOB_INFO_2A PJOB_INFO_2;
  typedef LPJOB_INFO_2A LPJOB_INFO_2;
  typedef struct _JOB_INFO_3 {
    DWORD JobId;
    DWORD NextJobId;
    DWORD Reserved;
  } JOB_INFO_3,*PJOB_INFO_3,*LPJOB_INFO_3;
#define JOB_CONTROL_PAUSE 1
#define JOB_CONTROL_RESUME 2
#define JOB_CONTROL_CANCEL 3
#define JOB_CONTROL_RESTART 4
#define JOB_CONTROL_DELETE 5
#define JOB_CONTROL_SENT_TO_PRINTER 6
#define JOB_CONTROL_LAST_PAGE_EJECTED 7
#define JOB_STATUS_PAUSED 0x00000001
#define JOB_STATUS_ERROR 0x00000002
#define JOB_STATUS_DELETING 0x00000004
#define JOB_STATUS_SPOOLING 0x00000008
#define JOB_STATUS_PRINTING 0x00000010
#define JOB_STATUS_OFFLINE 0x00000020
#define JOB_STATUS_PAPEROUT 0x00000040
#define JOB_STATUS_PRINTED 0x00000080
#define JOB_STATUS_DELETED 0x00000100
#define JOB_STATUS_BLOCKED_DEVQ 0x00000200
#define JOB_STATUS_USER_INTERVENTION 0x00000400
#define JOB_STATUS_RESTART 0x00000800
#define JOB_STATUS_COMPLETE 0x00001000
#define JOB_POSITION_UNSPECIFIED 0
  typedef struct _ADDJOB_INFO_1A {
    LPSTR Path;
    DWORD JobId;
  } ADDJOB_INFO_1A,*PADDJOB_INFO_1A,*LPADDJOB_INFO_1A;
  typedef struct _ADDJOB_INFO_1W {
    LPWSTR Path;
    DWORD JobId;
  } ADDJOB_INFO_1W,*PADDJOB_INFO_1W,*LPADDJOB_INFO_1W;
  typedef ADDJOB_INFO_1A ADDJOB_INFO_1;
  typedef PADDJOB_INFO_1A PADDJOB_INFO_1;
  typedef LPADDJOB_INFO_1A LPADDJOB_INFO_1;
  typedef struct _DRIVER_INFO_1A {
    LPSTR pName;
  } DRIVER_INFO_1A,*PDRIVER_INFO_1A,*LPDRIVER_INFO_1A;
  typedef struct _DRIVER_INFO_1W {
    LPWSTR pName;
  } DRIVER_INFO_1W,*PDRIVER_INFO_1W,*LPDRIVER_INFO_1W;
  typedef DRIVER_INFO_1A DRIVER_INFO_1;
  typedef PDRIVER_INFO_1A PDRIVER_INFO_1;
  typedef LPDRIVER_INFO_1A LPDRIVER_INFO_1;
  typedef struct _DRIVER_INFO_2A {
    DWORD cVersion;
    LPSTR pName;
    LPSTR pEnvironment;
    LPSTR pDriverPath;
    LPSTR pDataFile;
    LPSTR pConfigFile;
  } DRIVER_INFO_2A,*PDRIVER_INFO_2A,*LPDRIVER_INFO_2A;
  typedef struct _DRIVER_INFO_2W {
    DWORD cVersion;
    LPWSTR pName;
    LPWSTR pEnvironment;
    LPWSTR pDriverPath;
    LPWSTR pDataFile;
    LPWSTR pConfigFile;
  } DRIVER_INFO_2W,*PDRIVER_INFO_2W,*LPDRIVER_INFO_2W;
  typedef DRIVER_INFO_2A DRIVER_INFO_2;
  typedef PDRIVER_INFO_2A PDRIVER_INFO_2;
  typedef LPDRIVER_INFO_2A LPDRIVER_INFO_2;
  typedef struct _DRIVER_INFO_3A {
    DWORD cVersion;
    LPSTR pName;
    LPSTR pEnvironment;
    LPSTR pDriverPath;
    LPSTR pDataFile;
    LPSTR pConfigFile;
    LPSTR pHelpFile;
    LPSTR pDependentFiles;
    LPSTR pMonitorName;
    LPSTR pDefaultDataType;
  } DRIVER_INFO_3A,*PDRIVER_INFO_3A,*LPDRIVER_INFO_3A;
  typedef struct _DRIVER_INFO_3W {
    DWORD cVersion;
    LPWSTR pName;
    LPWSTR pEnvironment;
    LPWSTR pDriverPath;
    LPWSTR pDataFile;
    LPWSTR pConfigFile;
    LPWSTR pHelpFile;
    LPWSTR pDependentFiles;
    LPWSTR pMonitorName;
    LPWSTR pDefaultDataType;
  } DRIVER_INFO_3W,*PDRIVER_INFO_3W,*LPDRIVER_INFO_3W;
  typedef DRIVER_INFO_3A DRIVER_INFO_3;
  typedef PDRIVER_INFO_3A PDRIVER_INFO_3;
  typedef LPDRIVER_INFO_3A LPDRIVER_INFO_3;
  typedef struct _DRIVER_INFO_4A {
    DWORD cVersion;
    LPSTR pName;
    LPSTR pEnvironment;
    LPSTR pDriverPath;
    LPSTR pDataFile;
    LPSTR pConfigFile;
    LPSTR pHelpFile;
    LPSTR pDependentFiles;
    LPSTR pMonitorName;
    LPSTR pDefaultDataType;
    LPSTR pszzPreviousNames;
  } DRIVER_INFO_4A,*PDRIVER_INFO_4A,*LPDRIVER_INFO_4A;
  typedef struct _DRIVER_INFO_4W {
    DWORD cVersion;
    LPWSTR pName;
    LPWSTR pEnvironment;
    LPWSTR pDriverPath;
    LPWSTR pDataFile;
    LPWSTR pConfigFile;
    LPWSTR pHelpFile;
    LPWSTR pDependentFiles;
    LPWSTR pMonitorName;
    LPWSTR pDefaultDataType;
    LPWSTR pszzPreviousNames;
  } DRIVER_INFO_4W,*PDRIVER_INFO_4W,*LPDRIVER_INFO_4W;
  typedef DRIVER_INFO_4A DRIVER_INFO_4;
  typedef PDRIVER_INFO_4A PDRIVER_INFO_4;
  typedef LPDRIVER_INFO_4A LPDRIVER_INFO_4;
  typedef struct _DRIVER_INFO_5A {
    DWORD cVersion;
    LPSTR pName;
    LPSTR pEnvironment;
    LPSTR pDriverPath;
    LPSTR pDataFile;
    LPSTR pConfigFile;
    DWORD dwDriverAttributes;
    DWORD dwConfigVersion;
    DWORD dwDriverVersion;
  } DRIVER_INFO_5A,*PDRIVER_INFO_5A,*LPDRIVER_INFO_5A;
  typedef struct _DRIVER_INFO_5W {
    DWORD cVersion;
    LPWSTR pName;
    LPWSTR pEnvironment;
    LPWSTR pDriverPath;
    LPWSTR pDataFile;
    LPWSTR pConfigFile;
    DWORD dwDriverAttributes;
    DWORD dwConfigVersion;
    DWORD dwDriverVersion;
  } DRIVER_INFO_5W,*PDRIVER_INFO_5W,*LPDRIVER_INFO_5W;
  typedef DRIVER_INFO_5A DRIVER_INFO_5;
  typedef PDRIVER_INFO_5A PDRIVER_INFO_5;
  typedef LPDRIVER_INFO_5A LPDRIVER_INFO_5;
  typedef struct _DRIVER_INFO_6A {
    DWORD cVersion;
    LPSTR pName;
    LPSTR pEnvironment;
    LPSTR pDriverPath;
    LPSTR pDataFile;
    LPSTR pConfigFile;
    LPSTR pHelpFile;
    LPSTR pDependentFiles;
    LPSTR pMonitorName;
    LPSTR pDefaultDataType;
    LPSTR pszzPreviousNames;
    FILETIME ftDriverDate;
    DWORDLONG dwlDriverVersion;
    LPSTR pszMfgName;
    LPSTR pszOEMUrl;
    LPSTR pszHardwareID;
    LPSTR pszProvider;
  } DRIVER_INFO_6A,*PDRIVER_INFO_6A,*LPDRIVER_INFO_6A;
  typedef struct _DRIVER_INFO_6W {
    DWORD cVersion;
    LPWSTR pName;
    LPWSTR pEnvironment;
    LPWSTR pDriverPath;
    LPWSTR pDataFile;
    LPWSTR pConfigFile;
    LPWSTR pHelpFile;
    LPWSTR pDependentFiles;
    LPWSTR pMonitorName;
    LPWSTR pDefaultDataType;
    LPWSTR pszzPreviousNames;
    FILETIME ftDriverDate;
    DWORDLONG dwlDriverVersion;
    LPWSTR pszMfgName;
    LPWSTR pszOEMUrl;
    LPWSTR pszHardwareID;
    LPWSTR pszProvider;
  } DRIVER_INFO_6W,*PDRIVER_INFO_6W,*LPDRIVER_INFO_6W;
  typedef DRIVER_INFO_6A DRIVER_INFO_6;
  typedef PDRIVER_INFO_6A PDRIVER_INFO_6;
  typedef LPDRIVER_INFO_6A LPDRIVER_INFO_6;
#define DRIVER_KERNELMODE 0x00000001
#define DRIVER_USERMODE 0x00000002
#define DPD_DELETE_UNUSED_FILES 0x00000001
#define DPD_DELETE_SPECIFIC_VERSION 0x00000002
#define DPD_DELETE_ALL_FILES 0x00000004
#define APD_STRICT_UPGRADE 0x00000001
#define APD_STRICT_DOWNGRADE 0x00000002
#define APD_COPY_ALL_FILES 0x00000004
#define APD_COPY_NEW_FILES 0x00000008
#define APD_COPY_FROM_DIRECTORY 0x00000010
  typedef struct _DOC_INFO_1A {
    LPSTR pDocName;
    LPSTR pOutputFile;
    LPSTR pDatatype;
  } DOC_INFO_1A,*PDOC_INFO_1A,*LPDOC_INFO_1A;
  typedef struct _DOC_INFO_1W {
    LPWSTR pDocName;
    LPWSTR pOutputFile;
    LPWSTR pDatatype;
  } DOC_INFO_1W,*PDOC_INFO_1W,*LPDOC_INFO_1W;
  typedef DOC_INFO_1A DOC_INFO_1;
  typedef PDOC_INFO_1A PDOC_INFO_1;
  typedef LPDOC_INFO_1A LPDOC_INFO_1;
  typedef struct _FORM_INFO_1A {
    DWORD Flags;
    LPSTR pName;
    SIZEL Size;
    RECTL ImageableArea;
  } FORM_INFO_1A,*PFORM_INFO_1A,*LPFORM_INFO_1A;
  typedef struct _FORM_INFO_1W {
    DWORD Flags;
    LPWSTR pName;
    SIZEL Size;
    RECTL ImageableArea;
  } FORM_INFO_1W,*PFORM_INFO_1W,*LPFORM_INFO_1W;
  typedef FORM_INFO_1A FORM_INFO_1;
  typedef PFORM_INFO_1A PFORM_INFO_1;
  typedef LPFORM_INFO_1A LPFORM_INFO_1;
  typedef struct _DOC_INFO_2A {
    LPSTR pDocName;
    LPSTR pOutputFile;
    LPSTR pDatatype;
    DWORD dwMode;
    DWORD JobId;
  } DOC_INFO_2A,*PDOC_INFO_2A,*LPDOC_INFO_2A;
  typedef struct _DOC_INFO_2W {
    LPWSTR pDocName;
    LPWSTR pOutputFile;
    LPWSTR pDatatype;
    DWORD dwMode;
    DWORD JobId;
  } DOC_INFO_2W,*PDOC_INFO_2W,*LPDOC_INFO_2W;
  typedef DOC_INFO_2A DOC_INFO_2;
  typedef PDOC_INFO_2A PDOC_INFO_2;
  typedef LPDOC_INFO_2A LPDOC_INFO_2;
#define DI_CHANNEL 1
#define DI_READ_SPOOL_JOB 3
  typedef struct _DOC_INFO_3A {
    LPSTR pDocName;
    LPSTR pOutputFile;
    LPSTR pDatatype;
    DWORD dwFlags;
  } DOC_INFO_3A,*PDOC_INFO_3A,*LPDOC_INFO_3A;
  typedef struct _DOC_INFO_3W {
    LPWSTR pDocName;
    LPWSTR pOutputFile;
    LPWSTR pDatatype;
    DWORD dwFlags;
  } DOC_INFO_3W,*PDOC_INFO_3W,*LPDOC_INFO_3W;
  typedef DOC_INFO_3A DOC_INFO_3;
  typedef PDOC_INFO_3A PDOC_INFO_3;
  typedef LPDOC_INFO_3A LPDOC_INFO_3;
#define DI_MEMORYMAP_WRITE 0x00000001
#define FORM_USER 0x00000000
#define FORM_BUILTIN 0x00000001
#define FORM_PRINTER 0x00000002
  typedef struct _PRINTPROCESSOR_INFO_1A {
    LPSTR pName;
  } PRINTPROCESSOR_INFO_1A,*PPRINTPROCESSOR_INFO_1A,*LPPRINTPROCESSOR_INFO_1A;
  typedef struct _PRINTPROCESSOR_INFO_1W {
    LPWSTR pName;
  } PRINTPROCESSOR_INFO_1W,*PPRINTPROCESSOR_INFO_1W,*LPPRINTPROCESSOR_INFO_1W;
  typedef PRINTPROCESSOR_INFO_1A PRINTPROCESSOR_INFO_1;
  typedef PPRINTPROCESSOR_INFO_1A PPRINTPROCESSOR_INFO_1;
  typedef LPPRINTPROCESSOR_INFO_1A LPPRINTPROCESSOR_INFO_1;
  typedef struct _PRINTPROCESSOR_CAPS_1 {
    DWORD dwLevel;
    DWORD dwNupOptions;
    DWORD dwPageOrderFlags;
    DWORD dwNumberOfCopies;
  } PRINTPROCESSOR_CAPS_1,*PPRINTPROCESSOR_CAPS_1;
#define NORMAL_PRINT 0x00000000
#define REVERSE_PRINT 0x00000001
  typedef struct _PORT_INFO_1A {
    LPSTR pName;
  } PORT_INFO_1A,*PPORT_INFO_1A,*LPPORT_INFO_1A;
  typedef struct _PORT_INFO_1W {
    LPWSTR pName;
  } PORT_INFO_1W,*PPORT_INFO_1W,*LPPORT_INFO_1W;
  typedef PORT_INFO_1A PORT_INFO_1;
  typedef PPORT_INFO_1A PPORT_INFO_1;
  typedef LPPORT_INFO_1A LPPORT_INFO_1;
  typedef struct _PORT_INFO_2A {
    LPSTR pPortName;
    LPSTR pMonitorName;
    LPSTR pDescription;
    DWORD fPortType;
    DWORD Reserved;
  } PORT_INFO_2A,*PPORT_INFO_2A,*LPPORT_INFO_2A;
  typedef struct _PORT_INFO_2W {
    LPWSTR pPortName;
    LPWSTR pMonitorName;
    LPWSTR pDescription;
    DWORD fPortType;
    DWORD Reserved;
  } PORT_INFO_2W,*PPORT_INFO_2W,*LPPORT_INFO_2W;
  typedef PORT_INFO_2A PORT_INFO_2;
  typedef PPORT_INFO_2A PPORT_INFO_2;
  typedef LPPORT_INFO_2A LPPORT_INFO_2;
#define PORT_TYPE_WRITE 0x0001
#define PORT_TYPE_READ 0x0002
#define PORT_TYPE_REDIRECTED 0x0004
#define PORT_TYPE_NET_ATTACHED 0x0008
  typedef struct _PORT_INFO_3A {
    DWORD dwStatus;
    LPSTR pszStatus;
    DWORD dwSeverity;
  } PORT_INFO_3A,*PPORT_INFO_3A,*LPPORT_INFO_3A;
  typedef struct _PORT_INFO_3W {
    DWORD dwStatus;
    LPWSTR pszStatus;
    DWORD dwSeverity;
  } PORT_INFO_3W,*PPORT_INFO_3W,*LPPORT_INFO_3W;
  typedef PORT_INFO_3A PORT_INFO_3;
  typedef PPORT_INFO_3A PPORT_INFO_3;
  typedef LPPORT_INFO_3A LPPORT_INFO_3;
#define PORT_STATUS_TYPE_ERROR 1
#define PORT_STATUS_TYPE_WARNING 2
#define PORT_STATUS_TYPE_INFO 3
#define PORT_STATUS_OFFLINE 1
#define PORT_STATUS_PAPER_JAM 2
#define PORT_STATUS_PAPER_OUT 3
#define PORT_STATUS_OUTPUT_BIN_FULL 4
#define PORT_STATUS_PAPER_PROBLEM 5
#define PORT_STATUS_NO_TONER 6
#define PORT_STATUS_DOOR_OPEN 7
#define PORT_STATUS_USER_INTERVENTION 8
#define PORT_STATUS_OUT_OF_MEMORY 9
#define PORT_STATUS_TONER_LOW 10
#define PORT_STATUS_WARMING_UP 11
#define PORT_STATUS_POWER_SAVE 12
  typedef struct _MONITOR_INFO_1A{
    LPSTR pName;
  } MONITOR_INFO_1A,*PMONITOR_INFO_1A,*LPMONITOR_INFO_1A;
  typedef struct _MONITOR_INFO_1W{
    LPWSTR pName;
  } MONITOR_INFO_1W,*PMONITOR_INFO_1W,*LPMONITOR_INFO_1W;
  typedef MONITOR_INFO_1A MONITOR_INFO_1;
  typedef PMONITOR_INFO_1A PMONITOR_INFO_1;
  typedef LPMONITOR_INFO_1A LPMONITOR_INFO_1;
  typedef struct _MONITOR_INFO_2A {
    LPSTR pName;
    LPSTR pEnvironment;
    LPSTR pDLLName;
  } MONITOR_INFO_2A,*PMONITOR_INFO_2A,*LPMONITOR_INFO_2A;
  typedef struct _MONITOR_INFO_2W {
    LPWSTR pName;
    LPWSTR pEnvironment;
    LPWSTR pDLLName;
  } MONITOR_INFO_2W,*PMONITOR_INFO_2W,*LPMONITOR_INFO_2W;
  typedef MONITOR_INFO_2A MONITOR_INFO_2;
  typedef PMONITOR_INFO_2A PMONITOR_INFO_2;
  typedef LPMONITOR_INFO_2A LPMONITOR_INFO_2;
  typedef struct _DATATYPES_INFO_1A {
    LPSTR pName;
  } DATATYPES_INFO_1A,*PDATATYPES_INFO_1A,*LPDATATYPES_INFO_1A;
  typedef struct _DATATYPES_INFO_1W {
    LPWSTR pName;
  } DATATYPES_INFO_1W,*PDATATYPES_INFO_1W,*LPDATATYPES_INFO_1W;
  typedef DATATYPES_INFO_1A DATATYPES_INFO_1;
  typedef PDATATYPES_INFO_1A PDATATYPES_INFO_1;
  typedef LPDATATYPES_INFO_1A LPDATATYPES_INFO_1;
  typedef struct _PRINTER_DEFAULTSA {
    LPSTR pDatatype;
    LPDEVMODEA pDevMode;
    ACCESS_MASK DesiredAccess;
  } PRINTER_DEFAULTSA,*PPRINTER_DEFAULTSA,*LPPRINTER_DEFAULTSA;
  typedef struct _PRINTER_DEFAULTSW {
    LPWSTR pDatatype;
    LPDEVMODEW pDevMode;
    ACCESS_MASK DesiredAccess;
  } PRINTER_DEFAULTSW,*PPRINTER_DEFAULTSW,*LPPRINTER_DEFAULTSW;
  typedef PRINTER_DEFAULTSA PRINTER_DEFAULTS;
  typedef PPRINTER_DEFAULTSA PPRINTER_DEFAULTS;
  typedef LPPRINTER_DEFAULTSA LPPRINTER_DEFAULTS;
  typedef struct _PRINTER_ENUM_VALUESA {
    LPSTR pValueName;
    DWORD cbValueName;
    DWORD dwType;
    LPBYTE pData;
    DWORD cbData;
  } PRINTER_ENUM_VALUESA,*PPRINTER_ENUM_VALUESA,*LPPRINTER_ENUM_VALUESA;
  typedef struct _PRINTER_ENUM_VALUESW {
    LPWSTR pValueName;
    DWORD cbValueName;
    DWORD dwType;
    LPBYTE pData;
    DWORD cbData;
  } PRINTER_ENUM_VALUESW,*PPRINTER_ENUM_VALUESW,*LPPRINTER_ENUM_VALUESW;
  typedef PRINTER_ENUM_VALUESA PRINTER_ENUM_VALUES;
  typedef PPRINTER_ENUM_VALUESA PPRINTER_ENUM_VALUES;
  typedef LPPRINTER_ENUM_VALUESA LPPRINTER_ENUM_VALUES;
#define EnumPrinters __MINGW_NAME_AW(EnumPrinters)
  WINBOOL __attribute__((__stdcall__)) EnumPrintersA(DWORD Flags,LPSTR Name,DWORD Level,LPBYTE pPrinterEnum,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  WINBOOL __attribute__((__stdcall__)) EnumPrintersW(DWORD Flags,LPWSTR Name,DWORD Level,LPBYTE pPrinterEnum,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
#define PRINTER_ENUM_DEFAULT 0x00000001
#define PRINTER_ENUM_LOCAL 0x00000002
#define PRINTER_ENUM_CONNECTIONS 0x00000004
#define PRINTER_ENUM_FAVORITE 0x00000004
#define PRINTER_ENUM_NAME 0x00000008
#define PRINTER_ENUM_REMOTE 0x00000010
#define PRINTER_ENUM_SHARED 0x00000020
#define PRINTER_ENUM_NETWORK 0x00000040
#define PRINTER_ENUM_EXPAND 0x00004000
#define PRINTER_ENUM_CONTAINER 0x00008000
#define PRINTER_ENUM_ICONMASK 0x00ff0000
#define PRINTER_ENUM_ICON1 0x00010000
#define PRINTER_ENUM_ICON2 0x00020000
#define PRINTER_ENUM_ICON3 0x00040000
#define PRINTER_ENUM_ICON4 0x00080000
#define PRINTER_ENUM_ICON5 0x00100000
#define PRINTER_ENUM_ICON6 0x00200000
#define PRINTER_ENUM_ICON7 0x00400000
#define PRINTER_ENUM_ICON8 0x00800000
#define PRINTER_ENUM_HIDE 0x01000000
#define SPOOL_FILE_PERSISTENT 0x00000001
#define SPOOL_FILE_TEMPORARY 0x00000002
#define OpenPrinter __MINGW_NAME_AW(OpenPrinter)
#define ResetPrinter __MINGW_NAME_AW(ResetPrinter)
#define SetJob __MINGW_NAME_AW(SetJob)
#define GetJob __MINGW_NAME_AW(GetJob)
#define EnumJobs __MINGW_NAME_AW(EnumJobs)
#define AddPrinter __MINGW_NAME_AW(AddPrinter)
#define SetPrinter __MINGW_NAME_AW(SetPrinter)
#define GetPrinter __MINGW_NAME_AW(GetPrinter)
#define AddPrinterDriver __MINGW_NAME_AW(AddPrinterDriver)
#define AddPrinterDriverEx __MINGW_NAME_AW(AddPrinterDriverEx)
#define EnumPrinterDrivers __MINGW_NAME_AW(EnumPrinterDrivers)
#define GetPrinterDriver __MINGW_NAME_AW(GetPrinterDriver)
#define GetPrinterDriverDirectory __MINGW_NAME_AW(GetPrinterDriverDirectory)
#define DeletePrinterDriver __MINGW_NAME_AW(DeletePrinterDriver)
#define DeletePrinterDriverEx __MINGW_NAME_AW(DeletePrinterDriverEx)
#define AddPrintProcessor __MINGW_NAME_AW(AddPrintProcessor)
#define EnumPrintProcessors __MINGW_NAME_AW(EnumPrintProcessors)
#define GetPrintProcessorDirectory __MINGW_NAME_AW(GetPrintProcessorDirectory)
#define EnumPrintProcessorDatatypes __MINGW_NAME_AW(EnumPrintProcessorDatatypes)
#define DeletePrintProcessor __MINGW_NAME_AW(DeletePrintProcessor)
#define StartDocPrinter __MINGW_NAME_AW(StartDocPrinter)
#define AddJob __MINGW_NAME_AW(AddJob)
#define DocumentProperties __MINGW_NAME_AW(DocumentProperties)
#define AdvancedDocumentProperties __MINGW_NAME_AW(AdvancedDocumentProperties)
#define GetPrinterData __MINGW_NAME_AW(GetPrinterData)
#define GetPrinterDataEx __MINGW_NAME_AW(GetPrinterDataEx)
#define EnumPrinterData __MINGW_NAME_AW(EnumPrinterData)
#define EnumPrinterDataEx __MINGW_NAME_AW(EnumPrinterDataEx)
#define EnumPrinterKey __MINGW_NAME_AW(EnumPrinterKey)
#define SetPrinterData __MINGW_NAME_AW(SetPrinterData)
#define SetPrinterDataEx __MINGW_NAME_AW(SetPrinterDataEx)
#define DeletePrinterData __MINGW_NAME_AW(DeletePrinterData)
#define DeletePrinterDataEx __MINGW_NAME_AW(DeletePrinterDataEx)
#define DeletePrinterKey __MINGW_NAME_AW(DeletePrinterKey)
  WINBOOL __attribute__((__stdcall__)) OpenPrinterA(LPSTR pPrinterName,LPHANDLE phPrinter,LPPRINTER_DEFAULTSA pDefault);
  WINBOOL __attribute__((__stdcall__)) OpenPrinterW(LPWSTR pPrinterName,LPHANDLE phPrinter,LPPRINTER_DEFAULTSW pDefault);
  WINBOOL __attribute__((__stdcall__)) ResetPrinterA(HANDLE hPrinter,LPPRINTER_DEFAULTSA pDefault);
  WINBOOL __attribute__((__stdcall__)) ResetPrinterW(HANDLE hPrinter,LPPRINTER_DEFAULTSW pDefault);
  WINBOOL __attribute__((__stdcall__)) SetJobA(HANDLE hPrinter,DWORD JobId,DWORD Level,LPBYTE pJob,DWORD Command);
  WINBOOL __attribute__((__stdcall__)) SetJobW(HANDLE hPrinter,DWORD JobId,DWORD Level,LPBYTE pJob,DWORD Command);
  WINBOOL __attribute__((__stdcall__)) GetJobA(HANDLE hPrinter,DWORD JobId,DWORD Level,LPBYTE pJob,DWORD cbBuf,LPDWORD pcbNeeded);
  WINBOOL __attribute__((__stdcall__)) GetJobW(HANDLE hPrinter,DWORD JobId,DWORD Level,LPBYTE pJob,DWORD cbBuf,LPDWORD pcbNeeded);
  WINBOOL __attribute__((__stdcall__)) EnumJobsA(HANDLE hPrinter,DWORD FirstJob,DWORD NoJobs,DWORD Level,LPBYTE pJob,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  WINBOOL __attribute__((__stdcall__)) EnumJobsW(HANDLE hPrinter,DWORD FirstJob,DWORD NoJobs,DWORD Level,LPBYTE pJob,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  HANDLE __attribute__((__stdcall__)) AddPrinterA(LPSTR pName,DWORD Level,LPBYTE pPrinter);
  HANDLE __attribute__((__stdcall__)) AddPrinterW(LPWSTR pName,DWORD Level,LPBYTE pPrinter);
  WINBOOL __attribute__((__stdcall__)) DeletePrinter(HANDLE hPrinter);
  WINBOOL __attribute__((__stdcall__)) SetPrinterA(HANDLE hPrinter,DWORD Level,LPBYTE pPrinter,DWORD Command);
  WINBOOL __attribute__((__stdcall__)) SetPrinterW(HANDLE hPrinter,DWORD Level,LPBYTE pPrinter,DWORD Command);
  WINBOOL __attribute__((__stdcall__)) GetPrinterA(HANDLE hPrinter,DWORD Level,LPBYTE pPrinter,DWORD cbBuf,LPDWORD pcbNeeded);
  WINBOOL __attribute__((__stdcall__)) GetPrinterW(HANDLE hPrinter,DWORD Level,LPBYTE pPrinter,DWORD cbBuf,LPDWORD pcbNeeded);
  WINBOOL __attribute__((__stdcall__)) AddPrinterDriverA(LPSTR pName,DWORD Level,LPBYTE pDriverInfo);
  WINBOOL __attribute__((__stdcall__)) AddPrinterDriverW(LPWSTR pName,DWORD Level,LPBYTE pDriverInfo);
  WINBOOL __attribute__((__stdcall__)) AddPrinterDriverExA(LPSTR pName,DWORD Level,LPBYTE pDriverInfo,DWORD dwFileCopyFlags);
  WINBOOL __attribute__((__stdcall__)) AddPrinterDriverExW(LPWSTR pName,DWORD Level,LPBYTE pDriverInfo,DWORD dwFileCopyFlags);
  WINBOOL __attribute__((__stdcall__)) EnumPrinterDriversA(LPSTR pName,LPSTR pEnvironment,DWORD Level,LPBYTE pDriverInfo,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  WINBOOL __attribute__((__stdcall__)) EnumPrinterDriversW(LPWSTR pName,LPWSTR pEnvironment,DWORD Level,LPBYTE pDriverInfo,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  WINBOOL __attribute__((__stdcall__)) GetPrinterDriverA(HANDLE hPrinter,LPSTR pEnvironment,DWORD Level,LPBYTE pDriverInfo,DWORD cbBuf,LPDWORD pcbNeeded);
  WINBOOL __attribute__((__stdcall__)) GetPrinterDriverW(HANDLE hPrinter,LPWSTR pEnvironment,DWORD Level,LPBYTE pDriverInfo,DWORD cbBuf,LPDWORD pcbNeeded);
  WINBOOL __attribute__((__stdcall__)) GetPrinterDriverDirectoryA(LPSTR pName,LPSTR pEnvironment,DWORD Level,LPBYTE pDriverDirectory,DWORD cbBuf,LPDWORD pcbNeeded);
  WINBOOL __attribute__((__stdcall__)) GetPrinterDriverDirectoryW(LPWSTR pName,LPWSTR pEnvironment,DWORD Level,LPBYTE pDriverDirectory,DWORD cbBuf,LPDWORD pcbNeeded);
  WINBOOL __attribute__((__stdcall__)) DeletePrinterDriverA(LPSTR pName,LPSTR pEnvironment,LPSTR pDriverName);
  WINBOOL __attribute__((__stdcall__)) DeletePrinterDriverW(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pDriverName);
  WINBOOL __attribute__((__stdcall__)) DeletePrinterDriverExA(LPSTR pName,LPSTR pEnvironment,LPSTR pDriverName,DWORD dwDeleteFlag,DWORD dwVersionFlag);
  WINBOOL __attribute__((__stdcall__)) DeletePrinterDriverExW(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pDriverName,DWORD dwDeleteFlag,DWORD dwVersionFlag);
  WINBOOL __attribute__((__stdcall__)) AddPrintProcessorA(LPSTR pName,LPSTR pEnvironment,LPSTR pPathName,LPSTR pPrintProcessorName);
  WINBOOL __attribute__((__stdcall__)) AddPrintProcessorW(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pPathName,LPWSTR pPrintProcessorName);
  WINBOOL __attribute__((__stdcall__)) EnumPrintProcessorsA(LPSTR pName,LPSTR pEnvironment,DWORD Level,LPBYTE pPrintProcessorInfo,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  WINBOOL __attribute__((__stdcall__)) EnumPrintProcessorsW(LPWSTR pName,LPWSTR pEnvironment,DWORD Level,LPBYTE pPrintProcessorInfo,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  WINBOOL __attribute__((__stdcall__)) GetPrintProcessorDirectoryA(LPSTR pName,LPSTR pEnvironment,DWORD Level,LPBYTE pPrintProcessorInfo,DWORD cbBuf,LPDWORD pcbNeeded);
  WINBOOL __attribute__((__stdcall__)) GetPrintProcessorDirectoryW(LPWSTR pName,LPWSTR pEnvironment,DWORD Level,LPBYTE pPrintProcessorInfo,DWORD cbBuf,LPDWORD pcbNeeded);
  WINBOOL __attribute__((__stdcall__)) EnumPrintProcessorDatatypesA(LPSTR pName,LPSTR pPrintProcessorName,DWORD Level,LPBYTE pDatatypes,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  WINBOOL __attribute__((__stdcall__)) EnumPrintProcessorDatatypesW(LPWSTR pName,LPWSTR pPrintProcessorName,DWORD Level,LPBYTE pDatatypes,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  WINBOOL __attribute__((__stdcall__)) DeletePrintProcessorA(LPSTR pName,LPSTR pEnvironment,LPSTR pPrintProcessorName);
  WINBOOL __attribute__((__stdcall__)) DeletePrintProcessorW(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pPrintProcessorName);
  DWORD __attribute__((__stdcall__)) StartDocPrinterA(HANDLE hPrinter,DWORD Level,LPBYTE pDocInfo);
  DWORD __attribute__((__stdcall__)) StartDocPrinterW(HANDLE hPrinter,DWORD Level,LPBYTE pDocInfo);
  WINBOOL __attribute__((__stdcall__)) StartPagePrinter(HANDLE hPrinter);
  WINBOOL __attribute__((__stdcall__)) WritePrinter(HANDLE hPrinter,LPVOID pBuf,DWORD cbBuf,LPDWORD pcWritten);
  WINBOOL __attribute__((__stdcall__)) FlushPrinter(HANDLE hPrinter,LPVOID pBuf,DWORD cbBuf,LPDWORD pcWritten,DWORD cSleep);
  WINBOOL __attribute__((__stdcall__)) EndPagePrinter(HANDLE hPrinter);
  WINBOOL __attribute__((__stdcall__)) AbortPrinter(HANDLE hPrinter);
  WINBOOL __attribute__((__stdcall__)) ReadPrinter(HANDLE hPrinter,LPVOID pBuf,DWORD cbBuf,LPDWORD pNoBytesRead);
  WINBOOL __attribute__((__stdcall__)) EndDocPrinter(HANDLE hPrinter);
  WINBOOL __attribute__((__stdcall__)) AddJobA(HANDLE hPrinter,DWORD Level,LPBYTE pData,DWORD cbBuf,LPDWORD pcbNeeded);
  WINBOOL __attribute__((__stdcall__)) AddJobW(HANDLE hPrinter,DWORD Level,LPBYTE pData,DWORD cbBuf,LPDWORD pcbNeeded);
  WINBOOL __attribute__((__stdcall__)) ScheduleJob(HANDLE hPrinter,DWORD JobId);
  WINBOOL __attribute__((__stdcall__)) PrinterProperties(HWND hWnd,HANDLE hPrinter);
  LONG __attribute__((__stdcall__)) DocumentPropertiesA(HWND hWnd,HANDLE hPrinter,LPSTR pDeviceName,PDEVMODEA pDevModeOutput,PDEVMODEA pDevModeInput,DWORD fMode);
  LONG __attribute__((__stdcall__)) DocumentPropertiesW(HWND hWnd,HANDLE hPrinter,LPWSTR pDeviceName,PDEVMODEW pDevModeOutput,PDEVMODEW pDevModeInput,DWORD fMode);
  LONG __attribute__((__stdcall__)) AdvancedDocumentPropertiesA(HWND hWnd,HANDLE hPrinter,LPSTR pDeviceName,PDEVMODEA pDevModeOutput,PDEVMODEA pDevModeInput);
  LONG __attribute__((__stdcall__)) AdvancedDocumentPropertiesW(HWND hWnd,HANDLE hPrinter,LPWSTR pDeviceName,PDEVMODEW pDevModeOutput,PDEVMODEW pDevModeInput);
  LONG ExtDeviceMode(HWND hWnd,HANDLE hInst,LPDEVMODEA pDevModeOutput,LPSTR pDeviceName,LPSTR pPort,LPDEVMODEA pDevModeInput,LPSTR pProfile,DWORD fMode);
  DWORD __attribute__((__stdcall__)) GetPrinterDataA(HANDLE hPrinter,LPSTR pValueName,LPDWORD pType,LPBYTE pData,DWORD nSize,LPDWORD pcbNeeded);
  DWORD __attribute__((__stdcall__)) GetPrinterDataW(HANDLE hPrinter,LPWSTR pValueName,LPDWORD pType,LPBYTE pData,DWORD nSize,LPDWORD pcbNeeded);
  DWORD __attribute__((__stdcall__)) GetPrinterDataExA(HANDLE hPrinter,LPCSTR pKeyName,LPCSTR pValueName,LPDWORD pType,LPBYTE pData,DWORD nSize,LPDWORD pcbNeeded);
  DWORD __attribute__((__stdcall__)) GetPrinterDataExW(HANDLE hPrinter,LPCWSTR pKeyName,LPCWSTR pValueName,LPDWORD pType,LPBYTE pData,DWORD nSize,LPDWORD pcbNeeded);
  DWORD __attribute__((__stdcall__)) EnumPrinterDataA(HANDLE hPrinter,DWORD dwIndex,LPSTR pValueName,DWORD cbValueName,LPDWORD pcbValueName,LPDWORD pType,LPBYTE pData,DWORD cbData,LPDWORD pcbData);
  DWORD __attribute__((__stdcall__)) EnumPrinterDataW(HANDLE hPrinter,DWORD dwIndex,LPWSTR pValueName,DWORD cbValueName,LPDWORD pcbValueName,LPDWORD pType,LPBYTE pData,DWORD cbData,LPDWORD pcbData);
  DWORD __attribute__((__stdcall__)) EnumPrinterDataExA(HANDLE hPrinter,LPCSTR pKeyName,LPBYTE pEnumValues,DWORD cbEnumValues,LPDWORD pcbEnumValues,LPDWORD pnEnumValues);
  DWORD __attribute__((__stdcall__)) EnumPrinterDataExW(HANDLE hPrinter,LPCWSTR pKeyName,LPBYTE pEnumValues,DWORD cbEnumValues,LPDWORD pcbEnumValues,LPDWORD pnEnumValues);
  DWORD __attribute__((__stdcall__)) EnumPrinterKeyA(HANDLE hPrinter,LPCSTR pKeyName,LPSTR pSubkey,DWORD cbSubkey,LPDWORD pcbSubkey);
  DWORD __attribute__((__stdcall__)) EnumPrinterKeyW(HANDLE hPrinter,LPCWSTR pKeyName,LPWSTR pSubkey,DWORD cbSubkey,LPDWORD pcbSubkey);
  DWORD __attribute__((__stdcall__)) SetPrinterDataA(HANDLE hPrinter,LPSTR pValueName,DWORD Type,LPBYTE pData,DWORD cbData);
  DWORD __attribute__((__stdcall__)) SetPrinterDataW(HANDLE hPrinter,LPWSTR pValueName,DWORD Type,LPBYTE pData,DWORD cbData);
  DWORD __attribute__((__stdcall__)) SetPrinterDataExA(HANDLE hPrinter,LPCSTR pKeyName,LPCSTR pValueName,DWORD Type,LPBYTE pData,DWORD cbData);
  DWORD __attribute__((__stdcall__)) SetPrinterDataExW(HANDLE hPrinter,LPCWSTR pKeyName,LPCWSTR pValueName,DWORD Type,LPBYTE pData,DWORD cbData);
  DWORD __attribute__((__stdcall__)) DeletePrinterDataA(HANDLE hPrinter,LPSTR pValueName);
  DWORD __attribute__((__stdcall__)) DeletePrinterDataW(HANDLE hPrinter,LPWSTR pValueName);
  DWORD __attribute__((__stdcall__)) DeletePrinterDataExA(HANDLE hPrinter,LPCSTR pKeyName,LPCSTR pValueName);
  DWORD __attribute__((__stdcall__)) DeletePrinterDataExW(HANDLE hPrinter,LPCWSTR pKeyName,LPCWSTR pValueName);
  DWORD __attribute__((__stdcall__)) DeletePrinterKeyA(HANDLE hPrinter,LPCSTR pKeyName);
  DWORD __attribute__((__stdcall__)) DeletePrinterKeyW(HANDLE hPrinter,LPCWSTR pKeyName);
#define PRINTER_NOTIFY_TYPE 0x00
#define JOB_NOTIFY_TYPE 0x01
#define PRINTER_NOTIFY_FIELD_SERVER_NAME 0x00
#define PRINTER_NOTIFY_FIELD_PRINTER_NAME 0x01
#define PRINTER_NOTIFY_FIELD_SHARE_NAME 0x02
#define PRINTER_NOTIFY_FIELD_PORT_NAME 0x03
#define PRINTER_NOTIFY_FIELD_DRIVER_NAME 0x04
#define PRINTER_NOTIFY_FIELD_COMMENT 0x05
#define PRINTER_NOTIFY_FIELD_LOCATION 0x06
#define PRINTER_NOTIFY_FIELD_DEVMODE 0x07
#define PRINTER_NOTIFY_FIELD_SEPFILE 0x08
#define PRINTER_NOTIFY_FIELD_PRINT_PROCESSOR 0x09
#define PRINTER_NOTIFY_FIELD_PARAMETERS 0x0A
#define PRINTER_NOTIFY_FIELD_DATATYPE 0x0B
#define PRINTER_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x0C
#define PRINTER_NOTIFY_FIELD_ATTRIBUTES 0x0D
#define PRINTER_NOTIFY_FIELD_PRIORITY 0x0E
#define PRINTER_NOTIFY_FIELD_DEFAULT_PRIORITY 0x0F
#define PRINTER_NOTIFY_FIELD_START_TIME 0x10
#define PRINTER_NOTIFY_FIELD_UNTIL_TIME 0x11
#define PRINTER_NOTIFY_FIELD_STATUS 0x12
#define PRINTER_NOTIFY_FIELD_STATUS_STRING 0x13
#define PRINTER_NOTIFY_FIELD_CJOBS 0x14
#define PRINTER_NOTIFY_FIELD_AVERAGE_PPM 0x15
#define PRINTER_NOTIFY_FIELD_TOTAL_PAGES 0x16
#define PRINTER_NOTIFY_FIELD_PAGES_PRINTED 0x17
#define PRINTER_NOTIFY_FIELD_TOTAL_BYTES 0x18
#define PRINTER_NOTIFY_FIELD_BYTES_PRINTED 0x19
#define PRINTER_NOTIFY_FIELD_OBJECT_GUID 0x1A
#define JOB_NOTIFY_FIELD_PRINTER_NAME 0x00
#define JOB_NOTIFY_FIELD_MACHINE_NAME 0x01
#define JOB_NOTIFY_FIELD_PORT_NAME 0x02
#define JOB_NOTIFY_FIELD_USER_NAME 0x03
#define JOB_NOTIFY_FIELD_NOTIFY_NAME 0x04
#define JOB_NOTIFY_FIELD_DATATYPE 0x05
#define JOB_NOTIFY_FIELD_PRINT_PROCESSOR 0x06
#define JOB_NOTIFY_FIELD_PARAMETERS 0x07
#define JOB_NOTIFY_FIELD_DRIVER_NAME 0x08
#define JOB_NOTIFY_FIELD_DEVMODE 0x09
#define JOB_NOTIFY_FIELD_STATUS 0x0A
#define JOB_NOTIFY_FIELD_STATUS_STRING 0x0B
#define JOB_NOTIFY_FIELD_SECURITY_DESCRIPTOR 0x0C
#define JOB_NOTIFY_FIELD_DOCUMENT 0x0D
#define JOB_NOTIFY_FIELD_PRIORITY 0x0E
#define JOB_NOTIFY_FIELD_POSITION 0x0F
#define JOB_NOTIFY_FIELD_SUBMITTED 0x10
#define JOB_NOTIFY_FIELD_START_TIME 0x11
#define JOB_NOTIFY_FIELD_UNTIL_TIME 0x12
#define JOB_NOTIFY_FIELD_TIME 0x13
#define JOB_NOTIFY_FIELD_TOTAL_PAGES 0x14
#define JOB_NOTIFY_FIELD_PAGES_PRINTED 0x15
#define JOB_NOTIFY_FIELD_TOTAL_BYTES 0x16
#define JOB_NOTIFY_FIELD_BYTES_PRINTED 0x17
  typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE {
    WORD Type;
    WORD Reserved0;
    DWORD Reserved1;
    DWORD Reserved2;
    DWORD Count;
    PWORD pFields;
  } PRINTER_NOTIFY_OPTIONS_TYPE,*PPRINTER_NOTIFY_OPTIONS_TYPE,*LPPRINTER_NOTIFY_OPTIONS_TYPE;
#define PRINTER_NOTIFY_OPTIONS_REFRESH 0x01
  typedef struct _PRINTER_NOTIFY_OPTIONS {
    DWORD Version;
    DWORD Flags;
    DWORD Count;
    PPRINTER_NOTIFY_OPTIONS_TYPE pTypes;
  } PRINTER_NOTIFY_OPTIONS,*PPRINTER_NOTIFY_OPTIONS,*LPPRINTER_NOTIFY_OPTIONS;
#define PRINTER_NOTIFY_INFO_DISCARDED 0x01
  typedef struct _PRINTER_NOTIFY_INFO_DATA {
    WORD Type;
    WORD Field;
    DWORD Reserved;
    DWORD Id;
    union {
      DWORD adwData[2];
      struct {
 DWORD cbBuf;
 LPVOID pBuf;
      } Data;
    } NotifyData;
  } PRINTER_NOTIFY_INFO_DATA,*PPRINTER_NOTIFY_INFO_DATA,*LPPRINTER_NOTIFY_INFO_DATA;
  typedef struct _PRINTER_NOTIFY_INFO {
    DWORD Version;
    DWORD Flags;
    DWORD Count;
    PRINTER_NOTIFY_INFO_DATA aData[1];
  } PRINTER_NOTIFY_INFO,*PPRINTER_NOTIFY_INFO,*LPPRINTER_NOTIFY_INFO;
  typedef struct _BINARY_CONTAINER{
    DWORD cbBuf;
    LPBYTE pData;
  } BINARY_CONTAINER,*PBINARY_CONTAINER;
  typedef struct _BIDI_DATA{
    DWORD dwBidiType;
    union {
      WINBOOL bData;
      LONG iData;
      LPWSTR sData;
      FLOAT fData;
      BINARY_CONTAINER biData;
    } u;
  } BIDI_DATA,*PBIDI_DATA,*LPBIDI_DATA;
  typedef struct _BIDI_REQUEST_DATA{
    DWORD dwReqNumber;
    LPWSTR pSchema;
    BIDI_DATA data;
  } BIDI_REQUEST_DATA ,*PBIDI_REQUEST_DATA ,*LPBIDI_REQUEST_DATA;
  typedef struct _BIDI_REQUEST_CONTAINER{
    DWORD Version;
    DWORD Flags;
    DWORD Count;
    BIDI_REQUEST_DATA aData[1 ];
  }BIDI_REQUEST_CONTAINER,*PBIDI_REQUEST_CONTAINER,*LPBIDI_REQUEST_CONTAINER;
  typedef struct _BIDI_RESPONSE_DATA{
    DWORD dwResult;
    DWORD dwReqNumber;
    LPWSTR pSchema;
    BIDI_DATA data;
  } BIDI_RESPONSE_DATA,*PBIDI_RESPONSE_DATA,*LPBIDI_RESPONSE_DATA;
  typedef struct _BIDI_RESPONSE_CONTAINER{
    DWORD Version;
    DWORD Flags;
    DWORD Count;
    BIDI_RESPONSE_DATA aData[1 ];
  } BIDI_RESPONSE_CONTAINER,*PBIDI_RESPONSE_CONTAINER,*LPBIDI_RESPONSE_CONTAINER;
#define BIDI_ACTION_ENUM_SCHEMA L"EnumSchema"
#define BIDI_ACTION_GET L"Get"
#define BIDI_ACTION_SET L"Set"
#define BIDI_ACTION_GET_ALL L"GetAll"
  typedef enum {
    BIDI_NULL = 0,BIDI_INT = 1,BIDI_FLOAT = 2,BIDI_BOOL = 3,BIDI_STRING = 4,BIDI_TEXT = 5,BIDI_ENUM = 6,BIDI_BLOB = 7
  } BIDI_TYPE;
#define BIDI_ACCESS_ADMINISTRATOR 0x1
#define BIDI_ACCESS_USER 0x2
#define ERROR_BIDI_STATUS_OK 0
#define ERROR_BIDI_NOT_SUPPORTED ERROR_NOT_SUPPORTED
#define ERROR_BIDI_ERROR_BASE 13000
#define ERROR_BIDI_STATUS_WARNING (ERROR_BIDI_ERROR_BASE + 1)
#define ERROR_BIDI_SCHEMA_READ_ONLY (ERROR_BIDI_ERROR_BASE + 2)
#define ERROR_BIDI_SERVER_OFFLINE (ERROR_BIDI_ERROR_BASE + 3)
#define ERROR_BIDI_DEVICE_OFFLINE (ERROR_BIDI_ERROR_BASE + 4)
#define ERROR_BIDI_SCHEMA_NOT_SUPPORTED (ERROR_BIDI_ERROR_BASE + 5)
  DWORD __attribute__((__stdcall__)) WaitForPrinterChange(HANDLE hPrinter,DWORD Flags);
  HANDLE __attribute__((__stdcall__)) FindFirstPrinterChangeNotification(HANDLE hPrinter,DWORD fdwFlags,DWORD fdwOptions,LPVOID pPrinterNotifyOptions);
  WINBOOL __attribute__((__stdcall__)) FindNextPrinterChangeNotification(HANDLE hChange,PDWORD pdwChange,LPVOID pPrinterNotifyOptions,LPVOID *ppPrinterNotifyInfo);
  WINBOOL __attribute__((__stdcall__)) FreePrinterNotifyInfo (PPRINTER_NOTIFY_INFO pPrinterNotifyInfo);
  WINBOOL __attribute__((__stdcall__)) FindClosePrinterChangeNotification(HANDLE hChange);
#define PRINTER_CHANGE_ADD_PRINTER 0x00000001
#define PRINTER_CHANGE_SET_PRINTER 0x00000002
#define PRINTER_CHANGE_DELETE_PRINTER 0x00000004
#define PRINTER_CHANGE_FAILED_CONNECTION_PRINTER 0x00000008
#define PRINTER_CHANGE_PRINTER 0x000000FF
#define PRINTER_CHANGE_ADD_JOB 0x00000100
#define PRINTER_CHANGE_SET_JOB 0x00000200
#define PRINTER_CHANGE_DELETE_JOB 0x00000400
#define PRINTER_CHANGE_WRITE_JOB 0x00000800
#define PRINTER_CHANGE_JOB 0x0000FF00
#define PRINTER_CHANGE_ADD_FORM 0x00010000
#define PRINTER_CHANGE_SET_FORM 0x00020000
#define PRINTER_CHANGE_DELETE_FORM 0x00040000
#define PRINTER_CHANGE_FORM 0x00070000
#define PRINTER_CHANGE_ADD_PORT 0x00100000
#define PRINTER_CHANGE_CONFIGURE_PORT 0x00200000
#define PRINTER_CHANGE_DELETE_PORT 0x00400000
#define PRINTER_CHANGE_PORT 0x00700000
#define PRINTER_CHANGE_ADD_PRINT_PROCESSOR 0x01000000
#define PRINTER_CHANGE_DELETE_PRINT_PROCESSOR 0x04000000
#define PRINTER_CHANGE_PRINT_PROCESSOR 0x07000000
#define PRINTER_CHANGE_ADD_PRINTER_DRIVER 0x10000000
#define PRINTER_CHANGE_SET_PRINTER_DRIVER 0x20000000
#define PRINTER_CHANGE_DELETE_PRINTER_DRIVER 0x40000000
#define PRINTER_CHANGE_PRINTER_DRIVER 0x70000000
#define PRINTER_CHANGE_TIMEOUT 0x80000000
#define PRINTER_CHANGE_ALL 0x7777FFFF
#define PrinterMessageBox __MINGW_NAME_AW(PrinterMessageBox)
#define AddForm __MINGW_NAME_AW(AddForm)
#define DeleteForm __MINGW_NAME_AW(DeleteForm)
#define GetForm __MINGW_NAME_AW(GetForm)
#define SetForm __MINGW_NAME_AW(SetForm)
#define EnumForms __MINGW_NAME_AW(EnumForms)
#define EnumMonitors __MINGW_NAME_AW(EnumMonitors)
#define AddMonitor __MINGW_NAME_AW(AddMonitor)
#define DeleteMonitor __MINGW_NAME_AW(DeleteMonitor)
#define EnumPorts __MINGW_NAME_AW(EnumPorts)
#define AddPort __MINGW_NAME_AW(AddPort)
#define ConfigurePort __MINGW_NAME_AW(ConfigurePort)
#define DeletePort __MINGW_NAME_AW(DeletePort)
#define GetDefaultPrinter __MINGW_NAME_AW(GetDefaultPrinter)
#define SetDefaultPrinter __MINGW_NAME_AW(SetDefaultPrinter)
#define SetPort __MINGW_NAME_AW(SetPort)
#define AddPrinterConnection __MINGW_NAME_AW(AddPrinterConnection)
#define DeletePrinterConnection __MINGW_NAME_AW(DeletePrinterConnection)
  DWORD __attribute__((__stdcall__)) PrinterMessageBoxA(HANDLE hPrinter,DWORD Error,HWND hWnd,LPSTR pText,LPSTR pCaption,DWORD dwType);
  DWORD __attribute__((__stdcall__)) PrinterMessageBoxW(HANDLE hPrinter,DWORD Error,HWND hWnd,LPWSTR pText,LPWSTR pCaption,DWORD dwType);
#define PRINTER_ERROR_INFORMATION 0x80000000
#define PRINTER_ERROR_WARNING 0x40000000
#define PRINTER_ERROR_SEVERE 0x20000000
#define PRINTER_ERROR_OUTOFPAPER 0x00000001
#define PRINTER_ERROR_JAM 0x00000002
#define PRINTER_ERROR_OUTOFTONER 0x00000004
  WINBOOL __attribute__((__stdcall__)) ClosePrinter(HANDLE hPrinter);
  WINBOOL __attribute__((__stdcall__)) AddFormA(HANDLE hPrinter,DWORD Level,LPBYTE pForm);
  WINBOOL __attribute__((__stdcall__)) AddFormW(HANDLE hPrinter,DWORD Level,LPBYTE pForm);
  WINBOOL __attribute__((__stdcall__)) DeleteFormA(HANDLE hPrinter,LPSTR pFormName);
  WINBOOL __attribute__((__stdcall__)) DeleteFormW(HANDLE hPrinter,LPWSTR pFormName);
  WINBOOL __attribute__((__stdcall__)) GetFormA(HANDLE hPrinter,LPSTR pFormName,DWORD Level,LPBYTE pForm,DWORD cbBuf,LPDWORD pcbNeeded);
  WINBOOL __attribute__((__stdcall__)) GetFormW(HANDLE hPrinter,LPWSTR pFormName,DWORD Level,LPBYTE pForm,DWORD cbBuf,LPDWORD pcbNeeded);
  WINBOOL __attribute__((__stdcall__)) SetFormA(HANDLE hPrinter,LPSTR pFormName,DWORD Level,LPBYTE pForm);
  WINBOOL __attribute__((__stdcall__)) SetFormW(HANDLE hPrinter,LPWSTR pFormName,DWORD Level,LPBYTE pForm);
  WINBOOL __attribute__((__stdcall__)) EnumFormsA(HANDLE hPrinter,DWORD Level,LPBYTE pForm,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  WINBOOL __attribute__((__stdcall__)) EnumFormsW(HANDLE hPrinter,DWORD Level,LPBYTE pForm,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  WINBOOL __attribute__((__stdcall__)) EnumMonitorsA(LPSTR pName,DWORD Level,LPBYTE pMonitor,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  WINBOOL __attribute__((__stdcall__)) EnumMonitorsW(LPWSTR pName,DWORD Level,LPBYTE pMonitor,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  WINBOOL __attribute__((__stdcall__)) AddMonitorA(LPSTR pName,DWORD Level,LPBYTE pMonitorInfo);
  WINBOOL __attribute__((__stdcall__)) AddMonitorW(LPWSTR pName,DWORD Level,LPBYTE pMonitorInfo);
  WINBOOL __attribute__((__stdcall__)) DeleteMonitorA(LPSTR pName,LPSTR pEnvironment,LPSTR pMonitorName);
  WINBOOL __attribute__((__stdcall__)) DeleteMonitorW(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pMonitorName);
  WINBOOL __attribute__((__stdcall__)) EnumPortsA(LPSTR pName,DWORD Level,LPBYTE pPorts,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  WINBOOL __attribute__((__stdcall__)) EnumPortsW(LPWSTR pName,DWORD Level,LPBYTE pPorts,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned);
  WINBOOL __attribute__((__stdcall__)) AddPortA(LPSTR pName,HWND hWnd,LPSTR pMonitorName);
  WINBOOL __attribute__((__stdcall__)) AddPortW(LPWSTR pName,HWND hWnd,LPWSTR pMonitorName);
  WINBOOL __attribute__((__stdcall__)) ConfigurePortA(LPSTR pName,HWND hWnd,LPSTR pPortName);
  WINBOOL __attribute__((__stdcall__)) ConfigurePortW(LPWSTR pName,HWND hWnd,LPWSTR pPortName);
  WINBOOL __attribute__((__stdcall__)) DeletePortA(LPSTR pName,HWND hWnd,LPSTR pPortName);
  WINBOOL __attribute__((__stdcall__)) DeletePortW(LPWSTR pName,HWND hWnd,LPWSTR pPortName);
  WINBOOL __attribute__((__stdcall__)) XcvDataW(HANDLE hXcv,PCWSTR pszDataName,PBYTE pInputData,DWORD cbInputData,PBYTE pOutputData,DWORD cbOutputData,PDWORD pcbOutputNeeded,PDWORD pdwStatus);
#define XcvData XcvDataW
  WINBOOL __attribute__((__stdcall__)) GetDefaultPrinterA(LPSTR pszBuffer,LPDWORD pcchBuffer);
  WINBOOL __attribute__((__stdcall__)) GetDefaultPrinterW(LPWSTR pszBuffer,LPDWORD pcchBuffer);
  WINBOOL __attribute__((__stdcall__)) SetDefaultPrinterA(LPCSTR pszPrinter);
  WINBOOL __attribute__((__stdcall__)) SetDefaultPrinterW(LPCWSTR pszPrinter);
  WINBOOL __attribute__((__stdcall__)) SetPortA(LPSTR pName,LPSTR pPortName,DWORD dwLevel,LPBYTE pPortInfo);
  WINBOOL __attribute__((__stdcall__)) SetPortW(LPWSTR pName,LPWSTR pPortName,DWORD dwLevel,LPBYTE pPortInfo);
  WINBOOL __attribute__((__stdcall__)) AddPrinterConnectionA(LPSTR pName);
  WINBOOL __attribute__((__stdcall__)) AddPrinterConnectionW(LPWSTR pName);
  WINBOOL __attribute__((__stdcall__)) DeletePrinterConnectionA(LPSTR pName);
  WINBOOL __attribute__((__stdcall__)) DeletePrinterConnectionW(LPWSTR pName);
  HANDLE __attribute__((__stdcall__)) ConnectToPrinterDlg(HWND hwnd,DWORD Flags);
  typedef struct _PROVIDOR_INFO_1A{
    LPSTR pName;
    LPSTR pEnvironment;
    LPSTR pDLLName;
  } PROVIDOR_INFO_1A,*PPROVIDOR_INFO_1A,*LPPROVIDOR_INFO_1A;
  typedef struct _PROVIDOR_INFO_1W{
    LPWSTR pName;
    LPWSTR pEnvironment;
    LPWSTR pDLLName;
  } PROVIDOR_INFO_1W,*PPROVIDOR_INFO_1W,*LPPROVIDOR_INFO_1W;
  typedef PROVIDOR_INFO_1A PROVIDOR_INFO_1;
  typedef PPROVIDOR_INFO_1A PPROVIDOR_INFO_1;
  typedef LPPROVIDOR_INFO_1A LPPROVIDOR_INFO_1;
  typedef struct _PROVIDOR_INFO_2A{
    LPSTR pOrder;
  } PROVIDOR_INFO_2A,*PPROVIDOR_INFO_2A,*LPPROVIDOR_INFO_2A;
  typedef struct _PROVIDOR_INFO_2W{
    LPWSTR pOrder;
  } PROVIDOR_INFO_2W,*PPROVIDOR_INFO_2W,*LPPROVIDOR_INFO_2W;
  typedef PROVIDOR_INFO_2A PROVIDOR_INFO_2;
  typedef PPROVIDOR_INFO_2A PPROVIDOR_INFO_2;
  typedef LPPROVIDOR_INFO_2A LPPROVIDOR_INFO_2;
#define AddPrintProvidor __MINGW_NAME_AW(AddPrintProvidor)
#define DeletePrintProvidor __MINGW_NAME_AW(DeletePrintProvidor)
#define IsValidDevmode __MINGW_NAME_AW(IsValidDevmode)
  WINBOOL __attribute__((__stdcall__)) AddPrintProvidorA(LPSTR pName,DWORD level,LPBYTE pProvidorInfo);
  WINBOOL __attribute__((__stdcall__)) AddPrintProvidorW(LPWSTR pName,DWORD level,LPBYTE pProvidorInfo);
  WINBOOL __attribute__((__stdcall__)) DeletePrintProvidorA(LPSTR pName,LPSTR pEnvironment,LPSTR pPrintProvidorName);
  WINBOOL __attribute__((__stdcall__)) DeletePrintProvidorW(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pPrintProvidorName);
  WINBOOL __attribute__((__stdcall__)) IsValidDevmodeA (PDEVMODEA pDevmode,size_t DevmodeSize);
  WINBOOL __attribute__((__stdcall__)) IsValidDevmodeW (PDEVMODEW pDevmode,size_t DevmodeSize);
#define SPLREG_DEFAULT_SPOOL_DIRECTORY TEXT("DefaultSpoolDirectory")
#define SPLREG_PORT_THREAD_PRIORITY_DEFAULT TEXT("PortThreadPriorityDefault")
#define SPLREG_PORT_THREAD_PRIORITY TEXT("PortThreadPriority")
#define SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT TEXT("SchedulerThreadPriorityDefault")
#define SPLREG_SCHEDULER_THREAD_PRIORITY TEXT("SchedulerThreadPriority")
#define SPLREG_BEEP_ENABLED TEXT("BeepEnabled")
#define SPLREG_NET_POPUP TEXT("NetPopup")
#define SPLREG_RETRY_POPUP TEXT("RetryPopup")
#define SPLREG_NET_POPUP_TO_COMPUTER TEXT("NetPopupToComputer")
#define SPLREG_EVENT_LOG TEXT("EventLog")
#define SPLREG_MAJOR_VERSION TEXT("MajorVersion")
#define SPLREG_MINOR_VERSION TEXT("MinorVersion")
#define SPLREG_ARCHITECTURE TEXT("Architecture")
#define SPLREG_OS_VERSION TEXT("OSVersion")
#define SPLREG_OS_VERSIONEX TEXT("OSVersionEx")
#define SPLREG_DS_PRESENT TEXT("DsPresent")
#define SPLREG_DS_PRESENT_FOR_USER TEXT("DsPresentForUser")
#define SPLREG_REMOTE_FAX TEXT("RemoteFax")
#define SPLREG_RESTART_JOB_ON_POOL_ERROR TEXT("RestartJobOnPoolError")
#define SPLREG_RESTART_JOB_ON_POOL_ENABLED TEXT("RestartJobOnPoolEnabled")
#define SPLREG_DNS_MACHINE_NAME TEXT("DNSMachineName")
#define SPLREG_ALLOW_USER_MANAGEFORMS TEXT("AllowUserManageForms")
#define SPLREG_WEBSHAREMGMT TEXT("WebShareMgmt")
#define SERVER_ACCESS_ADMINISTER 0x00000001
#define SERVER_ACCESS_ENUMERATE 0x00000002
#define PRINTER_ACCESS_ADMINISTER 0x00000004
#define PRINTER_ACCESS_USE 0x00000008
#define JOB_ACCESS_ADMINISTER 0x00000010
#define JOB_ACCESS_READ 0x00000020
#define SERVER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE)
#define SERVER_READ (STANDARD_RIGHTS_READ | SERVER_ACCESS_ENUMERATE)
#define SERVER_WRITE (STANDARD_RIGHTS_WRITE | SERVER_ACCESS_ADMINISTER | SERVER_ACCESS_ENUMERATE)
#define SERVER_EXECUTE (STANDARD_RIGHTS_EXECUTE | SERVER_ACCESS_ENUMERATE)
#define PRINTER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | PRINTER_ACCESS_ADMINISTER | PRINTER_ACCESS_USE)
#define PRINTER_READ (STANDARD_RIGHTS_READ | PRINTER_ACCESS_USE)
#define PRINTER_WRITE (STANDARD_RIGHTS_WRITE | PRINTER_ACCESS_USE)
#define PRINTER_EXECUTE (STANDARD_RIGHTS_EXECUTE | PRINTER_ACCESS_USE)
#define JOB_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | JOB_ACCESS_ADMINISTER | JOB_ACCESS_READ)
#define JOB_READ (STANDARD_RIGHTS_READ | JOB_ACCESS_READ)
#define JOB_WRITE (STANDARD_RIGHTS_WRITE | JOB_ACCESS_ADMINISTER)
#define JOB_EXECUTE (STANDARD_RIGHTS_EXECUTE | JOB_ACCESS_ADMINISTER)
#define SPLDS_SPOOLER_KEY TEXT("DsSpooler")
#define SPLDS_DRIVER_KEY TEXT("DsDriver")
#define SPLDS_USER_KEY TEXT("DsUser")
#define SPLDS_ASSET_NUMBER TEXT("assetNumber")
#define SPLDS_BYTES_PER_MINUTE TEXT("bytesPerMinute")
#define SPLDS_DESCRIPTION TEXT("description")
#define SPLDS_DRIVER_NAME TEXT("driverName")
#define SPLDS_DRIVER_VERSION TEXT("driverVersion")
#define SPLDS_LOCATION TEXT("location")
#define SPLDS_PORT_NAME TEXT("portName")
#define SPLDS_PRINT_ATTRIBUTES TEXT("printAttributes")
#define SPLDS_PRINT_BIN_NAMES TEXT("printBinNames")
#define SPLDS_PRINT_COLLATE TEXT("printCollate")
#define SPLDS_PRINT_COLOR TEXT("printColor")
#define SPLDS_PRINT_DUPLEX_SUPPORTED TEXT("printDuplexSupported")
#define SPLDS_PRINT_END_TIME TEXT("printEndTime")
#define SPLDS_PRINTER_CLASS TEXT("printQueue")
#define SPLDS_PRINTER_NAME TEXT("printerName")
#define SPLDS_PRINT_KEEP_PRINTED_JOBS TEXT("printKeepPrintedJobs")
#define SPLDS_PRINT_LANGUAGE TEXT("printLanguage")
#define SPLDS_PRINT_MAC_ADDRESS TEXT("printMACAddress")
#define SPLDS_PRINT_MAX_X_EXTENT TEXT("printMaxXExtent")
#define SPLDS_PRINT_MAX_Y_EXTENT TEXT("printMaxYExtent")
#define SPLDS_PRINT_MAX_RESOLUTION_SUPPORTED TEXT("printMaxResolutionSupported")
#define SPLDS_PRINT_MEDIA_READY TEXT("printMediaReady")
#define SPLDS_PRINT_MEDIA_SUPPORTED TEXT("printMediaSupported")
#define SPLDS_PRINT_MEMORY TEXT("printMemory")
#define SPLDS_PRINT_MIN_X_EXTENT TEXT("printMinXExtent")
#define SPLDS_PRINT_MIN_Y_EXTENT TEXT("printMinYExtent")
#define SPLDS_PRINT_NETWORK_ADDRESS TEXT("printNetworkAddress")
#define SPLDS_PRINT_NOTIFY TEXT("printNotify")
#define SPLDS_PRINT_NUMBER_UP TEXT("printNumberUp")
#define SPLDS_PRINT_ORIENTATIONS_SUPPORTED TEXT("printOrientationsSupported")
#define SPLDS_PRINT_OWNER TEXT("printOwner")
#define SPLDS_PRINT_PAGES_PER_MINUTE TEXT("printPagesPerMinute")
#define SPLDS_PRINT_RATE TEXT("printRate")
#define SPLDS_PRINT_RATE_UNIT TEXT("printRateUnit")
#define SPLDS_PRINT_SEPARATOR_FILE TEXT("printSeparatorFile")
#define SPLDS_PRINT_SHARE_NAME TEXT("printShareName")
#define SPLDS_PRINT_SPOOLING TEXT("printSpooling")
#define SPLDS_PRINT_STAPLING_SUPPORTED TEXT("printStaplingSupported")
#define SPLDS_PRINT_START_TIME TEXT("printStartTime")
#define SPLDS_PRINT_STATUS TEXT("printStatus")
#define SPLDS_PRIORITY TEXT("priority")
#define SPLDS_SERVER_NAME TEXT("serverName")
#define SPLDS_SHORT_SERVER_NAME TEXT("shortServerName")
#define SPLDS_UNC_NAME TEXT("uNCName")
#define SPLDS_URL TEXT("url")
#define SPLDS_FLAGS TEXT("flags")
#define SPLDS_VERSION_NUMBER TEXT("versionNumber")
#define SPLDS_PRINTER_NAME_ALIASES TEXT("printerNameAliases")
#define SPLDS_PRINTER_LOCATIONS TEXT("printerLocations")
#define SPLDS_PRINTER_MODEL TEXT("printerModel")
#define AddPrinterConnection2 __MINGW_NAME_AW(AddPrinterConnection2)
#define DeletePrinterDriverPackage __MINGW_NAME_AW(DeletePrinterDriverPackage)
#define DocumentEvent __MINGW_NAME_AW(DocumentEvent)
#define PRINTER_CONNECTION_MISMATCH 0x00000020
#define PRINTER_CONNECTION_NO_UI 0x00000040
typedef enum tagPRINTER_OPTION_FLAGS {
  PRINTER_OPTION_NO_CACHE,
  PRINTER_OPTION_CACHE,
  PRINTER_OPTION_CLIENT_CHANGE
} PRINTER_OPTION_FLAGS;
typedef enum tagEPrintXPSJobOperation {
  kJobProduction,
  kJobConsumption
} EPrintXPSJobOperation;
typedef enum tagEPrintXPSJobProgress {
  kAddingDocumentSequence,
  kDocumentSequenceAdded,
  kAddingFixedDocument,
  kFixedDocumentAdded,
  kAddingFixedPage,
  kFixedPageAdded,
  kResourceAdded,
  kFontAdded,
  kImageAdded,
  kXpsDocumentCommitted
} EPrintXPSJobProgress;
typedef struct _PRINTER_CONNECTION_INFO_1 {
  DWORD dwFlags;
  LPTSTR pszDriverName;
} PRINTER_CONNECTION_INFO_1, *PPRINTER_CONNECTION_INFO_1;
  WINBOOL AddPrinterConnection2W(HWND hWnd,LPCWSTR pszName,DWORD dwLevel,PVOID pConnectionInfo);
  WINBOOL AddPrinterConnection2A(HWND hWnd,LPCSTR pszName,DWORD dwLevel,PVOID pConnectionInfo);
HRESULT __attribute__((__stdcall__)) DeletePrinterDriverPackageA(
  LPCSTR pszServer,
  LPCSTR pszInfPath,
  LPCSTR pszEnvironment
);
HRESULT __attribute__((__stdcall__)) DeletePrinterDriverPackageW(
  LPCWSTR pszServer,
  LPCWSTR pszInfPath,
  LPCWSTR pszEnvironment
);
HRESULT DocumentEventA(
  HANDLE hPrinter,
  HDC hdc,
  INT iEsc,
  ULONG cbIn,
  PVOID pvIn,
  ULONG cbOut,
  PVOID pvOut
);
HRESULT DocumentEventW(
  HANDLE hPrinter,
  HDC hdc,
  INT iEsc,
  ULONG cbIn,
  PVOID pvIn,
  ULONG cbOut,
  PVOID pvOut
);
typedef struct _DRIVER_INFO_8W {
  DWORD cVersion;
  LPWSTR pName;
  LPWSTR pEnvironment;
  LPWSTR pDriverPath;
  LPWSTR pDataFile;
  LPWSTR pConfigFile;
  LPWSTR pHelpFile;
  LPWSTR pDependentFiles;
  LPWSTR pMonitorName;
  LPWSTR pDefaultDataType;
  LPWSTR pszzPreviousNames;
  FILETIME ftDriverDate;
  DWORDLONG dwlDriverVersion;
  LPWSTR pszMfgName;
  LPWSTR pszOEMUrl;
  LPWSTR pszHardwareID;
  LPWSTR pszProvider;
  LPWSTR pszPrintProcessor;
  LPWSTR pszVendorSetup;
  LPWSTR pszzColorProfiles;
  LPWSTR pszInfPath;
  DWORD dwPrinterDriverAttributes;
  LPWSTR pszzCoreDriverDependencies;
  FILETIME ftMinInboxDriverVerDate;
  DWORDLONG dwlMinInboxDriverVerVersion;
} DRIVER_INFO_8W, *PDRIVER_INFO_8W, *LPDRIVER_INFO_8W;
typedef struct _DRIVER_INFO_8A {
  DWORD cVersion;
  LPSTR pName;
  LPSTR pEnvironment;
  LPSTR pDriverPath;
  LPSTR pDataFile;
  LPSTR pConfigFile;
  LPSTR pHelpFile;
  LPSTR pDependentFiles;
  LPSTR pMonitorName;
  LPSTR pDefaultDataType;
  LPSTR pszzPreviousNames;
  FILETIME ftDriverDate;
  DWORDLONG dwlDriverVersion;
  LPSTR pszMfgName;
  LPSTR pszOEMUrl;
  LPSTR pszHardwareID;
  LPSTR pszProvider;
  LPSTR pszPrintProcessor;
  LPSTR pszVendorSetup;
  LPSTR pszzColorProfiles;
  LPSTR pszInfPath;
  DWORD dwPrinterDriverAttributes;
  LPSTR pszzCoreDriverDependencies;
  FILETIME ftMinInboxDriverVerDate;
  DWORDLONG dwlMinInboxDriverVerVersion;
} DRIVER_INFO_8A, *PDRIVER_INFO_8A, *LPDRIVER_INFO_8A;
typedef struct _FORM_INFO_2A {
  DWORD Flags;
  LPSTR pName;
  SIZEL Size;
  RECTL ImageableArea;
  LPCSTR pKeyword;
  DWORD StringType;
  LPCSTR pMuiDll;
  DWORD dwResourceId;
  LPCSTR pDisplayName;
  LANGID wLangId;
} FORM_INFO_2A, *PFORM_INFO_2A;
typedef struct _FORM_INFO_2W {
  DWORD Flags;
  LPWSTR pName;
  SIZEL Size;
  RECTL ImageableArea;
  LPCSTR pKeyword;
  DWORD StringType;
  LPCWSTR pMuiDll;
  DWORD dwResourceId;
  LPCWSTR pDisplayName;
  LANGID wLangId;
} FORM_INFO_2W, *PFORM_INFO_2W;
typedef DRIVER_INFO_8A DRIVER_INFO_8;
typedef PDRIVER_INFO_8A PDRIVER_INFO_8;
typedef LPDRIVER_INFO_8A LPDRIVER_INFO_8;
typedef FORM_INFO_2A FORM_INFO_2;
typedef PFORM_INFO_2A PFORM_INFO_2;
typedef struct _PRINTPROCESSOR_CAPS_2 {
  DWORD dwLevel;
  DWORD dwNupOptions;
  DWORD dwPageOrderFlags;
  DWORD dwNumberOfCopies;
  DWORD dwNupDirectionCaps;
  DWORD dwNupBorderCaps;
  DWORD dwBookletHandlingCaps;
  DWORD dwDuplexHandlingCaps;
  DWORD dwScalingCaps;
} PRINTPROCESSOR_CAPS_2, *PPRINTPROCESSOR_CAPS_2;
HRESULT ReportJobProcessingProgress(
  HANDLE printerHandle,
  ULONG jobId,
  EPrintXPSJobOperation jobOperation,
  EPrintXPSJobProgress jobProgress
);
typedef struct _CORE_PRINTER_DRIVERA {
  GUID CoreDriverGUID;
  FILETIME ftDriverDate;
  DWORDLONG dwlDriverVersion;
  CHAR szPackageID[260];
} CORE_PRINTER_DRIVERA, *PCORE_PRINTER_DRIVERA;
typedef struct _CORE_PRINTER_DRIVERW {
  GUID CoreDriverGUID;
  FILETIME ftDriverDate;
  DWORDLONG dwlDriverVersion;
  WCHAR szPackageID[260];
} CORE_PRINTER_DRIVERW, *PCORE_PRINTER_DRIVERW;
typedef struct _PRINTER_OPTIONS {
  UINT cbSize;
  DWORD dwFlags;
} PRINTER_OPTIONS, *PPRINTER_OPTIONS;
typedef CORE_PRINTER_DRIVERA CORE_PRINTER_DRIVER;
typedef PCORE_PRINTER_DRIVERA PCORE_PRINTER_DRIVER;
#define GetCorePrinterDrivers __MINGW_NAME_AW(GetCorePrinterDrivers)
#define GetPrinterDriver2 __MINGW_NAME_AW(GetPrinterDriver2)
#define GetPrinterDriverPackagePath __MINGW_NAME_AW(GetPrinterDriverPackagePath)
#define GetSpoolFileHandle __MINGW_NAME_AW(GetSpoolFileHandle)
HRESULT __attribute__((__stdcall__)) GetCorePrinterDriversA(
  LPCSTR pszServer,
  LPCSTR pszEnvironment,
  LPCSTR pszzCoreDriverDependencies,
  DWORD cCorePrinterDrivers,
  PCORE_PRINTER_DRIVERA pCorePrinterDrivers
);
HRESULT __attribute__((__stdcall__)) GetCorePrinterDriversW(
  LPCWSTR pszServer,
  LPCWSTR pszEnvironment,
  LPCWSTR pszzCoreDriverDependencies,
  DWORD cCorePrinterDrivers,
  PCORE_PRINTER_DRIVERW pCorePrinterDrivers
);
WINBOOL __attribute__((__stdcall__)) GetPrinterDriver2A(
  HWND hWnd,
  HANDLE hPrinter,
  LPSTR pEnvironment,
  DWORD Level,
  LPBYTE pDriverInfo,
  DWORD cbBuf,
  LPDWORD pcbNeeded
);
WINBOOL __attribute__((__stdcall__)) GetPrinterDriver2W(
  HWND hWnd,
  HANDLE hPrinter,
  LPWSTR pEnvironment,
  DWORD Level,
  LPBYTE pDriverInfo,
  DWORD cbBuf,
  LPDWORD pcbNeeded
);
HRESULT __attribute__((__stdcall__)) GetPrinterDriverPackagePathA(
  LPCSTR pszServer,
  LPCSTR pszEnvironment,
  LPCSTR pszLanguage,
  LPCSTR pszPackageID,
  LPSTR pszDriverPackageCab,
  DWORD cchDriverPackageCab,
  LPDWORD pcchRequiredSize
);
HRESULT __attribute__((__stdcall__)) GetPrinterDriverPackagePathW(
  LPCWSTR pszServer,
  LPCWSTR pszEnvironment,
  LPCWSTR pszLanguage,
  LPCWSTR pszPackageID,
  LPWSTR pszDriverPackageCab,
  DWORD cchDriverPackageCab,
  LPDWORD pcchRequiredSize
);
HANDLE __attribute__((__stdcall__)) GetSpoolFileHandleA(
  HANDLE hPrinter
);
HANDLE __attribute__((__stdcall__)) GetSpoolFileHandleW(
  HANDLE hPrinter
);
HANDLE __attribute__((__stdcall__)) CommitSpoolData(
  HANDLE hPrinter,
  HANDLE hSpoolFile,
  DWORD cbCommit
);
WINBOOL __attribute__((__stdcall__)) CloseSpoolFileHandle(
  HANDLE hPrinter,
  HANDLE hSpoolFile
);
WINBOOL __attribute__((__stdcall__)) OpenPrinter2A(
  LPCSTR pPrinterName,
  LPHANDLE phPrinter,
  LPPRINTER_DEFAULTS pDefault,
  PPRINTER_OPTIONS pOptions
);
WINBOOL __attribute__((__stdcall__)) OpenPrinter2W(
  LPCWSTR pPrinterName,
  LPHANDLE phPrinter,
  LPPRINTER_DEFAULTS pDefault,
  PPRINTER_OPTIONS pOptions
);
#define OpenPrinter2 __MINGW_NAME_AW(OpenPrinter2)
HRESULT __attribute__((__stdcall__)) UploadPrinterDriverPackageA(
  LPCSTR pszServer,
  LPCSTR pszInfPath,
  LPCSTR pszEnvironment,
  DWORD dwFlags,
  HWND hwnd,
  LPSTR pszDestInfPath,
  PULONG pcchDestInfPath
);
HRESULT __attribute__((__stdcall__)) UploadPrinterDriverPackageW(
  LPCWSTR pszServer,
  LPCWSTR pszInfPath,
  LPCWSTR pszEnvironment,
  DWORD dwFlags,
  HWND hwnd,
  LPWSTR pszDestInfPath,
  PULONG pcchDestInfPath
);
#define UploadPrinterDriverPackage __MINGW_NAME_AW(UploadPrinterDriverPackage)
#define _INC_COMMDLG 
extern const GUID IID_IPrintDialogCallback;
extern const GUID IID_IPrintDialogServices;
#pragma pack(push,1)
#define WINCOMMDLGAPI DECLSPEC_IMPORT
  typedef UINT_PTR (__attribute__((__stdcall__)) *LPOFNHOOKPROC) (HWND,UINT,WPARAM,LPARAM);
#define CDSIZEOF_STRUCT(structname,member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member))
  typedef struct tagOFN_NT4A {
    DWORD lStructSize;
    HWND hwndOwner;
    HINSTANCE hInstance;
    LPCSTR lpstrFilter;
    LPSTR lpstrCustomFilter;
    DWORD nMaxCustFilter;
    DWORD nFilterIndex;
    LPSTR lpstrFile;
    DWORD nMaxFile;
    LPSTR lpstrFileTitle;
    DWORD nMaxFileTitle;
    LPCSTR lpstrInitialDir;
    LPCSTR lpstrTitle;
    DWORD Flags;
    WORD nFileOffset;
    WORD nFileExtension;
    LPCSTR lpstrDefExt;
    LPARAM lCustData;
    LPOFNHOOKPROC lpfnHook;
    LPCSTR lpTemplateName;
  } OPENFILENAME_NT4A,*LPOPENFILENAME_NT4A;
  typedef struct tagOFN_NT4W {
    DWORD lStructSize;
    HWND hwndOwner;
    HINSTANCE hInstance;
    LPCWSTR lpstrFilter;
    LPWSTR lpstrCustomFilter;
    DWORD nMaxCustFilter;
    DWORD nFilterIndex;
    LPWSTR lpstrFile;
    DWORD nMaxFile;
    LPWSTR lpstrFileTitle;
    DWORD nMaxFileTitle;
    LPCWSTR lpstrInitialDir;
    LPCWSTR lpstrTitle;
    DWORD Flags;
    WORD nFileOffset;
    WORD nFileExtension;
    LPCWSTR lpstrDefExt;
    LPARAM lCustData;
    LPOFNHOOKPROC lpfnHook;
    LPCWSTR lpTemplateName;
  } OPENFILENAME_NT4W,*LPOPENFILENAME_NT4W;
  typedef OPENFILENAME_NT4A OPENFILENAME_NT4;
  typedef LPOPENFILENAME_NT4A LPOPENFILENAME_NT4;
  typedef struct tagOFNA {
    DWORD lStructSize;
    HWND hwndOwner;
    HINSTANCE hInstance;
    LPCSTR lpstrFilter;
    LPSTR lpstrCustomFilter;
    DWORD nMaxCustFilter;
    DWORD nFilterIndex;
    LPSTR lpstrFile;
    DWORD nMaxFile;
    LPSTR lpstrFileTitle;
    DWORD nMaxFileTitle;
    LPCSTR lpstrInitialDir;
    LPCSTR lpstrTitle;
    DWORD Flags;
    WORD nFileOffset;
    WORD nFileExtension;
    LPCSTR lpstrDefExt;
    LPARAM lCustData;
    LPOFNHOOKPROC lpfnHook;
    LPCSTR lpTemplateName;
    void *pvReserved;
    DWORD dwReserved;
    DWORD FlagsEx;
  } OPENFILENAMEA,*LPOPENFILENAMEA;
  typedef struct tagOFNW {
    DWORD lStructSize;
    HWND hwndOwner;
    HINSTANCE hInstance;
    LPCWSTR lpstrFilter;
    LPWSTR lpstrCustomFilter;
    DWORD nMaxCustFilter;
    DWORD nFilterIndex;
    LPWSTR lpstrFile;
    DWORD nMaxFile;
    LPWSTR lpstrFileTitle;
    DWORD nMaxFileTitle;
    LPCWSTR lpstrInitialDir;
    LPCWSTR lpstrTitle;
    DWORD Flags;
    WORD nFileOffset;
    WORD nFileExtension;
    LPCWSTR lpstrDefExt;
    LPARAM lCustData;
    LPOFNHOOKPROC lpfnHook;
    LPCWSTR lpTemplateName;
    void *pvReserved;
    DWORD dwReserved;
    DWORD FlagsEx;
  } OPENFILENAMEW,*LPOPENFILENAMEW;
  typedef OPENFILENAMEA OPENFILENAME;
  typedef LPOPENFILENAMEA LPOPENFILENAME;
#define OPENFILENAME_SIZE_VERSION_400A CDSIZEOF_STRUCT(OPENFILENAMEA,lpTemplateName)
#define OPENFILENAME_SIZE_VERSION_400W CDSIZEOF_STRUCT(OPENFILENAMEW,lpTemplateName)
#define OPENFILENAME_SIZE_VERSION_400 __MINGW_NAME_AW(OPENFILENAME_SIZE_VERSION_400)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetOpenFileNameA(LPOPENFILENAMEA);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetOpenFileNameW(LPOPENFILENAMEW);
#define GetOpenFileName __MINGW_NAME_AW(GetOpenFileName)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetSaveFileNameA(LPOPENFILENAMEA);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetSaveFileNameW(LPOPENFILENAMEW);
#define GetSaveFileName __MINGW_NAME_AW(GetSaveFileName)
  __attribute__((dllimport)) short __attribute__((__stdcall__)) GetFileTitleA(LPCSTR,LPSTR,WORD);
  __attribute__((dllimport)) short __attribute__((__stdcall__)) GetFileTitleW(LPCWSTR,LPWSTR,WORD);
#define GetFileTitle __MINGW_NAME_AW(GetFileTitle)
#define OFN_READONLY 0x1
#define OFN_OVERWRITEPROMPT 0x2
#define OFN_HIDEREADONLY 0x4
#define OFN_NOCHANGEDIR 0x8
#define OFN_SHOWHELP 0x10
#define OFN_ENABLEHOOK 0x20
#define OFN_ENABLETEMPLATE 0x40
#define OFN_ENABLETEMPLATEHANDLE 0x80
#define OFN_NOVALIDATE 0x100
#define OFN_ALLOWMULTISELECT 0x200
#define OFN_EXTENSIONDIFFERENT 0x400
#define OFN_PATHMUSTEXIST 0x800
#define OFN_FILEMUSTEXIST 0x1000
#define OFN_CREATEPROMPT 0x2000
#define OFN_SHAREAWARE 0x4000
#define OFN_NOREADONLYRETURN 0x8000
#define OFN_NOTESTFILECREATE 0x10000
#define OFN_NONETWORKBUTTON 0x20000
#define OFN_NOLONGNAMES 0x40000
#define OFN_EXPLORER 0x80000
#define OFN_NODEREFERENCELINKS 0x100000
#define OFN_LONGNAMES 0x200000
#define OFN_ENABLEINCLUDENOTIFY 0x400000
#define OFN_ENABLESIZING 0x800000
#define OFN_DONTADDTORECENT 0x2000000
#define OFN_FORCESHOWHIDDEN 0x10000000
#define OFN_EX_NOPLACESBAR 0x1
#define OFN_SHAREFALLTHROUGH 2
#define OFN_SHARENOWARN 1
#define OFN_SHAREWARN 0
  typedef UINT_PTR (__attribute__((__stdcall__)) *LPCCHOOKPROC) (HWND,UINT,WPARAM,LPARAM);
  typedef struct _OFNOTIFYA {
    NMHDR hdr;
    LPOPENFILENAMEA lpOFN;
    LPSTR pszFile;
  } OFNOTIFYA,*LPOFNOTIFYA;
  typedef struct _OFNOTIFYW {
    NMHDR hdr;
    LPOPENFILENAMEW lpOFN;
    LPWSTR pszFile;
  } OFNOTIFYW,*LPOFNOTIFYW;
  typedef OFNOTIFYA OFNOTIFY;
  typedef LPOFNOTIFYA LPOFNOTIFY;
  typedef struct _OFNOTIFYEXA {
    NMHDR hdr;
    LPOPENFILENAMEA lpOFN;
    LPVOID psf;
    LPVOID pidl;
  } OFNOTIFYEXA,*LPOFNOTIFYEXA;
  typedef struct _OFNOTIFYEXW {
    NMHDR hdr;
    LPOPENFILENAMEW lpOFN;
    LPVOID psf;
    LPVOID pidl;
  } OFNOTIFYEXW,*LPOFNOTIFYEXW;
  typedef OFNOTIFYEXA OFNOTIFYEX;
  typedef LPOFNOTIFYEXA LPOFNOTIFYEX;
#define CDN_FIRST (0U-601U)
#define CDN_LAST (0U-699U)
#define CDN_INITDONE (CDN_FIRST)
#define CDN_SELCHANGE (CDN_FIRST - 1)
#define CDN_FOLDERCHANGE (CDN_FIRST - 2)
#define CDN_SHAREVIOLATION (CDN_FIRST - 3)
#define CDN_HELP (CDN_FIRST - 4)
#define CDN_FILEOK (CDN_FIRST - 5)
#define CDN_TYPECHANGE (CDN_FIRST - 6)
#define CDN_INCLUDEITEM (CDN_FIRST - 7)
#define CDM_FIRST (WM_USER + 100)
#define CDM_LAST (WM_USER + 200)
#define CDM_GETSPEC (CDM_FIRST)
#define CommDlg_OpenSave_GetSpecA(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETSPEC,(WPARAM)_cbmax,(LPARAM)(LPSTR)_psz)
#define CommDlg_OpenSave_GetSpecW(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETSPEC,(WPARAM)_cbmax,(LPARAM)(LPWSTR)_psz)
#define CommDlg_OpenSave_GetSpec __MINGW_NAME_AW(CommDlg_OpenSave_GetSpec)
#define CDM_GETFILEPATH (CDM_FIRST + 1)
#define CommDlg_OpenSave_GetFilePathA(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFILEPATH,(WPARAM)_cbmax,(LPARAM)(LPSTR)_psz)
#define CommDlg_OpenSave_GetFilePathW(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFILEPATH,(WPARAM)_cbmax,(LPARAM)(LPWSTR)_psz)
#define CommDlg_OpenSave_GetFilePath __MINGW_NAME_AW(CommDlg_OpenSave_GetFilePath)
#define CDM_GETFOLDERPATH (CDM_FIRST + 2)
#define CommDlg_OpenSave_GetFolderPathA(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFOLDERPATH,(WPARAM)_cbmax,(LPARAM)(LPSTR)_psz)
#define CommDlg_OpenSave_GetFolderPathW(_hdlg,_psz,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFOLDERPATH,(WPARAM)_cbmax,(LPARAM)(LPWSTR)_psz)
#define CommDlg_OpenSave_GetFolderPath __MINGW_NAME_AW(CommDlg_OpenSave_GetFolderPath)
#define CDM_GETFOLDERIDLIST (CDM_FIRST + 3)
#define CommDlg_OpenSave_GetFolderIDList(_hdlg,_pidl,_cbmax) (int)SNDMSG(_hdlg,CDM_GETFOLDERIDLIST,(WPARAM)_cbmax,(LPARAM)(LPVOID)_pidl)
#define CDM_SETCONTROLTEXT (CDM_FIRST + 4)
#define CommDlg_OpenSave_SetControlText(_hdlg,_id,_text) (void)SNDMSG(_hdlg,CDM_SETCONTROLTEXT,(WPARAM)_id,(LPARAM)(LPSTR)_text)
#define CDM_HIDECONTROL (CDM_FIRST + 5)
#define CommDlg_OpenSave_HideControl(_hdlg,_id) (void)SNDMSG(_hdlg,CDM_HIDECONTROL,(WPARAM)_id,0)
#define CDM_SETDEFEXT (CDM_FIRST + 6)
#define CommDlg_OpenSave_SetDefExt(_hdlg,_pszext) (void)SNDMSG(_hdlg,CDM_SETDEFEXT,0,(LPARAM)(LPSTR)_pszext)
  typedef struct tagCHOOSECOLORA {
    DWORD lStructSize;
    HWND hwndOwner;
    HWND hInstance;
    COLORREF rgbResult;
    COLORREF *lpCustColors;
    DWORD Flags;
    LPARAM lCustData;
    LPCCHOOKPROC lpfnHook;
    LPCSTR lpTemplateName;
  } CHOOSECOLORA,*LPCHOOSECOLORA;
  typedef struct tagCHOOSECOLORW {
    DWORD lStructSize;
    HWND hwndOwner;
    HWND hInstance;
    COLORREF rgbResult;
    COLORREF *lpCustColors;
    DWORD Flags;
    LPARAM lCustData;
    LPCCHOOKPROC lpfnHook;
    LPCWSTR lpTemplateName;
  } CHOOSECOLORW,*LPCHOOSECOLORW;
  typedef CHOOSECOLORA CHOOSECOLOR;
  typedef LPCHOOSECOLORA LPCHOOSECOLOR;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ChooseColorA(LPCHOOSECOLORA);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ChooseColorW(LPCHOOSECOLORW);
#define ChooseColor __MINGW_NAME_AW(ChooseColor)
#define CC_RGBINIT 0x1
#define CC_FULLOPEN 0x2
#define CC_PREVENTFULLOPEN 0x4
#define CC_SHOWHELP 0x8
#define CC_ENABLEHOOK 0x10
#define CC_ENABLETEMPLATE 0x20
#define CC_ENABLETEMPLATEHANDLE 0x40
#define CC_SOLIDCOLOR 0x80
#define CC_ANYCOLOR 0x100
  typedef UINT_PTR (__attribute__((__stdcall__)) *LPFRHOOKPROC) (HWND,UINT,WPARAM,LPARAM);
  typedef struct tagFINDREPLACEA {
    DWORD lStructSize;
    HWND hwndOwner;
    HINSTANCE hInstance;
    DWORD Flags;
    LPSTR lpstrFindWhat;
    LPSTR lpstrReplaceWith;
    WORD wFindWhatLen;
    WORD wReplaceWithLen;
    LPARAM lCustData;
    LPFRHOOKPROC lpfnHook;
    LPCSTR lpTemplateName;
  } FINDREPLACEA,*LPFINDREPLACEA;
  typedef struct tagFINDREPLACEW {
    DWORD lStructSize;
    HWND hwndOwner;
    HINSTANCE hInstance;
    DWORD Flags;
    LPWSTR lpstrFindWhat;
    LPWSTR lpstrReplaceWith;
    WORD wFindWhatLen;
    WORD wReplaceWithLen;
    LPARAM lCustData;
    LPFRHOOKPROC lpfnHook;
    LPCWSTR lpTemplateName;
  } FINDREPLACEW,*LPFINDREPLACEW;
  typedef FINDREPLACEA FINDREPLACE;
  typedef LPFINDREPLACEA LPFINDREPLACE;
#define FR_DOWN 0x1
#define FR_WHOLEWORD 0x2
#define FR_MATCHCASE 0x4
#define FR_FINDNEXT 0x8
#define FR_REPLACE 0x10
#define FR_REPLACEALL 0x20
#define FR_DIALOGTERM 0x40
#define FR_SHOWHELP 0x80
#define FR_ENABLEHOOK 0x100
#define FR_ENABLETEMPLATE 0x200
#define FR_NOUPDOWN 0x400
#define FR_NOMATCHCASE 0x800
#define FR_NOWHOLEWORD 0x1000
#define FR_ENABLETEMPLATEHANDLE 0x2000
#define FR_HIDEUPDOWN 0x4000
#define FR_HIDEMATCHCASE 0x8000
#define FR_HIDEWHOLEWORD 0x10000
#define FR_RAW 0x20000
#define FR_MATCHDIAC 0x20000000
#define FR_MATCHKASHIDA 0x40000000
#define FR_MATCHALEFHAMZA 0x80000000
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) FindTextA(LPFINDREPLACEA);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) FindTextW(LPFINDREPLACEW);
#define FindText __MINGW_NAME_AW(FindText)
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) ReplaceTextA(LPFINDREPLACEA);
  __attribute__((dllimport)) HWND __attribute__((__stdcall__)) ReplaceTextW(LPFINDREPLACEW);
#define ReplaceText __MINGW_NAME_AW(ReplaceText)
  typedef UINT_PTR (__attribute__((__stdcall__)) *LPCFHOOKPROC) (HWND,UINT,WPARAM,LPARAM);
  typedef struct tagCHOOSEFONTA {
    DWORD lStructSize;
    HWND hwndOwner;
    HDC hDC;
    LPLOGFONTA lpLogFont;
    INT iPointSize;
    DWORD Flags;
    COLORREF rgbColors;
    LPARAM lCustData;
    LPCFHOOKPROC lpfnHook;
    LPCSTR lpTemplateName;
    HINSTANCE hInstance;
    LPSTR lpszStyle;
    WORD nFontType;
    WORD ___MISSING_ALIGNMENT__;
    INT nSizeMin;
    INT nSizeMax;
  } CHOOSEFONTA,*LPCHOOSEFONTA;
  typedef struct tagCHOOSEFONTW {
    DWORD lStructSize;
    HWND hwndOwner;
    HDC hDC;
    LPLOGFONTW lpLogFont;
    INT iPointSize;
    DWORD Flags;
    COLORREF rgbColors;
    LPARAM lCustData;
    LPCFHOOKPROC lpfnHook;
    LPCWSTR lpTemplateName;
    HINSTANCE hInstance;
    LPWSTR lpszStyle;
    WORD nFontType;
    WORD ___MISSING_ALIGNMENT__;
    INT nSizeMin;
    INT nSizeMax;
  } CHOOSEFONTW,*LPCHOOSEFONTW;
  typedef CHOOSEFONTA CHOOSEFONT;
  typedef LPCHOOSEFONTA LPCHOOSEFONT;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ChooseFontA(LPCHOOSEFONTA);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ChooseFontW(LPCHOOSEFONTW);
#define ChooseFont __MINGW_NAME_AW(ChooseFont)
#define CF_SCREENFONTS 0x1
#define CF_PRINTERFONTS 0x2
#define CF_BOTH (CF_SCREENFONTS | CF_PRINTERFONTS)
#define CF_SHOWHELP __MSABI_LONG(0x4)
#define CF_ENABLEHOOK __MSABI_LONG(0x8)
#define CF_ENABLETEMPLATE __MSABI_LONG(0x10)
#define CF_ENABLETEMPLATEHANDLE __MSABI_LONG(0x20)
#define CF_INITTOLOGFONTSTRUCT __MSABI_LONG(0x40)
#define CF_USESTYLE __MSABI_LONG(0x80)
#define CF_EFFECTS __MSABI_LONG(0x100)
#define CF_APPLY __MSABI_LONG(0x200)
#define CF_ANSIONLY __MSABI_LONG(0x400)
#define CF_SCRIPTSONLY CF_ANSIONLY
#define CF_NOVECTORFONTS __MSABI_LONG(0x800)
#define CF_NOOEMFONTS CF_NOVECTORFONTS
#define CF_NOSIMULATIONS __MSABI_LONG(0x1000)
#define CF_LIMITSIZE __MSABI_LONG(0x2000)
#define CF_FIXEDPITCHONLY __MSABI_LONG(0x4000)
#define CF_WYSIWYG __MSABI_LONG(0x8000)
#define CF_FORCEFONTEXIST __MSABI_LONG(0x10000)
#define CF_SCALABLEONLY __MSABI_LONG(0x20000)
#define CF_TTONLY __MSABI_LONG(0x40000)
#define CF_NOFACESEL __MSABI_LONG(0x80000)
#define CF_NOSTYLESEL __MSABI_LONG(0x100000)
#define CF_NOSIZESEL __MSABI_LONG(0x200000)
#define CF_SELECTSCRIPT __MSABI_LONG(0x400000)
#define CF_NOSCRIPTSEL __MSABI_LONG(0x800000)
#define CF_NOVERTFONTS __MSABI_LONG(0x1000000)
#define SIMULATED_FONTTYPE 0x8000
#define PRINTER_FONTTYPE 0x4000
#define SCREEN_FONTTYPE 0x2000
#define BOLD_FONTTYPE 0x100
#define ITALIC_FONTTYPE 0x200
#define REGULAR_FONTTYPE 0x400
#define PS_OPENTYPE_FONTTYPE 0x10000
#define TT_OPENTYPE_FONTTYPE 0x20000
#define TYPE1_FONTTYPE 0x40000
#define WM_CHOOSEFONT_GETLOGFONT (WM_USER + 1)
#define WM_CHOOSEFONT_SETLOGFONT (WM_USER + 101)
#define WM_CHOOSEFONT_SETFLAGS (WM_USER + 102)
#define LBSELCHSTRINGA "commdlg_LBSelChangedNotify"
#define SHAREVISTRINGA "commdlg_ShareViolation"
#define FILEOKSTRINGA "commdlg_FileNameOK"
#define COLOROKSTRINGA "commdlg_ColorOK"
#define SETRGBSTRINGA "commdlg_SetRGBColor"
#define HELPMSGSTRINGA "commdlg_help"
#define FINDMSGSTRINGA "commdlg_FindReplace"
#define LBSELCHSTRINGW L"commdlg_LBSelChangedNotify"
#define SHAREVISTRINGW L"commdlg_ShareViolation"
#define FILEOKSTRINGW L"commdlg_FileNameOK"
#define COLOROKSTRINGW L"commdlg_ColorOK"
#define SETRGBSTRINGW L"commdlg_SetRGBColor"
#define HELPMSGSTRINGW L"commdlg_help"
#define FINDMSGSTRINGW L"commdlg_FindReplace"
#define LBSELCHSTRING __MINGW_NAME_AW(LBSELCHSTRING)
#define SHAREVISTRING __MINGW_NAME_AW(SHAREVISTRING)
#define FILEOKSTRING __MINGW_NAME_AW(FILEOKSTRING)
#define COLOROKSTRING __MINGW_NAME_AW(COLOROKSTRING)
#define SETRGBSTRING __MINGW_NAME_AW(SETRGBSTRING)
#define HELPMSGSTRING __MINGW_NAME_AW(HELPMSGSTRING)
#define FINDMSGSTRING __MINGW_NAME_AW(FINDMSGSTRING)
#define CD_LBSELNOITEMS -1
#define CD_LBSELCHANGE 0
#define CD_LBSELSUB 1
#define CD_LBSELADD 2
  typedef UINT_PTR (__attribute__((__stdcall__)) *LPPRINTHOOKPROC) (HWND,UINT,WPARAM,LPARAM);
  typedef UINT_PTR (__attribute__((__stdcall__)) *LPSETUPHOOKPROC) (HWND,UINT,WPARAM,LPARAM);
  typedef struct tagPDA {
    DWORD lStructSize;
    HWND hwndOwner;
    HGLOBAL hDevMode;
    HGLOBAL hDevNames;
    HDC hDC;
    DWORD Flags;
    WORD nFromPage;
    WORD nToPage;
    WORD nMinPage;
    WORD nMaxPage;
    WORD nCopies;
    HINSTANCE hInstance;
    LPARAM lCustData;
    LPPRINTHOOKPROC lpfnPrintHook;
    LPSETUPHOOKPROC lpfnSetupHook;
    LPCSTR lpPrintTemplateName;
    LPCSTR lpSetupTemplateName;
    HGLOBAL hPrintTemplate;
    HGLOBAL hSetupTemplate;
  } PRINTDLGA,*LPPRINTDLGA;
  typedef struct tagPDW {
    DWORD lStructSize;
    HWND hwndOwner;
    HGLOBAL hDevMode;
    HGLOBAL hDevNames;
    HDC hDC;
    DWORD Flags;
    WORD nFromPage;
    WORD nToPage;
    WORD nMinPage;
    WORD nMaxPage;
    WORD nCopies;
    HINSTANCE hInstance;
    LPARAM lCustData;
    LPPRINTHOOKPROC lpfnPrintHook;
    LPSETUPHOOKPROC lpfnSetupHook;
    LPCWSTR lpPrintTemplateName;
    LPCWSTR lpSetupTemplateName;
    HGLOBAL hPrintTemplate;
    HGLOBAL hSetupTemplate;
  } PRINTDLGW,*LPPRINTDLGW;
  typedef PRINTDLGA PRINTDLG;
  typedef LPPRINTDLGA LPPRINTDLG;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PrintDlgA(LPPRINTDLGA);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PrintDlgW(LPPRINTDLGW);
#define PrintDlg __MINGW_NAME_AW(PrintDlg)
#undef INTERFACE
#define INTERFACE IPrintDialogCallback
  typedef struct IPrintDialogCallback { struct IPrintDialogCallbackVtbl *lpVtbl; } IPrintDialogCallback; typedef struct IPrintDialogCallbackVtbl IPrintDialogCallbackVtbl; struct IPrintDialogCallbackVtbl {
    HRESULT (__attribute__((__stdcall__)) *QueryInterface) (IPrintDialogCallback *This, const IID *const riid,LPVOID *ppvObj) ;
    ULONG (__attribute__((__stdcall__)) *AddRef) (IPrintDialogCallback *This) ;
    ULONG (__attribute__((__stdcall__)) *Release) (IPrintDialogCallback *This) ;
    HRESULT (__attribute__((__stdcall__)) *InitDone) (IPrintDialogCallback *This) ;
    HRESULT (__attribute__((__stdcall__)) *SelectionChange) (IPrintDialogCallback *This) ;
    HRESULT (__attribute__((__stdcall__)) *HandleMessage) (IPrintDialogCallback *This, HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *pResult) ;
  };
#undef INTERFACE
#define INTERFACE IPrintDialogServices
  typedef struct IPrintDialogServices { struct IPrintDialogServicesVtbl *lpVtbl; } IPrintDialogServices; typedef struct IPrintDialogServicesVtbl IPrintDialogServicesVtbl; struct IPrintDialogServicesVtbl {
    HRESULT (__attribute__((__stdcall__)) *QueryInterface) (IPrintDialogServices *This, const IID *const riid,LPVOID *ppvObj) ;
    ULONG (__attribute__((__stdcall__)) *AddRef) (IPrintDialogServices *This) ;
    ULONG (__attribute__((__stdcall__)) *Release) (IPrintDialogServices *This) ;
    HRESULT (__attribute__((__stdcall__)) *GetCurrentDevMode) (IPrintDialogServices *This, LPDEVMODE pDevMode,UINT *pcbSize) ;
    HRESULT (__attribute__((__stdcall__)) *GetCurrentPrinterName) (IPrintDialogServices *This, LPTSTR pPrinterName,UINT *pcchSize) ;
    HRESULT (__attribute__((__stdcall__)) *GetCurrentPortName) (IPrintDialogServices *This, LPTSTR pPortName,UINT *pcchSize) ;
  };
  typedef struct tagPRINTPAGERANGE {
    DWORD nFromPage;
    DWORD nToPage;
  } PRINTPAGERANGE,*LPPRINTPAGERANGE;
  typedef struct tagPDEXA {
    DWORD lStructSize;
    HWND hwndOwner;
    HGLOBAL hDevMode;
    HGLOBAL hDevNames;
    HDC hDC;
    DWORD Flags;
    DWORD Flags2;
    DWORD ExclusionFlags;
    DWORD nPageRanges;
    DWORD nMaxPageRanges;
    LPPRINTPAGERANGE lpPageRanges;
    DWORD nMinPage;
    DWORD nMaxPage;
    DWORD nCopies;
    HINSTANCE hInstance;
    LPCSTR lpPrintTemplateName;
    LPUNKNOWN lpCallback;
    DWORD nPropertyPages;
    HPROPSHEETPAGE *lphPropertyPages;
    DWORD nStartPage;
    DWORD dwResultAction;
  } PRINTDLGEXA,*LPPRINTDLGEXA;
  typedef struct tagPDEXW {
    DWORD lStructSize;
    HWND hwndOwner;
    HGLOBAL hDevMode;
    HGLOBAL hDevNames;
    HDC hDC;
    DWORD Flags;
    DWORD Flags2;
    DWORD ExclusionFlags;
    DWORD nPageRanges;
    DWORD nMaxPageRanges;
    LPPRINTPAGERANGE lpPageRanges;
    DWORD nMinPage;
    DWORD nMaxPage;
    DWORD nCopies;
    HINSTANCE hInstance;
    LPCWSTR lpPrintTemplateName;
    LPUNKNOWN lpCallback;
    DWORD nPropertyPages;
    HPROPSHEETPAGE *lphPropertyPages;
    DWORD nStartPage;
    DWORD dwResultAction;
  } PRINTDLGEXW,*LPPRINTDLGEXW;
  typedef PRINTDLGEXA PRINTDLGEX;
  typedef LPPRINTDLGEXA LPPRINTDLGEX;
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) PrintDlgExA(LPPRINTDLGEXA);
  __attribute__((dllimport)) HRESULT __attribute__((__stdcall__)) PrintDlgExW(LPPRINTDLGEXW);
#define PrintDlgEx __MINGW_NAME_AW(PrintDlgEx)
#define PD_ALLPAGES 0x0
#define PD_SELECTION 0x1
#define PD_PAGENUMS 0x2
#define PD_NOSELECTION 0x4
#define PD_NOPAGENUMS 0x8
#define PD_COLLATE 0x10
#define PD_PRINTTOFILE 0x20
#define PD_PRINTSETUP 0x40
#define PD_NOWARNING 0x80
#define PD_RETURNDC 0x100
#define PD_RETURNIC 0x200
#define PD_RETURNDEFAULT 0x400
#define PD_SHOWHELP 0x800
#define PD_ENABLEPRINTHOOK 0x1000
#define PD_ENABLESETUPHOOK 0x2000
#define PD_ENABLEPRINTTEMPLATE 0x4000
#define PD_ENABLESETUPTEMPLATE 0x8000
#define PD_ENABLEPRINTTEMPLATEHANDLE 0x10000
#define PD_ENABLESETUPTEMPLATEHANDLE 0x20000
#define PD_USEDEVMODECOPIES 0x40000
#define PD_USEDEVMODECOPIESANDCOLLATE 0x40000
#define PD_DISABLEPRINTTOFILE 0x80000
#define PD_HIDEPRINTTOFILE 0x100000
#define PD_NONETWORKBUTTON 0x200000
#define PD_CURRENTPAGE 0x400000
#define PD_NOCURRENTPAGE 0x800000
#define PD_EXCLUSIONFLAGS 0x1000000
#define PD_USELARGETEMPLATE 0x10000000
#define PD_EXCL_COPIESANDCOLLATE (DM_COPIES | DM_COLLATE)
#define START_PAGE_GENERAL 0xffffffff
#define PD_RESULT_CANCEL 0
#define PD_RESULT_PRINT 1
#define PD_RESULT_APPLY 2
  typedef struct tagDEVNAMES {
    WORD wDriverOffset;
    WORD wDeviceOffset;
    WORD wOutputOffset;
    WORD wDefault;
  } DEVNAMES,*LPDEVNAMES;
#define DN_DEFAULTPRN 0x1
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) CommDlgExtendedError(void);
#define WM_PSD_PAGESETUPDLG (WM_USER)
#define WM_PSD_FULLPAGERECT (WM_USER+1)
#define WM_PSD_MINMARGINRECT (WM_USER+2)
#define WM_PSD_MARGINRECT (WM_USER+3)
#define WM_PSD_GREEKTEXTRECT (WM_USER+4)
#define WM_PSD_ENVSTAMPRECT (WM_USER+5)
#define WM_PSD_YAFULLPAGERECT (WM_USER+6)
  typedef UINT_PTR (__attribute__((__stdcall__)) *LPPAGEPAINTHOOK)(HWND,UINT,WPARAM,LPARAM);
  typedef UINT_PTR (__attribute__((__stdcall__)) *LPPAGESETUPHOOK)(HWND,UINT,WPARAM,LPARAM);
  typedef struct tagPSDA {
    DWORD lStructSize;
    HWND hwndOwner;
    HGLOBAL hDevMode;
    HGLOBAL hDevNames;
    DWORD Flags;
    POINT ptPaperSize;
    RECT rtMinMargin;
    RECT rtMargin;
    HINSTANCE hInstance;
    LPARAM lCustData;
    LPPAGESETUPHOOK lpfnPageSetupHook;
    LPPAGEPAINTHOOK lpfnPagePaintHook;
    LPCSTR lpPageSetupTemplateName;
    HGLOBAL hPageSetupTemplate;
  } PAGESETUPDLGA,*LPPAGESETUPDLGA;
  typedef struct tagPSDW {
    DWORD lStructSize;
    HWND hwndOwner;
    HGLOBAL hDevMode;
    HGLOBAL hDevNames;
    DWORD Flags;
    POINT ptPaperSize;
    RECT rtMinMargin;
    RECT rtMargin;
    HINSTANCE hInstance;
    LPARAM lCustData;
    LPPAGESETUPHOOK lpfnPageSetupHook;
    LPPAGEPAINTHOOK lpfnPagePaintHook;
    LPCWSTR lpPageSetupTemplateName;
    HGLOBAL hPageSetupTemplate;
  } PAGESETUPDLGW,*LPPAGESETUPDLGW;
  typedef PAGESETUPDLGA PAGESETUPDLG;
  typedef LPPAGESETUPDLGA LPPAGESETUPDLG;
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PageSetupDlgA(LPPAGESETUPDLGA);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) PageSetupDlgW(LPPAGESETUPDLGW);
#define PageSetupDlg __MINGW_NAME_AW(PageSetupDlg)
#define PSD_DEFAULTMINMARGINS 0x0
#define PSD_INWININIINTLMEASURE 0x0
#define PSD_MINMARGINS 0x1
#define PSD_MARGINS 0x2
#define PSD_INTHOUSANDTHSOFINCHES 0x4
#define PSD_INHUNDREDTHSOFMILLIMETERS 0x8
#define PSD_DISABLEMARGINS 0x10
#define PSD_DISABLEPRINTER 0x20
#define PSD_NOWARNING 0x80
#define PSD_DISABLEORIENTATION 0x100
#define PSD_RETURNDEFAULT 0x400
#define PSD_DISABLEPAPER 0x200
#define PSD_SHOWHELP 0x800
#define PSD_ENABLEPAGESETUPHOOK 0x2000
#define PSD_ENABLEPAGESETUPTEMPLATE 0x8000
#define PSD_ENABLEPAGESETUPTEMPLATEHANDLE 0x20000
#define PSD_ENABLEPAGEPAINTHOOK 0x40000
#define PSD_DISABLEPAGEPAINTING 0x80000
#define PSD_NONETWORKBUTTON 0x200000
#pragma pack(pop)
#define __STRALIGN_H_ 
#define _STRALIGN_USE_SECURE_CRT 0
#define WSTR_ALIGNED(s) (((DWORD_PTR)(s) & 1) == 0)
#define ua_CharUpperW CharUpperW
#define ua_lstrcmpiW lstrcmpiW
#define ua_lstrcmpW lstrcmpW
#define ua_lstrlenW lstrlenW
#define ua_wcschr wcschr
#define ua_wcsicmp wcsicmp
#define ua_wcslen wcslen
#define ua_wcsrchr wcsrchr
  PUWSTR ua_wcscpy(PUWSTR Destination,PCUWSTR Source);
  extern inline __attribute__((__gnu_inline__)) PUWSTR ua_wcscpy(PUWSTR Destination,PCUWSTR Source) { return wcscpy(Destination,Source); }
#define __UA_WCSLEN ua_wcslen
#define __UA_WSTRSIZE(s) ((__UA_WCSLEN(s)+1)*sizeof(WCHAR))
#define __UA_STACKCOPY(p,s) memcpy(_alloca(s),p,s)
#define WSTR_ALIGNED_STACK_COPY(d,s) (*(d) = (PCWSTR)(s))
#define ASTR_ALIGNED_STACK_COPY(d,s) (*(d) = (PCSTR)(s))
#define STRUC_ALIGNED_STACK_COPY(t,s) ((CONST t *)(s))
#define TSTR_ALIGNED_STACK_COPY(d,s) ASTR_ALIGNED_STACK_COPY(d,s)
#define TSTR_ALIGNED(x) TRUE
#define ua_CharUpper CharUpperA
#define ua_lstrcmp lstrcmpA
#define ua_lstrcmpi lstrcmpiA
#define ua_lstrlen lstrlenA
#define ua_tcscpy strcpy
#define __STRALIGN_H_S_ 
#define _WINSVC_ 
#define SERVICES_ACTIVE_DATABASEW L"ServicesActive"
#define SERVICES_FAILED_DATABASEW L"ServicesFailed"
#define SERVICES_ACTIVE_DATABASEA "ServicesActive"
#define SERVICES_FAILED_DATABASEA "ServicesFailed"
#define SC_GROUP_IDENTIFIERW L'+'
#define SC_GROUP_IDENTIFIERA '+'
#define SERVICES_ACTIVE_DATABASE __MINGW_NAME_AW(SERVICES_ACTIVE_DATABASE)
#define SERVICES_FAILED_DATABASE __MINGW_NAME_AW(SERVICES_FAILED_DATABASE)
#define SC_GROUP_IDENTIFIER __MINGW_NAME_AW(SC_GROUP_IDENTIFIER)
#define SERVICE_NO_CHANGE 0xffffffff
#define SERVICE_ACTIVE 0x00000001
#define SERVICE_INACTIVE 0x00000002
#define SERVICE_STATE_ALL (SERVICE_ACTIVE | SERVICE_INACTIVE)
#define SERVICE_CONTROL_STOP 0x00000001
#define SERVICE_CONTROL_PAUSE 0x00000002
#define SERVICE_CONTROL_CONTINUE 0x00000003
#define SERVICE_CONTROL_INTERROGATE 0x00000004
#define SERVICE_CONTROL_SHUTDOWN 0x00000005
#define SERVICE_CONTROL_PARAMCHANGE 0x00000006
#define SERVICE_CONTROL_NETBINDADD 0x00000007
#define SERVICE_CONTROL_NETBINDREMOVE 0x00000008
#define SERVICE_CONTROL_NETBINDENABLE 0x00000009
#define SERVICE_CONTROL_NETBINDDISABLE 0x0000000A
#define SERVICE_CONTROL_DEVICEEVENT 0x0000000B
#define SERVICE_CONTROL_HARDWAREPROFILECHANGE 0x0000000C
#define SERVICE_CONTROL_POWEREVENT 0x0000000D
#define SERVICE_CONTROL_SESSIONCHANGE 0x0000000E
#define SERVICE_CONTROL_PRESHUTDOWN 0x0000000F
#define SERVICE_CONTROL_TIMECHANGE 0x00000010
#define SERVICE_CONTROL_USER_LOGOFF 0x00000011
#define SERVICE_CONTROL_TRIGGEREVENT 0x00000020
#define SERVICE_CONTROL_LOWRESOURCES 0x00000060
#define SERVICE_CONTROL_SYSTEMLOWRESOURCES 0x00000061
#define SERVICE_STOPPED 0x00000001
#define SERVICE_START_PENDING 0x00000002
#define SERVICE_STOP_PENDING 0x00000003
#define SERVICE_RUNNING 0x00000004
#define SERVICE_CONTINUE_PENDING 0x00000005
#define SERVICE_PAUSE_PENDING 0x00000006
#define SERVICE_PAUSED 0x00000007
#define SERVICE_ACCEPT_STOP 0x00000001
#define SERVICE_ACCEPT_PAUSE_CONTINUE 0x00000002
#define SERVICE_ACCEPT_SHUTDOWN 0x00000004
#define SERVICE_ACCEPT_PARAMCHANGE 0x00000008
#define SERVICE_ACCEPT_NETBINDCHANGE 0x00000010
#define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 0x00000020
#define SERVICE_ACCEPT_POWEREVENT 0x00000040
#define SERVICE_ACCEPT_SESSIONCHANGE 0x00000080
#define SERVICE_ACCEPT_PRESHUTDOWN 0x00000100
#define SERVICE_ACCEPT_TIMECHANGE 0x00000200
#define SERVICE_ACCEPT_TRIGGEREVENT 0x00000400
#define SERVICE_ACCEPT_USER_LOGOFF 0x00000800
#define SERVICE_ACCEPT_LOWRESOURCES 0x00002000
#define SERVICE_ACCEPT_SYSTEMLOWRESOURCES 0x00004000
#define SC_MANAGER_CONNECT 0x0001
#define SC_MANAGER_CREATE_SERVICE 0x0002
#define SC_MANAGER_ENUMERATE_SERVICE 0x0004
#define SC_MANAGER_LOCK 0x0008
#define SC_MANAGER_QUERY_LOCK_STATUS 0x0010
#define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020
#define SC_MANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SC_MANAGER_CONNECT | SC_MANAGER_CREATE_SERVICE | SC_MANAGER_ENUMERATE_SERVICE | SC_MANAGER_LOCK | SC_MANAGER_QUERY_LOCK_STATUS | SC_MANAGER_MODIFY_BOOT_CONFIG)
#define SERVICE_QUERY_CONFIG 0x0001
#define SERVICE_CHANGE_CONFIG 0x0002
#define SERVICE_QUERY_STATUS 0x0004
#define SERVICE_ENUMERATE_DEPENDENTS 0x0008
#define SERVICE_START 0x0010
#define SERVICE_STOP 0x0020
#define SERVICE_PAUSE_CONTINUE 0x0040
#define SERVICE_INTERROGATE 0x0080
#define SERVICE_USER_DEFINED_CONTROL 0x0100
#define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL)
#define SERVICE_RUNS_IN_SYSTEM_PROCESS 0x00000001
#define SERVICE_CONFIG_DESCRIPTION 1
#define SERVICE_CONFIG_FAILURE_ACTIONS 2
#define SERVICE_CONFIG_DELAYED_AUTO_START_INFO 3
#define SERVICE_CONFIG_FAILURE_ACTIONS_FLAG 4
#define SERVICE_CONFIG_SERVICE_SID_INFO 5
#define SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 6
#define SERVICE_CONFIG_PRESHUTDOWN_INFO 7
#define SERVICE_CONFIG_TRIGGER_INFO 8
#define SERVICE_CONFIG_PREFERRED_NODE 9
#define SERVICE_CONFIG_LAUNCH_PROTECTED 12
#define SERVICE_NOTIFY_STATUS_CHANGE_1 1
#define SERVICE_NOTIFY_STATUS_CHANGE_2 2
#define SERVICE_NOTIFY_STATUS_CHANGE SERVICE_NOTIFY_STATUS_CHANGE_2
#define SERVICE_NOTIFY_STOPPED 0x00000001
#define SERVICE_NOTIFY_START_PENDING 0x00000002
#define SERVICE_NOTIFY_STOP_PENDING 0x00000004
#define SERVICE_NOTIFY_RUNNING 0x00000008
#define SERVICE_NOTIFY_CONTINUE_PENDING 0x00000010
#define SERVICE_NOTIFY_PAUSE_PENDING 0x00000020
#define SERVICE_NOTIFY_PAUSED 0x00000040
#define SERVICE_NOTIFY_CREATED 0x00000080
#define SERVICE_NOTIFY_DELETED 0x00000100
#define SERVICE_NOTIFY_DELETE_PENDING 0x00000200
#define SERVICE_STOP_REASON_FLAG_MIN 0x00000000
#define SERVICE_STOP_REASON_FLAG_UNPLANNED 0x10000000
#define SERVICE_STOP_REASON_FLAG_CUSTOM 0x20000000
#define SERVICE_STOP_REASON_FLAG_PLANNED 0x40000000
#define SERVICE_STOP_REASON_FLAG_MAX 0x80000000
#define SERVICE_STOP_REASON_MAJOR_MIN 0x00000000
#define SERVICE_STOP_REASON_MAJOR_OTHER 0x00010000
#define SERVICE_STOP_REASON_MAJOR_HARDWARE 0x00020000
#define SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM 0x00030000
#define SERVICE_STOP_REASON_MAJOR_SOFTWARE 0x00040000
#define SERVICE_STOP_REASON_MAJOR_APPLICATION 0x00050000
#define SERVICE_STOP_REASON_MAJOR_NONE 0x00060000
#define SERVICE_STOP_REASON_MAJOR_MAX 0x00070000
#define SERVICE_STOP_REASON_MAJOR_MIN_CUSTOM 0x00400000
#define SERVICE_STOP_REASON_MAJOR_MAX_CUSTOM 0x00ff0000
#define SERVICE_STOP_REASON_MINOR_MIN 0x00000000
#define SERVICE_STOP_REASON_MINOR_OTHER 0x00000001
#define SERVICE_STOP_REASON_MINOR_MAINTENANCE 0x00000002
#define SERVICE_STOP_REASON_MINOR_INSTALLATION 0x00000003
#define SERVICE_STOP_REASON_MINOR_UPGRADE 0x00000004
#define SERVICE_STOP_REASON_MINOR_RECONFIG 0x00000005
#define SERVICE_STOP_REASON_MINOR_HUNG 0x00000006
#define SERVICE_STOP_REASON_MINOR_UNSTABLE 0x00000007
#define SERVICE_STOP_REASON_MINOR_DISK 0x00000008
#define SERVICE_STOP_REASON_MINOR_NETWORKCARD 0x00000009
#define SERVICE_STOP_REASON_MINOR_ENVIRONMENT 0x0000000a
#define SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER 0x0000000b
#define SERVICE_STOP_REASON_MINOR_OTHERDRIVER 0x0000000c
#define SERVICE_STOP_REASON_MINOR_SERVICEPACK 0x0000000d
#define SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE 0x0000000e
#define SERVICE_STOP_REASON_MINOR_SECURITYFIX 0x0000000f
#define SERVICE_STOP_REASON_MINOR_SECURITY 0x00000010
#define SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY 0x00000011
#define SERVICE_STOP_REASON_MINOR_WMI 0x00000012
#define SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL 0x00000013
#define SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE_UNINSTALL 0x00000014
#define SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL 0x00000015
#define SERVICE_STOP_REASON_MINOR_MMC 0x00000016
#define SERVICE_STOP_REASON_MINOR_NONE 0x00000017
#define SERVICE_STOP_REASON_MINOR_MEMOTYLIMIT 0x00000018
#define SERVICE_STOP_REASON_MINOR_MAX 0x00000019
#define SERVICE_STOP_REASON_MINOR_MIN_CUSTOM 0x00000100
#define SERVICE_STOP_REASON_MINOR_MAX_CUSTOM 0x0000FFFF
#define SERVICE_CONTROL_STATUS_REASON_INFO 1
#define SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL 1
#define SERVICE_TRIGGER_TYPE_IP_ADDRESS_AVAILABILITY 2
#define SERVICE_TRIGGER_TYPE_DOMAIN_JOIN 3
#define SERVICE_TRIGGER_TYPE_FIREWALL_PORT_EVENT 4
#define SERVICE_TRIGGER_TYPE_GROUP_POLICY 5
#define SERVICE_TRIGGER_TYPE_NETWORK_ENDPOINT 6
#define SERVICE_TRIGGER_TYPE_CUSTOM_SYSTEM_STATE_CHANGE 7
#define SERVICE_TRIGGER_TYPE_CUSTOM 20
#define SERVICE_TRIGGER_TYPE_AGGREGATE 30
#define SERVICE_TRIGGER_DATA_TYPE_BINARY 1
#define SERVICE_TRIGGER_DATA_TYPE_STRING 2
#define SERVICE_TRIGGER_DATA_TYPE_LEVEL 3
#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ANY 4
#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ALL 5
#define SERVICE_START_REASON_DEMAND 0x00000001
#define SERVICE_START_REASON_AUTO 0x00000002
#define SERVICE_START_REASON_TRIGGER 0x00000004
#define SERVICE_START_REASON_RESTART_ON_FAILURE 0x00000008
#define SERVICE_START_REASON_DELAYEDAUTO 0x00000010
#define SERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON 1
#define SERVICE_LAUNCH_PROTECTED_NONE 0
#define SERVICE_LAUNCH_PROTECTED_WINDOWS 1
#define SERVICE_LAUNCH_PROTECTED_WINDOWS_LIGHT 2
#define SERVICE_LAUNCH_PROTECTED_ANTIMALWARE_LIGHT 3
  typedef struct _SERVICE_DESCRIPTIONA {
    LPSTR lpDescription;
  } SERVICE_DESCRIPTIONA,*LPSERVICE_DESCRIPTIONA;
  typedef struct _SERVICE_DESCRIPTIONW {
    LPWSTR lpDescription;
  } SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
  typedef SERVICE_DESCRIPTIONA SERVICE_DESCRIPTION;
  typedef LPSERVICE_DESCRIPTIONA LPSERVICE_DESCRIPTION;
  typedef enum _SC_ACTION_TYPE {
    SC_ACTION_NONE = 0,SC_ACTION_RESTART = 1,SC_ACTION_REBOOT = 2,SC_ACTION_RUN_COMMAND = 3
  } SC_ACTION_TYPE;
  typedef struct _SC_ACTION {
    SC_ACTION_TYPE Type;
    DWORD Delay;
  } SC_ACTION,*LPSC_ACTION;
  typedef struct _SERVICE_FAILURE_ACTIONSA {
    DWORD dwResetPeriod;
    LPSTR lpRebootMsg;
    LPSTR lpCommand;
    DWORD cActions;
    SC_ACTION *lpsaActions;
  } SERVICE_FAILURE_ACTIONSA,*LPSERVICE_FAILURE_ACTIONSA;
  typedef struct _SERVICE_FAILURE_ACTIONSW {
    DWORD dwResetPeriod;
    LPWSTR lpRebootMsg;
    LPWSTR lpCommand;
    DWORD cActions;
    SC_ACTION *lpsaActions;
  } SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW;
  typedef SERVICE_FAILURE_ACTIONSA SERVICE_FAILURE_ACTIONS;
  typedef LPSERVICE_FAILURE_ACTIONSA LPSERVICE_FAILURE_ACTIONS;
  struct SC_HANDLE__ { int unused; }; typedef struct SC_HANDLE__ *SC_HANDLE;
  typedef SC_HANDLE *LPSC_HANDLE;
  struct SERVICE_STATUS_HANDLE__ { int unused; }; typedef struct SERVICE_STATUS_HANDLE__ *SERVICE_STATUS_HANDLE;
  typedef enum _SC_STATUS_TYPE {
    SC_STATUS_PROCESS_INFO = 0
  } SC_STATUS_TYPE;
  typedef enum _SC_ENUM_TYPE {
    SC_ENUM_PROCESS_INFO = 0
  } SC_ENUM_TYPE;
  typedef struct _SERVICE_STATUS {
    DWORD dwServiceType;
    DWORD dwCurrentState;
    DWORD dwControlsAccepted;
    DWORD dwWin32ExitCode;
    DWORD dwServiceSpecificExitCode;
    DWORD dwCheckPoint;
    DWORD dwWaitHint;
  } SERVICE_STATUS,*LPSERVICE_STATUS;
  typedef struct _SERVICE_STATUS_PROCESS {
    DWORD dwServiceType;
    DWORD dwCurrentState;
    DWORD dwControlsAccepted;
    DWORD dwWin32ExitCode;
    DWORD dwServiceSpecificExitCode;
    DWORD dwCheckPoint;
    DWORD dwWaitHint;
    DWORD dwProcessId;
    DWORD dwServiceFlags;
  } SERVICE_STATUS_PROCESS,*LPSERVICE_STATUS_PROCESS;
  typedef struct _ENUM_SERVICE_STATUSA {
    LPSTR lpServiceName;
    LPSTR lpDisplayName;
    SERVICE_STATUS ServiceStatus;
  } ENUM_SERVICE_STATUSA,*LPENUM_SERVICE_STATUSA;
  typedef struct _ENUM_SERVICE_STATUSW {
    LPWSTR lpServiceName;
    LPWSTR lpDisplayName;
    SERVICE_STATUS ServiceStatus;
  } ENUM_SERVICE_STATUSW,*LPENUM_SERVICE_STATUSW;
  typedef ENUM_SERVICE_STATUSA ENUM_SERVICE_STATUS;
  typedef LPENUM_SERVICE_STATUSA LPENUM_SERVICE_STATUS;
  typedef struct _ENUM_SERVICE_STATUS_PROCESSA {
    LPSTR lpServiceName;
    LPSTR lpDisplayName;
    SERVICE_STATUS_PROCESS ServiceStatusProcess;
  } ENUM_SERVICE_STATUS_PROCESSA,*LPENUM_SERVICE_STATUS_PROCESSA;
  typedef struct _ENUM_SERVICE_STATUS_PROCESSW {
    LPWSTR lpServiceName;
    LPWSTR lpDisplayName;
    SERVICE_STATUS_PROCESS ServiceStatusProcess;
  } ENUM_SERVICE_STATUS_PROCESSW,*LPENUM_SERVICE_STATUS_PROCESSW;
  typedef ENUM_SERVICE_STATUS_PROCESSA ENUM_SERVICE_STATUS_PROCESS;
  typedef LPENUM_SERVICE_STATUS_PROCESSA LPENUM_SERVICE_STATUS_PROCESS;
  typedef LPVOID SC_LOCK;
  typedef struct _QUERY_SERVICE_LOCK_STATUSA {
    DWORD fIsLocked;
    LPSTR lpLockOwner;
    DWORD dwLockDuration;
  } QUERY_SERVICE_LOCK_STATUSA,*LPQUERY_SERVICE_LOCK_STATUSA;
  typedef struct _QUERY_SERVICE_LOCK_STATUSW {
    DWORD fIsLocked;
    LPWSTR lpLockOwner;
    DWORD dwLockDuration;
  } QUERY_SERVICE_LOCK_STATUSW,*LPQUERY_SERVICE_LOCK_STATUSW;
  typedef QUERY_SERVICE_LOCK_STATUSA QUERY_SERVICE_LOCK_STATUS;
  typedef LPQUERY_SERVICE_LOCK_STATUSA LPQUERY_SERVICE_LOCK_STATUS;
  typedef struct _QUERY_SERVICE_CONFIGA {
    DWORD dwServiceType;
    DWORD dwStartType;
    DWORD dwErrorControl;
    LPSTR lpBinaryPathName;
    LPSTR lpLoadOrderGroup;
    DWORD dwTagId;
    LPSTR lpDependencies;
    LPSTR lpServiceStartName;
    LPSTR lpDisplayName;
  } QUERY_SERVICE_CONFIGA,*LPQUERY_SERVICE_CONFIGA;
  typedef struct _QUERY_SERVICE_CONFIGW {
    DWORD dwServiceType;
    DWORD dwStartType;
    DWORD dwErrorControl;
    LPWSTR lpBinaryPathName;
    LPWSTR lpLoadOrderGroup;
    DWORD dwTagId;
    LPWSTR lpDependencies;
    LPWSTR lpServiceStartName;
    LPWSTR lpDisplayName;
  } QUERY_SERVICE_CONFIGW,*LPQUERY_SERVICE_CONFIGW;
  typedef QUERY_SERVICE_CONFIGA QUERY_SERVICE_CONFIG;
  typedef LPQUERY_SERVICE_CONFIGA LPQUERY_SERVICE_CONFIG;
  typedef void (__attribute__((__stdcall__)) *LPSERVICE_MAIN_FUNCTIONW)(DWORD dwNumServicesArgs,LPWSTR *lpServiceArgVectors);
  typedef void (__attribute__((__stdcall__)) *LPSERVICE_MAIN_FUNCTIONA)(DWORD dwNumServicesArgs,LPSTR *lpServiceArgVectors);
#define LPSERVICE_MAIN_FUNCTION __MINGW_NAME_AW(LPSERVICE_MAIN_FUNCTION)
  typedef struct _SERVICE_TABLE_ENTRYA {
    LPSTR lpServiceName;
    LPSERVICE_MAIN_FUNCTIONA lpServiceProc;
  } SERVICE_TABLE_ENTRYA,*LPSERVICE_TABLE_ENTRYA;
  typedef struct _SERVICE_TABLE_ENTRYW {
    LPWSTR lpServiceName;
    LPSERVICE_MAIN_FUNCTIONW lpServiceProc;
  } SERVICE_TABLE_ENTRYW,*LPSERVICE_TABLE_ENTRYW;
  typedef SERVICE_TABLE_ENTRYA SERVICE_TABLE_ENTRY;
  typedef LPSERVICE_TABLE_ENTRYA LPSERVICE_TABLE_ENTRY;
  typedef void (__attribute__((__stdcall__)) *LPHANDLER_FUNCTION)(DWORD dwControl);
  typedef DWORD (__attribute__((__stdcall__)) *LPHANDLER_FUNCTION_EX)(DWORD dwControl,DWORD dwEventType,LPVOID lpEventData,LPVOID lpContext);
#define ChangeServiceConfig __MINGW_NAME_AW(ChangeServiceConfig)
#define ChangeServiceConfig2 __MINGW_NAME_AW(ChangeServiceConfig2)
#define CreateService __MINGW_NAME_AW(CreateService)
#define EnumDependentServices __MINGW_NAME_AW(EnumDependentServices)
#define EnumServicesStatus __MINGW_NAME_AW(EnumServicesStatus)
#define EnumServicesStatusEx __MINGW_NAME_AW(EnumServicesStatusEx)
#define GetServiceKeyName __MINGW_NAME_AW(GetServiceKeyName)
#define GetServiceDisplayName __MINGW_NAME_AW(GetServiceDisplayName)
#define OpenSCManager __MINGW_NAME_AW(OpenSCManager)
#define OpenService __MINGW_NAME_AW(OpenService)
#define QueryServiceConfig __MINGW_NAME_AW(QueryServiceConfig)
#define QueryServiceConfig2 __MINGW_NAME_AW(QueryServiceConfig2)
#define QueryServiceLockStatus __MINGW_NAME_AW(QueryServiceLockStatus)
#define RegisterServiceCtrlHandler __MINGW_NAME_AW(RegisterServiceCtrlHandler)
#define RegisterServiceCtrlHandlerEx __MINGW_NAME_AW(RegisterServiceCtrlHandlerEx)
#define StartServiceCtrlDispatcher __MINGW_NAME_AW(StartServiceCtrlDispatcher)
#define StartService __MINGW_NAME_AW(StartService)
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ChangeServiceConfigA(SC_HANDLE hService,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCSTR lpBinaryPathName,LPCSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCSTR lpDependencies,LPCSTR lpServiceStartName,LPCSTR lpPassword,LPCSTR lpDisplayName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ChangeServiceConfigW(SC_HANDLE hService,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCWSTR lpBinaryPathName,LPCWSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCWSTR lpDependencies,LPCWSTR lpServiceStartName,LPCWSTR lpPassword,LPCWSTR lpDisplayName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ChangeServiceConfig2A(SC_HANDLE hService,DWORD dwInfoLevel,LPVOID lpInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ChangeServiceConfig2W(SC_HANDLE hService,DWORD dwInfoLevel,LPVOID lpInfo);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) CloseServiceHandle(SC_HANDLE hSCObject);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ControlService(SC_HANDLE hService,DWORD dwControl,LPSERVICE_STATUS lpServiceStatus);
  __attribute__((dllimport)) SC_HANDLE __attribute__((__stdcall__)) CreateServiceA(SC_HANDLE hSCManager,LPCSTR lpServiceName,LPCSTR lpDisplayName,DWORD dwDesiredAccess,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCSTR lpBinaryPathName,LPCSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCSTR lpDependencies,LPCSTR lpServiceStartName,LPCSTR lpPassword);
  __attribute__((dllimport)) SC_HANDLE __attribute__((__stdcall__)) CreateServiceW(SC_HANDLE hSCManager,LPCWSTR lpServiceName,LPCWSTR lpDisplayName,DWORD dwDesiredAccess,DWORD dwServiceType,DWORD dwStartType,DWORD dwErrorControl,LPCWSTR lpBinaryPathName,LPCWSTR lpLoadOrderGroup,LPDWORD lpdwTagId,LPCWSTR lpDependencies,LPCWSTR lpServiceStartName,LPCWSTR lpPassword);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) DeleteService(SC_HANDLE hService);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDependentServicesA(SC_HANDLE hService,DWORD dwServiceState,LPENUM_SERVICE_STATUSA lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumDependentServicesW(SC_HANDLE hService,DWORD dwServiceState,LPENUM_SERVICE_STATUSW lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumServicesStatusA(SC_HANDLE hSCManager,DWORD dwServiceType,DWORD dwServiceState,LPENUM_SERVICE_STATUSA lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumServicesStatusW(SC_HANDLE hSCManager,DWORD dwServiceType,DWORD dwServiceState,LPENUM_SERVICE_STATUSW lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumServicesStatusExA(SC_HANDLE hSCManager,SC_ENUM_TYPE InfoLevel,DWORD dwServiceType,DWORD dwServiceState,LPBYTE lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle,LPCSTR pszGroupName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) EnumServicesStatusExW(SC_HANDLE hSCManager,SC_ENUM_TYPE InfoLevel,DWORD dwServiceType,DWORD dwServiceState,LPBYTE lpServices,DWORD cbBufSize,LPDWORD pcbBytesNeeded,LPDWORD lpServicesReturned,LPDWORD lpResumeHandle,LPCWSTR pszGroupName);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetServiceKeyNameA(SC_HANDLE hSCManager,LPCSTR lpDisplayName,LPSTR lpServiceName,LPDWORD lpcchBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetServiceKeyNameW(SC_HANDLE hSCManager,LPCWSTR lpDisplayName,LPWSTR lpServiceName,LPDWORD lpcchBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetServiceDisplayNameA(SC_HANDLE hSCManager,LPCSTR lpServiceName,LPSTR lpDisplayName,LPDWORD lpcchBuffer);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) GetServiceDisplayNameW(SC_HANDLE hSCManager,LPCWSTR lpServiceName,LPWSTR lpDisplayName,LPDWORD lpcchBuffer);
  __attribute__((dllimport)) SC_LOCK __attribute__((__stdcall__)) LockServiceDatabase(SC_HANDLE hSCManager);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) NotifyBootConfigStatus(WINBOOL BootAcceptable);
  __attribute__((dllimport)) SC_HANDLE __attribute__((__stdcall__)) OpenSCManagerA(LPCSTR lpMachineName,LPCSTR lpDatabaseName,DWORD dwDesiredAccess);
  __attribute__((dllimport)) SC_HANDLE __attribute__((__stdcall__)) OpenSCManagerW(LPCWSTR lpMachineName,LPCWSTR lpDatabaseName,DWORD dwDesiredAccess);
  __attribute__((dllimport)) SC_HANDLE __attribute__((__stdcall__)) OpenServiceA(SC_HANDLE hSCManager,LPCSTR lpServiceName,DWORD dwDesiredAccess);
  __attribute__((dllimport)) SC_HANDLE __attribute__((__stdcall__)) OpenServiceW(SC_HANDLE hSCManager,LPCWSTR lpServiceName,DWORD dwDesiredAccess);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryServiceConfigA(SC_HANDLE hService,LPQUERY_SERVICE_CONFIGA lpServiceConfig,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryServiceConfigW(SC_HANDLE hService,LPQUERY_SERVICE_CONFIGW lpServiceConfig,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryServiceConfig2A(SC_HANDLE hService,DWORD dwInfoLevel,LPBYTE lpBuffer,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryServiceConfig2W(SC_HANDLE hService,DWORD dwInfoLevel,LPBYTE lpBuffer,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryServiceLockStatusA(SC_HANDLE hSCManager,LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryServiceLockStatusW(SC_HANDLE hSCManager,LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryServiceObjectSecurity(SC_HANDLE hService,SECURITY_INFORMATION dwSecurityInformation,PSECURITY_DESCRIPTOR lpSecurityDescriptor,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryServiceStatus(SC_HANDLE hService,LPSERVICE_STATUS lpServiceStatus);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) QueryServiceStatusEx(SC_HANDLE hService,SC_STATUS_TYPE InfoLevel,LPBYTE lpBuffer,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
  __attribute__((dllimport)) SERVICE_STATUS_HANDLE __attribute__((__stdcall__)) RegisterServiceCtrlHandlerA(LPCSTR lpServiceName,LPHANDLER_FUNCTION lpHandlerProc);
  __attribute__((dllimport)) SERVICE_STATUS_HANDLE __attribute__((__stdcall__)) RegisterServiceCtrlHandlerW(LPCWSTR lpServiceName,LPHANDLER_FUNCTION lpHandlerProc);
  __attribute__((dllimport)) SERVICE_STATUS_HANDLE __attribute__((__stdcall__)) RegisterServiceCtrlHandlerExA(LPCSTR lpServiceName,LPHANDLER_FUNCTION_EX lpHandlerProc,LPVOID lpContext);
  __attribute__((dllimport)) SERVICE_STATUS_HANDLE __attribute__((__stdcall__)) RegisterServiceCtrlHandlerExW(LPCWSTR lpServiceName,LPHANDLER_FUNCTION_EX lpHandlerProc,LPVOID lpContext);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetServiceObjectSecurity(SC_HANDLE hService,SECURITY_INFORMATION dwSecurityInformation,PSECURITY_DESCRIPTOR lpSecurityDescriptor);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus,LPSERVICE_STATUS lpServiceStatus);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) StartServiceCtrlDispatcherA(const SERVICE_TABLE_ENTRYA *lpServiceStartTable);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) StartServiceCtrlDispatcherW(const SERVICE_TABLE_ENTRYW *lpServiceStartTable);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) StartServiceA(SC_HANDLE hService,DWORD dwNumServiceArgs,LPCSTR *lpServiceArgVectors);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) StartServiceW(SC_HANDLE hService,DWORD dwNumServiceArgs,LPCWSTR *lpServiceArgVectors);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) UnlockServiceDatabase(SC_LOCK ScLock);
typedef void( __attribute__((__stdcall__)) * PFN_SC_NOTIFY_CALLBACK ) (
  PVOID pParameter
);
typedef struct _SERVICE_CONTROL_STATUS_REASON_PARAMSA {
  DWORD dwReason;
  LPSTR pszComment;
  SERVICE_STATUS_PROCESS ServiceStatus;
} SERVICE_CONTROL_STATUS_REASON_PARAMSA, *PSERVICE_CONTROL_STATUS_REASON_PARAMSA;
typedef struct _SERVICE_CONTROL_STATUS_REASON_PARAMSW {
  DWORD dwReason;
  LPWSTR pszComment;
  SERVICE_STATUS_PROCESS ServiceStatus;
} SERVICE_CONTROL_STATUS_REASON_PARAMSW, *PSERVICE_CONTROL_STATUS_REASON_PARAMSW;
typedef SERVICE_CONTROL_STATUS_REASON_PARAMSA SERVICE_CONTROL_STATUS_REASON_PARAMS;
typedef PSERVICE_CONTROL_STATUS_REASON_PARAMSA PSERVICE_CONTROL_STATUS_REASON_PARAMS;
#define SERVICE_STOP_REASON_FLAG_CUSTOM 0x20000000
#define SERVICE_STOP_REASON_FLAG_PLANNED 0x40000000
#define SERVICE_STOP_REASON_FLAG_UNPLANNED 0x10000000
#define SERVICE_STOP_REASON_MAJOR_APPLICATION 0x00050000
#define SERVICE_STOP_REASON_MAJOR_HARDWARE 0x00020000
#define SERVICE_STOP_REASON_MAJOR_NONE 0x00060000
#define SERVICE_STOP_REASON_MAJOR_OPERATINGSYSTEM 0x00030000
#define SERVICE_STOP_REASON_MAJOR_OTHER 0x00010000
#define SERVICE_STOP_REASON_MAJOR_SOFTWARE 0x00040000
#define SERVICE_STOP_REASON_MINOR_DISK 0x00000008
#define SERVICE_STOP_REASON_MINOR_ENVIRONMENT 0x0000000a
#define SERVICE_STOP_REASON_MINOR_HARDWARE_DRIVER 0x0000000b
#define SERVICE_STOP_REASON_MINOR_HUNG 0x00000006
#define SERVICE_STOP_REASON_MINOR_INSTALLATION 0x00000003
#define SERVICE_STOP_REASON_MINOR_MAINTENANCE 0x00000002
#define SERVICE_STOP_REASON_MINOR_MMC 0x00000016
#define SERVICE_STOP_REASON_MINOR_NETWORK_CONNECTIVITY 0x00000011
#define SERVICE_STOP_REASON_MINOR_NETWORKCARD 0x00000009
#define SERVICE_STOP_REASON_MINOR_OTHER 0x00000001
#define SERVICE_STOP_REASON_MINOR_OTHERDRIVER 0x0000000c
#define SERVICE_STOP_REASON_MINOR_RECONFIG 0x00000005
#define SERVICE_STOP_REASON_MINOR_SECURITY 0x00000010
#define SERVICE_STOP_REASON_MINOR_SECURITYFIX 0x0000000f
#define SERVICE_STOP_REASON_MINOR_SECURITYFIX_UNINSTALL 0x00000015
#define SERVICE_STOP_REASON_MINOR_SERVICEPACK 0x0000000d
#define SERVICE_STOP_REASON_MINOR_SERVICEPACK_UNINSTALL 0x00000013
#define SERVICE_STOP_REASON_MINOR_SOFTWARE_UPDATE 0x0000000e
#define SERVICE_STOP_REASON_MINOR_UNSTABLE 0x00000007
#define SERVICE_STOP_REASON_MINOR_UPGRADE 0x00000004
#define SERVICE_STOP_REASON_MINOR_WMI 0x00000012
typedef struct _SERVICE_NOTIFYA {
  DWORD dwVersion;
  PFN_SC_NOTIFY_CALLBACK pfnNotifyCallback;
  PVOID pContext;
  DWORD dwNotificationStatus;
  SERVICE_STATUS_PROCESS ServiceStatus;
  DWORD dwNotificationTriggered;
  LPSTR pszServiceNames;
} SERVICE_NOTIFYA, *PSERVICE_NOTIFYA;
typedef struct _SERVICE_NOTIFYW {
  DWORD dwVersion;
  PFN_SC_NOTIFY_CALLBACK pfnNotifyCallback;
  PVOID pContext;
  DWORD dwNotificationStatus;
  SERVICE_STATUS_PROCESS ServiceStatus;
  DWORD dwNotificationTriggered;
  LPWSTR pszServiceNames;
} SERVICE_NOTIFYW, *PSERVICE_NOTIFYW;
typedef SERVICE_NOTIFYA SERVICE_NOTIFY;
typedef PSERVICE_NOTIFYA PSERVICE_NOTIFY;
#define SERVICE_CONFIG_DELAYED_AUTO_START_INFO 3
#define SERVICE_CONFIG_FAILURE_ACTIONS_FLAG 4
#define SERVICE_CONFIG_SERVICE_SID_INFO 5
#define SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 6
#define SERVICE_CONFIG_PRESHUTDOWN_INFO 7
typedef struct _SERVICE_DELAYED_AUTO_START_INFO {
  WINBOOL fDelayedAutostart;
} SERVICE_DELAYED_AUTO_START_INFO, *LPSERVICE_DELAYED_AUTO_START_INFO;
typedef struct _SERVICE_FAILURE_ACTIONS_FLAG {
  WINBOOL fFailureActionsOnNonCrashFailures;
} SERVICE_FAILURE_ACTIONS_FLAG, *LPSERVICE_FAILURE_ACTIONS_FLAG;
typedef struct _SERVICE_PRESHUTDOWN_INFO {
  DWORD dwPreshutdownTimeout;
} SERVICE_PRESHUTDOWN_INFO, *LPSERVICE_PRESHUTDOWN_INFO;
typedef struct _SERVICE_REQUIRED_PRIVILEGES_INFOA {
  LPSTR pmszRequiredPrivileges;
} SERVICE_REQUIRED_PRIVILEGES_INFOA, *LPSERVICE_REQUIRED_PRIVILEGES_INFOA;
typedef struct _SERVICE_REQUIRED_PRIVILEGES_INFOW {
  LPWSTR pmszRequiredPrivileges;
} SERVICE_REQUIRED_PRIVILEGES_INFOW, *LPSERVICE_REQUIRED_PRIVILEGES_INFOW;
typedef SERVICE_REQUIRED_PRIVILEGES_INFOA SERVICE_REQUIRED_PRIVILEGES_INFO;
#define SERVICE_SID_TYPE_NONE 0x00000000
#define SERVICE_SID_TYPE_RESTRICTED 0x00000003
#define SERVICE_SID_TYPE_UNRESTRICTED 0x00000001
typedef struct _SERVICE_SID_INFO {
  DWORD dwServiceSidType;
} SERVICE_SID_INFO, *LPSERVICE_SID_INFO;
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ControlServiceExA(
  SC_HANDLE hService,
  DWORD dwControl,
  DWORD dwInfoLevel,
  PVOID pControlParams
);
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) ControlServiceExW(
  SC_HANDLE hService,
  DWORD dwControl,
  DWORD dwInfoLevel,
  PVOID pControlParams
);
#define ControlServiceEx __MINGW_NAME_AW(ControlServiceEx)
#define NotifyServiceStatusChange __MINGW_NAME_AW(NotifyServiceStatusChange)
DWORD __attribute__((__stdcall__)) NotifyServiceStatusChangeA(
  SC_HANDLE hService,
  DWORD dwNotifyMask,
  PSERVICE_NOTIFYA pNotifyBuffer
);
DWORD __attribute__((__stdcall__)) NotifyServiceStatusChangeW(
  SC_HANDLE hService,
  DWORD dwNotifyMask,
  PSERVICE_NOTIFYW pNotifyBuffer
);
#define _MCX_H_ 
typedef struct _MODEMDEVCAPS {
  DWORD 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;
  BYTE abVariablePortion[1];
} MODEMDEVCAPS,*PMODEMDEVCAPS,*LPMODEMDEVCAPS;
typedef struct _MODEMSETTINGS {
  DWORD dwActualSize;
  DWORD dwRequiredSize;
  DWORD dwDevSpecificOffset;
  DWORD dwDevSpecificSize;
  DWORD dwCallSetupFailTimer;
  DWORD dwInactivityTimeout;
  DWORD dwSpeakerVolume;
  DWORD dwSpeakerMode;
  DWORD dwPreferredModemOptions;
  DWORD dwNegotiatedModemOptions;
  DWORD dwNegotiatedDCERate;
  BYTE abVariablePortion [1];
} MODEMSETTINGS,*PMODEMSETTINGS,*LPMODEMSETTINGS;
#define DIALOPTION_BILLING 0x00000040
#define DIALOPTION_QUIET 0x00000080
#define DIALOPTION_DIALTONE 0x00000100
#define MDMVOLFLAG_LOW 0x00000001
#define MDMVOLFLAG_MEDIUM 0x00000002
#define MDMVOLFLAG_HIGH 0x00000004
#define MDMVOL_LOW 0x00000000
#define MDMVOL_MEDIUM 0x00000001
#define MDMVOL_HIGH 0x00000002
#define MDMSPKRFLAG_OFF 0x00000001
#define MDMSPKRFLAG_DIAL 0x00000002
#define MDMSPKRFLAG_ON 0x00000004
#define MDMSPKRFLAG_CALLSETUP 0x00000008
#define MDMSPKR_OFF 0x00000000
#define MDMSPKR_DIAL 0x00000001
#define MDMSPKR_ON 0x00000002
#define MDMSPKR_CALLSETUP 0x00000003
#define MDM_COMPRESSION 0x00000001
#define MDM_ERROR_CONTROL 0x00000002
#define MDM_FORCED_EC 0x00000004
#define MDM_CELLULAR 0x00000008
#define MDM_FLOWCONTROL_HARD 0x00000010
#define MDM_FLOWCONTROL_SOFT 0x00000020
#define MDM_CCITT_OVERRIDE 0x00000040
#define MDM_SPEED_ADJUST 0x00000080
#define MDM_TONE_DIAL 0x00000100
#define MDM_BLIND_DIAL 0x00000200
#define MDM_V23_OVERRIDE 0x00000400
#define MDM_DIAGNOSTICS 0x00000800
#define MDM_MASK_BEARERMODE 0x0000f000
#define MDM_SHIFT_BEARERMODE 12
#define MDM_MASK_PROTOCOLID 0x000f0000
#define MDM_SHIFT_PROTOCOLID 16
#define MDM_MASK_PROTOCOLDATA 0x0ff00000
#define MDM_SHIFT_PROTOCOLDATA 20
#define MDM_MASK_PROTOCOLINFO (MDM_MASK_PROTOCOLID|MDM_MASK_PROTOCOLDATA)
#define MDM_SHIFT_PROTOCOLINFO MDM_SHIFT_PROTOCOLID
#define MDM_MASK_EXTENDEDINFO (MDM_MASK_BEARERMODE|MDM_MASK_PROTOCOLINFO)
#define MDM_SHIFT_EXTENDEDINFO MDM_SHIFT_BEARERMODE
#define MDM_GET_BEARERMODE(_dwOptions) (((_dwOptions)&MDM_MASK_BEARERMODE) >> MDM_SHIFT_BEARERMODE)
#define MDM_SET_BEARERMODE(_dwOptions,_bm) (((_dwOptions) &= ~MDM_MASK_BEARERMODE),((_dwOptions) |= (((_bm)<<MDM_SHIFT_BEARERMODE)&MDM_MASK_BEARERMODE)))
#define MDM_GET_PROTOCOLID(_dwOptions) (((_dwOptions)&MDM_MASK_PROTOCOLID) >> MDM_SHIFT_PROTOCOLID)
#define MDM_SET_PROTOCOLID(_dwOptions,_prot) (((_dwOptions) &= ~MDM_MASK_PROTOCOLID),((_dwOptions) |= (((_prot)<<MDM_SHIFT_PROTOCOLID)&MDM_MASK_PROTOCOLID)))
#define MDM_GET_PROTOCOLDATA(_dwOptions) (((_dwOptions)&MDM_MASK_PROTOCOLDATA) >> MDM_SHIFT_PROTOCOLDATA)
#define MDM_SET_PROTOCOLDATA(_dwOptions,_pd) (((_dwOptions) &= ~MDM_MASK_PROTOCOLDATA),((_dwOptions) |= (((_pd)<<MDM_SHIFT_PROTOCOLDATA)&MDM_MASK_PROTOCOLDATA)))
#define MDM_GET_PROTOCOLINFO(_dwOptions) ((_dwOptions)&MDM_MASK_PROTOCOLINFO)
#define MDM_SET_PROTOCOLINFO(_dwOptions,_pinfo) (((_dwOptions) &= ~MDM_MASK_PROTOCOLINFO),((_dwOptions) |= ((_pinfo)&MDM_MASK_PROTOCOLINFO)))
#define MDM_GEN_PROTOCOLINFO(_pid,_pdata) ((((_pid)<<MDM_SHIFT_PROTOCOLID)&MDM_MASK_PROTOCOLID) |(((_pdata)<<MDM_SHIFT_PROTOCOLDATA)&MDM_MASK_PROTOCOLDATA))
#define MDM_GET_EXTENDEDINFO(_dwOptions) ((_dwOptions)&MDM_MASK_EXTENDEDINFO)
#define MDM_SET_EXTENDEDINFO(_dwOptions,_extinfo) (((_dwOptions) &= ~MDM_MASK_EXTENDEDINFO),((_dwOptions) |= ((_extinfo) & MDM_MASK_EXTENDEDINFO)))
#define MDM_GEN_EXTENDEDINFO(_bearermode,_pinfo) (((_pinfo)&MDM_MASK_PROTOCOLINFO) |(((_bearermode)<<MDM_SHIFT_BEARERMODE)&MDM_MASK_BEARERMODE))
#define MDM_BEARERMODE_ANALOG 0x0
#define MDM_BEARERMODE_ISDN 0x1
#define MDM_BEARERMODE_GSM 0x2
#define MDM_PROTOCOLID_DEFAULT 0x0
#define MDM_PROTOCOLID_HDLCPPP 0x1
#define MDM_PROTOCOLID_V128 0x2
#define MDM_PROTOCOLID_X75 0x3
#define MDM_PROTOCOLID_V110 0x4
#define MDM_PROTOCOLID_V120 0x5
#define MDM_PROTOCOLID_AUTO 0x6
#define MDM_PROTOCOLID_ANALOG 0x7
#define MDM_PROTOCOLID_GPRS 0x8
#define MDM_PROTOCOLID_PIAFS 0x9
#define MDM_SHIFT_HDLCPPP_SPEED 0x0
#define MDM_MASK_HDLCPPP_SPEED 0x7
#define MDM_HDLCPPP_SPEED_DEFAULT 0x0
#define MDM_HDLCPPP_SPEED_64K 0x1
#define MDM_HDLCPPP_SPEED_56K 0x2
#define MDM_SHIFT_HDLCPPP_AUTH 0x3
#define MDM_MASK_HDLCPPP_AUTH (0x7<<3)
#define MDM_HDLCPPP_AUTH_DEFAULT 0x0
#define MDM_HDLCPPP_AUTH_NONE 0x1
#define MDM_HDLCPPP_AUTH_PAP 0x2
#define MDM_HDLCPPP_AUTH_CHAP 0x3
#define MDM_HDLCPPP_AUTH_MSCHAP 0x4
#define MDM_SHIFT_HDLCPPP_ML 0x6
#define MDM_MASK_HDLCPPP_ML (0x3<<6)
#define MDM_HDLCPPP_ML_DEFAULT 0x0
#define MDM_HDLCPPP_ML_NONE 0x1
#define MDM_HDLCPPP_ML_2 0x2
#define MDM_GEN_HDLCPPP_PROTOCOL_DATA(_speed,_auth,_ml) ((((_speed)<<MDM_SHIFT_HDLCPPP_SPEED)&MDM_MASK_HDLCPPP_SPEED) |(((_auth)<<MDM_SHIFT_HDLCPPP_AUTH)&MDM_MASK_HDLCPPP_AUTH) |(((_ml)<<MDM_SHIFT_HDLCPPP_ML)&MDM_MASK_HDLCPPP_ML))
#define MDM_PROTOCOL_HDLCPPP_64K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_HDLCPPP,MDM_GEN_HDLCPPP_PROTOCOL_DATA (MDM_HDLCPPP_SPEED_64K,MDM_HDLCPPP_AUTH_DEFAULT,MDM_HDLCPPP_ML_DEFAULT))
#define MDM_PROTOCOL_HDLCPPP_56K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_HDLCPPP,MDM_GEN_HDLCPPP_PROTOCOL_DATA (MDM_HDLCPPP_SPEED_56K,MDM_HDLCPPP_AUTH_DEFAULT,MDM_HDLCPPP_ML_DEFAULT))
#define MDM_PROTOCOL_HDLCPPP_112K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_HDLCPPP,MDM_GEN_HDLCPPP_PROTOCOL_DATA (MDM_HDLCPPP_SPEED_56K,MDM_HDLCPPP_AUTH_DEFAULT,MDM_HDLCPPP_ML_2))
#define MDM_PROTOCOL_HDLCPPP_112K_PAP MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_HDLCPPP,MDM_GEN_HDLCPPP_PROTOCOL_DATA (MDM_HDLCPPP_SPEED_56K,MDM_HDLCPPP_AUTH_PAP,MDM_HDLCPPP_ML_2))
#define MDM_PROTOCOL_HDLCPPP_112K_CHAP MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_HDLCPPP,MDM_GEN_HDLCPPP_PROTOCOL_DATA (MDM_HDLCPPP_SPEED_56K,MDM_HDLCPPP_AUTH_CHAP,MDM_HDLCPPP_ML_2))
#define MDM_PROTOCOL_HDLCPPP_112K_MSCHAP MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_HDLCPPP,MDM_GEN_HDLCPPP_PROTOCOL_DATA (MDM_HDLCPPP_SPEED_56K,MDM_HDLCPPP_AUTH_MSCHAP,MDM_HDLCPPP_ML_2))
#define MDM_PROTOCOL_HDLCPPP_128K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_HDLCPPP,MDM_GEN_HDLCPPP_PROTOCOL_DATA (MDM_HDLCPPP_SPEED_64K,MDM_HDLCPPP_AUTH_DEFAULT,MDM_HDLCPPP_ML_2))
#define MDM_PROTOCOL_HDLCPPP_128K_PAP MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_HDLCPPP,MDM_GEN_HDLCPPP_PROTOCOL_DATA (MDM_HDLCPPP_SPEED_64K,MDM_HDLCPPP_AUTH_PAP,MDM_HDLCPPP_ML_2))
#define MDM_PROTOCOL_HDLCPPP_128K_CHAP MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_HDLCPPP,MDM_GEN_HDLCPPP_PROTOCOL_DATA (MDM_HDLCPPP_SPEED_64K,MDM_HDLCPPP_AUTH_CHAP,MDM_HDLCPPP_ML_2))
#define MDM_PROTOCOL_HDLCPPP_128K_MSCHAP MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_HDLCPPP,MDM_GEN_HDLCPPP_PROTOCOL_DATA (MDM_HDLCPPP_SPEED_64K,MDM_HDLCPPP_AUTH_MSCHAP,MDM_HDLCPPP_ML_2))
#define MDM_SHIFT_V120_SPEED 0x0
#define MDM_MASK_V120_SPEED 0x7
#define MDM_V120_SPEED_DEFAULT 0x0
#define MDM_V120_SPEED_64K 0x1
#define MDM_V120_SPEED_56K 0x2
#define MDM_SHIFT_V120_ML 0x6
#define MDM_MASK_V120_ML (0x3<<6)
#define MDM_V120_ML_DEFAULT 0x0
#define MDM_V120_ML_NONE 0x1
#define MDM_V120_ML_2 0x2
#define MDM_GEN_V120_PROTOCOL_DATA(_speed,_ml) ((((_speed)<<MDM_SHIFT_V120_SPEED)&MDM_MASK_V120_SPEED) |(((_ml)<<MDM_SHIFT_V120_ML)&MDM_MASK_V120_ML))
#define MDM_PROTOCOL_V120_64K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V120,MDM_GEN_V120_PROTOCOL_DATA (MDM_V120_SPEED_64K,MDM_V120_ML_NONE))
#define MDM_PROTOCOL_V120_56K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V120,MDM_GEN_V120_PROTOCOL_DATA (MDM_V120_SPEED_56K,MDM_V120_ML_NONE))
#define MDM_PROTOCOL_V120_112K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V120,MDM_GEN_V120_PROTOCOL_DATA (MDM_V120_SPEED_56K,MDM_V120_ML_2))
#define MDM_PROTOCOL_V120_128K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V120,MDM_GEN_V120_PROTOCOL_DATA (MDM_V120_SPEED_64K,MDM_V120_ML_2))
#define MDM_SHIFT_X75_DATA 0x0
#define MDM_MASK_X75_DATA 0x7
#define MDM_X75_DATA_DEFAULT 0x0
#define MDM_X75_DATA_64K 0x1
#define MDM_X75_DATA_128K 0x2
#define MDM_X75_DATA_T_70 0x3
#define MDM_X75_DATA_BTX 0x4
#define MDM_GEN_X75_PROTOCOL_DATA(_data) (((_data)<<MDM_SHIFT_X75_DATA)&MDM_MASK_X75_DATA)
#define MDM_PROTOCOL_X75_64K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_X75,MDM_GEN_X75_PROTOCOL_DATA (MDM_X75_DATA_64K))
#define MDM_PROTOCOL_X75_128K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_X75,MDM_GEN_X75_PROTOCOL_DATA (MDM_X75_DATA_128K))
#define MDM_PROTOCOL_X75_T_70 MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_X75,MDM_GEN_X75_PROTOCOL_DATA (MDM_X75_DATA_T_70))
#define MDM_PROTOCOL_X75_BTX MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_X75,MDM_GEN_X75_PROTOCOL_DATA (MDM_X75_DATA_BTX))
#define MDM_SHIFT_V110_SPEED 0x0
#define MDM_MASK_V110_SPEED 0xf
#define MDM_V110_SPEED_DEFAULT 0x0
#define MDM_V110_SPEED_1DOT2K 0x1
#define MDM_V110_SPEED_2DOT4K 0x2
#define MDM_V110_SPEED_4DOT8K 0x3
#define MDM_V110_SPEED_9DOT6K 0x4
#define MDM_V110_SPEED_12DOT0K 0x5
#define MDM_V110_SPEED_14DOT4K 0x6
#define MDM_V110_SPEED_19DOT2K 0x7
#define MDM_V110_SPEED_28DOT8K 0x8
#define MDM_V110_SPEED_38DOT4K 0x9
#define MDM_V110_SPEED_57DOT6K 0xA
#define MDM_GEN_V110_PROTOCOL_DATA(_data) (((_data)<<MDM_SHIFT_V110_SPEED)&MDM_MASK_V110_SPEED)
#define MDM_PROTOCOL_V110_1DOT2K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_1DOT2K))
#define MDM_PROTOCOL_V110_2DOT4K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_2DOT4K))
#define MDM_PROTOCOL_V110_4DOT8K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_4DOT8K))
#define MDM_PROTOCOL_V110_9DOT6K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_9DOT6K))
#define MDM_PROTOCOL_V110_12DOT0K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_12DOT0K))
#define MDM_PROTOCOL_V110_14DOT4K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_14DOT4K))
#define MDM_PROTOCOL_V110_19DOT2K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_19DOT2K))
#define MDM_PROTOCOL_V110_28DOT8K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_28DOT8K))
#define MDM_PROTOCOL_V110_38DOT4K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_38DOT4K))
#define MDM_PROTOCOL_V110_57DOT6K MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_V110,MDM_GEN_V110_PROTOCOL_DATA (MDM_V110_SPEED_57DOT6K))
#define MDM_SHIFT_AUTO_SPEED 0x0
#define MDM_MASK_AUTO_SPEED 0x7
#define MDM_AUTO_SPEED_DEFAULT 0x0
#define MDM_SHIFT_AUTO_ML 0x6
#define MDM_MASK_AUTO_ML (0x3<<6)
#define MDM_AUTO_ML_DEFAULT 0x0
#define MDM_AUTO_ML_NONE 0x1
#define MDM_AUTO_ML_2 0x2
#define MDM_GEN_AUTO_PROTOCOL_DATA(_speed,_ml) ((((_speed)<<MDM_SHIFT_AUTO_SPEED)&MDM_MASK_AUTO_SPEED) |(((_ml)<<MDM_SHIFT_AUTO_ML)&MDM_MASK_AUTO_ML))
#define MDM_PROTOCOL_AUTO_1CH MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_AUTO,MDM_GEN_AUTO_PROTOCOL_DATA (MDM_AUTO_SPEED_DEFAULT,MDM_AUTO_ML_NONE))
#define MDM_PROTOCOL_AUTO_2CH MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_AUTO,MDM_GEN_AUTO_PROTOCOL_DATA (MDM_AUTO_SPEED_DEFAULT,MDM_AUTO_ML_2))
#define MDM_ANALOG_RLP_ON 0x0
#define MDM_ANALOG_RLP_OFF 0x1
#define MDM_ANALOG_V34 0x2
#define MDM_GEN_ANALOG_PROTOCOL_DATA(_rlp) (_rlp)
#define MDM_PROTOCOL_ANALOG_RLP MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_ANALOG,MDM_GEN_ANALOG_PROTOCOL_DATA (MDM_ANALOG_RLP_ON))
#define MDM_PROTOCOL_ANALOG_NRLP MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_ANALOG,MDM_GEN_ANALOG_PROTOCOL_DATA (MDM_ANALOG_RLP_OFF))
#define MDM_PROTOCOL_ANALOG_V34 MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_ANALOG,MDM_GEN_ANALOG_PROTOCOL_DATA (MDM_ANALOG_V34))
#define MDM_PROTOCOL_GPRS MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_GPRS,0)
#define MDM_PIAFS_INCOMING 0
#define MDM_PIAFS_OUTGOING 1
#define MDM_PROTOCOL_PIAFS_INCOMING MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_PIAFS,MDM_PIAFS_INCOMING)
#define MDM_PROTOCOL_PIAFS_OUTGOING MDM_GEN_PROTOCOLINFO(MDM_PROTOCOLID_PIAFS,MDM_PIAFS_OUTGOING)
#define _IMM_ 
#define _IMM_SDK_DEFINED_ 
  struct HIMC__ { int unused; }; typedef struct HIMC__ *HIMC;
  struct HIMCC__ { int unused; }; typedef struct HIMCC__ *HIMCC;
  typedef HKL *LPHKL;
  typedef struct tagCOMPOSITIONFORM {
    DWORD dwStyle;
    POINT ptCurrentPos;
    RECT rcArea;
  } COMPOSITIONFORM,*PCOMPOSITIONFORM,*NPCOMPOSITIONFORM,*LPCOMPOSITIONFORM;
  typedef struct tagCANDIDATEFORM {
    DWORD dwIndex;
    DWORD dwStyle;
    POINT ptCurrentPos;
    RECT rcArea;
  } CANDIDATEFORM,*PCANDIDATEFORM,*NPCANDIDATEFORM,*LPCANDIDATEFORM;
  typedef struct tagCANDIDATELIST {
    DWORD dwSize;
    DWORD dwStyle;
    DWORD dwCount;
    DWORD dwSelection;
    DWORD dwPageStart;
    DWORD dwPageSize;
    DWORD dwOffset[1];
  } CANDIDATELIST,*PCANDIDATELIST,*NPCANDIDATELIST,*LPCANDIDATELIST;
  typedef struct tagREGISTERWORDA {
    LPSTR lpReading;
    LPSTR lpWord;
  } REGISTERWORDA,*PREGISTERWORDA,*NPREGISTERWORDA,*LPREGISTERWORDA;
  typedef struct tagREGISTERWORDW {
    LPWSTR lpReading;
    LPWSTR lpWord;
  } REGISTERWORDW,*PREGISTERWORDW,*NPREGISTERWORDW,*LPREGISTERWORDW;
  typedef REGISTERWORDA REGISTERWORD;
  typedef PREGISTERWORDA PREGISTERWORD;
  typedef NPREGISTERWORDA NPREGISTERWORD;
  typedef LPREGISTERWORDA LPREGISTERWORD;
  typedef struct tagRECONVERTSTRING {
    DWORD dwSize;
    DWORD dwVersion;
    DWORD dwStrLen;
    DWORD dwStrOffset;
    DWORD dwCompStrLen;
    DWORD dwCompStrOffset;
    DWORD dwTargetStrLen;
    DWORD dwTargetStrOffset;
  } RECONVERTSTRING,*PRECONVERTSTRING,*NPRECONVERTSTRING,*LPRECONVERTSTRING;
#define STYLE_DESCRIPTION_SIZE 32
  typedef struct tagSTYLEBUFA {
    DWORD dwStyle;
    CHAR szDescription[32];
  } STYLEBUFA,*PSTYLEBUFA,*NPSTYLEBUFA,*LPSTYLEBUFA;
  typedef struct tagSTYLEBUFW {
    DWORD dwStyle;
    WCHAR szDescription[32];
  } STYLEBUFW,*PSTYLEBUFW,*NPSTYLEBUFW,*LPSTYLEBUFW;
  typedef STYLEBUFA STYLEBUF;
  typedef PSTYLEBUFA PSTYLEBUF;
  typedef NPSTYLEBUFA NPSTYLEBUF;
  typedef LPSTYLEBUFA LPSTYLEBUF;
#define IMEMENUITEM_STRING_SIZE 80
  typedef struct tagIMEMENUITEMINFOA {
    UINT cbSize;
    UINT fType;
    UINT fState;
    UINT wID;
    HBITMAP hbmpChecked;
    HBITMAP hbmpUnchecked;
    DWORD dwItemData;
    CHAR szString[80];
    HBITMAP hbmpItem;
  } IMEMENUITEMINFOA,*PIMEMENUITEMINFOA,*NPIMEMENUITEMINFOA,*LPIMEMENUITEMINFOA;
  typedef struct tagIMEMENUITEMINFOW {
    UINT cbSize;
    UINT fType;
    UINT fState;
    UINT wID;
    HBITMAP hbmpChecked;
    HBITMAP hbmpUnchecked;
    DWORD dwItemData;
    WCHAR szString[80];
    HBITMAP hbmpItem;
  } IMEMENUITEMINFOW,*PIMEMENUITEMINFOW,*NPIMEMENUITEMINFOW,*LPIMEMENUITEMINFOW;
  typedef IMEMENUITEMINFOA IMEMENUITEMINFO;
  typedef PIMEMENUITEMINFOA PIMEMENUITEMINFO;
  typedef NPIMEMENUITEMINFOA NPIMEMENUITEMINFO;
  typedef LPIMEMENUITEMINFOA LPIMEMENUITEMINFO;
  typedef struct tagIMECHARPOSITION {
    DWORD dwSize;
    DWORD dwCharPos;
    POINT pt;
    UINT cLineHeight;
    RECT rcDocument;
  } IMECHARPOSITION,*PIMECHARPOSITION,*NPIMECHARPOSITION,*LPIMECHARPOSITION;
  typedef WINBOOL (__attribute__((__stdcall__)) *IMCENUMPROC)(HIMC,LPARAM);
#define ImmInstallIME __MINGW_NAME_AW(ImmInstallIME)
#define ImmGetDescription __MINGW_NAME_AW(ImmGetDescription)
#define ImmGetIMEFileName __MINGW_NAME_AW(ImmGetIMEFileName)
#define ImmGetCompositionString __MINGW_NAME_AW(ImmGetCompositionString)
#define ImmSetCompositionString __MINGW_NAME_AW(ImmSetCompositionString)
#define ImmGetCandidateListCount __MINGW_NAME_AW(ImmGetCandidateListCount)
#define ImmGetCandidateList __MINGW_NAME_AW(ImmGetCandidateList)
#define ImmGetGuideLine __MINGW_NAME_AW(ImmGetGuideLine)
  HKL __attribute__((__stdcall__)) ImmInstallIMEA(LPCSTR lpszIMEFileName,LPCSTR lpszLayoutText);
  HKL __attribute__((__stdcall__)) ImmInstallIMEW(LPCWSTR lpszIMEFileName,LPCWSTR lpszLayoutText);
  HWND __attribute__((__stdcall__)) ImmGetDefaultIMEWnd(HWND);
  UINT __attribute__((__stdcall__)) ImmGetDescriptionA(HKL,LPSTR,UINT uBufLen);
  UINT __attribute__((__stdcall__)) ImmGetDescriptionW(HKL,LPWSTR,UINT uBufLen);
  UINT __attribute__((__stdcall__)) ImmGetIMEFileNameA(HKL,LPSTR,UINT uBufLen);
  UINT __attribute__((__stdcall__)) ImmGetIMEFileNameW(HKL,LPWSTR,UINT uBufLen);
  DWORD __attribute__((__stdcall__)) ImmGetProperty(HKL,DWORD);
  WINBOOL __attribute__((__stdcall__)) ImmIsIME(HKL);
  WINBOOL __attribute__((__stdcall__)) ImmSimulateHotKey(HWND,DWORD);
  HIMC __attribute__((__stdcall__)) ImmCreateContext(void);
  WINBOOL __attribute__((__stdcall__)) ImmDestroyContext(HIMC);
  HIMC __attribute__((__stdcall__)) ImmGetContext(HWND);
  WINBOOL __attribute__((__stdcall__)) ImmReleaseContext(HWND,HIMC);
  HIMC __attribute__((__stdcall__)) ImmAssociateContext(HWND,HIMC);
  WINBOOL __attribute__((__stdcall__)) ImmAssociateContextEx(HWND,HIMC,DWORD);
  LONG __attribute__((__stdcall__)) ImmGetCompositionStringA(HIMC,DWORD,LPVOID,DWORD);
  LONG __attribute__((__stdcall__)) ImmGetCompositionStringW(HIMC,DWORD,LPVOID,DWORD);
  WINBOOL __attribute__((__stdcall__)) ImmSetCompositionStringA(HIMC,DWORD dwIndex,LPVOID lpComp,DWORD,LPVOID lpRead,DWORD);
  WINBOOL __attribute__((__stdcall__)) ImmSetCompositionStringW(HIMC,DWORD dwIndex,LPVOID lpComp,DWORD,LPVOID lpRead,DWORD);
  DWORD __attribute__((__stdcall__)) ImmGetCandidateListCountA(HIMC,LPDWORD lpdwListCount);
  DWORD __attribute__((__stdcall__)) ImmGetCandidateListCountW(HIMC,LPDWORD lpdwListCount);
  DWORD __attribute__((__stdcall__)) ImmGetCandidateListA(HIMC,DWORD deIndex,LPCANDIDATELIST,DWORD dwBufLen);
  DWORD __attribute__((__stdcall__)) ImmGetCandidateListW(HIMC,DWORD deIndex,LPCANDIDATELIST,DWORD dwBufLen);
  DWORD __attribute__((__stdcall__)) ImmGetGuideLineA(HIMC,DWORD dwIndex,LPSTR,DWORD dwBufLen);
  DWORD __attribute__((__stdcall__)) ImmGetGuideLineW(HIMC,DWORD dwIndex,LPWSTR,DWORD dwBufLen);
  WINBOOL __attribute__((__stdcall__)) ImmGetConversionStatus(HIMC,LPDWORD,LPDWORD);
  WINBOOL __attribute__((__stdcall__)) ImmSetConversionStatus(HIMC,DWORD,DWORD);
  WINBOOL __attribute__((__stdcall__)) ImmGetOpenStatus(HIMC);
  WINBOOL __attribute__((__stdcall__)) ImmSetOpenStatus(HIMC,WINBOOL);
#define ImmGetCompositionFont __MINGW_NAME_AW(ImmGetCompositionFont)
#define ImmSetCompositionFont __MINGW_NAME_AW(ImmSetCompositionFont)
  WINBOOL __attribute__((__stdcall__)) ImmGetCompositionFontA(HIMC,LPLOGFONTA);
  WINBOOL __attribute__((__stdcall__)) ImmGetCompositionFontW(HIMC,LPLOGFONTW);
  WINBOOL __attribute__((__stdcall__)) ImmSetCompositionFontA(HIMC,LPLOGFONTA);
  WINBOOL __attribute__((__stdcall__)) ImmSetCompositionFontW(HIMC,LPLOGFONTW);
  typedef int (__attribute__((__stdcall__)) *REGISTERWORDENUMPROCA)(LPCSTR,DWORD,LPCSTR,LPVOID);
  typedef int (__attribute__((__stdcall__)) *REGISTERWORDENUMPROCW)(LPCWSTR,DWORD,LPCWSTR,LPVOID);
#define REGISTERWORDENUMPROC __MINGW_NAME_AW(REGISTERWORDENUMPROC)
#define ImmConfigureIME __MINGW_NAME_AW(ImmConfigureIME)
#define ImmEscape __MINGW_NAME_AW(ImmEscape)
#define ImmGetConversionList __MINGW_NAME_AW(ImmGetConversionList)
#define ImmIsUIMessage __MINGW_NAME_AW(ImmIsUIMessage)
#define ImmRegisterWord __MINGW_NAME_AW(ImmRegisterWord)
#define ImmUnregisterWord __MINGW_NAME_AW(ImmUnregisterWord)
#define ImmGetRegisterWordStyle __MINGW_NAME_AW(ImmGetRegisterWordStyle)
#define ImmEnumRegisterWord __MINGW_NAME_AW(ImmEnumRegisterWord)
#define ImmGetImeMenuItems __MINGW_NAME_AW(ImmGetImeMenuItems)
  WINBOOL __attribute__((__stdcall__)) ImmConfigureIMEA(HKL,HWND,DWORD,LPVOID);
  WINBOOL __attribute__((__stdcall__)) ImmConfigureIMEW(HKL,HWND,DWORD,LPVOID);
  LRESULT __attribute__((__stdcall__)) ImmEscapeA(HKL,HIMC,UINT,LPVOID);
  LRESULT __attribute__((__stdcall__)) ImmEscapeW(HKL,HIMC,UINT,LPVOID);
  DWORD __attribute__((__stdcall__)) ImmGetConversionListA(HKL,HIMC,LPCSTR,LPCANDIDATELIST,DWORD dwBufLen,UINT uFlag);
  DWORD __attribute__((__stdcall__)) ImmGetConversionListW(HKL,HIMC,LPCWSTR,LPCANDIDATELIST,DWORD dwBufLen,UINT uFlag);
  WINBOOL __attribute__((__stdcall__)) ImmNotifyIME(HIMC,DWORD dwAction,DWORD dwIndex,DWORD dwValue);
  WINBOOL __attribute__((__stdcall__)) ImmGetStatusWindowPos(HIMC,LPPOINT);
  WINBOOL __attribute__((__stdcall__)) ImmSetStatusWindowPos(HIMC,LPPOINT);
  WINBOOL __attribute__((__stdcall__)) ImmGetCompositionWindow(HIMC,LPCOMPOSITIONFORM);
  WINBOOL __attribute__((__stdcall__)) ImmSetCompositionWindow(HIMC,LPCOMPOSITIONFORM);
  WINBOOL __attribute__((__stdcall__)) ImmGetCandidateWindow(HIMC,DWORD,LPCANDIDATEFORM);
  WINBOOL __attribute__((__stdcall__)) ImmSetCandidateWindow(HIMC,LPCANDIDATEFORM);
  WINBOOL __attribute__((__stdcall__)) ImmIsUIMessageA(HWND,UINT,WPARAM,LPARAM);
  WINBOOL __attribute__((__stdcall__)) ImmIsUIMessageW(HWND,UINT,WPARAM,LPARAM);
  UINT __attribute__((__stdcall__)) ImmGetVirtualKey(HWND);
  WINBOOL __attribute__((__stdcall__)) ImmRegisterWordA(HKL,LPCSTR lpszReading,DWORD,LPCSTR lpszRegister);
  WINBOOL __attribute__((__stdcall__)) ImmRegisterWordW(HKL,LPCWSTR lpszReading,DWORD,LPCWSTR lpszRegister);
  WINBOOL __attribute__((__stdcall__)) ImmUnregisterWordA(HKL,LPCSTR lpszReading,DWORD,LPCSTR lpszUnregister);
  WINBOOL __attribute__((__stdcall__)) ImmUnregisterWordW(HKL,LPCWSTR lpszReading,DWORD,LPCWSTR lpszUnregister);
  UINT __attribute__((__stdcall__)) ImmGetRegisterWordStyleA(HKL,UINT nItem,LPSTYLEBUFA);
  UINT __attribute__((__stdcall__)) ImmGetRegisterWordStyleW(HKL,UINT nItem,LPSTYLEBUFW);
  UINT __attribute__((__stdcall__)) ImmEnumRegisterWordA(HKL,REGISTERWORDENUMPROCA,LPCSTR lpszReading,DWORD,LPCSTR lpszRegister,LPVOID);
  UINT __attribute__((__stdcall__)) ImmEnumRegisterWordW(HKL,REGISTERWORDENUMPROCW,LPCWSTR lpszReading,DWORD,LPCWSTR lpszRegister,LPVOID);
  WINBOOL __attribute__((__stdcall__)) ImmDisableIME(DWORD);
  WINBOOL __attribute__((__stdcall__)) ImmEnumInputContext(DWORD idThread,IMCENUMPROC lpfn,LPARAM lParam);
  DWORD __attribute__((__stdcall__)) ImmGetImeMenuItemsA(HIMC,DWORD,DWORD,LPIMEMENUITEMINFOA,LPIMEMENUITEMINFOA,DWORD);
  DWORD __attribute__((__stdcall__)) ImmGetImeMenuItemsW(HIMC,DWORD,DWORD,LPIMEMENUITEMINFOW,LPIMEMENUITEMINFOW,DWORD);
  WINBOOL __attribute__((__stdcall__)) ImmDisableTextFrameService(DWORD idThread);
#define IMC_GETCANDIDATEPOS 0x0007
#define IMC_SETCANDIDATEPOS 0x0008
#define IMC_GETCOMPOSITIONFONT 0x0009
#define IMC_SETCOMPOSITIONFONT 0x000A
#define IMC_GETCOMPOSITIONWINDOW 0x000B
#define IMC_SETCOMPOSITIONWINDOW 0x000C
#define IMC_GETSTATUSWINDOWPOS 0x000F
#define IMC_SETSTATUSWINDOWPOS 0x0010
#define IMC_CLOSESTATUSWINDOW 0x0021
#define IMC_OPENSTATUSWINDOW 0x0022
#define NI_OPENCANDIDATE 0x0010
#define NI_CLOSECANDIDATE 0x0011
#define NI_SELECTCANDIDATESTR 0x0012
#define NI_CHANGECANDIDATELIST 0x0013
#define NI_FINALIZECONVERSIONRESULT 0x0014
#define NI_COMPOSITIONSTR 0x0015
#define NI_SETCANDIDATE_PAGESTART 0x0016
#define NI_SETCANDIDATE_PAGESIZE 0x0017
#define NI_IMEMENUSELECTED 0x0018
#define ISC_SHOWUICANDIDATEWINDOW 0x00000001
#define ISC_SHOWUICOMPOSITIONWINDOW 0x80000000
#define ISC_SHOWUIGUIDELINE 0x40000000
#define ISC_SHOWUIALLCANDIDATEWINDOW 0x0000000F
#define ISC_SHOWUIALL 0xC000000F
#define CPS_COMPLETE 0x0001
#define CPS_CONVERT 0x0002
#define CPS_REVERT 0x0003
#define CPS_CANCEL 0x0004
#define MOD_ALT 0x0001
#define MOD_CONTROL 0x0002
#define MOD_SHIFT 0x0004
#define MOD_LEFT 0x8000
#define MOD_RIGHT 0x4000
#define MOD_ON_KEYUP 0x0800
#define MOD_IGNORE_ALL_MODIFIER 0x0400
#define IME_CHOTKEY_IME_NONIME_TOGGLE 0x10
#define IME_CHOTKEY_SHAPE_TOGGLE 0x11
#define IME_CHOTKEY_SYMBOL_TOGGLE 0x12
#define IME_JHOTKEY_CLOSE_OPEN 0x30
#define IME_KHOTKEY_SHAPE_TOGGLE 0x50
#define IME_KHOTKEY_HANJACONVERT 0x51
#define IME_KHOTKEY_ENGLISH 0x52
#define IME_THOTKEY_IME_NONIME_TOGGLE 0x70
#define IME_THOTKEY_SHAPE_TOGGLE 0x71
#define IME_THOTKEY_SYMBOL_TOGGLE 0x72
#define IME_HOTKEY_DSWITCH_FIRST 0x100
#define IME_HOTKEY_DSWITCH_LAST 0x11F
#define IME_HOTKEY_PRIVATE_FIRST 0x200
#define IME_ITHOTKEY_RESEND_RESULTSTR 0x200
#define IME_ITHOTKEY_PREVIOUS_COMPOSITION 0x201
#define IME_ITHOTKEY_UISTYLE_TOGGLE 0x202
#define IME_ITHOTKEY_RECONVERTSTRING 0x203
#define IME_HOTKEY_PRIVATE_LAST 0x21F
#define GCS_COMPREADSTR 0x0001
#define GCS_COMPREADATTR 0x0002
#define GCS_COMPREADCLAUSE 0x0004
#define GCS_COMPSTR 0x0008
#define GCS_COMPATTR 0x0010
#define GCS_COMPCLAUSE 0x0020
#define GCS_CURSORPOS 0x0080
#define GCS_DELTASTART 0x0100
#define GCS_RESULTREADSTR 0x0200
#define GCS_RESULTREADCLAUSE 0x0400
#define GCS_RESULTSTR 0x0800
#define GCS_RESULTCLAUSE 0x1000
#define CS_INSERTCHAR 0x2000
#define CS_NOMOVECARET 0x4000
#define IMEVER_0310 0x0003000A
#define IMEVER_0400 0x00040000
#define IME_PROP_AT_CARET 0x00010000
#define IME_PROP_SPECIAL_UI 0x00020000
#define IME_PROP_CANDLIST_START_FROM_1 0x00040000
#define IME_PROP_UNICODE 0x00080000
#define IME_PROP_COMPLETE_ON_UNSELECT 0x00100000
#define UI_CAP_2700 0x00000001
#define UI_CAP_ROT90 0x00000002
#define UI_CAP_ROTANY 0x00000004
#define SCS_CAP_COMPSTR 0x00000001
#define SCS_CAP_MAKEREAD 0x00000002
#define SCS_CAP_SETRECONVERTSTRING 0x00000004
#define SELECT_CAP_CONVERSION 0x00000001
#define SELECT_CAP_SENTENCE 0x00000002
#define GGL_LEVEL 0x00000001
#define GGL_INDEX 0x00000002
#define GGL_STRING 0x00000003
#define GGL_PRIVATE 0x00000004
#define GL_LEVEL_NOGUIDELINE 0x00000000
#define GL_LEVEL_FATAL 0x00000001
#define GL_LEVEL_ERROR 0x00000002
#define GL_LEVEL_WARNING 0x00000003
#define GL_LEVEL_INFORMATION 0x00000004
#define GL_ID_UNKNOWN 0x00000000
#define GL_ID_NOMODULE 0x00000001
#define GL_ID_NODICTIONARY 0x00000010
#define GL_ID_CANNOTSAVE 0x00000011
#define GL_ID_NOCONVERT 0x00000020
#define GL_ID_TYPINGERROR 0x00000021
#define GL_ID_TOOMANYSTROKE 0x00000022
#define GL_ID_READINGCONFLICT 0x00000023
#define GL_ID_INPUTREADING 0x00000024
#define GL_ID_INPUTRADICAL 0x00000025
#define GL_ID_INPUTCODE 0x00000026
#define GL_ID_INPUTSYMBOL 0x00000027
#define GL_ID_CHOOSECANDIDATE 0x00000028
#define GL_ID_REVERSECONVERSION 0x00000029
#define GL_ID_PRIVATE_FIRST 0x00008000
#define GL_ID_PRIVATE_LAST 0x0000FFFF
#define IGP_GETIMEVERSION (DWORD)(-4)
#define IGP_PROPERTY 0x00000004
#define IGP_CONVERSION 0x00000008
#define IGP_SENTENCE 0x0000000c
#define IGP_UI 0x00000010
#define IGP_SETCOMPSTR 0x00000014
#define IGP_SELECT 0x00000018
#define SCS_SETSTR (GCS_COMPREADSTR|GCS_COMPSTR)
#define SCS_CHANGEATTR (GCS_COMPREADATTR|GCS_COMPATTR)
#define SCS_CHANGECLAUSE (GCS_COMPREADCLAUSE|GCS_COMPCLAUSE)
#define SCS_SETRECONVERTSTRING 0x00010000
#define SCS_QUERYRECONVERTSTRING 0x00020000
#define ATTR_INPUT 0x00
#define ATTR_TARGET_CONVERTED 0x01
#define ATTR_CONVERTED 0x02
#define ATTR_TARGET_NOTCONVERTED 0x03
#define ATTR_INPUT_ERROR 0x04
#define ATTR_FIXEDCONVERTED 0x05
#define CFS_DEFAULT 0x0000
#define CFS_RECT 0x0001
#define CFS_POINT 0x0002
#define CFS_FORCE_POSITION 0x0020
#define CFS_CANDIDATEPOS 0x0040
#define CFS_EXCLUDE 0x0080
#define GCL_CONVERSION 0x0001
#define GCL_REVERSECONVERSION 0x0002
#define GCL_REVERSE_LENGTH 0x0003
#define IME_CMODE_ALPHANUMERIC 0x0000
#define IME_CMODE_NATIVE 0x0001
#define IME_CMODE_CHINESE IME_CMODE_NATIVE
#define IME_CMODE_HANGEUL IME_CMODE_NATIVE
#define IME_CMODE_HANGUL IME_CMODE_NATIVE
#define IME_CMODE_JAPANESE IME_CMODE_NATIVE
#define IME_CMODE_KATAKANA 0x0002
#define IME_CMODE_LANGUAGE 0x0003
#define IME_CMODE_FULLSHAPE 0x0008
#define IME_CMODE_ROMAN 0x0010
#define IME_CMODE_CHARCODE 0x0020
#define IME_CMODE_HANJACONVERT 0x0040
#define IME_CMODE_SOFTKBD 0x0080
#define IME_CMODE_NOCONVERSION 0x0100
#define IME_CMODE_EUDC 0x0200
#define IME_CMODE_SYMBOL 0x0400
#define IME_CMODE_FIXED 0x0800
#define IME_CMODE_RESERVED 0xF0000000
#define IME_SMODE_NONE 0x0000
#define IME_SMODE_PLAURALCLAUSE 0x0001
#define IME_SMODE_SINGLECONVERT 0x0002
#define IME_SMODE_AUTOMATIC 0x0004
#define IME_SMODE_PHRASEPREDICT 0x0008
#define IME_SMODE_CONVERSATION 0x0010
#define IME_SMODE_RESERVED 0x0000F000
#define IME_CAND_UNKNOWN 0x0000
#define IME_CAND_READ 0x0001
#define IME_CAND_CODE 0x0002
#define IME_CAND_MEANING 0x0003
#define IME_CAND_RADICAL 0x0004
#define IME_CAND_STROKE 0x0005
#define IMN_CLOSESTATUSWINDOW 0x0001
#define IMN_OPENSTATUSWINDOW 0x0002
#define IMN_CHANGECANDIDATE 0x0003
#define IMN_CLOSECANDIDATE 0x0004
#define IMN_OPENCANDIDATE 0x0005
#define IMN_SETCONVERSIONMODE 0x0006
#define IMN_SETSENTENCEMODE 0x0007
#define IMN_SETOPENSTATUS 0x0008
#define IMN_SETCANDIDATEPOS 0x0009
#define IMN_SETCOMPOSITIONFONT 0x000A
#define IMN_SETCOMPOSITIONWINDOW 0x000B
#define IMN_SETSTATUSWINDOWPOS 0x000C
#define IMN_GUIDELINE 0x000D
#define IMN_PRIVATE 0x000E
#define IMR_COMPOSITIONWINDOW 0x0001
#define IMR_CANDIDATEWINDOW 0x0002
#define IMR_COMPOSITIONFONT 0x0003
#define IMR_RECONVERTSTRING 0x0004
#define IMR_CONFIRMRECONVERTSTRING 0x0005
#define IMR_QUERYCHARPOSITION 0x0006
#define IMR_DOCUMENTFEED 0x0007
#define IMM_ERROR_NODATA (-1)
#define IMM_ERROR_GENERAL (-2)
#define IME_CONFIG_GENERAL 1
#define IME_CONFIG_REGISTERWORD 2
#define IME_CONFIG_SELECTDICTIONARY 3
#define IME_ESC_QUERY_SUPPORT 0x0003
#define IME_ESC_RESERVED_FIRST 0x0004
#define IME_ESC_RESERVED_LAST 0x07FF
#define IME_ESC_PRIVATE_FIRST 0x0800
#define IME_ESC_PRIVATE_LAST 0x0FFF
#define IME_ESC_SEQUENCE_TO_INTERNAL 0x1001
#define IME_ESC_GET_EUDC_DICTIONARY 0x1003
#define IME_ESC_SET_EUDC_DICTIONARY 0x1004
#define IME_ESC_MAX_KEY 0x1005
#define IME_ESC_IME_NAME 0x1006
#define IME_ESC_SYNC_HOTKEY 0x1007
#define IME_ESC_HANJA_MODE 0x1008
#define IME_ESC_AUTOMATA 0x1009
#define IME_ESC_PRIVATE_HOTKEY 0x100a
#define IME_ESC_GETHELPFILENAME 0x100b
#define IME_REGWORD_STYLE_EUDC 0x00000001
#define IME_REGWORD_STYLE_USER_FIRST 0x80000000
#define IME_REGWORD_STYLE_USER_LAST 0xFFFFFFFF
#define IACE_CHILDREN 0x0001
#define IACE_DEFAULT 0x0010
#define IACE_IGNORENOCONTEXT 0x0020
#define IGIMIF_RIGHTMENU 0x0001
#define IGIMII_CMODE 0x0001
#define IGIMII_SMODE 0x0002
#define IGIMII_CONFIGURE 0x0004
#define IGIMII_TOOLS 0x0008
#define IGIMII_HELP 0x0010
#define IGIMII_OTHER 0x0020
#define IGIMII_INPUTTOOLS 0x0040
#define IMFT_RADIOCHECK 0x00001
#define IMFT_SEPARATOR 0x00002
#define IMFT_SUBMENU 0x00004
#define IMFS_GRAYED MFS_GRAYED
#define IMFS_DISABLED MFS_DISABLED
#define IMFS_CHECKED MFS_CHECKED
#define IMFS_HILITE MFS_HILITE
#define IMFS_ENABLED MFS_ENABLED
#define IMFS_UNCHECKED MFS_UNCHECKED
#define IMFS_UNHILITE MFS_UNHILITE
#define IMFS_DEFAULT MFS_DEFAULT
#define SOFTKEYBOARD_TYPE_T1 0x0001
#define SOFTKEYBOARD_TYPE_C1 0x0002
#define WINSOCK_VERSION MAKEWORD(2,2)
#define WINSOCK_API_LINKAGE DECLSPEC_IMPORT
#define WSAAPI WINAPI
#undef IOCPARM_MASK
#undef IOC_VOID
#undef IOC_OUT
#undef IOC_IN
#undef IOC_INOUT
#undef _IO
#undef _IOR
#undef _IOW
#undef FIONREAD
#undef FIONBIO
#undef FIOASYNC
#undef SIOCSHIWAT
#undef SIOCGHIWAT
#undef SIOCSLOWAT
#undef SIOCGLOWAT
#undef SIOCATMARK
#undef IPPROTO_IP
#undef IPPROTO_ICMP
#undef IPPROTO_IGMP
#undef IPPROTO_GGP
#undef IPPROTO_TCP
#undef IPPROTO_PUP
#undef IPPROTO_UDP
#undef IPPROTO_IDP
#undef IPPROTO_ND
#undef IPPROTO_RAW
#undef IPPROTO_MAX
#undef IPPORT_ECHO
#undef IPPORT_DISCARD
#undef IPPORT_SYSTAT
#undef IPPORT_DAYTIME
#undef IPPORT_NETSTAT
#undef IPPORT_FTP
#undef IPPORT_TELNET
#undef IPPORT_SMTP
#undef IPPORT_TIMESERVER
#undef IPPORT_NAMESERVER
#undef IPPORT_WHOIS
#undef IPPORT_MTP
#undef IPPORT_TFTP
#undef IPPORT_RJE
#undef IPPORT_FINGER
#undef IPPORT_TTYLINK
#undef IPPORT_SUPDUP
#undef IPPORT_EXECSERVER
#undef IPPORT_LOGINSERVER
#undef IPPORT_CMDSERVER
#undef IPPORT_EFSSERVER
#undef IPPORT_BIFFUDP
#undef IPPORT_WHOSERVER
#undef IPPORT_ROUTESERVER
#undef IPPORT_RESERVED
#undef IMPLINK_IP
#undef IMPLINK_LOWEXPER
#undef IMPLINK_HIGHEXPER
#undef IN_CLASSA
#undef IN_CLASSA_NET
#undef IN_CLASSA_NSHIFT
#undef IN_CLASSA_HOST
#undef IN_CLASSA_MAX
#undef IN_CLASSB
#undef IN_CLASSB_NET
#undef IN_CLASSB_NSHIFT
#undef IN_CLASSB_HOST
#undef IN_CLASSB_MAX
#undef IN_CLASSC
#undef IN_CLASSC_NET
#undef IN_CLASSC_NSHIFT
#undef IN_CLASSC_HOST
#undef INADDR_ANY
#undef INADDR_LOOPBACK
#undef INADDR_BROADCAST
#undef INADDR_NONE
#undef IP_OPTIONS
#undef IP_MULTICAST_IF
#undef IP_MULTICAST_TTL
#undef IP_MULTICAST_LOOP
#undef IP_ADD_MEMBERSHIP
#undef IP_DROP_MEMBERSHIP
#undef IP_TTL
#undef IP_TOS
#undef IP_DONTFRAGMENT
#undef IP_DEFAULT_MULTICAST_TTL
#undef IP_DEFAULT_MULTICAST_LOOP
#undef IP_MAX_MEMBERSHIPS
#undef SOCK_STREAM
#undef SOCK_DGRAM
#undef SOCK_RAW
#undef SOCK_RDM
#undef SOCK_SEQPACKET
#undef SO_DEBUG
#undef SO_ACCEPTCONN
#undef SO_REUSEADDR
#undef SO_KEEPALIVE
#undef SO_DONTROUTE
#undef SO_BROADCAST
#undef SO_USELOOPBACK
#undef SO_LINGER
#undef SO_OOBINLINE
#undef SO_DONTLINGER
#undef SO_SNDBUF
#undef SO_RCVBUF
#undef SO_SNDLOWAT
#undef SO_RCVLOWAT
#undef SO_SNDTIMEO
#undef SO_RCVTIMEO
#undef SO_ERROR
#undef SO_TYPE
#undef SO_CONNDATA
#undef SO_CONNOPT
#undef SO_DISCDATA
#undef SO_DISCOPT
#undef SO_CONNDATALEN
#undef SO_CONNOPTLEN
#undef SO_DISCDATALEN
#undef SO_DISCOPTLEN
#undef SO_OPENTYPE
#undef SO_SYNCHRONOUS_ALERT
#undef SO_SYNCHRONOUS_NONALERT
#undef SO_MAXDG
#undef SO_MAXPATHDG
#undef SO_UPDATE_ACCEPT_CONTEXT
#undef SO_CONNECT_TIME
#undef TCP_NODELAY
#undef TCP_BSDURGENT
#undef AF_UNSPEC
#undef AF_UNIX
#undef AF_INET
#undef AF_IMPLINK
#undef AF_PUP
#undef AF_CHAOS
#undef AF_IPX
#undef AF_NS
#undef AF_ISO
#undef AF_OSI
#undef AF_ECMA
#undef AF_DATAKIT
#undef AF_CCITT
#undef AF_SNA
#undef AF_DECnet
#undef AF_DLI
#undef AF_LAT
#undef AF_HYLINK
#undef AF_APPLETALK
#undef AF_NETBIOS
#undef AF_VOICEVIEW
#undef AF_FIREFOX
#undef AF_UNKNOWN1
#undef AF_BAN
#undef AF_MAX
#undef PF_UNSPEC
#undef PF_UNIX
#undef PF_INET
#undef PF_IMPLINK
#undef PF_PUP
#undef PF_CHAOS
#undef PF_NS
#undef PF_IPX
#undef PF_ISO
#undef PF_OSI
#undef PF_ECMA
#undef PF_DATAKIT
#undef PF_CCITT
#undef PF_SNA
#undef PF_DECnet
#undef PF_DLI
#undef PF_LAT
#undef PF_HYLINK
#undef PF_APPLETALK
#undef PF_VOICEVIEW
#undef PF_FIREFOX
#undef PF_UNKNOWN1
#undef PF_BAN
#undef PF_MAX
#undef SOL_SOCKET
#undef SOMAXCONN
#undef MSG_OOB
#undef MSG_PEEK
#undef MSG_DONTROUTE
#undef MSG_MAXIOVLEN
#undef MSG_PARTIAL
#undef MAXGETHOSTSTRUCT
#undef FD_READ
#undef FD_WRITE
#undef FD_OOB
#undef FD_ACCEPT
#undef FD_CONNECT
#undef FD_CLOSE
#undef TF_DISCONNECT
#undef TF_REUSE_SOCKET
#undef TF_WRITE_BEHIND
#undef WSAMAKEASYNCREPLY
#undef WSAMAKESELECTREPLY
#undef WSAGETASYNCBUFLEN
#undef WSAGETASYNCERROR
#undef WSAGETSELECTEVENT
#undef WSAGETSELECTERROR
#define _TIMEVAL_DEFINED 
struct timeval
{
 long tv_sec;
 long tv_usec;
};
#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
#define timercmp(tvp,uvp,cmp) ((tvp)->tv_sec cmp (uvp)->tv_sec || ((tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec))
#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
#define _BSDTYPES_DEFINED 
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
       
#undef u_long
typedef unsigned long u_long;
       
__extension__
typedef unsigned long long u_int64;
typedef struct in_addr {
  union {
    struct { u_char s_b1, s_b2, s_b3, s_b4; } S_un_b;
    struct { u_short s_w1, s_w2; } S_un_w;
    u_long S_addr;
  } S_un;
} IN_ADDR, *PIN_ADDR, *LPIN_ADDR;
#define s_addr S_un.S_addr
#define s_host S_un.S_un_b.s_b2
#define s_net S_un.S_un_b.s_b1
#define s_imp S_un.S_un_w.s_w2
#define s_impno S_un.S_un_b.s_b4
#define s_lh S_un.S_un_b.s_b3
#define ___WSA_SOCKET_TYPES_H 
typedef UINT_PTR SOCKET;
#define INVALID_SOCKET (SOCKET)(~0)
#define SOCKET_ERROR (-1)
#define ___WSA_FD_TYPES_H 
typedef struct fd_set
{
 u_int fd_count;
 SOCKET fd_array[2048];
} fd_set;
int __attribute__((__stdcall__)) __WSAFDIsSet(SOCKET,fd_set *);
#define FD_CLR(fd,set) do { u_int __i; for(__i = 0; __i < ((fd_set *)(set))->fd_count; __i++) { if (((fd_set *)(set))->fd_array[__i] == fd) { while (__i < ((fd_set *)(set))->fd_count - 1) { ((fd_set *)(set))->fd_array[__i] = ((fd_set *)(set))->fd_array[__i + 1]; __i++; } ((fd_set *)(set))->fd_count--; break; } } } while(0)
#define FD_ZERO(set) (((fd_set *)(set))->fd_count = 0)
#define FD_ISSET(fd,set) __WSAFDIsSet((SOCKET)(fd),(fd_set *)(set))
#define FD_SET(fd,set) do { u_int __i; for(__i = 0; __i < ((fd_set *)(set))->fd_count; __i++) { if (((fd_set *)(set))->fd_array[__i] == (fd)) { break; } } if (__i == ((fd_set *)(set))->fd_count) { if (((fd_set *)(set))->fd_count < FD_SETSIZE) { ((fd_set *)(set))->fd_array[__i] = (fd); ((fd_set *)(set))->fd_count++; } } } while(0)
typedef struct fd_set FD_SET;
typedef struct fd_set *PFD_SET;
typedef struct fd_set *LPFD_SET;
#define _MINGW_IP_TYPES_H 
#define h_addr h_addr_list[0]
struct hostent {
 char *h_name;
 char **h_aliases;
 short h_addrtype;
 short h_length;
 char **h_addr_list;
};
struct netent {
 char *n_name;
 char **n_aliases;
 short n_addrtype;
 u_long n_net;
};
struct servent {
 char *s_name;
 char **s_aliases;
 short s_port;
 char *s_proto;
};
struct protoent {
 char *p_name;
 char **p_aliases;
 short p_proto;
};
struct sockproto {
 u_short sp_family;
 u_short sp_protocol;
};
struct linger {
 u_short l_onoff;
 u_short l_linger;
};
struct sockaddr {
 u_short sa_family;
 char sa_data[14];
};
struct sockaddr_in {
 short sin_family;
 u_short sin_port;
 struct in_addr sin_addr;
 char sin_zero[8];
};
typedef struct hostent HOSTENT;
typedef struct hostent *PHOSTENT;
typedef struct hostent *LPHOSTENT;
typedef struct servent SERVENT;
typedef struct servent *PSERVENT;
typedef struct servent *LPSERVENT;
typedef struct protoent PROTOENT;
typedef struct protoent *PPROTOENT;
typedef struct protoent *LPPROTOENT;
typedef struct sockaddr SOCKADDR;
typedef struct sockaddr *PSOCKADDR;
typedef struct sockaddr *LPSOCKADDR;
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr_in *PSOCKADDR_IN;
typedef struct sockaddr_in *LPSOCKADDR_IN;
typedef struct linger LINGER;
typedef struct linger *PLINGER;
typedef struct linger *LPLINGER;
typedef struct timeval TIMEVAL;
typedef struct timeval *PTIMEVAL;
typedef struct timeval *LPTIMEVAL;
#define __MINGW_WSADATA_H 
#define WSADESCRIPTION_LEN 256
#define WSASYS_STATUS_LEN 128
typedef struct WSAData {
 WORD wVersion;
 WORD wHighVersion;
 char szDescription[256 +1];
 char szSystemStatus[128 +1];
 unsigned short iMaxSockets;
 unsigned short iMaxUdpDg;
 char *lpVendorInfo;
} WSADATA, *LPWSADATA;
#define _WS2DEF_ 
typedef enum _SCOPE_LEVEL {
  ScopeLevelInterface = 1,
  ScopeLevelLink = 2,
  ScopeLevelSubnet = 3,
  ScopeLevelAdmin = 4,
  ScopeLevelSite = 5,
  ScopeLevelOrganization = 8,
  ScopeLevelGlobal = 14,
  ScopeLevelCount = 16
} SCOPE_LEVEL;
typedef struct _SCOPE_ID {
  __extension__ union {
    __extension__ struct {
 ULONG Zone : 28;
 ULONG Level : 4;
    };
    ULONG Value;
  };
} SCOPE_ID, *PSCOPE_ID;
#define IOCPARM_MASK 0x7f
#define IOC_VOID 0x20000000
#define IOC_OUT 0x40000000
#define IOC_IN 0x80000000
#define IOC_INOUT (IOC_IN|IOC_OUT)
#define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
#define _IOR(x,y,t) (IOC_OUT|(((__LONG32)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
#define _IOW(x,y,t) (IOC_IN|(((__LONG32)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
#define FIONREAD _IOR('f',127,u_long)
#define FIONBIO _IOW('f',126,u_long)
#define FIOASYNC _IOW('f',125,u_long)
#define SIOCSHIWAT _IOW('s',0,u_long)
#define SIOCGHIWAT _IOR('s',1,u_long)
#define SIOCSLOWAT _IOW('s',2,u_long)
#define SIOCGLOWAT _IOR('s',3,u_long)
#define SIOCATMARK _IOR('s',7,u_long)
#define IPPROTO_IP 0
#define IPPROTO_HOPOPTS 0
#define IPPROTO_ICMP 1
#define IPPROTO_IGMP 2
#define IPPROTO_GGP 3
#define IPPROTO_IPV4 4
#define IPPROTO_ST 5
#define IPPROTO_TCP 6
#define IPPROTO_CBT 7
#define IPPROTO_EGP 8
#define IPPROTO_IGP 9
#define IPPROTO_PUP 12
#define IPPROTO_UDP 17
#define IPPROTO_IDP 22
#define IPPROTO_RDP 27
#define IPPROTO_IPV6 41
#define IPPROTO_ROUTING 43
#define IPPROTO_FRAGMENT 44
#define IPPROTO_ESP 50
#define IPPROTO_AH 51
#define IPPROTO_ICMPV6 58
#define IPPROTO_NONE 59
#define IPPROTO_DSTOPTS 60
#define IPPROTO_ND 77
#define IPPROTO_ICLFXBM 78
#define IPPROTO_PIM 103
#define IPPROTO_PGM 113
#define IPPROTO_L2TP 115
#define IPPROTO_SCTP 132
#define IPPROTO_RAW 255
#define IPPROTO_MAX 256
#define IPPORT_ECHO 7
#define IPPORT_DISCARD 9
#define IPPORT_SYSTAT 11
#define IPPORT_DAYTIME 13
#define IPPORT_NETSTAT 15
#define IPPORT_FTP 21
#define IPPORT_TELNET 23
#define IPPORT_SMTP 25
#define IPPORT_TIMESERVER 37
#define IPPORT_NAMESERVER 42
#define IPPORT_WHOIS 43
#define IPPORT_MTP 57
#define IPPORT_TFTP 69
#define IPPORT_RJE 77
#define IPPORT_FINGER 79
#define IPPORT_TTYLINK 87
#define IPPORT_SUPDUP 95
#define IPPORT_EXECSERVER 512
#define IPPORT_LOGINSERVER 513
#define IPPORT_CMDSERVER 514
#define IPPORT_EFSSERVER 520
#define IPPORT_BIFFUDP 512
#define IPPORT_WHOSERVER 513
#define IPPORT_ROUTESERVER 520
#define IPPORT_RESERVED 1024
#define IMPLINK_IP 155
#define IMPLINK_LOWEXPER 156
#define IMPLINK_HIGHEXPER 158
#define IN_CLASSA(i) (((__LONG32)(i) & 0x80000000)==0)
#define IN_CLASSA_NET 0xff000000
#define IN_CLASSA_NSHIFT 24
#define IN_CLASSA_HOST 0x00ffffff
#define IN_CLASSA_MAX 128
#define IN_CLASSB(i) (((__LONG32)(i) & 0xc0000000)==0x80000000)
#define IN_CLASSB_NET 0xffff0000
#define IN_CLASSB_NSHIFT 16
#define IN_CLASSB_HOST 0x0000ffff
#define IN_CLASSB_MAX 65536
#define IN_CLASSC(i) (((__LONG32)(i) & 0xe0000000)==0xc0000000)
#define IN_CLASSC_NET 0xffffff00
#define IN_CLASSC_NSHIFT 8
#define IN_CLASSC_HOST 0x000000ff
#define IN_CLASSD(i) (((__LONG32)(i) & 0xf0000000)==0xe0000000)
#define IN_CLASSD_NET 0xf0000000
#define IN_CLASSD_NSHIFT 28
#define IN_CLASSD_HOST 0x0fffffff
#define IN_MULTICAST(i) IN_CLASSD(i)
#define INADDR_ANY (u_long)0x00000000
#define INADDR_LOOPBACK 0x7f000001
#define INADDR_BROADCAST (u_long)0xffffffff
#define INADDR_NONE 0xffffffff
#define ADDR_ANY INADDR_ANY
#define FROM_PROTOCOL_INFO (-1)
#define SOCK_STREAM 1
#define SOCK_DGRAM 2
#define SOCK_RAW 3
#define SOCK_RDM 4
#define SOCK_SEQPACKET 5
#define SO_DEBUG 0x0001
#define SO_ACCEPTCONN 0x0002
#define SO_REUSEADDR 0x0004
#define SO_KEEPALIVE 0x0008
#define SO_DONTROUTE 0x0010
#define SO_BROADCAST 0x0020
#define SO_USELOOPBACK 0x0040
#define SO_LINGER 0x0080
#define SO_OOBINLINE 0x0100
#define SO_DONTLINGER (int)(~SO_LINGER)
#define SO_EXCLUSIVEADDRUSE ((int)(~SO_REUSEADDR))
#define SO_SNDBUF 0x1001
#define SO_RCVBUF 0x1002
#define SO_SNDLOWAT 0x1003
#define SO_RCVLOWAT 0x1004
#define SO_SNDTIMEO 0x1005
#define SO_RCVTIMEO 0x1006
#define SO_ERROR 0x1007
#define SO_TYPE 0x1008
#define SO_GROUP_ID 0x2001
#define SO_GROUP_PRIORITY 0x2002
#define SO_MAX_MSG_SIZE 0x2003
#define SO_PROTOCOL_INFOA 0x2004
#define SO_PROTOCOL_INFOW 0x2005
#define SO_PROTOCOL_INFO __MINGW_NAME_AW(SO_PROTOCOL_INFO)
#define PVD_CONFIG 0x3001
#define SO_CONDITIONAL_ACCEPT 0x3002
#define TCP_NODELAY 0x0001
#define AF_UNSPEC 0
#define AF_UNIX 1
#define AF_INET 2
#define AF_IMPLINK 3
#define AF_PUP 4
#define AF_CHAOS 5
#define AF_NS 6
#define AF_IPX AF_NS
#define AF_ISO 7
#define AF_OSI AF_ISO
#define AF_ECMA 8
#define AF_DATAKIT 9
#define AF_CCITT 10
#define AF_SNA 11
#define AF_DECnet 12
#define AF_DLI 13
#define AF_LAT 14
#define AF_HYLINK 15
#define AF_APPLETALK 16
#define AF_NETBIOS 17
#define AF_VOICEVIEW 18
#define AF_FIREFOX 19
#define AF_UNKNOWN1 20
#define AF_BAN 21
#define AF_ATM 22
#define AF_INET6 23
#define AF_CLUSTER 24
#define AF_12844 25
#define AF_IRDA 26
#define AF_NETDES 28
#define AF_TCNPROCESS 29
#define AF_TCNMESSAGE 30
#define AF_ICLFXBM 31
#define AF_BTH 32
#define AF_MAX 33
#define _SS_MAXSIZE 128
#define _SS_ALIGNSIZE (8)
#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof (short))
#define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof (short) + _SS_PAD1SIZE + _SS_ALIGNSIZE))
  struct sockaddr_storage {
    short ss_family;
    char __ss_pad1[((8) - sizeof (short))];
    __extension__ long long __ss_align;
    char __ss_pad2[(128 - (sizeof (short) + ((8) - sizeof (short)) + (8)))];
  };
#define PF_UNSPEC AF_UNSPEC
#define PF_UNIX AF_UNIX
#define PF_INET AF_INET
#define PF_IMPLINK AF_IMPLINK
#define PF_PUP AF_PUP
#define PF_CHAOS AF_CHAOS
#define PF_NS AF_NS
#define PF_IPX AF_IPX
#define PF_ISO AF_ISO
#define PF_OSI AF_OSI
#define PF_ECMA AF_ECMA
#define PF_DATAKIT AF_DATAKIT
#define PF_CCITT AF_CCITT
#define PF_SNA AF_SNA
#define PF_DECnet AF_DECnet
#define PF_DLI AF_DLI
#define PF_LAT AF_LAT
#define PF_HYLINK AF_HYLINK
#define PF_APPLETALK AF_APPLETALK
#define PF_VOICEVIEW AF_VOICEVIEW
#define PF_FIREFOX AF_FIREFOX
#define PF_UNKNOWN1 AF_UNKNOWN1
#define PF_BAN AF_BAN
#define PF_ATM AF_ATM
#define PF_INET6 AF_INET6
#define PF_BTH AF_BTH
#define PF_MAX AF_MAX
#define SOL_SOCKET 0xffff
#define SOMAXCONN 0x7fffffff
#define MSG_OOB 0x1
#define MSG_PEEK 0x2
#define MSG_DONTROUTE 0x4
#define MSG_WAITALL 0x8
#define MSG_PARTIAL 0x8000
#define MSG_INTERRUPT 0x10
#define MSG_MAXIOVLEN 16
#define MAXGETHOSTSTRUCT 1024
#define FD_READ_BIT 0
#define FD_READ (1 << FD_READ_BIT)
#define FD_WRITE_BIT 1
#define FD_WRITE (1 << FD_WRITE_BIT)
#define FD_OOB_BIT 2
#define FD_OOB (1 << FD_OOB_BIT)
#define FD_ACCEPT_BIT 3
#define FD_ACCEPT (1 << FD_ACCEPT_BIT)
#define FD_CONNECT_BIT 4
#define FD_CONNECT (1 << FD_CONNECT_BIT)
#define FD_CLOSE_BIT 5
#define FD_CLOSE (1 << FD_CLOSE_BIT)
#define FD_QOS_BIT 6
#define FD_QOS (1 << FD_QOS_BIT)
#define FD_GROUP_QOS_BIT 7
#define FD_GROUP_QOS (1 << FD_GROUP_QOS_BIT)
#define FD_ROUTING_INTERFACE_CHANGE_BIT 8
#define FD_ROUTING_INTERFACE_CHANGE (1 << FD_ROUTING_INTERFACE_CHANGE_BIT)
#define FD_ADDRESS_LIST_CHANGE_BIT 9
#define FD_ADDRESS_LIST_CHANGE (1 << FD_ADDRESS_LIST_CHANGE_BIT)
#define FD_MAX_EVENTS 10
#define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1)
#define __WSA_ERR_MACROS_DEFINED 
#define h_errno WSAGetLastError()
#define HOST_NOT_FOUND WSAHOST_NOT_FOUND
#define TRY_AGAIN WSATRY_AGAIN
#define NO_RECOVERY WSANO_RECOVERY
#define NO_DATA WSANO_DATA
#define WSANO_ADDRESS WSANO_DATA
#define NO_ADDRESS WSANO_ADDRESS
#define WSAEVENT HANDLE
#define LPWSAEVENT LPHANDLE
#define WSAOVERLAPPED OVERLAPPED
  typedef struct _OVERLAPPED *LPWSAOVERLAPPED;
#define WSA_IO_PENDING (ERROR_IO_PENDING)
#define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE)
#define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE)
#define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER)
#define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY)
#define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED)
#define WSA_INVALID_EVENT ((WSAEVENT)NULL)
#define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
#define WSA_WAIT_FAILED (WAIT_FAILED)
#define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0)
#define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION)
#define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT)
#define WSA_INFINITE (INFINITE)
  typedef struct _WSABUF {
    u_long len;
    char *buf;
  } WSABUF,*LPWSABUF;
#define __QOS_H_ 
typedef ULONG SERVICETYPE;
#define SERVICETYPE_NOTRAFFIC 0x00000000
#define SERVICETYPE_BESTEFFORT 0x00000001
#define SERVICETYPE_CONTROLLEDLOAD 0x00000002
#define SERVICETYPE_GUARANTEED 0x00000003
#define SERVICETYPE_NETWORK_UNAVAILABLE 0x00000004
#define SERVICETYPE_GENERAL_INFORMATION 0x00000005
#define SERVICETYPE_NOCHANGE 0x00000006
#define SERVICETYPE_NONCONFORMING 0x00000009
#define SERVICETYPE_NETWORK_CONTROL 0x0000000A
#define SERVICETYPE_QUALITATIVE 0x0000000D
#define SERVICE_BESTEFFORT 0x80010000
#define SERVICE_CONTROLLEDLOAD 0x80020000
#define SERVICE_GUARANTEED 0x80040000
#define SERVICE_QUALITATIVE 0x80200000
#define SERVICE_NO_TRAFFIC_CONTROL 0x81000000
#define SERVICE_NO_QOS_SIGNALING 0x40000000
  typedef struct _flowspec {
    ULONG TokenRate;
    ULONG TokenBucketSize;
    ULONG PeakBandwidth;
    ULONG Latency;
    ULONG DelayVariation;
    SERVICETYPE ServiceType;
    ULONG MaxSduSize;
    ULONG MinimumPolicedSize;
  } FLOWSPEC,*PFLOWSPEC,*LPFLOWSPEC;
#define QOS_NOT_SPECIFIED 0xFFFFFFFF
#define POSITIVE_INFINITY_RATE 0xFFFFFFFE
  typedef struct _QOS_OBJECT_HDR {
    ULONG ObjectType;
    ULONG ObjectLength;
  } QOS_OBJECT_HDR, *LPQOS_OBJECT_HDR;
#define QOS_GENERAL_ID_BASE 2000
#define QOS_OBJECT_END_OF_LIST (0x00000001 + QOS_GENERAL_ID_BASE)
#define QOS_OBJECT_SD_MODE (0x00000002 + QOS_GENERAL_ID_BASE)
#define QOS_OBJECT_SHAPING_RATE (0x00000003 + QOS_GENERAL_ID_BASE)
#define QOS_OBJECT_DESTADDR (0x00000004 + QOS_GENERAL_ID_BASE)
  typedef struct _QOS_SD_MODE {
    QOS_OBJECT_HDR ObjectHdr;
    ULONG ShapeDiscardMode;
  } QOS_SD_MODE, *LPQOS_SD_MODE;
#define TC_NONCONF_BORROW 0
#define TC_NONCONF_SHAPE 1
#define TC_NONCONF_DISCARD 2
#define TC_NONCONF_BORROW_PLUS 3
  typedef struct _QOS_SHAPING_RATE {
    QOS_OBJECT_HDR ObjectHdr;
    ULONG ShapingRate;
  } QOS_SHAPING_RATE, *LPQOS_SHAPING_RATE;
  typedef struct _QualityOfService {
    FLOWSPEC SendingFlowspec;
    FLOWSPEC ReceivingFlowspec;
    WSABUF ProviderSpecific;
  } QOS,*LPQOS;
#define CF_ACCEPT 0x0000
#define CF_REJECT 0x0001
#define CF_DEFER 0x0002
#define SD_RECEIVE 0x00
#define SD_SEND 0x01
#define SD_BOTH 0x02
typedef unsigned int GROUP;
#define SG_UNCONSTRAINED_GROUP 0x01
#define SG_CONSTRAINED_GROUP 0x02
  typedef struct _WSANETWORKEVENTS {
    long lNetworkEvents;
    int iErrorCode[10];
  } WSANETWORKEVENTS,*LPWSANETWORKEVENTS;
#define MAX_PROTOCOL_CHAIN 7
#define BASE_PROTOCOL 1
#define LAYERED_PROTOCOL 0
  typedef struct _WSAPROTOCOLCHAIN {
    int ChainLen;
    DWORD ChainEntries[7];
  } WSAPROTOCOLCHAIN,*LPWSAPROTOCOLCHAIN;
#define WSAPROTOCOL_LEN 255
  typedef struct _WSAPROTOCOL_INFOA {
    DWORD dwServiceFlags1;
    DWORD dwServiceFlags2;
    DWORD dwServiceFlags3;
    DWORD dwServiceFlags4;
    DWORD dwProviderFlags;
    GUID ProviderId;
    DWORD dwCatalogEntryId;
    WSAPROTOCOLCHAIN ProtocolChain;
    int iVersion;
    int iAddressFamily;
    int iMaxSockAddr;
    int iMinSockAddr;
    int iSocketType;
    int iProtocol;
    int iProtocolMaxOffset;
    int iNetworkByteOrder;
    int iSecurityScheme;
    DWORD dwMessageSize;
    DWORD dwProviderReserved;
    CHAR szProtocol[255 +1];
  } WSAPROTOCOL_INFOA,*LPWSAPROTOCOL_INFOA;
  typedef struct _WSAPROTOCOL_INFOW {
    DWORD dwServiceFlags1;
    DWORD dwServiceFlags2;
    DWORD dwServiceFlags3;
    DWORD dwServiceFlags4;
    DWORD dwProviderFlags;
    GUID ProviderId;
    DWORD dwCatalogEntryId;
    WSAPROTOCOLCHAIN ProtocolChain;
    int iVersion;
    int iAddressFamily;
    int iMaxSockAddr;
    int iMinSockAddr;
    int iSocketType;
    int iProtocol;
    int iProtocolMaxOffset;
    int iNetworkByteOrder;
    int iSecurityScheme;
    DWORD dwMessageSize;
    DWORD dwProviderReserved;
    WCHAR szProtocol[255 +1];
  } WSAPROTOCOL_INFOW,*LPWSAPROTOCOL_INFOW;
  typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO;
  typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO;
#define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001
#define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002
#define PFL_HIDDEN 0x00000004
#define PFL_MATCHES_PROTOCOL_ZERO 0x00000008
#define PFL_NETWORKDIRECT_PROVIDER 0x00000010
#define XP1_CONNECTIONLESS 0x00000001
#define XP1_GUARANTEED_DELIVERY 0x00000002
#define XP1_GUARANTEED_ORDER 0x00000004
#define XP1_MESSAGE_ORIENTED 0x00000008
#define XP1_PSEUDO_STREAM 0x00000010
#define XP1_GRACEFUL_CLOSE 0x00000020
#define XP1_EXPEDITED_DATA 0x00000040
#define XP1_CONNECT_DATA 0x00000080
#define XP1_DISCONNECT_DATA 0x00000100
#define XP1_SUPPORT_BROADCAST 0x00000200
#define XP1_SUPPORT_MULTIPOINT 0x00000400
#define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800
#define XP1_MULTIPOINT_DATA_PLANE 0x00001000
#define XP1_QOS_SUPPORTED 0x00002000
#define XP1_INTERRUPT 0x00004000
#define XP1_UNI_SEND 0x00008000
#define XP1_UNI_RECV 0x00010000
#define XP1_IFS_HANDLES 0x00020000
#define XP1_PARTIAL_MESSAGE 0x00040000
#define XP1_SAN_SUPPORT_SDP 0x00080000
#define BIGENDIAN 0x0000
#define LITTLEENDIAN 0x0001
#define SECURITY_PROTOCOL_NONE 0x0000
#define JL_SENDER_ONLY 0x01
#define JL_RECEIVER_ONLY 0x02
#define JL_BOTH 0x04
#define WSA_FLAG_OVERLAPPED 0x01
#define WSA_FLAG_MULTIPOINT_C_ROOT 0x02
#define WSA_FLAG_MULTIPOINT_C_LEAF 0x04
#define WSA_FLAG_MULTIPOINT_D_ROOT 0x08
#define WSA_FLAG_MULTIPOINT_D_LEAF 0x10
#define WSA_FLAG_ACCESS_SYSTEM_SECURITY 0x40
#define WSA_FLAG_NO_HANDLE_INHERIT 0x80
#define WSA_FLAG_REGISTERED_IO 0x100
#define IOC_UNIX 0x00000000
#define IOC_WS2 0x08000000
#define IOC_PROTOCOL 0x10000000
#define IOC_VENDOR 0x18000000
#define _WSAIO(x,y) (IOC_VOID|(x)|(y))
#define _WSAIOR(x,y) (IOC_OUT|(x)|(y))
#define _WSAIOW(x,y) (IOC_IN|(x)|(y))
#define _WSAIORW(x,y) (IOC_INOUT|(x)|(y))
#define SIO_ASSOCIATE_HANDLE _WSAIOW(IOC_WS2,1)
#define SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO(IOC_WS2,2)
#define SIO_FIND_ROUTE _WSAIOR(IOC_WS2,3)
#define SIO_FLUSH _WSAIO(IOC_WS2,4)
#define SIO_GET_BROADCAST_ADDRESS _WSAIOR(IOC_WS2,5)
#define SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2,6)
#define SIO_GET_QOS _WSAIORW(IOC_WS2,7)
#define SIO_GET_GROUP_QOS _WSAIORW(IOC_WS2,8)
#define SIO_MULTIPOINT_LOOPBACK _WSAIOW(IOC_WS2,9)
#define SIO_MULTICAST_SCOPE _WSAIOW(IOC_WS2,10)
#define SIO_SET_QOS _WSAIOW(IOC_WS2,11)
#define SIO_SET_GROUP_QOS _WSAIOW(IOC_WS2,12)
#define SIO_TRANSLATE_HANDLE _WSAIORW(IOC_WS2,13)
#define SIO_ROUTING_INTERFACE_QUERY _WSAIORW(IOC_WS2,20)
#define SIO_ROUTING_INTERFACE_CHANGE _WSAIOW(IOC_WS2,21)
#define SIO_ADDRESS_LIST_QUERY _WSAIOR(IOC_WS2,22)
#define SIO_ADDRESS_LIST_CHANGE _WSAIO(IOC_WS2,23)
#define SIO_QUERY_TARGET_PNP_HANDLE _WSAIOR(IOC_WS2,24)
#define SIO_ADDRESS_LIST_SORT _WSAIORW(IOC_WS2,25)
#define SIO_RESERVED_1 _WSAIOW(IOC_WS2,26)
#define SIO_RESERVED_2 _WSAIOW(IOC_WS2,33)
  typedef int (__attribute__((__stdcall__)) *LPCONDITIONPROC)(LPWSABUF lpCallerId,LPWSABUF lpCallerData,LPQOS lpSQOS,LPQOS lpGQOS,LPWSABUF lpCalleeId,LPWSABUF lpCalleeData,GROUP *g,DWORD_PTR dwCallbackData);
  typedef void (__attribute__((__stdcall__)) *LPWSAOVERLAPPED_COMPLETION_ROUTINE)(DWORD dwError,DWORD cbTransferred,LPWSAOVERLAPPED lpOverlapped,DWORD dwFlags);
#define SIO_NSP_NOTIFY_CHANGE _WSAIOW(IOC_WS2,25)
  typedef enum _WSACOMPLETIONTYPE {
    NSP_NOTIFY_IMMEDIATELY = 0,
    NSP_NOTIFY_HWND,
    NSP_NOTIFY_EVENT,
    NSP_NOTIFY_PORT,
    NSP_NOTIFY_APC
  } WSACOMPLETIONTYPE,*PWSACOMPLETIONTYPE,*LPWSACOMPLETIONTYPE;
  typedef struct _WSACOMPLETION {
    WSACOMPLETIONTYPE Type;
    union {
      struct {
 HWND hWnd;
 UINT uMsg;
 WPARAM context;
      } WindowMessage;
      struct {
 LPWSAOVERLAPPED lpOverlapped;
      } Event;
      struct {
 LPWSAOVERLAPPED lpOverlapped;
 LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc;
      } Apc;
      struct {
 LPWSAOVERLAPPED lpOverlapped;
 HANDLE hPort;
 ULONG_PTR Key;
      } Port;
    } Parameters;
  } WSACOMPLETION,*PWSACOMPLETION,*LPWSACOMPLETION;
#define TH_NETDEV 0x00000001
#define TH_TAPI 0x00000002
  typedef struct sockaddr_storage SOCKADDR_STORAGE;
  typedef struct sockaddr_storage *PSOCKADDR_STORAGE;
  typedef struct sockaddr_storage *LPSOCKADDR_STORAGE;
  typedef u_short ADDRESS_FAMILY;
#define SERVICE_MULTIPLE (0x00000001)
#define NS_ALL (0)
#define NS_SAP (1)
#define NS_NDS (2)
#define NS_PEER_BROWSE (3)
#define NS_SLP (5)
#define NS_DHCP (6)
#define NS_TCPIP_LOCAL (10)
#define NS_TCPIP_HOSTS (11)
#define NS_DNS (12)
#define NS_NETBT (13)
#define NS_WINS (14)
#define NS_NLA (15)
#define NS_BTH (16)
#define NS_NBP (20)
#define NS_MS (30)
#define NS_STDA (31)
#define NS_NTDS (32)
#define NS_EMAIL (37)
#define NS_PNRPNAME (38)
#define NS_PNRPCLOUD (39)
#define NS_X500 (40)
#define NS_NIS (41)
#define NS_NISPLUS (42)
#define NS_WRQ (50)
#define NS_NETDES (60)
#define RES_UNUSED_1 (0x00000001)
#define RES_FLUSH_CACHE (0x00000002)
#define RES_SERVICE (0x00000004)
#define SERVICE_TYPE_VALUE_IPXPORTA "IpxSocket"
#define SERVICE_TYPE_VALUE_IPXPORTW L"IpxSocket"
#define SERVICE_TYPE_VALUE_SAPIDA "SapId"
#define SERVICE_TYPE_VALUE_SAPIDW L"SapId"
#define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort"
#define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort"
#define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort"
#define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort"
#define SERVICE_TYPE_VALUE_OBJECTIDA "ObjectId"
#define SERVICE_TYPE_VALUE_OBJECTIDW L"ObjectId"
#define SERVICE_TYPE_VALUE_SAPID __MINGW_NAME_AW(SERVICE_TYPE_VALUE_SAPID)
#define SERVICE_TYPE_VALUE_TCPPORT __MINGW_NAME_AW(SERVICE_TYPE_VALUE_TCPPORT)
#define SERVICE_TYPE_VALUE_UDPPORT __MINGW_NAME_AW(SERVICE_TYPE_VALUE_UDPPORT)
#define SERVICE_TYPE_VALUE_OBJECTID __MINGW_NAME_AW(SERVICE_TYPE_VALUE_OBJECTID)
#define __CSADDR_DEFINED__ 
  typedef struct _SOCKET_ADDRESS {
    LPSOCKADDR lpSockaddr;
    INT iSockaddrLength;
  } SOCKET_ADDRESS,*PSOCKET_ADDRESS,*LPSOCKET_ADDRESS;
  typedef struct _CSADDR_INFO {
    SOCKET_ADDRESS LocalAddr;
    SOCKET_ADDRESS RemoteAddr;
    INT iSocketType;
    INT iProtocol;
  } CSADDR_INFO,*PCSADDR_INFO,*LPCSADDR_INFO;
  typedef struct _SOCKET_ADDRESS_LIST {
    INT iAddressCount;
    SOCKET_ADDRESS Address[1];
  } SOCKET_ADDRESS_LIST,*PSOCKET_ADDRESS_LIST,*LPSOCKET_ADDRESS_LIST;
  typedef struct _AFPROTOCOLS {
    INT iAddressFamily;
    INT iProtocol;
  } AFPROTOCOLS,*PAFPROTOCOLS,*LPAFPROTOCOLS;
  typedef enum _WSAEcomparator {
    COMP_EQUAL = 0,
    COMP_NOTLESS
  } WSAECOMPARATOR,*PWSAECOMPARATOR,*LPWSAECOMPARATOR;
  typedef struct _WSAVersion {
    DWORD dwVersion;
    WSAECOMPARATOR ecHow;
  } WSAVERSION,*PWSAVERSION,*LPWSAVERSION;
  typedef struct _WSAQuerySetA {
    DWORD dwSize;
    LPSTR lpszServiceInstanceName;
    LPGUID lpServiceClassId;
    LPWSAVERSION lpVersion;
    LPSTR lpszComment;
    DWORD dwNameSpace;
    LPGUID lpNSProviderId;
    LPSTR lpszContext;
    DWORD dwNumberOfProtocols;
    LPAFPROTOCOLS lpafpProtocols;
    LPSTR lpszQueryString;
    DWORD dwNumberOfCsAddrs;
    LPCSADDR_INFO lpcsaBuffer;
    DWORD dwOutputFlags;
    LPBLOB lpBlob;
  } WSAQUERYSETA,*PWSAQUERYSETA,*LPWSAQUERYSETA;
  typedef struct _WSAQuerySetW {
    DWORD dwSize;
    LPWSTR lpszServiceInstanceName;
    LPGUID lpServiceClassId;
    LPWSAVERSION lpVersion;
    LPWSTR lpszComment;
    DWORD dwNameSpace;
    LPGUID lpNSProviderId;
    LPWSTR lpszContext;
    DWORD dwNumberOfProtocols;
    LPAFPROTOCOLS lpafpProtocols;
    LPWSTR lpszQueryString;
    DWORD dwNumberOfCsAddrs;
    LPCSADDR_INFO lpcsaBuffer;
    DWORD dwOutputFlags;
    LPBLOB lpBlob;
  } WSAQUERYSETW,*PWSAQUERYSETW,*LPWSAQUERYSETW;
  typedef WSAQUERYSETA WSAQUERYSET;
  typedef PWSAQUERYSETA PWSAQUERYSET;
  typedef LPWSAQUERYSETA LPWSAQUERYSET;
#define LUP_DEEP 0x0001
#define LUP_CONTAINERS 0x0002
#define LUP_NOCONTAINERS 0x0004
#define LUP_NEAREST 0x0008
#define LUP_RETURN_NAME 0x0010
#define LUP_RETURN_TYPE 0x0020
#define LUP_RETURN_VERSION 0x0040
#define LUP_RETURN_COMMENT 0x0080
#define LUP_RETURN_ADDR 0x0100
#define LUP_RETURN_BLOB 0x0200
#define LUP_RETURN_ALIASES 0x0400
#define LUP_RETURN_QUERY_STRING 0x0800
#define LUP_RETURN_ALL 0x0FF0
#define LUP_RES_SERVICE 0x8000
#define LUP_FLUSHCACHE 0x1000
#define LUP_FLUSHPREVIOUS 0x2000
#define LUP_NON_AUTHORITATIVE 0x4000
#define LUP_SECURE 0x8000
#define LUP_RETURN_PREFERRED_NAMES 0x10000
#define LUP_DNS_ONLY 0x20000
#define LUP_ADDRCONFIG 0x100000
#define LUP_DUAL_ADDR 0x200000
#define LUP_FILESERVER 0x400000
#define LUP_DISABLE_IDN_ENCODING 0x00800000
#define LUP_API_ANSI 0x01000000
#define LUP_RESOLUTION_HANDLE 0x80000000
#define LUP_RES_RESERVICE 0x8000
#define RESULT_IS_ALIAS 0x0001
#define RESULT_IS_ADDED 0x0010
#define RESULT_IS_CHANGED 0x0020
#define RESULT_IS_DELETED 0x0040
  typedef enum _WSAESETSERVICEOP {
    RNRSERVICE_REGISTER = 0,
    RNRSERVICE_DEREGISTER,
    RNRSERVICE_DELETE
  } WSAESETSERVICEOP,*PWSAESETSERVICEOP,*LPWSAESETSERVICEOP;
  typedef struct _WSANSClassInfoA {
    LPSTR lpszName;
    DWORD dwNameSpace;
    DWORD dwValueType;
    DWORD dwValueSize;
    LPVOID lpValue;
  } WSANSCLASSINFOA,*PWSANSCLASSINFOA,*LPWSANSCLASSINFOA;
  typedef struct _WSANSClassInfoW {
    LPWSTR lpszName;
    DWORD dwNameSpace;
    DWORD dwValueType;
    DWORD dwValueSize;
    LPVOID lpValue;
  } WSANSCLASSINFOW,*PWSANSCLASSINFOW,*LPWSANSCLASSINFOW;
  typedef WSANSCLASSINFOA WSANSCLASSINFO;
  typedef PWSANSCLASSINFOA PWSANSCLASSINFO;
  typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO;
  typedef struct _WSAServiceClassInfoA {
    LPGUID lpServiceClassId;
    LPSTR lpszServiceClassName;
    DWORD dwCount;
    LPWSANSCLASSINFOA lpClassInfos;
  } WSASERVICECLASSINFOA,*PWSASERVICECLASSINFOA,*LPWSASERVICECLASSINFOA;
  typedef struct _WSAServiceClassInfoW {
    LPGUID lpServiceClassId;
    LPWSTR lpszServiceClassName;
    DWORD dwCount;
    LPWSANSCLASSINFOW lpClassInfos;
  } WSASERVICECLASSINFOW,*PWSASERVICECLASSINFOW,*LPWSASERVICECLASSINFOW;
  typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO;
  typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO;
  typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO;
  typedef struct _WSANAMESPACE_INFOA {
    GUID NSProviderId;
    DWORD dwNameSpace;
    WINBOOL fActive;
    DWORD dwVersion;
    LPSTR lpszIdentifier;
  } WSANAMESPACE_INFOA,*PWSANAMESPACE_INFOA,*LPWSANAMESPACE_INFOA;
  typedef struct _WSANAMESPACE_INFOW {
    GUID NSProviderId;
    DWORD dwNameSpace;
    WINBOOL fActive;
    DWORD dwVersion;
    LPWSTR lpszIdentifier;
  } WSANAMESPACE_INFOW,*PWSANAMESPACE_INFOW,*LPWSANAMESPACE_INFOW;
  typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO;
  typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO;
  typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO;
  typedef struct _WSAMSG {
    LPSOCKADDR name;
    INT namelen;
    LPWSABUF lpBuffers;
    DWORD dwBufferCount;
    WSABUF Control;
    DWORD dwFlags;
  } WSAMSG,*PWSAMSG,*LPWSAMSG;
#define WSADuplicateSocket __MINGW_NAME_AW(WSADuplicateSocket)
#define WSAEnumProtocols __MINGW_NAME_AW(WSAEnumProtocols)
#define WSAAddressToString __MINGW_NAME_AW(WSAAddressToString)
#define WSASocket __MINGW_NAME_AW(WSASocket)
#define WSAStringToAddress __MINGW_NAME_AW(WSAStringToAddress)
#define WSALookupServiceBegin __MINGW_NAME_AW(WSALookupServiceBegin)
#define WSALookupServiceNext __MINGW_NAME_AW(WSALookupServiceNext)
#define WSAInstallServiceClass __MINGW_NAME_AW(WSAInstallServiceClass)
#define WSAGetServiceClassInfo __MINGW_NAME_AW(WSAGetServiceClassInfo)
#define WSAEnumNameSpaceProviders __MINGW_NAME_AW(WSAEnumNameSpaceProviders)
#define WSAGetServiceClassNameByClassId __MINGW_NAME_AW(WSAGetServiceClassNameByClassId)
#define WSASetService __MINGW_NAME_AW(WSASetService)
  __attribute__((dllimport)) SOCKET __attribute__((__stdcall__)) accept(SOCKET s,struct sockaddr *addr,int *addrlen);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) bind(SOCKET s,const struct sockaddr *name,int namelen);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) closesocket(SOCKET s);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) connect(SOCKET s,const struct sockaddr *name,int namelen);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) ioctlsocket(SOCKET s,long cmd,u_long *argp);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) getpeername(SOCKET s,struct sockaddr *name,int *namelen);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) getsockname(SOCKET s,struct sockaddr *name,int *namelen);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) getsockopt(SOCKET s,int level,int optname,char *optval,int *optlen);
  __attribute__((dllimport)) u_long __attribute__((__stdcall__)) htonl(u_long hostlong);
  __attribute__((dllimport)) u_short __attribute__((__stdcall__)) htons(u_short hostshort);
  __attribute__((dllimport)) unsigned long __attribute__((__stdcall__)) inet_addr(const char *cp);
  __attribute__((dllimport)) char *__attribute__((__stdcall__)) inet_ntoa(struct in_addr in);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) listen(SOCKET s,int backlog);
  __attribute__((dllimport)) u_long __attribute__((__stdcall__)) ntohl(u_long netlong);
  __attribute__((dllimport)) u_short __attribute__((__stdcall__)) ntohs(u_short netshort);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) recv(SOCKET s,char *buf,int len,int flags);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) recvfrom(SOCKET s,char *buf,int len,int flags,struct sockaddr *from,int *fromlen);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) select(int nfds,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,const PTIMEVAL timeout);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) send(SOCKET s,const char *buf,int len,int flags);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) sendto(SOCKET s,const char *buf,int len,int flags,const struct sockaddr *to,int tolen);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) setsockopt(SOCKET s,int level,int optname,const char *optval,int optlen);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) shutdown(SOCKET s,int how);
  __attribute__((dllimport)) SOCKET __attribute__((__stdcall__)) socket(int af,int type,int protocol);
  __attribute__((dllimport)) struct hostent *__attribute__((__stdcall__)) gethostbyaddr(const char *addr,int len,int type);
  __attribute__((dllimport)) struct hostent *__attribute__((__stdcall__)) gethostbyname(const char *name);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) gethostname(char *name,int namelen);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetHostNameW(PWSTR name, int namelen);
  __attribute__((dllimport)) struct servent *__attribute__((__stdcall__)) getservbyport(int port,const char *proto);
  __attribute__((dllimport)) struct servent *__attribute__((__stdcall__)) getservbyname(const char *name,const char *proto);
  __attribute__((dllimport)) struct protoent *__attribute__((__stdcall__)) getprotobynumber(int number);
  __attribute__((dllimport)) struct protoent *__attribute__((__stdcall__)) getprotobyname(const char *name);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSACleanup(void);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) WSASetLastError(int iError);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSAGetLastError(void);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WSAIsBlocking(void);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSAUnhookBlockingHook(void);
  __attribute__((dllimport)) FARPROC __attribute__((__stdcall__)) WSASetBlockingHook(FARPROC lpBlockFunc);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSACancelBlockingCall(void);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) WSAAsyncGetServByName(HWND hWnd,u_int wMsg,const char *name,const char *proto,char *buf,int buflen);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) WSAAsyncGetServByPort(HWND hWnd,u_int wMsg,int port,const char *proto,char *buf,int buflen);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) WSAAsyncGetProtoByName(HWND hWnd,u_int wMsg,const char *name,char *buf,int buflen);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) WSAAsyncGetProtoByNumber(HWND hWnd,u_int wMsg,int number,char *buf,int buflen);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) WSAAsyncGetHostByName(HWND hWnd,u_int wMsg,const char *name,char *buf,int buflen);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) WSAAsyncGetHostByAddr(HWND hWnd,u_int wMsg,const char *addr,int len,int type,char *buf,int buflen);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSACancelAsyncRequest(HANDLE hAsyncTaskHandle);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSAAsyncSelect(SOCKET s,HWND hWnd,u_int wMsg,long lEvent);
  __attribute__((dllimport)) SOCKET __attribute__((__stdcall__)) WSAAccept(SOCKET s,struct sockaddr *addr,LPINT addrlen,LPCONDITIONPROC lpfnCondition,DWORD_PTR dwCallbackData);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WSACloseEvent(HANDLE hEvent);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSAConnect(SOCKET s,const struct sockaddr *name,int namelen,LPWSABUF lpCallerData,LPWSABUF lpCalleeData,LPQOS lpSQOS,LPQOS lpGQOS);
  __attribute__((dllimport)) HANDLE __attribute__((__stdcall__)) WSACreateEvent(void);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSADuplicateSocketA(SOCKET s,DWORD dwProcessId,LPWSAPROTOCOL_INFOA lpProtocolInfo);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSADuplicateSocketW(SOCKET s,DWORD dwProcessId,LPWSAPROTOCOL_INFOW lpProtocolInfo);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSAEnumNetworkEvents(SOCKET s,HANDLE hEventObject,LPWSANETWORKEVENTS lpNetworkEvents);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSAEnumProtocolsA(LPINT lpiProtocols,LPWSAPROTOCOL_INFOA lpProtocolBuffer,LPDWORD lpdwBufferLength);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSAEnumProtocolsW(LPINT lpiProtocols,LPWSAPROTOCOL_INFOW lpProtocolBuffer,LPDWORD lpdwBufferLength);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSAEventSelect(SOCKET s,HANDLE hEventObject,long lNetworkEvents);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WSAGetOverlappedResult(SOCKET s,LPWSAOVERLAPPED lpOverlapped,LPDWORD lpcbTransfer,WINBOOL fWait,LPDWORD lpdwFlags);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WSAGetQOSByName(SOCKET s,LPWSABUF lpQOSName,LPQOS lpQOS);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSAHtonl(SOCKET s,u_long hostlong,u_long *lpnetlong);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSAHtons(SOCKET s,u_short hostshort,u_short *lpnetshort);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSAIoctl(SOCKET s,DWORD dwIoControlCode,LPVOID lpvInBuffer,DWORD cbInBuffer,LPVOID lpvOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbBytesReturned,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
  __attribute__((dllimport)) SOCKET __attribute__((__stdcall__)) WSAJoinLeaf(SOCKET s,const struct sockaddr *name,int namelen,LPWSABUF lpCallerData,LPWSABUF lpCalleeData,LPQOS lpSQOS,LPQOS lpGQOS,DWORD dwFlags);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSANtohl(SOCKET s,u_long netlong,u_long *lphostlong);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSANtohs(SOCKET s,u_short netshort,u_short *lphostshort);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSARecv(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSARecvDisconnect(SOCKET s,LPWSABUF lpInboundDisconnectData);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSARecvFrom(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,struct sockaddr *lpFrom,LPINT lpFromlen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WSAResetEvent(HANDLE hEvent);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSASend(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSASendDisconnect(SOCKET s,LPWSABUF lpOutboundDisconnectData);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) WSASendTo(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,const struct sockaddr *lpTo,int iTolen,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
  __attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WSASetEvent(HANDLE hEvent);
  __attribute__((dllimport)) SOCKET __attribute__((__stdcall__)) WSASocketA(int af,int type,int protocol,LPWSAPROTOCOL_INFOA lpProtocolInfo,GROUP g,DWORD dwFlags);
  __attribute__((dllimport)) SOCKET __attribute__((__stdcall__)) WSASocketW(int af,int type,int protocol,LPWSAPROTOCOL_INFOW lpProtocolInfo,GROUP g,DWORD dwFlags);
  __attribute__((dllimport)) DWORD __attribute__((__stdcall__)) WSAWaitForMultipleEvents(DWORD cEvents,const HANDLE *lphEvents,WINBOOL fWaitAll,DWORD dwTimeout,WINBOOL fAlertable);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSAAddressToStringA(LPSOCKADDR lpsaAddress,DWORD dwAddressLength,LPWSAPROTOCOL_INFOA lpProtocolInfo,LPSTR lpszAddressString,LPDWORD lpdwAddressStringLength);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSAAddressToStringW(LPSOCKADDR lpsaAddress,DWORD dwAddressLength,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPWSTR lpszAddressString,LPDWORD lpdwAddressStringLength);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSAStringToAddressA(LPSTR AddressString,INT AddressFamily,LPWSAPROTOCOL_INFOA lpProtocolInfo,LPSOCKADDR lpAddress,LPINT lpAddressLength);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSAStringToAddressW(LPWSTR AddressString,INT AddressFamily,LPWSAPROTOCOL_INFOW lpProtocolInfo,LPSOCKADDR lpAddress,LPINT lpAddressLength);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSALookupServiceBeginA(LPWSAQUERYSETA lpqsRestrictions,DWORD dwControlFlags,LPHANDLE lphLookup);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSALookupServiceBeginW(LPWSAQUERYSETW lpqsRestrictions,DWORD dwControlFlags,LPHANDLE lphLookup);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSALookupServiceNextA(HANDLE hLookup,DWORD dwControlFlags,LPDWORD lpdwBufferLength,LPWSAQUERYSETA lpqsResults);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSALookupServiceNextW(HANDLE hLookup,DWORD dwControlFlags,LPDWORD lpdwBufferLength,LPWSAQUERYSETW lpqsResults);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSANSPIoctl(HANDLE hLookup,DWORD dwControlCode,LPVOID lpvInBuffer,DWORD cbInBuffer,LPVOID lpvOutBuffer,DWORD cbOutBuffer,LPDWORD lpcbBytesReturned,LPWSACOMPLETION lpCompletion);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSALookupServiceEnd(HANDLE hLookup);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSAInstallServiceClassA(LPWSASERVICECLASSINFOA lpServiceClassInfo);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSAInstallServiceClassW(LPWSASERVICECLASSINFOW lpServiceClassInfo);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSARemoveServiceClass(LPGUID lpServiceClassId);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSAGetServiceClassInfoA(LPGUID lpProviderId,LPGUID lpServiceClassId,LPDWORD lpdwBufSize,LPWSASERVICECLASSINFOA lpServiceClassInfo);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSAGetServiceClassInfoW(LPGUID lpProviderId,LPGUID lpServiceClassId,LPDWORD lpdwBufSize,LPWSASERVICECLASSINFOW lpServiceClassInfo);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSAEnumNameSpaceProvidersA(LPDWORD lpdwBufferLength,LPWSANAMESPACE_INFOA lpnspBuffer);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSAEnumNameSpaceProvidersW(LPDWORD lpdwBufferLength,LPWSANAMESPACE_INFOW lpnspBuffer);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSAGetServiceClassNameByClassIdA(LPGUID lpServiceClassId,LPSTR lpszServiceClassName,LPDWORD lpdwBufferLength);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSAGetServiceClassNameByClassIdW(LPGUID lpServiceClassId,LPWSTR lpszServiceClassName,LPDWORD lpdwBufferLength);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSASetServiceA(LPWSAQUERYSETA lpqsRegInfo,WSAESETSERVICEOP essoperation,DWORD dwControlFlags);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSASetServiceW(LPWSAQUERYSETW lpqsRegInfo,WSAESETSERVICEOP essoperation,DWORD dwControlFlags);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) WSAProviderConfigChange(LPHANDLE lpNotificationHandle,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
#define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error)
#define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error)
#define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam)
#define WSAGETASYNCERROR(lParam) HIWORD(lParam)
#define WSAGETSELECTEVENT(lParam) LOWORD(lParam)
#define WSAGETSELECTERROR(lParam) HIWORD(lParam)
typedef struct _WSANAMESPACE_INFOEXA {
  GUID NSProviderId;
  DWORD dwNameSpace;
  WINBOOL fActive;
  DWORD dwVersion;
  LPSTR lpszIdentifier;
  BLOB ProviderSpecific;
} WSANAMESPACE_INFOEXA, *PWSANAMESPACE_INFOEXA, *LPWSANAMESPACE_INFOEXA;
typedef struct _WSANAMESPACE_INFOEXW {
  GUID NSProviderId;
  DWORD dwNameSpace;
  WINBOOL fActive;
  DWORD dwVersion;
  LPWSTR lpszIdentifier;
  BLOB ProviderSpecific;
} WSANAMESPACE_INFOEXW, *PWSANAMESPACE_INFOEXW, *LPWSANAMESPACE_INFOEXW;
typedef WSANAMESPACE_INFOEXA WSANAMESPACE_INFOEX;
typedef PWSANAMESPACE_INFOEXA PWSANAMESPACE_INFOEX;
typedef LPWSANAMESPACE_INFOEXA LPWSANAMESPACE_INFOEX;
typedef struct _WSAQUERYSET2A {
  DWORD dwSize;
  LPSTR lpszServiceInstanceName;
  LPWSAVERSION lpVersion;
  LPSTR lpszComment;
  DWORD dwNameSpace;
  LPGUID lpNSProviderId;
  LPSTR lpszContext;
  DWORD dwNumberOfProtocols;
  LPAFPROTOCOLS lpafpProtocols;
  LPSTR lpszQueryString;
  DWORD dwNumberOfCsAddrs;
  LPCSADDR_INFO lpcsaBuffer;
  DWORD dwOutputFlags;
  LPBLOB lpBlob;
} WSAQUERYSET2A, *PWSAQUERYSET2A, *LPWSAQUERYSET2A;
typedef struct _WSAQUERYSET2W {
  DWORD dwSize;
  LPWSTR lpszServiceInstanceName;
  LPWSAVERSION lpVersion;
  LPWSTR lpszComment;
  DWORD dwNameSpace;
  LPGUID lpNSProviderId;
  LPTSTR lpszContext;
  DWORD dwNumberOfProtocols;
  LPAFPROTOCOLS lpafpProtocols;
  LPWSTR lpszQueryString;
  DWORD dwNumberOfCsAddrs;
  LPCSADDR_INFO lpcsaBuffer;
  DWORD dwOutputFlags;
  LPBLOB lpBlob;
} WSAQUERYSET2W, *PWSAQUERYSET2W, *LPWSAQUERYSET2W;
#define POLLRDNORM 0x0100
#define POLLRDBAND 0x0200
#define POLLIN (POLLRDNORM | POLLRDBAND)
#define POLLPRI 0x0400
#define POLLWRNORM 0x0010
#define POLLOUT (POLLWRNORM)
#define POLLWRBAND 0x0020
#define POLLERR 0x0001
#define POLLHUP 0x0002
#define POLLNVAL 0x0004
typedef struct pollfd {
  SOCKET fd;
  short events;
  short revents;
} WSAPOLLFD, *PWSAPOLLFD, *LPWSAPOLLFD;
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WSAConnectByList(
  SOCKET s,
  PSOCKET_ADDRESS_LIST SocketAddressList,
  LPDWORD LocalAddressLength,
  LPSOCKADDR LocalAddress,
  LPDWORD RemoteAddressLength,
  LPSOCKADDR RemoteAddress,
  const PTIMEVAL timeout,
  LPWSAOVERLAPPED Reserved
);
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WSAConnectByNameA(
  SOCKET s,
  LPSTR nodename,
  LPSTR servicename,
  LPDWORD LocalAddressLength,
  LPSOCKADDR LocalAddress,
  LPDWORD RemoteAddressLength,
  LPSOCKADDR RemoteAddress,
  const PTIMEVAL timeout,
  LPWSAOVERLAPPED Reserved
);
__attribute__((dllimport)) WINBOOL __attribute__((__stdcall__)) WSAConnectByNameW(
  SOCKET s,
  LPWSTR nodename,
  LPWSTR servicename,
  LPDWORD LocalAddressLength,
  LPSOCKADDR LocalAddress,
  LPDWORD RemoteAddressLength,
  LPSOCKADDR RemoteAddress,
  const PTIMEVAL timeout,
  LPWSAOVERLAPPED Reserved
);
#define WSAConnectByName __MINGW_NAME_AW(WSAConnectByName)
INT __attribute__((__stdcall__)) WSAEnumNameSpaceProvidersExA(
  LPDWORD lpdwBufferLength,
  LPWSANAMESPACE_INFOEXA lpnspBuffer
);
INT __attribute__((__stdcall__)) WSAEnumNameSpaceProvidersExW(
  LPDWORD lpdwBufferLength,
  LPWSANAMESPACE_INFOEXW lpnspBuffer
);
#define WSAEnumNameSpaceProvidersEx __MINGW_NAME_AW(WSAEnumNameSpaceProvidersEx)
int __attribute__((__stdcall__)) WSAPoll(
  WSAPOLLFD fdarray[],
  ULONG nfds,
  INT timeout
);
int __attribute__((__stdcall__)) WSASendMsg(
  SOCKET s,
  LPWSAMSG lpMsg,
  DWORD dwFlags,
  LPDWORD lpNumberOfBytesSent,
  LPWSAOVERLAPPED lpOverlapped,
  LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
#define _WS2TCPIP_H_ 
#define _WS2IPDEF_ 
typedef struct in6_addr {
  union {
    u_char Byte[16];
    u_short Word[8];
  } u;
} IN6_ADDR, *PIN6_ADDR, *LPIN6_ADDR;
#define in_addr6 in6_addr
#define _S6_un u
#define _S6_u8 Byte
#define s6_addr _S6_un._S6_u8
#define s6_bytes u.Byte
#define s6_words u.Word
#define IP_OPTIONS 1
#define IP_HDRINCL 2
#define IP_TOS 3
#define IP_TTL 4
#define IP_MULTICAST_IF 9
#define IP_MULTICAST_TTL 10
#define IP_MULTICAST_LOOP 11
#define IP_ADD_MEMBERSHIP 12
#define IP_DROP_MEMBERSHIP 13
#define IP_DONTFRAGMENT 14
#define IP_ADD_SOURCE_MEMBERSHIP 15
#define IP_DROP_SOURCE_MEMBERSHIP 16
#define IP_BLOCK_SOURCE 17
#define IP_UNBLOCK_SOURCE 18
#define IP_PKTINFO 19
#define IP_HOPLIMIT 21
#define IP_RECVTTL 21
#define IP_RECEIVE_BROADCAST 22
#define IP_RECVIF 24
#define IP_RECVDSTADDR 25
#define IP_IFLIST 28
#define IP_ADD_IFLIST 29
#define IP_DEL_IFLIST 30
#define IP_UNICAST_IF 31
#define IP_RTHDR 32
#define IP_GET_IFLIST 33
#define IP_RECVRTHDR 38
#define IP_TCLASS 39
#define IP_RECVTCLASS 40
#define IP_RECVTOS 40
#define IP_ORIGINAL_ARRIVAL_IF 47
#define IP_ECN 50
#define IP_PKTINFO_EX 51
#define IP_WFP_REDIRECT_RECORDS 60
#define IP_WFP_REDIRECT_CONTEXT 70
#define IP_MTU_DISCOVER 71
#define IP_MTU 73
#define IP_NRT_INTERFACE 74
#define IP_RECVERR 75
#define IP_USER_MTU 76
#define IP_UNSPECIFIED_TYPE_OF_SERVICE -1
#define IP_UNSPECIFIED_USER_MTU MAXULONG
#define IPV6_ADDRESS_BITS RTL_BITS_OF(IN6_ADDR)
#define IPV6_HOPOPTS 1
#define IPV6_HDRINCL 2
#define IPV6_UNICAST_HOPS 4
#define IPV6_MULTICAST_IF 9
#define IPV6_MULTICAST_HOPS 10
#define IPV6_MULTICAST_LOOP 11
#define IPV6_ADD_MEMBERSHIP 12
#define IPV6_JOIN_GROUP IPV6_ADD_MEMBERSHIP
#define IPV6_DROP_MEMBERSHIP 13
#define IPV6_LEAVE_GROUP IPV6_DROP_MEMBERSHIP
#define IPV6_DONTFRAG 14
#define IPV6_PKTINFO 19
#define IPV6_HOPLIMIT 21
#define IPV6_PROTECTION_LEVEL 23
#define IPV6_RECVIF 24
#define IPV6_RECVDSTADDR 25
#define IPV6_CHECKSUM 26
#define IPV6_V6ONLY 27
#define IPV6_IFLIST 28
#define IPV6_ADD_IFLIST 29
#define IPV6_DEL_IFLIST 30
#define IPV6_UNICAST_IF 31
#define IPV6_RTHDR 32
#define IPV6_GET_IFLIST 33
#define IPV6_RECVRTHDR 38
#define IPV6_TCLASS 39
#define IPV6_RECVTCLASS 40
#define IPV6_ECN 50
#define IPV6_PKTINFO_EX 51
#define IPV6_WFP_REDIRECT_RECORDS 60
#define IPV6_WFP_REDIRECT_CONTEXT 70
#define IPV6_MTU_DISCOVER 71
#define IPV6_MTU 72
#define IPV6_NRT_INTERFACE 74
#define IPV6_RECVERR 75
#define IPV6_USER_MTU 76
#define IP_UNSPECIFIED_HOP_LIMIT -1
#define IP_PROTECTION_LEVEL IPV6_PROTECTION_LEVEL
#define PROTECTION_LEVEL_UNRESTRICTED 10
#define PROTECTION_LEVEL_EDGERESTRICTED 20
#define PROTECTION_LEVEL_RESTRICTED 30
#define PROTECTION_LEVEL_DEFAULT ((UINT)-1)
typedef struct ipv6_mreq {
  struct in6_addr ipv6mr_multiaddr;
  unsigned int ipv6mr_interface;
} IPV6_MREQ;
struct sockaddr_in6_old {
  short sin6_family;
  u_short sin6_port;
  u_long sin6_flowinfo;
  struct in6_addr sin6_addr;
};
typedef union sockaddr_gen {
  struct sockaddr Address;
  struct sockaddr_in AddressIn;
  struct sockaddr_in6_old AddressIn6;
} sockaddr_gen;
struct sockaddr_in6 {
  short sin6_family;
  u_short sin6_port;
  u_long sin6_flowinfo;
  struct in6_addr sin6_addr;
  __extension__ union {
    u_long sin6_scope_id;
    SCOPE_ID sin6_scope_struct;
  };
};
typedef struct sockaddr_in6 SOCKADDR_IN6;
typedef struct sockaddr_in6 *PSOCKADDR_IN6;
typedef struct sockaddr_in6 *LPSOCKADDR_IN6;
typedef struct _INTERFACE_INFO {
  u_long iiFlags;
  sockaddr_gen iiAddress;
  sockaddr_gen iiBroadcastAddress;
  sockaddr_gen iiNetmask;
} INTERFACE_INFO,*LPINTERFACE_INFO;
typedef struct _INTERFACE_INFO_EX {
  u_long iiFlags;
  SOCKET_ADDRESS iiAddress;
  SOCKET_ADDRESS iiBroadcastAddress;
  SOCKET_ADDRESS iiNetmask;
} INTERFACE_INFO_EX, *LPINTERFACE_INFO_EX;
#define IFF_UP 0x00000001
#define IFF_BROADCAST 0x00000002
#define IFF_LOOPBACK 0x00000004
#define IFF_POINTTOPOINT 0x00000008
#define IFF_MULTICAST 0x00000010
typedef enum _PMTUD_STATE {
  IP_PMTUDISC_NOT_SET,
  IP_PMTUDISC_DO,
  IP_PMTUDISC_DONT,
  IP_PMTUDISC_PROBE,
  IP_PMTUDISC_MAX
} PMTUD_STATE, *PPMTUD_STATE;
#define MCAST_JOIN_GROUP 41
#define MCAST_LEAVE_GROUP 42
#define MCAST_BLOCK_SOURCE 43
#define MCAST_UNBLOCK_SOURCE 44
#define MCAST_JOIN_SOURCE_GROUP 45
#define MCAST_LEAVE_SOURCE_GROUP 46
typedef enum _MULTICAST_MODE_TYPE {
  MCAST_INCLUDE = 0,
  MCAST_EXCLUDE
} MULTICAST_MODE_TYPE;
typedef struct ip_mreq_source {
  IN_ADDR imr_multiaddr;
  IN_ADDR imr_sourceaddr;
  IN_ADDR imr_interface;
} IP_MREQ_SOURCE, *PIP_MREQ_SOURCE;
typedef struct ip_msfilter {
  IN_ADDR imsf_multiaddr;
  IN_ADDR imsf_interface;
  MULTICAST_MODE_TYPE imsf_fmode;
  ULONG imsf_numsrc;
  IN_ADDR imsf_slist[1];
} IP_MSFILTER, *PIP_MSFILTER;
#define IP_MSFILTER_SIZE(NumSources) (sizeof(IP_MSFILTER) - sizeof(IN_ADDR) + (NumSources) * sizeof(IN_ADDR))
typedef struct _sockaddr_in6_pair {
  PSOCKADDR_IN6 SourceAddress;
  PSOCKADDR_IN6 DestinationAddress;
} SOCKADDR_IN6_PAIR, *PSOCKADDR_IN6_PAIR;
typedef union _SOCKADDR_INET {
  SOCKADDR_IN Ipv4;
  SOCKADDR_IN6 Ipv6;
  ADDRESS_FAMILY si_family;
} SOCKADDR_INET, *PSOCKADDR_INET;
typedef struct group_filter {
  ULONG gf_interface;
  SOCKADDR_STORAGE gf_group;
  MULTICAST_MODE_TYPE gf_fmode;
  ULONG gf_numsrc;
  SOCKADDR_STORAGE gf_slist[1];
} GROUP_FILTER, *PGROUP_FILTER;
typedef struct group_req {
  ULONG gr_interface;
  SOCKADDR_STORAGE gr_group;
} GROUP_REQ, *PGROUP_REQ;
typedef struct group_source_req {
  ULONG gsr_interface;
  SOCKADDR_STORAGE gsr_group;
  SOCKADDR_STORAGE gsr_source;
} GROUP_SOURCE_REQ, *PGROUP_SOURCE_REQ;
#define WS2TCPIP_INLINE __CRT_INLINE
int IN6_ADDR_EQUAL(const struct in6_addr *,const struct in6_addr *);
extern inline __attribute__((__gnu_inline__)) int IN6_ADDR_EQUAL(const struct in6_addr *a, const struct in6_addr *b) {
    return !memcmp(a, b, sizeof(struct in6_addr));
}
#define IN6_ARE_ADDR_EQUAL IN6_ADDR_EQUAL
#define _MINGW_IP_MREQ1_H 
typedef struct ip_mreq {
  struct in_addr imr_multiaddr;
  struct in_addr imr_interface;
} IP_MREQ, *PIP_MREQ;
#define SIO_GET_INTERFACE_LIST _IOR('t',127,u_long)
#define SIO_GET_INTERFACE_LIST_EX _IOR('t',126,u_long)
#define SIO_SET_MULTICAST_FILTER _IOW('t',125,u_long)
#define SIO_GET_MULTICAST_FILTER _IOW('t',124 | IOC_IN,u_long)
#define UDP_NOCHECKSUM 1
#define UDP_CHECKSUM_COVERAGE 20
#define TCP_EXPEDITED_1122 0x0002
#define SS_PORT(ssp) (((struct sockaddr_in*)(ssp))->sin_port)
#define IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } }
#define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } }
  extern const struct in6_addr in6addr_any;
  extern const struct in6_addr in6addr_loopback;
int IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *);
int IN6_IS_ADDR_LOOPBACK(const struct in6_addr *);
int IN6_IS_ADDR_MULTICAST(const struct in6_addr *);
int IN6_IS_ADDR_LINKLOCAL(const struct in6_addr *);
int IN6_IS_ADDR_SITELOCAL(const struct in6_addr *);
int IN6_IS_ADDR_V4MAPPED(const struct in6_addr *);
int IN6_IS_ADDR_V4COMPAT(const struct in6_addr *);
int IN6_IS_ADDR_MC_NODELOCAL(const struct in6_addr *);
int IN6_IS_ADDR_MC_LINKLOCAL(const struct in6_addr *);
int IN6_IS_ADDR_MC_SITELOCAL(const struct in6_addr *);
int IN6_IS_ADDR_MC_ORGLOCAL(const struct in6_addr *);
int IN6_IS_ADDR_MC_GLOBAL(const struct in6_addr *);
int IN6ADDR_ISANY(const struct sockaddr_in6 *);
int IN6ADDR_ISLOOPBACK(const struct sockaddr_in6 *);
void IN6_SET_ADDR_UNSPECIFIED(struct in6_addr *);
void IN6_SET_ADDR_LOOPBACK(struct in6_addr *);
void IN6ADDR_SETANY(struct sockaddr_in6 *);
void IN6ADDR_SETLOOPBACK(struct sockaddr_in6 *);
extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_UNSPECIFIED(const struct in6_addr *a) { return ((a->u.Word[0]==0) && (a->u.Word[1]==0) && (a->u.Word[2]==0) && (a->u.Word[3]==0) && (a->u.Word[4]==0) && (a->u.Word[5]==0) && (a->u.Word[6]==0) && (a->u.Word[7]==0)); }
extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_LOOPBACK(const struct in6_addr *a) { return ((a->u.Word[0]==0) && (a->u.Word[1]==0) && (a->u.Word[2]==0) && (a->u.Word[3]==0) && (a->u.Word[4]==0) && (a->u.Word[5]==0) && (a->u.Word[6]==0) && (a->u.Word[7]==0x0100)); }
extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_MULTICAST(const struct in6_addr *a) { return (a->u.Byte[0]==0xff); }
extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_LINKLOCAL(const struct in6_addr *a) { return ((a->u.Byte[0]==0xfe) && ((a->u.Byte[1] & 0xc0)==0x80)); }
extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_SITELOCAL(const struct in6_addr *a) { return ((a->u.Byte[0]==0xfe) && ((a->u.Byte[1] & 0xc0)==0xc0)); }
extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_V4MAPPED(const struct in6_addr *a) { return ((a->u.Word[0]==0) && (a->u.Word[1]==0) && (a->u.Word[2]==0) && (a->u.Word[3]==0) && (a->u.Word[4]==0) && (a->u.Word[5]==0xffff)); }
extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_V4COMPAT(const struct in6_addr *a) { return ((a->u.Word[0]==0) && (a->u.Word[1]==0) && (a->u.Word[2]==0) && (a->u.Word[3]==0) && (a->u.Word[4]==0) && (a->u.Word[5]==0) && !((a->u.Word[6]==0) && (a->u.Byte[14]==0) && ((a->u.Byte[15]==0) || (a->u.Byte[15]==1)))); }
extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_MC_NODELOCAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->u.Byte[1] & 0xf)==1); }
extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_MC_LINKLOCAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->u.Byte[1] & 0xf)==2); }
extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_MC_SITELOCAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->u.Byte[1] & 0xf)==5); }
extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_MC_ORGLOCAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->u.Byte[1] & 0xf)==8); }
extern inline __attribute__((__gnu_inline__)) int IN6_IS_ADDR_MC_GLOBAL(const struct in6_addr *a) { return IN6_IS_ADDR_MULTICAST(a) && ((a->u.Byte[1] & 0xf)==0xe); }
extern inline __attribute__((__gnu_inline__)) int IN6ADDR_ISANY(const struct sockaddr_in6 *a) { return ((a->sin6_family==23) && IN6_IS_ADDR_UNSPECIFIED(&a->sin6_addr)); }
extern inline __attribute__((__gnu_inline__)) int IN6ADDR_ISLOOPBACK(const struct sockaddr_in6 *a) { return ((a->sin6_family==23) && IN6_IS_ADDR_LOOPBACK(&a->sin6_addr)); }
extern inline __attribute__((__gnu_inline__)) void IN6_SET_ADDR_UNSPECIFIED(struct in6_addr *a) { memset(a->u.Byte,0,sizeof(struct in6_addr)); }
extern inline __attribute__((__gnu_inline__)) void IN6_SET_ADDR_LOOPBACK(struct in6_addr *a) {
  memset(a->u.Byte,0,sizeof(struct in6_addr));
  a->u.Byte[15] = 1;
}
extern inline __attribute__((__gnu_inline__)) void IN6ADDR_SETANY(struct sockaddr_in6 *a) {
  a->sin6_family = 23;
  a->sin6_port = 0;
  a->sin6_flowinfo = 0;
  IN6_SET_ADDR_UNSPECIFIED(&a->sin6_addr);
  a->sin6_scope_id = 0;
}
extern inline __attribute__((__gnu_inline__)) void IN6ADDR_SETLOOPBACK(struct sockaddr_in6 *a) {
  a->sin6_family = 23;
  a->sin6_port = 0;
  a->sin6_flowinfo = 0;
  IN6_SET_ADDR_LOOPBACK(&a->sin6_addr);
  a->sin6_scope_id = 0;
}
#define IN6_IS_ADDR_UNSPECIFIED IN6_IS_ADDR_UNSPECIFIED
#define IN6_IS_ADDR_LOOPBACK IN6_IS_ADDR_LOOPBACK
#define IN6_IS_ADDR_MULTICAST IN6_IS_ADDR_MULTICAST
#define IN6_IS_ADDR_LINKLOCAL IN6_IS_ADDR_LINKLOCAL
#define IN6_IS_ADDR_SITELOCAL IN6_IS_ADDR_SITELOCAL
#define IN6_IS_ADDR_V4MAPPED IN6_IS_ADDR_V4MAPPED
#define IN6_IS_ADDR_V4COMPAT IN6_IS_ADDR_V4COMPAT
#define IN6_IS_ADDR_MC_NODELOCAL IN6_IS_ADDR_MC_NODELOCAL
#define IN6_IS_ADDR_MC_LINKLOCAL IN6_IS_ADDR_MC_LINKLOCAL
#define IN6_IS_ADDR_MC_SITELOCAL IN6_IS_ADDR_MC_SITELOCAL
#define IN6_IS_ADDR_MC_ORGLOCAL IN6_IS_ADDR_MC_ORGLOCAL
#define IN6_IS_ADDR_MC_GLOBAL IN6_IS_ADDR_MC_GLOBAL
typedef struct in_pktinfo {
  IN_ADDR ipi_addr;
  UINT ipi_ifindex;
} IN_PKTINFO;
extern void __C_ASSERT__(int [(sizeof(IN_PKTINFO)==8)?1:-1]);
typedef struct in6_pktinfo {
  IN6_ADDR ipi6_addr;
  UINT ipi6_ifindex;
} IN6_PKTINFO;
extern void __C_ASSERT__(int [(sizeof(IN6_PKTINFO)==20)?1:-1]);
#define EAI_AGAIN WSATRY_AGAIN
#define EAI_BADFLAGS WSAEINVAL
#define EAI_FAIL WSANO_RECOVERY
#define EAI_FAMILY WSAEAFNOSUPPORT
#define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY
#define EAI_NONAME WSAHOST_NOT_FOUND
#define EAI_SERVICE WSATYPE_NOT_FOUND
#define EAI_SOCKTYPE WSAESOCKTNOSUPPORT
#define EAI_NODATA 11004
typedef struct addrinfo {
  int ai_flags;
  int ai_family;
  int ai_socktype;
  int ai_protocol;
  size_t ai_addrlen;
  char *ai_canonname;
  struct sockaddr *ai_addr;
  struct addrinfo *ai_next;
} ADDRINFOA,*PADDRINFOA;
typedef struct addrinfoW {
  int ai_flags;
  int ai_family;
  int ai_socktype;
  int ai_protocol;
  size_t ai_addrlen;
  PWSTR ai_canonname;
  struct sockaddr *ai_addr;
  struct addrinfoW *ai_next;
} ADDRINFOW,*PADDRINFOW;
typedef ADDRINFOA ADDRINFOT,*PADDRINFOT;
typedef ADDRINFOA ADDRINFO,*LPADDRINFO;
#define AI_PASSIVE 0x00000001
#define AI_CANONNAME 0x00000002
#define AI_NUMERICHOST 0x00000004
#define AI_NUMERICSERV 0x00000008
#define AI_ALL 0x00000100
#define AI_ADDRCONFIG 0x00000400
#define AI_V4MAPPED 0x00000800
#define AI_NON_AUTHORITATIVE 0x00004000
#define AI_SECURE 0x00008000
#define AI_RETURN_PREFERRED_NAMES 0x00010000
#define GetAddrInfo __MINGW_NAME_AW(GetAddrInfo)
  __attribute__((dllimport)) int __attribute__((__stdcall__)) getaddrinfo(const char *nodename,const char *servname,const struct addrinfo *hints,struct addrinfo **res);
  __attribute__((dllimport)) int __attribute__((__stdcall__)) GetAddrInfoW(PCWSTR pNodeName,PCWSTR pServiceName,const ADDRINFOW *pHints,PADDRINFOW *ppResult);
#define GetAddrInfoA getaddrinfo
#define FreeAddrInfo __MINGW_NAME_AW(FreeAddrInfo)
  __attribute__((dllimport)) void __attribute__((__stdcall__)) freeaddrinfo(LPADDRINFO pAddrInfo);
  __attribute__((dllimport)) void __attribute__((__stdcall__)) FreeAddrInfoW(PADDRINFOW pAddrInfo);
#define FreeAddrInfoA freeaddrinfo
  typedef int socklen_t;
#define GetNameInfo __MINGW_NAME_AW(GetNameInfo)
  __attribute__((dllimport)) int __attribute__((__stdcall__)) getnameinfo(const struct sockaddr *sa,socklen_t salen,char *host,DWORD hostlen,char *serv,DWORD servlen,int flags);
  __attribute__((dllimport)) INT __attribute__((__stdcall__)) GetNameInfoW(const SOCKADDR *pSockaddr,socklen_t SockaddrLength,PWCHAR pNodeBuffer,DWORD NodeBufferSize,PWCHAR pServiceBuffer,DWORD ServiceBufferSize,INT Flags);
#define GetNameInfoA getnameinfo
#define gai_strerror __MINGW_NAME_AW(gai_strerror)
#define GAI_STRERROR_BUFFER_SIZE 1024
char *gai_strerrorA (int);
WCHAR *gai_strerrorW(int);
#define NI_MAXHOST 1025
#define NI_MAXSERV 32
#define INET_ADDRSTRLEN 22
#define INET6_ADDRSTRLEN 65
#define NI_NOFQDN 0x01
#define NI_NUMERICHOST 0x02
#define NI_NAMEREQD 0x04
#define NI_NUMERICSERV 0x08
#define NI_DGRAM 0x10
#define _MSTCPIP_ 
#define _TRANSPORT_SETTING_COMMON_ 
typedef struct TRANSPORT_SETTING_ID {
  GUID Guid;
} TRANSPORT_SETTING_ID, *PTRANSPORT_SETTING_ID;
struct tcp_keepalive {
  u_long onoff;
  u_long keepalivetime;
  u_long keepaliveinterval;
};
typedef enum {
  CONTROL_CHANNEL_TRIGGER_STATUS_INVALID = 0,
  CONTROL_CHANNEL_TRIGGER_STATUS_SOFTWARE_SLOT_ALLOCATED = 1,
  CONTROL_CHANNEL_TRIGGER_STATUS_HARDWARE_SLOT_ALLOCATED = 2,
  CONTROL_CHANNEL_TRIGGER_STATUS_POLICY_ERROR = 3,
  CONTROL_CHANNEL_TRIGGER_STATUS_SYSTEM_ERROR = 4,
  CONTROL_CHANNEL_TRIGGER_STATUS_TRANSPORT_DISCONNECTED = 5,
  CONTROL_CHANNEL_TRIGGER_STATUS_SERVICE_UNAVAILABLE = 6
} CONTROL_CHANNEL_TRIGGER_STATUS, *PCONTROL_CHANNEL_TRIGGER_STATUS;
#define CONTROL_CHANNEL_TRIGGER_STATUS_MAX CONTROL_CHANNEL_TRIGGER_STATUS_SYSTEM_ERROR
typedef struct _REAL_TIME_NOTIFICATION_SETTING_INPUT {
  TRANSPORT_SETTING_ID TransportSettingId;
  GUID BrokerEventGuid;
} REAL_TIME_NOTIFICATION_SETTING_INPUT, *PREAL_TIME_NOTIFICATION_SETTING_INPUT;
typedef struct _REAL_TIME_NOTIFICATION_SETTING_INPUT_EX {
  TRANSPORT_SETTING_ID TransportSettingId;
  GUID BrokerEventGuid;
  BOOLEAN Unmark;
} REAL_TIME_NOTIFICATION_SETTING_INPUT_EX, *PREAL_TIME_NOTIFICATION_SETTING_INPUT_EX;
typedef struct _REAL_TIME_NOTIFICATION_SETTING_OUTPUT {
  CONTROL_CHANNEL_TRIGGER_STATUS ChannelStatus;
} REAL_TIME_NOTIFICATION_SETTING_OUTPUT, *PREAL_TIME_NOTIFICATION_SETTING_OUTPUT;
typedef struct _ASSOCIATE_NAMERES_CONTEXT_INPUT {
  TRANSPORT_SETTING_ID TransportSettingId;
  UINT64 Handle;
} ASSOCIATE_NAMERES_CONTEXT_INPUT, *PASSOCIATE_NAMERES_CONTEXT_INPUT;
#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1)
#define SIO_RCVALL_MCAST _WSAIOW(IOC_VENDOR,2)
#define SIO_RCVALL_IGMPMCAST _WSAIOW(IOC_VENDOR,3)
#define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4)
#define SIO_ABSORB_RTRALERT _WSAIOW(IOC_VENDOR,5)
#define SIO_UCAST_IF _WSAIOW(IOC_VENDOR,6)
#define SIO_LIMIT_BROADCASTS _WSAIOW(IOC_VENDOR,7)
#define SIO_INDEX_BIND _WSAIOW(IOC_VENDOR,8)
#define SIO_INDEX_MCASTIF _WSAIOW(IOC_VENDOR,9)
#define SIO_INDEX_ADD_MCAST _WSAIOW(IOC_VENDOR,10)
#define SIO_INDEX_DEL_MCAST _WSAIOW(IOC_VENDOR,11)
#define SIO_RCVALL_MCAST_IF _WSAIOW(IOC_VENDOR,13)
#define SIO_RCVALL_IF _WSAIOW(IOC_VENDOR,14)
#define SIO_LOOPBACK_FAST_PATH _WSAIOW(IOC_VENDOR,16)
#define SIO_TCP_INITIAL_RTO _WSAIOW(IOC_VENDOR,17)
#define SIO_APPLY_TRANSPORT_SETTING _WSAIOW(IOC_VENDOR,19)
#define SIO_QUERY_TRANSPORT_SETTING _WSAIOW(IOC_VENDOR,20)
#define SIO_TCP_SET_ICW _WSAIOW(IOC_VENDOR,22)
#define SIO_TCP_SET_ACK_FREQUENCY _WSAIOW(IOC_VENDOR,23)
typedef enum {
  RCVALL_OFF = 0,
  RCVALL_ON = 1,
  RCVALL_SOCKETLEVELONLY = 2,
  RCVALL_IPLEVEL = 3
} RCVALL_VALUE, *PRCVALL_VALUE;
#define RCVALL_MAX RCVALL_IPLEVEL
typedef struct {
  RCVALL_VALUE Mode;
  ULONG Interface;
} RCVALL_IF, *PRCVALL_IF;
#define TCP_INITIAL_RTO_UNSPECIFIED_RTT ((USHORT) -1)
#define TCP_INITIAL_RTO_UNSPECIFIED_MAX_SYN_RETRANSMISSIONS ((UCHAR) -1)
#define TCP_INITIAL_RTO_DEFAULT_RTT (0)
#define TCP_INITIAL_RTO_DEFAULT_MAX_SYN_RETRANSMISSIONS (0)
#define TCP_INITIAL_RTO_NO_SYN_RETRANSMISSIONS ((UCHAR) -2)
typedef struct _TCP_INITIAL_RTO_PARAMETERS {
  USHORT Rtt;
  UCHAR MaxSynRetransmissions;
} TCP_INITIAL_RTO_PARAMETERS, *PTCP_INITIAL_RTO_PARAMETERS;
typedef enum {
  TCP_ICW_LEVEL_DEFAULT = 0,
  TCP_ICW_LEVEL_HIGH = 1,
  TCP_ICW_LEVEL_VERY_HIGH = 2,
  TCP_ICW_LEVEL_AGGRESSIVE = 3,
  TCP_ICW_LEVEL_EXPERIMENTAL = 4,
  TCP_ICW_LEVEL_COMPAT = 254,
  TCP_ICW_LEVEL_MAX = 255
} TCP_ICW_LEVEL, *PTCP_ICW_LEVEL;
typedef struct _TCP_ICW_PARAMETERS {
  TCP_ICW_LEVEL Level;
} TCP_ICW_PARAMETERS, *PTCP_ICW_PARAMETERS;
typedef struct _TCP_ACK_FREQUENCY_PARAMETERS {
  UCHAR TcpDelayedAckFrequency;
} TCP_ACK_FREQUENCY_PARAMETERS, *PTCP_ACK_FREQUENCY_PARAMETERS;
#define SIO_ACQUIRE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 100)
#define SIO_RELEASE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 101)
#define SIO_ASSOCIATE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 102)
typedef struct _INET_PORT_RANGE {
  USHORT StartPort;
  USHORT NumberOfPorts;
} INET_PORT_RANGE, *PINET_PORT_RANGE;
typedef struct _INET_PORT_RANGE INET_PORT_RESERVATION, *PINET_PORT_RESERVATION;
typedef struct {
  ULONG64 Token;
} INET_PORT_RESERVATION_TOKEN, *PINET_PORT_RESERVATION_TOKEN;
#define INVALID_PORT_RESERVATION_TOKEN ((ULONG64)0)
typedef struct {
  INET_PORT_RESERVATION;
  INET_PORT_RESERVATION_TOKEN;
} INET_PORT_RESERVATION_INSTANCE, *PINET_PORT_RESERVATION_INSTANCE;
typedef struct {
  ULONG OwningPid;
} INET_PORT_RESERVATION_INFORMATION, *PINET_PORT_RESERVATION_INFORMATION;
typedef enum _SOCKET_SECURITY_PROTOCOL {
  SOCKET_SECURITY_PROTOCOL_DEFAULT,
  SOCKET_SECURITY_PROTOCOL_IPSEC,
  SOCKET_SECURITY_PROTOCOL_INVALID
} SOCKET_SECURITY_PROTOCOL;
#define SOCKET_SETTINGS_GUARANTEE_ENCRYPTION 0x1
#define SOCKET_SETTINGS_ALLOW_INSECURE 0x2
typedef enum _SOCKET_USAGE_TYPE {
  SYSTEM_CRITICAL_SOCKET = 1
} SOCKET_USAGE_TYPE;
typedef struct _SOCKET_PEER_TARGET_NAME {
  SOCKET_SECURITY_PROTOCOL SecurityProtocol;
  SOCKADDR_STORAGE PeerAddress;
  ULONG PeerTargetNameStringLen;
  wchar_t AllStrings[];
} SOCKET_PEER_TARGET_NAME;
#define SOCKET_INFO_CONNECTION_SECURED 0x00000001
#define SOCKET_INFO_CONNECTION_ENCRYPTED 0x00000002
#define SOCKET_INFO_CONNECTION_IMPERSONATED 0x00000004
typedef struct _SOCKET_SECURITY_QUERY_INFO {
  SOCKET_SECURITY_PROTOCOL SecurityProtocol;
  ULONG Flags;
  UINT64 PeerApplicationAccessTokenHandle;
  UINT64 PeerMachineAccessTokenHandle;
} SOCKET_SECURITY_QUERY_INFO;
typedef struct _SOCKET_SECURITY_QUERY_TEMPLATE {
  SOCKET_SECURITY_PROTOCOL SecurityProtocol;
  SOCKADDR_STORAGE PeerAddress;
  ULONG PeerTokenAccessMask;
} SOCKET_SECURITY_QUERY_TEMPLATE;
typedef struct _SOCKET_SECURITY_SETTINGS {
  SOCKET_SECURITY_PROTOCOL SecurityProtocol;
  ULONG SecurityFlags;
} SOCKET_SECURITY_SETTINGS;
#define SOCKET_SETTINGS_IPSEC_SKIP_FILTER_INSTANTIATION 0x00000001
typedef struct _SOCKET_SECURITY_SETTINGS_IPSEC {
  SOCKET_SECURITY_PROTOCOL SecurityProtocol;
  ULONG SecurityFlags;
  ULONG IpsecFlags;
  GUID AuthipMMPolicyKey;
  GUID AuthipQMPolicyKey;
  GUID Reserved;
  UINT64 Reserved2;
  ULONG UserNameStringLen;
  ULONG DomainNameStringLen;
  ULONG PasswordStringLen;
  wchar_t AllStrings[];
} SOCKET_SECURITY_SETTINGS_IPSEC;
#define RtlIpv6AddressToString __MINGW_NAME_AW(RtlIpv6AddressToString)
#define RtlIpv6AddressToStringEx __MINGW_NAME_AW(RtlIpv6AddressToStringEx)
LPSTR __attribute__((__stdcall__)) RtlIpv6AddressToStringA(const IN6_ADDR *Addr, LPSTR S);
LPWSTR __attribute__((__stdcall__)) RtlIpv6AddressToStringW(const IN6_ADDR *Addr, LPWSTR S);
LONG __attribute__((__stdcall__)) RtlIpv6AddressToStringExA(const IN6_ADDR *Address, ULONG ScopeId, USHORT Port, LPSTR AddressString, PULONG AddressStringLength);
LONG __attribute__((__stdcall__)) RtlIpv6AddressToStringExW(const IN6_ADDR *Address, ULONG ScopeId, USHORT Port, LPWSTR AddressString, PULONG AddressStringLength);
#define RtlIpv4AddressToString __MINGW_NAME_AW(RtlIpv4AddressToString)
LPSTR __attribute__((__stdcall__)) RtlIpv4AddressToStringA(const IN_ADDR *Addr, LPSTR S);
LPWSTR __attribute__((__stdcall__)) RtlIpv4AddressToStringW(const IN_ADDR *Addr, LPWSTR S);
#define RtlIpv4AddressToStringEx __MINGW_NAME_AW(RtlIpv4AddressToStringEx)
LONG __attribute__((__stdcall__)) RtlIpv4AddressToStringExA(const IN_ADDR *Address, USHORT Port, LPSTR AddressString, PULONG AddressStringLength);
LONG __attribute__((__stdcall__)) RtlIpv4AddressToStringExW(const IN_ADDR *Address, USHORT Port, LPWSTR AddressString, PULONG AddressStringLength);
#define RtlIpv4StringToAddress __MINGW_NAME_AW(RtlIpv4StringToAddress)
LONG __attribute__((__stdcall__)) RtlIpv4StringToAddressA(PCSTR S, BOOLEAN Strict, LPSTR *Terminator, IN_ADDR *Addr);
LONG __attribute__((__stdcall__)) RtlIpv4StringToAddressW(PCWSTR S, BOOLEAN Strict, LPWSTR *Terminator, IN_ADDR *Addr);
#define RtlIpv4StringToAddressEx __MINGW_NAME_AW(RtlIpv4StringToAddressEx)
LONG __attribute__((__stdcall__)) RtlIpv4StringToAddressExA(PCSTR AddressString, BOOLEAN Strict, IN_ADDR *Address, PUSHORT Port);
LONG __attribute__((__stdcall__)) RtlIpv4StringToAddressExW(PCWSTR AddressString, BOOLEAN Strict, IN_ADDR *Address, PUSHORT Port);
#define RtlIpv6StringToAddressEx __MINGW_NAME_AW(RtlIpv6StringToAddressEx)
LONG __attribute__((__stdcall__)) RtlIpv6StringToAddressExA(PCSTR AddressString, IN6_ADDR *Address, PULONG ScopeId, PUSHORT Port);
LONG __attribute__((__stdcall__)) RtlIpv6StringToAddressExW(PCWSTR AddressString, IN6_ADDR *Address, PULONG ScopeId, PUSHORT Port);
#define addrinfoEx __MINGW_NAME_AW(addrinfoEx)
#define PADDRINFOEX __MINGW_NAME_AW(PADDRINFOEX)
#define GetAddrInfoEx __MINGW_NAME_AW(GetAddrInfoEx)
#define SetAddrInfoEx __MINGW_NAME_AW(SetAddrInfoEx)
  typedef struct addrinfoExA {
    int ai_flags;
    int ai_family;
    int ai_socktype;
    int ai_protocol;
    size_t ai_addrlen;
    LPCSTR ai_canonname;
    struct sockaddr *ai_addr;
    void *ai_blob;
    size_t ai_bloblen;
    LPGUID ai_provider;
    struct addrinfoexA *ai_next;
  } ADDRINFOEXA, *PADDRINFOEXA;
  typedef struct addrinfoExW {
    int ai_flags;
    int ai_family;
    int ai_socktype;
    int ai_protocol;
    size_t ai_addrlen;
    LPCWSTR ai_canonname;
    struct sockaddr *ai_addr;
    void *ai_blob;
    size_t ai_bloblen;
    LPGUID ai_provider;
    struct addrinfoexW *ai_next;
  } ADDRINFOEXW, *PADDRINFOEXW;
typedef PVOID LPLOOKUPSERVICE_COMPLETION_ROUTINE;
__attribute__((dllimport)) int __attribute__((__stdcall__)) GetAddrInfoExA(PCSTR pName, PCSTR pServiceName, DWORD dwNameSpace,
           LPGUID lpNspId,const ADDRINFOEXA *pHints,PADDRINFOEXA *ppResult,
           PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
           LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
           LPHANDLE lpNameHandle);
__attribute__((dllimport)) int __attribute__((__stdcall__)) GetAddrInfoExW(PCWSTR pName,PCWSTR pServiceName,DWORD dwNameSpace,
           LPGUID lpNspId,const ADDRINFOEXW *pHints,PADDRINFOEXW *ppResult,
           PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
           LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
           LPHANDLE lpNameHandle);
__attribute__((dllimport)) int __attribute__((__stdcall__)) SetAddrInfoExA(PCSTR pName, PCSTR pServiceName, SOCKET_ADDRESS *pAddresses,
           DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
           LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
           LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
           LPHANDLE lpNameHandle);
__attribute__((dllimport)) int __attribute__((__stdcall__)) SetAddrInfoExW(PCWSTR pName,PCWSTR pServiceName,SOCKET_ADDRESS *pAddresses,
           DWORD dwAddressCount,LPBLOB lpBlob,DWORD dwFlags,DWORD dwNameSpace,
           LPGUID lpNspId,PTIMEVAL timeout,LPOVERLAPPED lpOverlapped,
           LPLOOKUPSERVICE_COMPLETION_ROUTINE lpCompletionRoutine,
           LPHANDLE lpNameHandle);
__attribute__((dllimport)) void __attribute__((__stdcall__)) FreeAddrInfoEx(PADDRINFOEXA pAddrInfo);
__attribute__((dllimport)) void __attribute__((__stdcall__)) FreeAddrInfoExW(PADDRINFOEXW pAddrInfo);
#define FreeAddrInfoExA FreeAddrInfoEx
__attribute__((dllimport)) int __attribute__((__stdcall__)) WSAImpersonateSocketPeer(
  SOCKET Socket,
  const struct sockaddr *PeerAddress,
  ULONG peerAddressLen
);
__attribute__((dllimport)) int __attribute__((__stdcall__)) WSAQuerySocketSecurity(
  SOCKET Socket,
  const SOCKET_SECURITY_QUERY_TEMPLATE *SecurityQueryTemplate,
  ULONG SecurityQueryTemplateLen,
  SOCKET_SECURITY_QUERY_INFO *SecurityQueryInfo,
  ULONG *SecurityQueryInfoLen,
  LPWSAOVERLAPPED Overlapped,
  LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
);
__attribute__((dllimport)) int __attribute__((__stdcall__)) WSARevertImpersonation(void);
__attribute__((dllimport)) int __attribute__((__stdcall__)) WSASetSocketPeerTargetName(
  SOCKET Socket,
  const SOCKET_PEER_TARGET_NAME *PeerTargetName,
  ULONG PeerTargetNameLen,
  LPWSAOVERLAPPED Overlapped,
  LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
);
__attribute__((dllimport)) int __attribute__((__stdcall__)) WSASetSocketSecurity(
  SOCKET Socket,
  const SOCKET_SECURITY_SETTINGS *SecuritySettings,
  ULONG SecuritySettingsLen,
  LPWSAOVERLAPPED Overlapped,
  LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
);
#define InetNtopA inet_ntop
__attribute__((dllimport)) LPCWSTR __attribute__((__stdcall__)) InetNtopW(INT Family, LPCVOID pAddr, LPWSTR pStringBuf, size_t StringBufSIze);
__attribute__((dllimport)) LPCSTR __attribute__((__stdcall__)) inet_ntop(INT Family, LPCVOID pAddr, LPSTR pStringBuf, size_t StringBufSize);
#define InetNtop __MINGW_NAME_AW(InetNtop)
#define InetPtonA inet_pton
__attribute__((dllimport)) INT __attribute__((__stdcall__)) InetPtonW(INT Family, LPCWSTR pStringBuf, PVOID pAddr);
__attribute__((dllimport)) INT __attribute__((__stdcall__)) inet_pton(INT Family, LPCSTR pStringBuf, PVOID pAddr);
#define InetPton __MINGW_NAME_AW(InetPton)
#define __IPHLPAPI_H__ 
#define __ROUTING_IPRTRMIB_H__ 
#define __ROUTING_MPRADMIN_H__ 
#define NETCONS_INCLUDED 
#define CNLEN 15
#define LM20_CNLEN 15
#define DNLEN CNLEN
#define LM20_DNLEN LM20_CNLEN
#define UNCLEN (CNLEN+2)
#define LM20_UNCLEN (LM20_CNLEN+2)
#define NNLEN 80
#define LM20_NNLEN 12
#define RMLEN (UNCLEN+1+NNLEN)
#define LM20_RMLEN (LM20_UNCLEN+1+LM20_NNLEN)
#define SNLEN 80
#define LM20_SNLEN 15
#define STXTLEN 256
#define LM20_STXTLEN 63
#define PATHLEN 256
#define LM20_PATHLEN 256
#define DEVLEN 80
#define LM20_DEVLEN 8
#define EVLEN 16
#define UNLEN 256
#define LM20_UNLEN 20
#define GNLEN UNLEN
#define LM20_GNLEN LM20_UNLEN
#define PWLEN 256
#define LM20_PWLEN 14
#define SHPWLEN 8
#define CLTYPE_LEN 12
#define MAXCOMMENTSZ 256
#define LM20_MAXCOMMENTSZ 48
#define QNLEN NNLEN
#define LM20_QNLEN LM20_NNLEN
#define ALERTSZ 128
#define MAXDEVENTRIES (sizeof (int)*8)
#define NETBIOS_NAME_LEN 16
#define MAX_PREFERRED_LENGTH ((DWORD) -1)
#define CRYPT_KEY_LEN 7
#define CRYPT_TXT_LEN 8
#define ENCRYPTED_PWLEN 16
#define SESSION_PWLEN 24
#define SESSION_CRYPT_KLEN 21
#define PARMNUM_ALL 0
#define PARM_ERROR_UNKNOWN ((DWORD) (-1))
#define PARM_ERROR_NONE 0
#define PARMNUM_BASE_INFOLEVEL 1000
#define LMSTR LPWSTR
#define LMCSTR LPCWSTR
#define MESSAGE_FILENAME TEXT("NETMSG")
#define OS2MSG_FILENAME TEXT("BASE")
#define HELP_MSG_FILENAME TEXT("NETH")
#define BACKUP_MSG_FILENAME TEXT("BAK.MSG")
#define NET_API_STATUS DWORD
#define API_RET_TYPE NET_API_STATUS
#define NET_API_FUNCTION WINAPI
#define PLATFORM_ID_DOS 300
#define PLATFORM_ID_OS2 400
#define PLATFORM_ID_NT 500
#define PLATFORM_ID_OSF 600
#define PLATFORM_ID_VMS 700
#define MIN_LANMAN_MESSAGE_ID NERR_BASE
#define MAX_LANMAN_MESSAGE_ID 5899
#define _RAS_H_ 
#undef interface
#define interface struct
#define __naptypes_h__ 
#undef interface
#define interface struct
#undef interface
#define interface struct
#define __ocidl_h__ 
#define __IEnumConnections_FWD_DEFINED__ 
typedef struct IEnumConnections IEnumConnections;
#define __IConnectionPoint_FWD_DEFINED__ 
typedef struct IConnectionPoint IConnectionPoint;
#define __IEnumConnectionPoints_FWD_DEFINED__ 
typedef struct IEnumConnectionPoints IEnumConnectionPoints;
#define __IConnectionPointContainer_FWD_DEFINED__ 
typedef struct IConnectionPointContainer IConnectionPointContainer;
#define __IClassFactory2_FWD_DEFINED__ 
typedef struct IClassFactory2 IClassFactory2;
#define __IProvideClassInfo_FWD_DEFINED__ 
typedef struct IProvideClassInfo IProvideClassInfo;
#define __IProvideClassInfo2_FWD_DEFINED__ 
typedef struct IProvideClassInfo2 IProvideClassInfo2;
#define __IProvideMultipleClassInfo_FWD_DEFINED__ 
typedef struct IProvideMultipleClassInfo IProvideMultipleClassInfo;
#define __IOleControl_FWD_DEFINED__ 
typedef struct IOleControl IOleControl;
#define __IOleControlSite_FWD_DEFINED__ 
typedef struct IOleControlSite IOleControlSite;
#define __IPropertyPage_FWD_DEFINED__ 
typedef struct IPropertyPage IPropertyPage;
#define __IPropertyPage2_FWD_DEFINED__ 
typedef struct IPropertyPage2 IPropertyPage2;
#define __IPropertyPageSite_FWD_DEFINED__ 
typedef struct IPropertyPageSite IPropertyPageSite;
#define __IPropertyNotifySink_FWD_DEFINED__ 
typedef struct IPropertyNotifySink IPropertyNotifySink;
#define __ISpecifyPropertyPages_FWD_DEFINED__ 
typedef struct ISpecifyPropertyPages ISpecifyPropertyPages;
#define __IPersistMemory_FWD_DEFINED__ 
typedef struct IPersistMemory IPersistMemory;
#define __IPersistStreamInit_FWD_DEFINED__ 
typedef struct IPersistStreamInit IPersistStreamInit;
#define __IPersistPropertyBag_FWD_DEFINED__ 
typedef struct IPersistPropertyBag IPersistPropertyBag;
#define __ISimpleFrameSite_FWD_DEFINED__ 
typedef struct ISimpleFrameSite ISimpleFrameSite;
#define __IFont_FWD_DEFINED__ 
typedef struct IFont IFont;
#define __IPicture_FWD_DEFINED__ 
typedef struct IPicture IPicture;
#define __IPicture2_FWD_DEFINED__ 
typedef struct IPicture2 IPicture2;
#define __IFontEventsDisp_FWD_DEFINED__ 
typedef struct IFontEventsDisp IFontEventsDisp;
#define __IFontDisp_FWD_DEFINED__ 
typedef struct IFontDisp IFontDisp;
#define __IPictureDisp_FWD_DEFINED__ 
typedef struct IPictureDisp IPictureDisp;
#define __IOleInPlaceObjectWindowless_FWD_DEFINED__ 
typedef struct IOleInPlaceObjectWindowless IOleInPlaceObjectWindowless;
#define __IOleInPlaceSiteEx_FWD_DEFINED__ 
typedef struct IOleInPlaceSiteEx IOleInPlaceSiteEx;
#define __IOleInPlaceSiteWindowless_FWD_DEFINED__ 
typedef struct IOleInPlaceSiteWindowless IOleInPlaceSiteWindowless;
#define __IViewObjectEx_FWD_DEFINED__ 
typedef struct IViewObjectEx IViewObjectEx;
#define __IOleUndoUnit_FWD_DEFINED__ 
typedef struct IOleUndoUnit IOleUndoUnit;
#define __IOleParentUndoUnit_FWD_DEFINED__ 
typedef struct IOleParentUndoUnit IOleParentUndoUnit;
#define __IEnumOleUndoUnits_FWD_DEFINED__ 
typedef struct IEnumOleUndoUnits IEnumOleUndoUnits;
#define __IOleUndoManager_FWD_DEFINED__ 
typedef struct IOleUndoManager IOleUndoManager;
#define __IPointerInactive_FWD_DEFINED__ 
typedef struct IPointerInactive IPointerInactive;
#define __IObjectWithSite_FWD_DEFINED__ 
typedef struct IObjectWithSite IObjectWithSite;
#define __IPerPropertyBrowsing_FWD_DEFINED__ 
typedef struct IPerPropertyBrowsing IPerPropertyBrowsing;
#define __IPropertyBag2_FWD_DEFINED__ 
typedef struct IPropertyBag2 IPropertyBag2;
#define __IPersistPropertyBag2_FWD_DEFINED__ 
typedef struct IPersistPropertyBag2 IPersistPropertyBag2;
#define __IAdviseSinkEx_FWD_DEFINED__ 
typedef struct IAdviseSinkEx IAdviseSinkEx;
#define __IQuickActivate_FWD_DEFINED__ 
typedef struct IQuickActivate IQuickActivate;
#undef interface
#define interface struct
#undef interface
#define interface struct
#undef interface
#define interface struct
#undef interface
#define interface struct
#undef interface
#define interface struct
#define __IOleControlTypes_INTERFACE_DEFINED__ 
extern RPC_IF_HANDLE IOleControlTypes_v1_0_c_ifspec;
extern RPC_IF_HANDLE IOleControlTypes_v1_0_s_ifspec;
typedef enum tagUASFLAGS {
    UAS_NORMAL = 0x0,
    UAS_BLOCKED = 0x1,
    UAS_NOPARENTENABLE = 0x2,
    UAS_MASK = 0x3
} UASFLAGS;
typedef enum tagREADYSTATE {
    READYSTATE_UNINITIALIZED = 0,
    READYSTATE_LOADING = 1,
    READYSTATE_LOADED = 2,
    READYSTATE_INTERACTIVE = 3,
    READYSTATE_COMPLETE = 4
} READYSTATE;
#define __IEnumConnections_INTERFACE_DEFINED__ 
typedef IEnumConnections *PENUMCONNECTIONS;
typedef IEnumConnections *LPENUMCONNECTIONS;
typedef struct tagCONNECTDATA {
    IUnknown *pUnk;
    DWORD dwCookie;
} CONNECTDATA;
typedef struct tagCONNECTDATA *PCONNECTDATA;
typedef struct tagCONNECTDATA *LPCONNECTDATA;
extern const GUID IID_IEnumConnections;
typedef struct IEnumConnectionsVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IEnumConnections *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IEnumConnections *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IEnumConnections *This);
    HRESULT (__attribute__((__stdcall__)) *Next)(
        IEnumConnections *This,
        ULONG cConnections,
        LPCONNECTDATA rgcd,
        ULONG *pcFetched);
    HRESULT (__attribute__((__stdcall__)) *Skip)(
        IEnumConnections *This,
        ULONG cConnections);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        IEnumConnections *This);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IEnumConnections *This,
        IEnumConnections **ppEnum);
   
} IEnumConnectionsVtbl;
struct IEnumConnections {
    IEnumConnectionsVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IEnumConnections_RemoteNext_Proxy(
    IEnumConnections* This,
    ULONG cConnections,
    LPCONNECTDATA rgcd,
    ULONG *pcFetched);
void __attribute__((__stdcall__)) IEnumConnections_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IEnumConnections_Next_Proxy(
    IEnumConnections* This,
    ULONG cConnections,
    LPCONNECTDATA rgcd,
    ULONG *pcFetched);
HRESULT __attribute__((__stdcall__)) IEnumConnections_Next_Stub(
    IEnumConnections* This,
    ULONG cConnections,
    LPCONNECTDATA rgcd,
    ULONG *pcFetched);
#define __IConnectionPoint_INTERFACE_DEFINED__ 
typedef IConnectionPoint *PCONNECTIONPOINT;
typedef IConnectionPoint *LPCONNECTIONPOINT;
extern const GUID IID_IConnectionPoint;
typedef struct IConnectionPointVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IConnectionPoint *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IConnectionPoint *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IConnectionPoint *This);
    HRESULT (__attribute__((__stdcall__)) *GetConnectionInterface)(
        IConnectionPoint *This,
        IID *pIID);
    HRESULT (__attribute__((__stdcall__)) *GetConnectionPointContainer)(
        IConnectionPoint *This,
        IConnectionPointContainer **ppCPC);
    HRESULT (__attribute__((__stdcall__)) *Advise)(
        IConnectionPoint *This,
        IUnknown *pUnkSink,
        DWORD *pdwCookie);
    HRESULT (__attribute__((__stdcall__)) *Unadvise)(
        IConnectionPoint *This,
        DWORD dwCookie);
    HRESULT (__attribute__((__stdcall__)) *EnumConnections)(
        IConnectionPoint *This,
        IEnumConnections **ppEnum);
   
} IConnectionPointVtbl;
struct IConnectionPoint {
    IConnectionPointVtbl* lpVtbl;
};
#define __IEnumConnectionPoints_INTERFACE_DEFINED__ 
typedef IEnumConnectionPoints *PENUMCONNECTIONPOINTS;
typedef IEnumConnectionPoints *LPENUMCONNECTIONPOINTS;
extern const GUID IID_IEnumConnectionPoints;
typedef struct IEnumConnectionPointsVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IEnumConnectionPoints *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IEnumConnectionPoints *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IEnumConnectionPoints *This);
    HRESULT (__attribute__((__stdcall__)) *Next)(
        IEnumConnectionPoints *This,
        ULONG cConnections,
        LPCONNECTIONPOINT *ppCP,
        ULONG *pcFetched);
    HRESULT (__attribute__((__stdcall__)) *Skip)(
        IEnumConnectionPoints *This,
        ULONG cConnections);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        IEnumConnectionPoints *This);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IEnumConnectionPoints *This,
        IEnumConnectionPoints **ppEnum);
   
} IEnumConnectionPointsVtbl;
struct IEnumConnectionPoints {
    IEnumConnectionPointsVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IEnumConnectionPoints_RemoteNext_Proxy(
    IEnumConnectionPoints* This,
    ULONG cConnections,
    LPCONNECTIONPOINT *ppCP,
    ULONG *pcFetched);
void __attribute__((__stdcall__)) IEnumConnectionPoints_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IEnumConnectionPoints_Next_Proxy(
    IEnumConnectionPoints* This,
    ULONG cConnections,
    LPCONNECTIONPOINT *ppCP,
    ULONG *pcFetched);
HRESULT __attribute__((__stdcall__)) IEnumConnectionPoints_Next_Stub(
    IEnumConnectionPoints* This,
    ULONG cConnections,
    LPCONNECTIONPOINT *ppCP,
    ULONG *pcFetched);
#define __IConnectionPointContainer_INTERFACE_DEFINED__ 
typedef IConnectionPointContainer *PCONNECTIONPOINTCONTAINER;
typedef IConnectionPointContainer *LPCONNECTIONPOINTCONTAINER;
extern const GUID IID_IConnectionPointContainer;
typedef struct IConnectionPointContainerVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IConnectionPointContainer *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IConnectionPointContainer *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IConnectionPointContainer *This);
    HRESULT (__attribute__((__stdcall__)) *EnumConnectionPoints)(
        IConnectionPointContainer *This,
        IEnumConnectionPoints **ppEnum);
    HRESULT (__attribute__((__stdcall__)) *FindConnectionPoint)(
        IConnectionPointContainer *This,
        const IID *const riid,
        IConnectionPoint **ppCP);
   
} IConnectionPointContainerVtbl;
struct IConnectionPointContainer {
    IConnectionPointContainerVtbl* lpVtbl;
};
#define __IClassFactory2_INTERFACE_DEFINED__ 
typedef IClassFactory2 *LPCLASSFACTORY2;
typedef struct tagLICINFO {
    LONG cbLicInfo;
    WINBOOL fRuntimeKeyAvail;
    WINBOOL fLicVerified;
} LICINFO;
typedef struct tagLICINFO *LPLICINFO;
extern const GUID IID_IClassFactory2;
typedef struct IClassFactory2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IClassFactory2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IClassFactory2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IClassFactory2 *This);
    HRESULT (__attribute__((__stdcall__)) *CreateInstance)(
        IClassFactory2 *This,
        IUnknown *pUnkOuter,
        const IID *const riid,
        void **ppvObject);
    HRESULT (__attribute__((__stdcall__)) *LockServer)(
        IClassFactory2 *This,
        WINBOOL fLock);
    HRESULT (__attribute__((__stdcall__)) *GetLicInfo)(
        IClassFactory2 *This,
        LICINFO *pLicInfo);
    HRESULT (__attribute__((__stdcall__)) *RequestLicKey)(
        IClassFactory2 *This,
        DWORD dwReserved,
        BSTR *pBstrKey);
    HRESULT (__attribute__((__stdcall__)) *CreateInstanceLic)(
        IClassFactory2 *This,
        IUnknown *pUnkOuter,
        IUnknown *pUnkReserved,
        const IID *const riid,
        BSTR bstrKey,
        PVOID *ppvObj);
   
} IClassFactory2Vtbl;
struct IClassFactory2 {
    IClassFactory2Vtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IClassFactory2_RemoteCreateInstanceLic_Proxy(
    IClassFactory2* This,
    const IID *const riid,
    BSTR bstrKey,
    IUnknown **ppvObj);
void __attribute__((__stdcall__)) IClassFactory2_RemoteCreateInstanceLic_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IClassFactory2_CreateInstanceLic_Proxy(
    IClassFactory2* This,
    IUnknown *pUnkOuter,
    IUnknown *pUnkReserved,
    const IID *const riid,
    BSTR bstrKey,
    PVOID *ppvObj);
HRESULT __attribute__((__stdcall__)) IClassFactory2_CreateInstanceLic_Stub(
    IClassFactory2* This,
    const IID *const riid,
    BSTR bstrKey,
    IUnknown **ppvObj);
#define __IProvideClassInfo_INTERFACE_DEFINED__ 
typedef IProvideClassInfo *LPPROVIDECLASSINFO;
extern const GUID IID_IProvideClassInfo;
typedef struct IProvideClassInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IProvideClassInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IProvideClassInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IProvideClassInfo *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassInfoA)(
        IProvideClassInfo *This,
        ITypeInfo **ppTI);
   
} IProvideClassInfoVtbl;
struct IProvideClassInfo {
    IProvideClassInfoVtbl* lpVtbl;
};
#define __IProvideClassInfo2_INTERFACE_DEFINED__ 
typedef IProvideClassInfo2 *LPPROVIDECLASSINFO2;
typedef enum tagGUIDKIND {
    GUIDKIND_DEFAULT_SOURCE_DISP_IID = 1
} GUIDKIND;
extern const GUID IID_IProvideClassInfo2;
typedef struct IProvideClassInfo2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IProvideClassInfo2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IProvideClassInfo2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IProvideClassInfo2 *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassInfoA)(
        IProvideClassInfo2 *This,
        ITypeInfo **ppTI);
    HRESULT (__attribute__((__stdcall__)) *GetGUID)(
        IProvideClassInfo2 *This,
        DWORD dwGuidKind,
        GUID *pGUID);
   
} IProvideClassInfo2Vtbl;
struct IProvideClassInfo2 {
    IProvideClassInfo2Vtbl* lpVtbl;
};
#define __IProvideMultipleClassInfo_INTERFACE_DEFINED__ 
#define MULTICLASSINFO_GETTYPEINFO 0x1
#define MULTICLASSINFO_GETNUMRESERVEDDISPIDS 0x2
#define MULTICLASSINFO_GETIIDPRIMARY 0x4
#define MULTICLASSINFO_GETIIDSOURCE 0x8
#define TIFLAGS_EXTENDDISPATCHONLY 0x1
typedef IProvideMultipleClassInfo *LPPROVIDEMULTIPLECLASSINFO;
extern const GUID IID_IProvideMultipleClassInfo;
typedef struct IProvideMultipleClassInfoVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IProvideMultipleClassInfo *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IProvideMultipleClassInfo *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IProvideMultipleClassInfo *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassInfoA)(
        IProvideMultipleClassInfo *This,
        ITypeInfo **ppTI);
    HRESULT (__attribute__((__stdcall__)) *GetGUID)(
        IProvideMultipleClassInfo *This,
        DWORD dwGuidKind,
        GUID *pGUID);
    HRESULT (__attribute__((__stdcall__)) *GetMultiTypeInfoCount)(
        IProvideMultipleClassInfo *This,
        ULONG *pcti);
    HRESULT (__attribute__((__stdcall__)) *GetInfoOfIndex)(
        IProvideMultipleClassInfo *This,
        ULONG iti,
        DWORD dwFlags,
        ITypeInfo **pptiCoClass,
        DWORD *pdwTIFlags,
        ULONG *pcdispidReserved,
        IID *piidPrimary,
        IID *piidSource);
   
} IProvideMultipleClassInfoVtbl;
struct IProvideMultipleClassInfo {
    IProvideMultipleClassInfoVtbl* lpVtbl;
};
#define __IOleControl_INTERFACE_DEFINED__ 
typedef IOleControl *LPOLECONTROL;
typedef struct tagCONTROLINFO {
    ULONG cb;
    HACCEL hAccel;
    USHORT cAccel;
    DWORD dwFlags;
} CONTROLINFO;
typedef struct tagCONTROLINFO *LPCONTROLINFO;
typedef enum tagCTRLINFO {
    CTRLINFO_EATS_RETURN = 1,
    CTRLINFO_EATS_ESCAPE = 2
} CTRLINFO;
extern const GUID IID_IOleControl;
typedef struct IOleControlVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleControl *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleControl *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleControl *This);
    HRESULT (__attribute__((__stdcall__)) *GetControlInfo)(
        IOleControl *This,
        CONTROLINFO *pCI);
    HRESULT (__attribute__((__stdcall__)) *OnMnemonic)(
        IOleControl *This,
        MSG *pMsg);
    HRESULT (__attribute__((__stdcall__)) *OnAmbientPropertyChange)(
        IOleControl *This,
        DISPID dispID);
    HRESULT (__attribute__((__stdcall__)) *FreezeEvents)(
        IOleControl *This,
        WINBOOL bFreeze);
   
} IOleControlVtbl;
struct IOleControl {
    IOleControlVtbl* lpVtbl;
};
#define __IOleControlSite_INTERFACE_DEFINED__ 
typedef IOleControlSite *LPOLECONTROLSITE;
typedef struct tagPOINTF {
    FLOAT x;
    FLOAT y;
} POINTF;
typedef struct tagPOINTF *LPPOINTF;
typedef enum tagXFORMCOORDS {
    XFORMCOORDS_POSITION = 0x1,
    XFORMCOORDS_SIZE = 0x2,
    XFORMCOORDS_HIMETRICTOCONTAINER = 0x4,
    XFORMCOORDS_CONTAINERTOHIMETRIC = 0x8,
    XFORMCOORDS_EVENTCOMPAT = 0x10
} XFORMCOORDS;
extern const GUID IID_IOleControlSite;
typedef struct IOleControlSiteVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleControlSite *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleControlSite *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleControlSite *This);
    HRESULT (__attribute__((__stdcall__)) *OnControlInfoChanged)(
        IOleControlSite *This);
    HRESULT (__attribute__((__stdcall__)) *LockInPlaceActive)(
        IOleControlSite *This,
        WINBOOL fLock);
    HRESULT (__attribute__((__stdcall__)) *GetExtendedControl)(
        IOleControlSite *This,
        IDispatch **ppDisp);
    HRESULT (__attribute__((__stdcall__)) *TransformCoords)(
        IOleControlSite *This,
        POINTL *pPtlHimetric,
        POINTF *pPtfContainer,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *TranslateAcceleratorA)(
        IOleControlSite *This,
        MSG *pMsg,
        DWORD grfModifiers);
    HRESULT (__attribute__((__stdcall__)) *OnFocus)(
        IOleControlSite *This,
        WINBOOL fGotFocus);
    HRESULT (__attribute__((__stdcall__)) *ShowPropertyFrame)(
        IOleControlSite *This);
   
} IOleControlSiteVtbl;
struct IOleControlSite {
    IOleControlSiteVtbl* lpVtbl;
};
#define __IPropertyPage_INTERFACE_DEFINED__ 
typedef IPropertyPage *LPPROPERTYPAGE;
typedef struct tagPROPPAGEINFO {
    ULONG cb;
    LPOLESTR pszTitle;
    SIZE size;
    LPOLESTR pszDocString;
    LPOLESTR pszHelpFile;
    DWORD dwHelpContext;
} PROPPAGEINFO;
typedef struct tagPROPPAGEINFO *LPPROPPAGEINFO;
extern const GUID IID_IPropertyPage;
typedef struct IPropertyPageVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPropertyPage *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPropertyPage *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPropertyPage *This);
    HRESULT (__attribute__((__stdcall__)) *SetPageSite)(
        IPropertyPage *This,
        IPropertyPageSite *pPageSite);
    HRESULT (__attribute__((__stdcall__)) *Activate)(
        IPropertyPage *This,
        HWND hWndParent,
        LPCRECT pRect,
        WINBOOL bModal);
    HRESULT (__attribute__((__stdcall__)) *Deactivate)(
        IPropertyPage *This);
    HRESULT (__attribute__((__stdcall__)) *GetPageInfo)(
        IPropertyPage *This,
        PROPPAGEINFO *pPageInfo);
    HRESULT (__attribute__((__stdcall__)) *SetObjects)(
        IPropertyPage *This,
        ULONG cObjects,
        IUnknown **ppUnk);
    HRESULT (__attribute__((__stdcall__)) *Show)(
        IPropertyPage *This,
        UINT nCmdShow);
    HRESULT (__attribute__((__stdcall__)) *Move)(
        IPropertyPage *This,
        LPCRECT pRect);
    HRESULT (__attribute__((__stdcall__)) *IsPageDirty)(
        IPropertyPage *This);
    HRESULT (__attribute__((__stdcall__)) *Apply)(
        IPropertyPage *This);
    HRESULT (__attribute__((__stdcall__)) *Help)(
        IPropertyPage *This,
        LPCOLESTR pszHelpDir);
    HRESULT (__attribute__((__stdcall__)) *TranslateAcceleratorA)(
        IPropertyPage *This,
        MSG *pMsg);
   
} IPropertyPageVtbl;
struct IPropertyPage {
    IPropertyPageVtbl* lpVtbl;
};
#define __IPropertyPage2_INTERFACE_DEFINED__ 
typedef IPropertyPage2 *LPPROPERTYPAGE2;
extern const GUID IID_IPropertyPage2;
typedef struct IPropertyPage2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPropertyPage2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPropertyPage2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPropertyPage2 *This);
    HRESULT (__attribute__((__stdcall__)) *SetPageSite)(
        IPropertyPage2 *This,
        IPropertyPageSite *pPageSite);
    HRESULT (__attribute__((__stdcall__)) *Activate)(
        IPropertyPage2 *This,
        HWND hWndParent,
        LPCRECT pRect,
        WINBOOL bModal);
    HRESULT (__attribute__((__stdcall__)) *Deactivate)(
        IPropertyPage2 *This);
    HRESULT (__attribute__((__stdcall__)) *GetPageInfo)(
        IPropertyPage2 *This,
        PROPPAGEINFO *pPageInfo);
    HRESULT (__attribute__((__stdcall__)) *SetObjects)(
        IPropertyPage2 *This,
        ULONG cObjects,
        IUnknown **ppUnk);
    HRESULT (__attribute__((__stdcall__)) *Show)(
        IPropertyPage2 *This,
        UINT nCmdShow);
    HRESULT (__attribute__((__stdcall__)) *Move)(
        IPropertyPage2 *This,
        LPCRECT pRect);
    HRESULT (__attribute__((__stdcall__)) *IsPageDirty)(
        IPropertyPage2 *This);
    HRESULT (__attribute__((__stdcall__)) *Apply)(
        IPropertyPage2 *This);
    HRESULT (__attribute__((__stdcall__)) *Help)(
        IPropertyPage2 *This,
        LPCOLESTR pszHelpDir);
    HRESULT (__attribute__((__stdcall__)) *TranslateAcceleratorA)(
        IPropertyPage2 *This,
        MSG *pMsg);
    HRESULT (__attribute__((__stdcall__)) *EditProperty)(
        IPropertyPage2 *This,
        DISPID dispID);
   
} IPropertyPage2Vtbl;
struct IPropertyPage2 {
    IPropertyPage2Vtbl* lpVtbl;
};
#define __IPropertyPageSite_INTERFACE_DEFINED__ 
typedef IPropertyPageSite *LPPROPERTYPAGESITE;
typedef enum tagPROPPAGESTATUS {
    PROPPAGESTATUS_DIRTY = 0x1,
    PROPPAGESTATUS_VALIDATE = 0x2,
    PROPPAGESTATUS_CLEAN = 0x4
} PROPPAGESTATUS;
extern const GUID IID_IPropertyPageSite;
typedef struct IPropertyPageSiteVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPropertyPageSite *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPropertyPageSite *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPropertyPageSite *This);
    HRESULT (__attribute__((__stdcall__)) *OnStatusChange)(
        IPropertyPageSite *This,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *GetLocaleID)(
        IPropertyPageSite *This,
        LCID *pLocaleID);
    HRESULT (__attribute__((__stdcall__)) *GetPageContainer)(
        IPropertyPageSite *This,
        IUnknown **ppUnk);
    HRESULT (__attribute__((__stdcall__)) *TranslateAcceleratorA)(
        IPropertyPageSite *This,
        MSG *pMsg);
   
} IPropertyPageSiteVtbl;
struct IPropertyPageSite {
    IPropertyPageSiteVtbl* lpVtbl;
};
#define __IPropertyNotifySink_INTERFACE_DEFINED__ 
typedef IPropertyNotifySink *LPPROPERTYNOTIFYSINK;
extern const GUID IID_IPropertyNotifySink;
typedef struct IPropertyNotifySinkVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPropertyNotifySink *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPropertyNotifySink *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPropertyNotifySink *This);
    HRESULT (__attribute__((__stdcall__)) *OnChanged)(
        IPropertyNotifySink *This,
        DISPID dispID);
    HRESULT (__attribute__((__stdcall__)) *OnRequestEdit)(
        IPropertyNotifySink *This,
        DISPID dispID);
   
} IPropertyNotifySinkVtbl;
struct IPropertyNotifySink {
    IPropertyNotifySinkVtbl* lpVtbl;
};
#define __ISpecifyPropertyPages_INTERFACE_DEFINED__ 
typedef ISpecifyPropertyPages *LPSPECIFYPROPERTYPAGES;
typedef struct tagCAUUID {
    ULONG cElems;
    GUID *pElems;
} CAUUID;
typedef struct tagCAUUID *LPCAUUID;
extern const GUID IID_ISpecifyPropertyPages;
typedef struct ISpecifyPropertyPagesVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ISpecifyPropertyPages *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ISpecifyPropertyPages *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ISpecifyPropertyPages *This);
    HRESULT (__attribute__((__stdcall__)) *GetPages)(
        ISpecifyPropertyPages *This,
        CAUUID *pPages);
   
} ISpecifyPropertyPagesVtbl;
struct ISpecifyPropertyPages {
    ISpecifyPropertyPagesVtbl* lpVtbl;
};
#define __IPersistMemory_INTERFACE_DEFINED__ 
typedef IPersistMemory *LPPERSISTMEMORY;
extern const GUID IID_IPersistMemory;
typedef struct IPersistMemoryVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPersistMemory *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPersistMemory *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPersistMemory *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassID)(
        IPersistMemory *This,
        CLSID *pClassID);
    HRESULT (__attribute__((__stdcall__)) *IsDirty)(
        IPersistMemory *This);
    HRESULT (__attribute__((__stdcall__)) *Load)(
        IPersistMemory *This,
        LPVOID pMem,
        ULONG cbSize);
    HRESULT (__attribute__((__stdcall__)) *Save)(
        IPersistMemory *This,
        LPVOID pMem,
        WINBOOL fClearDirty,
        ULONG cbSize);
    HRESULT (__attribute__((__stdcall__)) *GetSizeMax)(
        IPersistMemory *This,
        ULONG *pCbSize);
    HRESULT (__attribute__((__stdcall__)) *InitNew)(
        IPersistMemory *This);
   
} IPersistMemoryVtbl;
struct IPersistMemory {
    IPersistMemoryVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IPersistMemory_RemoteLoad_Proxy(
    IPersistMemory* This,
    BYTE *pMem,
    ULONG cbSize);
void __attribute__((__stdcall__)) IPersistMemory_RemoteLoad_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IPersistMemory_RemoteSave_Proxy(
    IPersistMemory* This,
    BYTE *pMem,
    WINBOOL fClearDirty,
    ULONG cbSize);
void __attribute__((__stdcall__)) IPersistMemory_RemoteSave_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IPersistMemory_Load_Proxy(
    IPersistMemory* This,
    LPVOID pMem,
    ULONG cbSize);
HRESULT __attribute__((__stdcall__)) IPersistMemory_Load_Stub(
    IPersistMemory* This,
    BYTE *pMem,
    ULONG cbSize);
HRESULT __attribute__((__stdcall__)) IPersistMemory_Save_Proxy(
    IPersistMemory* This,
    LPVOID pMem,
    WINBOOL fClearDirty,
    ULONG cbSize);
HRESULT __attribute__((__stdcall__)) IPersistMemory_Save_Stub(
    IPersistMemory* This,
    BYTE *pMem,
    WINBOOL fClearDirty,
    ULONG cbSize);
#define __IPersistStreamInit_INTERFACE_DEFINED__ 
typedef IPersistStreamInit *LPPERSISTSTREAMINIT;
extern const GUID IID_IPersistStreamInit;
typedef struct IPersistStreamInitVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPersistStreamInit *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPersistStreamInit *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPersistStreamInit *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassID)(
        IPersistStreamInit *This,
        CLSID *pClassID);
    HRESULT (__attribute__((__stdcall__)) *IsDirty)(
        IPersistStreamInit *This);
    HRESULT (__attribute__((__stdcall__)) *Load)(
        IPersistStreamInit *This,
        LPSTREAM pStm);
    HRESULT (__attribute__((__stdcall__)) *Save)(
        IPersistStreamInit *This,
        LPSTREAM pStm,
        WINBOOL fClearDirty);
    HRESULT (__attribute__((__stdcall__)) *GetSizeMax)(
        IPersistStreamInit *This,
        ULARGE_INTEGER *pCbSize);
    HRESULT (__attribute__((__stdcall__)) *InitNew)(
        IPersistStreamInit *This);
   
} IPersistStreamInitVtbl;
struct IPersistStreamInit {
    IPersistStreamInitVtbl* lpVtbl;
};
#define __IPersistPropertyBag_INTERFACE_DEFINED__ 
typedef IPersistPropertyBag *LPPERSISTPROPERTYBAG;
extern const GUID IID_IPersistPropertyBag;
typedef struct IPersistPropertyBagVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPersistPropertyBag *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPersistPropertyBag *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPersistPropertyBag *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassID)(
        IPersistPropertyBag *This,
        CLSID *pClassID);
    HRESULT (__attribute__((__stdcall__)) *InitNew)(
        IPersistPropertyBag *This);
    HRESULT (__attribute__((__stdcall__)) *Load)(
        IPersistPropertyBag *This,
        IPropertyBag *pPropBag,
        IErrorLog *pErrorLog);
    HRESULT (__attribute__((__stdcall__)) *Save)(
        IPersistPropertyBag *This,
        IPropertyBag *pPropBag,
        WINBOOL fClearDirty,
        WINBOOL fSaveAllProperties);
   
} IPersistPropertyBagVtbl;
struct IPersistPropertyBag {
    IPersistPropertyBagVtbl* lpVtbl;
};
#define __ISimpleFrameSite_INTERFACE_DEFINED__ 
typedef ISimpleFrameSite *LPSIMPLEFRAMESITE;
extern const GUID IID_ISimpleFrameSite;
typedef struct ISimpleFrameSiteVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        ISimpleFrameSite *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        ISimpleFrameSite *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        ISimpleFrameSite *This);
    HRESULT (__attribute__((__stdcall__)) *PreMessageFilter)(
        ISimpleFrameSite *This,
        HWND hWnd,
        UINT msg,
        WPARAM wp,
        LPARAM lp,
        LRESULT *plResult,
        DWORD *pdwCookie);
    HRESULT (__attribute__((__stdcall__)) *PostMessageFilter)(
        ISimpleFrameSite *This,
        HWND hWnd,
        UINT msg,
        WPARAM wp,
        LPARAM lp,
        LRESULT *plResult,
        DWORD dwCookie);
   
} ISimpleFrameSiteVtbl;
struct ISimpleFrameSite {
    ISimpleFrameSiteVtbl* lpVtbl;
};
#define __IFont_INTERFACE_DEFINED__ 
typedef IFont *LPFONT;
typedef TEXTMETRICW TEXTMETRICOLE;
typedef TEXTMETRICOLE *LPTEXTMETRICOLE;
extern const GUID IID_IFont;
typedef struct IFontVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IFont *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IFont *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IFont *This);
    HRESULT (__attribute__((__stdcall__)) *get_Name)(
        IFont *This,
        BSTR *pName);
    HRESULT (__attribute__((__stdcall__)) *put_Name)(
        IFont *This,
        BSTR name);
    HRESULT (__attribute__((__stdcall__)) *get_Size)(
        IFont *This,
        CY *pSize);
    HRESULT (__attribute__((__stdcall__)) *put_Size)(
        IFont *This,
        CY size);
    HRESULT (__attribute__((__stdcall__)) *get_Bold)(
        IFont *This,
        WINBOOL *pBold);
    HRESULT (__attribute__((__stdcall__)) *put_Bold)(
        IFont *This,
        WINBOOL bold);
    HRESULT (__attribute__((__stdcall__)) *get_Italic)(
        IFont *This,
        WINBOOL *pItalic);
    HRESULT (__attribute__((__stdcall__)) *put_Italic)(
        IFont *This,
        WINBOOL italic);
    HRESULT (__attribute__((__stdcall__)) *get_Underline)(
        IFont *This,
        WINBOOL *pUnderline);
    HRESULT (__attribute__((__stdcall__)) *put_Underline)(
        IFont *This,
        WINBOOL underline);
    HRESULT (__attribute__((__stdcall__)) *get_Strikethrough)(
        IFont *This,
        WINBOOL *pStrikethrough);
    HRESULT (__attribute__((__stdcall__)) *put_Strikethrough)(
        IFont *This,
        WINBOOL strikethrough);
    HRESULT (__attribute__((__stdcall__)) *get_Weight)(
        IFont *This,
        SHORT *pWeight);
    HRESULT (__attribute__((__stdcall__)) *put_Weight)(
        IFont *This,
        SHORT weight);
    HRESULT (__attribute__((__stdcall__)) *get_Charset)(
        IFont *This,
        SHORT *pCharset);
    HRESULT (__attribute__((__stdcall__)) *put_Charset)(
        IFont *This,
        SHORT charset);
    HRESULT (__attribute__((__stdcall__)) *get_hFont)(
        IFont *This,
        HFONT *phFont);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IFont *This,
        IFont **ppFont);
    HRESULT (__attribute__((__stdcall__)) *IsEqual)(
        IFont *This,
        IFont *pFontOther);
    HRESULT (__attribute__((__stdcall__)) *SetRatio)(
        IFont *This,
        LONG cyLogical,
        LONG cyHimetric);
    HRESULT (__attribute__((__stdcall__)) *QueryTextMetrics)(
        IFont *This,
        TEXTMETRICOLE *pTM);
    HRESULT (__attribute__((__stdcall__)) *AddRefHfont)(
        IFont *This,
        HFONT hFont);
    HRESULT (__attribute__((__stdcall__)) *ReleaseHfont)(
        IFont *This,
        HFONT hFont);
    HRESULT (__attribute__((__stdcall__)) *SetHdc)(
        IFont *This,
        HDC hDC);
   
} IFontVtbl;
struct IFont {
    IFontVtbl* lpVtbl;
};
#define __IPicture_INTERFACE_DEFINED__ 
typedef IPicture *LPPICTURE;
typedef enum tagPictureAttributes {
    PICTURE_SCALABLE = 0x1,
    PICTURE_TRANSPARENT = 0x2
} PICTUREATTRIBUTES;
typedef UINT OLE_HANDLE;
typedef LONG OLE_XPOS_HIMETRIC;
typedef LONG OLE_YPOS_HIMETRIC;
typedef LONG OLE_XSIZE_HIMETRIC;
typedef LONG OLE_YSIZE_HIMETRIC;
extern const GUID IID_IPicture;
typedef struct IPictureVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPicture *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPicture *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPicture *This);
    HRESULT (__attribute__((__stdcall__)) *get_Handle)(
        IPicture *This,
        OLE_HANDLE *pHandle);
    HRESULT (__attribute__((__stdcall__)) *get_hPal)(
        IPicture *This,
        OLE_HANDLE *phPal);
    HRESULT (__attribute__((__stdcall__)) *get_Type)(
        IPicture *This,
        SHORT *pType);
    HRESULT (__attribute__((__stdcall__)) *get_Width)(
        IPicture *This,
        OLE_XSIZE_HIMETRIC *pWidth);
    HRESULT (__attribute__((__stdcall__)) *get_Height)(
        IPicture *This,
        OLE_YSIZE_HIMETRIC *pHeight);
    HRESULT (__attribute__((__stdcall__)) *Render)(
        IPicture *This,
        HDC hDC,
        LONG x,
        LONG y,
        LONG cx,
        LONG cy,
        OLE_XPOS_HIMETRIC xSrc,
        OLE_YPOS_HIMETRIC ySrc,
        OLE_XSIZE_HIMETRIC cxSrc,
        OLE_YSIZE_HIMETRIC cySrc,
        LPCRECT pRcWBounds);
    HRESULT (__attribute__((__stdcall__)) *set_hPal)(
        IPicture *This,
        OLE_HANDLE hPal);
    HRESULT (__attribute__((__stdcall__)) *get_CurDC)(
        IPicture *This,
        HDC *phDC);
    HRESULT (__attribute__((__stdcall__)) *SelectPicture)(
        IPicture *This,
        HDC hDCIn,
        HDC *phDCOut,
        OLE_HANDLE *phBmpOut);
    HRESULT (__attribute__((__stdcall__)) *get_KeepOriginalFormat)(
        IPicture *This,
        WINBOOL *pKeep);
    HRESULT (__attribute__((__stdcall__)) *put_KeepOriginalFormat)(
        IPicture *This,
        WINBOOL keep);
    HRESULT (__attribute__((__stdcall__)) *PictureChanged)(
        IPicture *This);
    HRESULT (__attribute__((__stdcall__)) *SaveAsFile)(
        IPicture *This,
        LPSTREAM pStream,
        WINBOOL fSaveMemCopy,
        LONG *pCbSize);
    HRESULT (__attribute__((__stdcall__)) *get_Attributes)(
        IPicture *This,
        DWORD *pDwAttr);
   
} IPictureVtbl;
struct IPicture {
    IPictureVtbl* lpVtbl;
};
#define __IPicture2_INTERFACE_DEFINED__ 
typedef IPicture2 *LPPICTURE2;
typedef UINT_PTR HHANDLE;
extern const GUID IID_IPicture2;
typedef struct IPicture2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPicture2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPicture2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPicture2 *This);
    HRESULT (__attribute__((__stdcall__)) *get_Handle)(
        IPicture2 *This,
        HHANDLE *pHandle);
    HRESULT (__attribute__((__stdcall__)) *get_hPal)(
        IPicture2 *This,
        HHANDLE *phPal);
    HRESULT (__attribute__((__stdcall__)) *get_Type)(
        IPicture2 *This,
        SHORT *pType);
    HRESULT (__attribute__((__stdcall__)) *get_Width)(
        IPicture2 *This,
        OLE_XSIZE_HIMETRIC *pWidth);
    HRESULT (__attribute__((__stdcall__)) *get_Height)(
        IPicture2 *This,
        OLE_YSIZE_HIMETRIC *pHeight);
    HRESULT (__attribute__((__stdcall__)) *Render)(
        IPicture2 *This,
        HDC hDC,
        LONG x,
        LONG y,
        LONG cx,
        LONG cy,
        OLE_XPOS_HIMETRIC xSrc,
        OLE_YPOS_HIMETRIC ySrc,
        OLE_XSIZE_HIMETRIC cxSrc,
        OLE_YSIZE_HIMETRIC cySrc,
        LPCRECT pRcWBounds);
    HRESULT (__attribute__((__stdcall__)) *set_hPal)(
        IPicture2 *This,
        HHANDLE hPal);
    HRESULT (__attribute__((__stdcall__)) *get_CurDC)(
        IPicture2 *This,
        HDC *phDC);
    HRESULT (__attribute__((__stdcall__)) *SelectPicture)(
        IPicture2 *This,
        HDC hDCIn,
        HDC *phDCOut,
        HHANDLE *phBmpOut);
    HRESULT (__attribute__((__stdcall__)) *get_KeepOriginalFormat)(
        IPicture2 *This,
        WINBOOL *pKeep);
    HRESULT (__attribute__((__stdcall__)) *put_KeepOriginalFormat)(
        IPicture2 *This,
        WINBOOL keep);
    HRESULT (__attribute__((__stdcall__)) *PictureChanged)(
        IPicture2 *This);
    HRESULT (__attribute__((__stdcall__)) *SaveAsFile)(
        IPicture2 *This,
        LPSTREAM pStream,
        WINBOOL fSaveMemCopy,
        LONG *pCbSize);
    HRESULT (__attribute__((__stdcall__)) *get_Attributes)(
        IPicture2 *This,
        DWORD *pDwAttr);
   
} IPicture2Vtbl;
struct IPicture2 {
    IPicture2Vtbl* lpVtbl;
};
#define __IFontEventsDisp_INTERFACE_DEFINED__ 
typedef IFontEventsDisp *LPFONTEVENTS;
extern const GUID IID_IFontEventsDisp;
typedef struct IFontEventsDispVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IFontEventsDisp *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IFontEventsDisp *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IFontEventsDisp *This);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(
        IFontEventsDisp *This,
        UINT *pctinfo);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(
        IFontEventsDisp *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);
    HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(
        IFontEventsDisp *This,
        const IID *const riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);
    HRESULT (__attribute__((__stdcall__)) *Invoke)(
        IFontEventsDisp *This,
        DISPID dispIdMember,
        const IID *const riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);
   
} IFontEventsDispVtbl;
struct IFontEventsDisp {
    IFontEventsDispVtbl* lpVtbl;
};
#define __IFontDisp_INTERFACE_DEFINED__ 
typedef IFontDisp *LPFONTDISP;
extern const GUID IID_IFontDisp;
typedef struct IFontDispVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IFontDisp *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IFontDisp *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IFontDisp *This);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(
        IFontDisp *This,
        UINT *pctinfo);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(
        IFontDisp *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);
    HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(
        IFontDisp *This,
        const IID *const riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);
    HRESULT (__attribute__((__stdcall__)) *Invoke)(
        IFontDisp *This,
        DISPID dispIdMember,
        const IID *const riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);
   
} IFontDispVtbl;
struct IFontDisp {
    IFontDispVtbl* lpVtbl;
};
#define __IPictureDisp_INTERFACE_DEFINED__ 
typedef IPictureDisp *LPPICTUREDISP;
extern const GUID IID_IPictureDisp;
typedef struct IPictureDispVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPictureDisp *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPictureDisp *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPictureDisp *This);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfoCount)(
        IPictureDisp *This,
        UINT *pctinfo);
    HRESULT (__attribute__((__stdcall__)) *GetTypeInfo)(
        IPictureDisp *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);
    HRESULT (__attribute__((__stdcall__)) *GetIDsOfNames)(
        IPictureDisp *This,
        const IID *const riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);
    HRESULT (__attribute__((__stdcall__)) *Invoke)(
        IPictureDisp *This,
        DISPID dispIdMember,
        const IID *const riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);
   
} IPictureDispVtbl;
struct IPictureDisp {
    IPictureDispVtbl* lpVtbl;
};
#define __IOleInPlaceObjectWindowless_INTERFACE_DEFINED__ 
typedef IOleInPlaceObjectWindowless *LPOLEINPLACEOBJECTWINDOWLESS;
extern const GUID IID_IOleInPlaceObjectWindowless;
typedef struct IOleInPlaceObjectWindowlessVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleInPlaceObjectWindowless *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleInPlaceObjectWindowless *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleInPlaceObjectWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindow)(
        IOleInPlaceObjectWindowless *This,
        HWND *phwnd);
    HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)(
        IOleInPlaceObjectWindowless *This,
        WINBOOL fEnterMode);
    HRESULT (__attribute__((__stdcall__)) *InPlaceDeactivate)(
        IOleInPlaceObjectWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *UIDeactivate)(
        IOleInPlaceObjectWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *SetObjectRects)(
        IOleInPlaceObjectWindowless *This,
        LPCRECT lprcPosRect,
        LPCRECT lprcClipRect);
    HRESULT (__attribute__((__stdcall__)) *ReactivateAndUndo)(
        IOleInPlaceObjectWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *OnWindowMessage)(
        IOleInPlaceObjectWindowless *This,
        UINT msg,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *plResult);
    HRESULT (__attribute__((__stdcall__)) *GetDropTarget)(
        IOleInPlaceObjectWindowless *This,
        IDropTarget **ppDropTarget);
   
} IOleInPlaceObjectWindowlessVtbl;
struct IOleInPlaceObjectWindowless {
    IOleInPlaceObjectWindowlessVtbl* lpVtbl;
};
#define __IOleInPlaceSiteEx_INTERFACE_DEFINED__ 
typedef IOleInPlaceSiteEx *LPOLEINPLACESITEEX;
typedef enum tagACTIVATEFLAGS {
    ACTIVATE_WINDOWLESS = 1
} ACTIVATEFLAGS;
extern const GUID IID_IOleInPlaceSiteEx;
typedef struct IOleInPlaceSiteExVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleInPlaceSiteEx *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleInPlaceSiteEx *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleInPlaceSiteEx *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindow)(
        IOleInPlaceSiteEx *This,
        HWND *phwnd);
    HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)(
        IOleInPlaceSiteEx *This,
        WINBOOL fEnterMode);
    HRESULT (__attribute__((__stdcall__)) *CanInPlaceActivate)(
        IOleInPlaceSiteEx *This);
    HRESULT (__attribute__((__stdcall__)) *OnInPlaceActivate)(
        IOleInPlaceSiteEx *This);
    HRESULT (__attribute__((__stdcall__)) *OnUIActivate)(
        IOleInPlaceSiteEx *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindowContext)(
        IOleInPlaceSiteEx *This,
        IOleInPlaceFrame **ppFrame,
        IOleInPlaceUIWindow **ppDoc,
        LPRECT lprcPosRect,
        LPRECT lprcClipRect,
        LPOLEINPLACEFRAMEINFO lpFrameInfo);
    HRESULT (__attribute__((__stdcall__)) *Scroll)(
        IOleInPlaceSiteEx *This,
        SIZE scrollExtant);
    HRESULT (__attribute__((__stdcall__)) *OnUIDeactivate)(
        IOleInPlaceSiteEx *This,
        WINBOOL fUndoable);
    HRESULT (__attribute__((__stdcall__)) *OnInPlaceDeactivate)(
        IOleInPlaceSiteEx *This);
    HRESULT (__attribute__((__stdcall__)) *DiscardUndoState)(
        IOleInPlaceSiteEx *This);
    HRESULT (__attribute__((__stdcall__)) *DeactivateAndUndo)(
        IOleInPlaceSiteEx *This);
    HRESULT (__attribute__((__stdcall__)) *OnPosRectChange)(
        IOleInPlaceSiteEx *This,
        LPCRECT lprcPosRect);
    HRESULT (__attribute__((__stdcall__)) *OnInPlaceActivateEx)(
        IOleInPlaceSiteEx *This,
        WINBOOL *pfNoRedraw,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *OnInPlaceDeactivateEx)(
        IOleInPlaceSiteEx *This,
        WINBOOL fNoRedraw);
    HRESULT (__attribute__((__stdcall__)) *RequestUIActivate)(
        IOleInPlaceSiteEx *This);
   
} IOleInPlaceSiteExVtbl;
struct IOleInPlaceSiteEx {
    IOleInPlaceSiteExVtbl* lpVtbl;
};
#define __IOleInPlaceSiteWindowless_INTERFACE_DEFINED__ 
typedef IOleInPlaceSiteWindowless *LPOLEINPLACESITEWINDOWLESS;
typedef enum tagOLEDCFLAGS {
    OLEDC_NODRAW = 0x1,
    OLEDC_PAINTBKGND = 0x2,
    OLEDC_OFFSCREEN = 0x4
} OLEDCFLAGS;
extern const GUID IID_IOleInPlaceSiteWindowless;
typedef struct IOleInPlaceSiteWindowlessVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleInPlaceSiteWindowless *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleInPlaceSiteWindowless *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleInPlaceSiteWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindow)(
        IOleInPlaceSiteWindowless *This,
        HWND *phwnd);
    HRESULT (__attribute__((__stdcall__)) *ContextSensitiveHelp)(
        IOleInPlaceSiteWindowless *This,
        WINBOOL fEnterMode);
    HRESULT (__attribute__((__stdcall__)) *CanInPlaceActivate)(
        IOleInPlaceSiteWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *OnInPlaceActivate)(
        IOleInPlaceSiteWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *OnUIActivate)(
        IOleInPlaceSiteWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *GetWindowContext)(
        IOleInPlaceSiteWindowless *This,
        IOleInPlaceFrame **ppFrame,
        IOleInPlaceUIWindow **ppDoc,
        LPRECT lprcPosRect,
        LPRECT lprcClipRect,
        LPOLEINPLACEFRAMEINFO lpFrameInfo);
    HRESULT (__attribute__((__stdcall__)) *Scroll)(
        IOleInPlaceSiteWindowless *This,
        SIZE scrollExtant);
    HRESULT (__attribute__((__stdcall__)) *OnUIDeactivate)(
        IOleInPlaceSiteWindowless *This,
        WINBOOL fUndoable);
    HRESULT (__attribute__((__stdcall__)) *OnInPlaceDeactivate)(
        IOleInPlaceSiteWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *DiscardUndoState)(
        IOleInPlaceSiteWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *DeactivateAndUndo)(
        IOleInPlaceSiteWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *OnPosRectChange)(
        IOleInPlaceSiteWindowless *This,
        LPCRECT lprcPosRect);
    HRESULT (__attribute__((__stdcall__)) *OnInPlaceActivateEx)(
        IOleInPlaceSiteWindowless *This,
        WINBOOL *pfNoRedraw,
        DWORD dwFlags);
    HRESULT (__attribute__((__stdcall__)) *OnInPlaceDeactivateEx)(
        IOleInPlaceSiteWindowless *This,
        WINBOOL fNoRedraw);
    HRESULT (__attribute__((__stdcall__)) *RequestUIActivate)(
        IOleInPlaceSiteWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *CanWindowlessActivate)(
        IOleInPlaceSiteWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *GetCapture)(
        IOleInPlaceSiteWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *SetCapture)(
        IOleInPlaceSiteWindowless *This,
        WINBOOL fCapture);
    HRESULT (__attribute__((__stdcall__)) *GetFocus)(
        IOleInPlaceSiteWindowless *This);
    HRESULT (__attribute__((__stdcall__)) *SetFocus)(
        IOleInPlaceSiteWindowless *This,
        WINBOOL fFocus);
    HRESULT (__attribute__((__stdcall__)) *GetDC)(
        IOleInPlaceSiteWindowless *This,
        LPCRECT pRect,
        DWORD grfFlags,
        HDC *phDC);
    HRESULT (__attribute__((__stdcall__)) *ReleaseDC)(
        IOleInPlaceSiteWindowless *This,
        HDC hDC);
    HRESULT (__attribute__((__stdcall__)) *InvalidateRect)(
        IOleInPlaceSiteWindowless *This,
        LPCRECT pRect,
        WINBOOL fErase);
    HRESULT (__attribute__((__stdcall__)) *InvalidateRgn)(
        IOleInPlaceSiteWindowless *This,
        HRGN hRGN,
        WINBOOL fErase);
    HRESULT (__attribute__((__stdcall__)) *ScrollRect)(
        IOleInPlaceSiteWindowless *This,
        INT dx,
        INT dy,
        LPCRECT pRectScroll,
        LPCRECT pRectClip);
    HRESULT (__attribute__((__stdcall__)) *AdjustRect)(
        IOleInPlaceSiteWindowless *This,
        LPRECT prc);
    HRESULT (__attribute__((__stdcall__)) *OnDefWindowMessage)(
        IOleInPlaceSiteWindowless *This,
        UINT msg,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *plResult);
   
} IOleInPlaceSiteWindowlessVtbl;
struct IOleInPlaceSiteWindowless {
    IOleInPlaceSiteWindowlessVtbl* lpVtbl;
};
#define __IViewObjectEx_INTERFACE_DEFINED__ 
typedef IViewObjectEx *LPVIEWOBJECTEX;
typedef enum tagVIEWSTATUS {
    VIEWSTATUS_OPAQUE = 1,
    VIEWSTATUS_SOLIDBKGND = 2,
    VIEWSTATUS_DVASPECTOPAQUE = 4,
    VIEWSTATUS_DVASPECTTRANSPARENT = 8,
    VIEWSTATUS_SURFACE = 16,
    VIEWSTATUS_3DSURFACE = 32
} VIEWSTATUS;
typedef enum tagHITRESULT {
    HITRESULT_OUTSIDE = 0,
    HITRESULT_TRANSPARENT = 1,
    HITRESULT_CLOSE = 2,
    HITRESULT_HIT = 3
} HITRESULT;
typedef enum tagDVASPECT2 {
    DVASPECT_OPAQUE = 16,
    DVASPECT_TRANSPARENT = 32
} DVASPECT2;
typedef struct tagExtentInfo {
    ULONG cb;
    DWORD dwExtentMode;
    SIZEL sizelProposed;
} DVEXTENTINFO;
typedef enum tagExtentMode {
    DVEXTENT_CONTENT = 0,
    DVEXTENT_INTEGRAL = 1
} DVEXTENTMODE;
typedef enum tagAspectInfoFlag {
    DVASPECTINFOFLAG_CANOPTIMIZE = 1
} DVASPECTINFOFLAG;
typedef struct tagAspectInfo {
    ULONG cb;
    DWORD dwFlags;
} DVASPECTINFO;
extern const GUID IID_IViewObjectEx;
typedef struct IViewObjectExVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IViewObjectEx *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IViewObjectEx *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IViewObjectEx *This);
    HRESULT (__attribute__((__stdcall__)) *Draw)(
        IViewObjectEx *This,
        DWORD dwDrawAspect,
        LONG lindex,
        void *pvAspect,
        DVTARGETDEVICE *ptd,
        HDC hdcTargetDev,
        HDC hdcDraw,
        LPCRECTL lprcBounds,
        LPCRECTL lprcWBounds,
        WINBOOL (__attribute__((__stdcall__)) *pfnContinue)(ULONG_PTR dwContinue),
        ULONG_PTR dwContinue);
    HRESULT (__attribute__((__stdcall__)) *GetColorSet)(
        IViewObjectEx *This,
        DWORD dwDrawAspect,
        LONG lindex,
        void *pvAspect,
        DVTARGETDEVICE *ptd,
        HDC hicTargetDev,
        LOGPALETTE **ppColorSet);
    HRESULT (__attribute__((__stdcall__)) *Freeze)(
        IViewObjectEx *This,
        DWORD dwDrawAspect,
        LONG lindex,
        void *pvAspect,
        DWORD *pdwFreeze);
    HRESULT (__attribute__((__stdcall__)) *Unfreeze)(
        IViewObjectEx *This,
        DWORD dwFreeze);
    HRESULT (__attribute__((__stdcall__)) *SetAdvise)(
        IViewObjectEx *This,
        DWORD aspects,
        DWORD advf,
        IAdviseSink *pAdvSink);
    HRESULT (__attribute__((__stdcall__)) *GetAdvise)(
        IViewObjectEx *This,
        DWORD *pAspects,
        DWORD *pAdvf,
        IAdviseSink **ppAdvSink);
    HRESULT (__attribute__((__stdcall__)) *GetExtent)(
        IViewObjectEx *This,
        DWORD dwDrawAspect,
        LONG lindex,
        DVTARGETDEVICE *ptd,
        LPSIZEL lpsizel);
    HRESULT (__attribute__((__stdcall__)) *GetRect)(
        IViewObjectEx *This,
        DWORD dwAspect,
        LPRECTL pRect);
    HRESULT (__attribute__((__stdcall__)) *GetViewStatus)(
        IViewObjectEx *This,
        DWORD *pdwStatus);
    HRESULT (__attribute__((__stdcall__)) *QueryHitPoint)(
        IViewObjectEx *This,
        DWORD dwAspect,
        LPCRECT pRectBounds,
        POINT ptlLoc,
        LONG lCloseHint,
        DWORD *pHitResult);
    HRESULT (__attribute__((__stdcall__)) *QueryHitRect)(
        IViewObjectEx *This,
        DWORD dwAspect,
        LPCRECT pRectBounds,
        LPCRECT pRectLoc,
        LONG lCloseHint,
        DWORD *pHitResult);
    HRESULT (__attribute__((__stdcall__)) *GetNaturalExtent)(
        IViewObjectEx *This,
        DWORD dwAspect,
        LONG lindex,
        DVTARGETDEVICE *ptd,
        HDC hicTargetDev,
        DVEXTENTINFO *pExtentInfo,
        LPSIZEL pSizel);
   
} IViewObjectExVtbl;
struct IViewObjectEx {
    IViewObjectExVtbl* lpVtbl;
};
#define __IOleUndoUnit_INTERFACE_DEFINED__ 
typedef IOleUndoUnit *LPOLEUNDOUNIT;
extern const GUID IID_IOleUndoUnit;
typedef struct IOleUndoUnitVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleUndoUnit *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleUndoUnit *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleUndoUnit *This);
    HRESULT (__attribute__((__stdcall__)) *Do)(
        IOleUndoUnit *This,
        IOleUndoManager *pUndoManager);
    HRESULT (__attribute__((__stdcall__)) *GetDescription)(
        IOleUndoUnit *This,
        BSTR *pBstr);
    HRESULT (__attribute__((__stdcall__)) *GetUnitType)(
        IOleUndoUnit *This,
        CLSID *pClsid,
        LONG *plID);
    HRESULT (__attribute__((__stdcall__)) *OnNextAdd)(
        IOleUndoUnit *This);
   
} IOleUndoUnitVtbl;
struct IOleUndoUnit {
    IOleUndoUnitVtbl* lpVtbl;
};
#define __IOleParentUndoUnit_INTERFACE_DEFINED__ 
typedef IOleParentUndoUnit *LPOLEPARENTUNDOUNIT;
extern const GUID IID_IOleParentUndoUnit;
typedef struct IOleParentUndoUnitVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleParentUndoUnit *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleParentUndoUnit *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleParentUndoUnit *This);
    HRESULT (__attribute__((__stdcall__)) *Do)(
        IOleParentUndoUnit *This,
        IOleUndoManager *pUndoManager);
    HRESULT (__attribute__((__stdcall__)) *GetDescription)(
        IOleParentUndoUnit *This,
        BSTR *pBstr);
    HRESULT (__attribute__((__stdcall__)) *GetUnitType)(
        IOleParentUndoUnit *This,
        CLSID *pClsid,
        LONG *plID);
    HRESULT (__attribute__((__stdcall__)) *OnNextAdd)(
        IOleParentUndoUnit *This);
    HRESULT (__attribute__((__stdcall__)) *Open)(
        IOleParentUndoUnit *This,
        IOleParentUndoUnit *pPUU);
    HRESULT (__attribute__((__stdcall__)) *Close)(
        IOleParentUndoUnit *This,
        IOleParentUndoUnit *pPUU,
        WINBOOL fCommit);
    HRESULT (__attribute__((__stdcall__)) *Add)(
        IOleParentUndoUnit *This,
        IOleUndoUnit *pUU);
    HRESULT (__attribute__((__stdcall__)) *FindUnit)(
        IOleParentUndoUnit *This,
        IOleUndoUnit *pUU);
    HRESULT (__attribute__((__stdcall__)) *GetParentState)(
        IOleParentUndoUnit *This,
        DWORD *pdwState);
   
} IOleParentUndoUnitVtbl;
struct IOleParentUndoUnit {
    IOleParentUndoUnitVtbl* lpVtbl;
};
#define __IEnumOleUndoUnits_INTERFACE_DEFINED__ 
typedef IEnumOleUndoUnits *LPENUMOLEUNDOUNITS;
extern const GUID IID_IEnumOleUndoUnits;
typedef struct IEnumOleUndoUnitsVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IEnumOleUndoUnits *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IEnumOleUndoUnits *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IEnumOleUndoUnits *This);
    HRESULT (__attribute__((__stdcall__)) *Next)(
        IEnumOleUndoUnits *This,
        ULONG cElt,
        IOleUndoUnit **rgElt,
        ULONG *pcEltFetched);
    HRESULT (__attribute__((__stdcall__)) *Skip)(
        IEnumOleUndoUnits *This,
        ULONG cElt);
    HRESULT (__attribute__((__stdcall__)) *Reset)(
        IEnumOleUndoUnits *This);
    HRESULT (__attribute__((__stdcall__)) *Clone)(
        IEnumOleUndoUnits *This,
        IEnumOleUndoUnits **ppEnum);
   
} IEnumOleUndoUnitsVtbl;
struct IEnumOleUndoUnits {
    IEnumOleUndoUnitsVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IEnumOleUndoUnits_RemoteNext_Proxy(
    IEnumOleUndoUnits* This,
    ULONG cElt,
    IOleUndoUnit **rgElt,
    ULONG *pcEltFetched);
void __attribute__((__stdcall__)) IEnumOleUndoUnits_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IEnumOleUndoUnits_Next_Proxy(
    IEnumOleUndoUnits* This,
    ULONG cElt,
    IOleUndoUnit **rgElt,
    ULONG *pcEltFetched);
HRESULT __attribute__((__stdcall__)) IEnumOleUndoUnits_Next_Stub(
    IEnumOleUndoUnits* This,
    ULONG cElt,
    IOleUndoUnit **rgElt,
    ULONG *pcEltFetched);
#define __IOleUndoManager_INTERFACE_DEFINED__ 
#define SID_SOleUndoManager IID_IOleUndoManager
typedef IOleUndoManager *LPOLEUNDOMANAGER;
extern const GUID IID_IOleUndoManager;
typedef struct IOleUndoManagerVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IOleUndoManager *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IOleUndoManager *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IOleUndoManager *This);
    HRESULT (__attribute__((__stdcall__)) *Open)(
        IOleUndoManager *This,
        IOleParentUndoUnit *pPUU);
    HRESULT (__attribute__((__stdcall__)) *Close)(
        IOleUndoManager *This,
        IOleParentUndoUnit *pPUU,
        WINBOOL fCommit);
    HRESULT (__attribute__((__stdcall__)) *Add)(
        IOleUndoManager *This,
        IOleUndoUnit *pUU);
    HRESULT (__attribute__((__stdcall__)) *GetOpenParentState)(
        IOleUndoManager *This,
        DWORD *pdwState);
    HRESULT (__attribute__((__stdcall__)) *DiscardFrom)(
        IOleUndoManager *This,
        IOleUndoUnit *pUU);
    HRESULT (__attribute__((__stdcall__)) *UndoTo)(
        IOleUndoManager *This,
        IOleUndoUnit *pUU);
    HRESULT (__attribute__((__stdcall__)) *RedoTo)(
        IOleUndoManager *This,
        IOleUndoUnit *pUU);
    HRESULT (__attribute__((__stdcall__)) *EnumUndoable)(
        IOleUndoManager *This,
        IEnumOleUndoUnits **ppEnum);
    HRESULT (__attribute__((__stdcall__)) *EnumRedoable)(
        IOleUndoManager *This,
        IEnumOleUndoUnits **ppEnum);
    HRESULT (__attribute__((__stdcall__)) *GetLastUndoDescription)(
        IOleUndoManager *This,
        BSTR *pBstr);
    HRESULT (__attribute__((__stdcall__)) *GetLastRedoDescription)(
        IOleUndoManager *This,
        BSTR *pBstr);
    HRESULT (__attribute__((__stdcall__)) *Enable)(
        IOleUndoManager *This,
        WINBOOL fEnable);
   
} IOleUndoManagerVtbl;
struct IOleUndoManager {
    IOleUndoManagerVtbl* lpVtbl;
};
#define __IPointerInactive_INTERFACE_DEFINED__ 
typedef IPointerInactive *LPPOINTERINACTIVE;
typedef enum tagPOINTERINACTIVE {
    POINTERINACTIVE_ACTIVATEONENTRY = 1,
    POINTERINACTIVE_DEACTIVATEONLEAVE = 2,
    POINTERINACTIVE_ACTIVATEONDRAG = 4
} POINTERINACTIVE;
extern const GUID IID_IPointerInactive;
typedef struct IPointerInactiveVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPointerInactive *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPointerInactive *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPointerInactive *This);
    HRESULT (__attribute__((__stdcall__)) *GetActivationPolicy)(
        IPointerInactive *This,
        DWORD *pdwPolicy);
    HRESULT (__attribute__((__stdcall__)) *OnInactiveMouseMove)(
        IPointerInactive *This,
        LPCRECT pRectBounds,
        LONG x,
        LONG y,
        DWORD grfKeyState);
    HRESULT (__attribute__((__stdcall__)) *OnInactiveSetCursor)(
        IPointerInactive *This,
        LPCRECT pRectBounds,
        LONG x,
        LONG y,
        DWORD dwMouseMsg,
        WINBOOL fSetAlways);
   
} IPointerInactiveVtbl;
struct IPointerInactive {
    IPointerInactiveVtbl* lpVtbl;
};
#define __IObjectWithSite_INTERFACE_DEFINED__ 
typedef IObjectWithSite *LPOBJECTWITHSITE;
extern const GUID IID_IObjectWithSite;
typedef struct IObjectWithSiteVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IObjectWithSite *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IObjectWithSite *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IObjectWithSite *This);
    HRESULT (__attribute__((__stdcall__)) *SetSite)(
        IObjectWithSite *This,
        IUnknown *pUnkSite);
    HRESULT (__attribute__((__stdcall__)) *GetSite)(
        IObjectWithSite *This,
        const IID *const riid,
        void **ppvSite);
   
} IObjectWithSiteVtbl;
struct IObjectWithSite {
    IObjectWithSiteVtbl* lpVtbl;
};
#define __IPerPropertyBrowsing_INTERFACE_DEFINED__ 
typedef IPerPropertyBrowsing *LPPERPROPERTYBROWSING;
typedef struct tagCALPOLESTR {
    ULONG cElems;
    LPOLESTR *pElems;
} CALPOLESTR;
typedef struct tagCALPOLESTR *LPCALPOLESTR;
typedef struct tagCADWORD {
    ULONG cElems;
    DWORD *pElems;
} CADWORD;
typedef struct tagCADWORD *LPCADWORD;
extern const GUID IID_IPerPropertyBrowsing;
typedef struct IPerPropertyBrowsingVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPerPropertyBrowsing *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPerPropertyBrowsing *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPerPropertyBrowsing *This);
    HRESULT (__attribute__((__stdcall__)) *GetDisplayString)(
        IPerPropertyBrowsing *This,
        DISPID dispID,
        BSTR *pBstr);
    HRESULT (__attribute__((__stdcall__)) *MapPropertyToPage)(
        IPerPropertyBrowsing *This,
        DISPID dispID,
        CLSID *pClsid);
    HRESULT (__attribute__((__stdcall__)) *GetPredefinedStrings)(
        IPerPropertyBrowsing *This,
        DISPID dispID,
        CALPOLESTR *pCaStringsOut,
        CADWORD *pCaCookiesOut);
    HRESULT (__attribute__((__stdcall__)) *GetPredefinedValue)(
        IPerPropertyBrowsing *This,
        DISPID dispID,
        DWORD dwCookie,
        VARIANT *pVarOut);
   
} IPerPropertyBrowsingVtbl;
struct IPerPropertyBrowsing {
    IPerPropertyBrowsingVtbl* lpVtbl;
};
#define __IPropertyBag2_INTERFACE_DEFINED__ 
typedef IPropertyBag2 *LPPROPERTYBAG2;
typedef enum tagPROPBAG2_TYPE {
    PROPBAG2_TYPE_UNDEFINED = 0,
    PROPBAG2_TYPE_DATA = 1,
    PROPBAG2_TYPE_URL = 2,
    PROPBAG2_TYPE_OBJECT = 3,
    PROPBAG2_TYPE_STREAM = 4,
    PROPBAG2_TYPE_STORAGE = 5,
    PROPBAG2_TYPE_MONIKER = 6
} PROPBAG2_TYPE;
typedef struct tagPROPBAG2 {
    DWORD dwType;
    VARTYPE vt;
    CLIPFORMAT cfType;
    DWORD dwHint;
    LPOLESTR pstrName;
    CLSID clsid;
} PROPBAG2;
extern const GUID IID_IPropertyBag2;
typedef struct IPropertyBag2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPropertyBag2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPropertyBag2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPropertyBag2 *This);
    HRESULT (__attribute__((__stdcall__)) *Read)(
        IPropertyBag2 *This,
        ULONG cProperties,
        PROPBAG2 *pPropBag,
        IErrorLog *pErrLog,
        VARIANT *pvarValue,
        HRESULT *phrError);
    HRESULT (__attribute__((__stdcall__)) *Write)(
        IPropertyBag2 *This,
        ULONG cProperties,
        PROPBAG2 *pPropBag,
        VARIANT *pvarValue);
    HRESULT (__attribute__((__stdcall__)) *CountProperties)(
        IPropertyBag2 *This,
        ULONG *pcProperties);
    HRESULT (__attribute__((__stdcall__)) *GetPropertyInfo)(
        IPropertyBag2 *This,
        ULONG iProperty,
        ULONG cProperties,
        PROPBAG2 *pPropBag,
        ULONG *pcProperties);
    HRESULT (__attribute__((__stdcall__)) *LoadObject)(
        IPropertyBag2 *This,
        LPCOLESTR pstrName,
        DWORD dwHint,
        IUnknown *pUnkObject,
        IErrorLog *pErrLog);
   
} IPropertyBag2Vtbl;
struct IPropertyBag2 {
    IPropertyBag2Vtbl* lpVtbl;
};
#define __IPersistPropertyBag2_INTERFACE_DEFINED__ 
typedef IPersistPropertyBag2 *LPPERSISTPROPERTYBAG2;
extern const GUID IID_IPersistPropertyBag2;
typedef struct IPersistPropertyBag2Vtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IPersistPropertyBag2 *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IPersistPropertyBag2 *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IPersistPropertyBag2 *This);
    HRESULT (__attribute__((__stdcall__)) *GetClassID)(
        IPersistPropertyBag2 *This,
        CLSID *pClassID);
    HRESULT (__attribute__((__stdcall__)) *InitNew)(
        IPersistPropertyBag2 *This);
    HRESULT (__attribute__((__stdcall__)) *Load)(
        IPersistPropertyBag2 *This,
        IPropertyBag2 *pPropBag,
        IErrorLog *pErrLog);
    HRESULT (__attribute__((__stdcall__)) *Save)(
        IPersistPropertyBag2 *This,
        IPropertyBag2 *pPropBag,
        WINBOOL fClearDirty,
        WINBOOL fSaveAllProperties);
    HRESULT (__attribute__((__stdcall__)) *IsDirty)(
        IPersistPropertyBag2 *This);
   
} IPersistPropertyBag2Vtbl;
struct IPersistPropertyBag2 {
    IPersistPropertyBag2Vtbl* lpVtbl;
};
#define __IAdviseSinkEx_INTERFACE_DEFINED__ 
typedef IAdviseSinkEx *LPADVISESINKEX;
extern const GUID IID_IAdviseSinkEx;
typedef struct IAdviseSinkExVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IAdviseSinkEx *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IAdviseSinkEx *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IAdviseSinkEx *This);
    void (__attribute__((__stdcall__)) *OnDataChange)(
        IAdviseSinkEx *This,
        FORMATETC *pFormatetc,
        STGMEDIUM *pStgmed);
    void (__attribute__((__stdcall__)) *OnViewChange)(
        IAdviseSinkEx *This,
        DWORD dwAspect,
        LONG lindex);
    void (__attribute__((__stdcall__)) *OnRename)(
        IAdviseSinkEx *This,
        IMoniker *pmk);
    void (__attribute__((__stdcall__)) *OnSave)(
        IAdviseSinkEx *This);
    void (__attribute__((__stdcall__)) *OnClose)(
        IAdviseSinkEx *This);
    void (__attribute__((__stdcall__)) *OnViewStatusChange)(
        IAdviseSinkEx *This,
        DWORD dwViewStatus);
   
} IAdviseSinkExVtbl;
struct IAdviseSinkEx {
    IAdviseSinkExVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IAdviseSinkEx_RemoteOnViewStatusChange_Proxy(
    IAdviseSinkEx* This,
    DWORD dwViewStatus);
void __attribute__((__stdcall__)) IAdviseSinkEx_RemoteOnViewStatusChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
void __attribute__((__stdcall__)) IAdviseSinkEx_OnViewStatusChange_Proxy(
    IAdviseSinkEx* This,
    DWORD dwViewStatus);
HRESULT __attribute__((__stdcall__)) IAdviseSinkEx_OnViewStatusChange_Stub(
    IAdviseSinkEx* This,
    DWORD dwViewStatus);
#define __IQuickActivate_INTERFACE_DEFINED__ 
typedef IQuickActivate *LPQUICKACTIVATE;
typedef enum tagQACONTAINERFLAGS {
    QACONTAINER_SHOWHATCHING = 0x1,
    QACONTAINER_SHOWGRABHANDLES = 0x2,
    QACONTAINER_USERMODE = 0x4,
    QACONTAINER_DISPLAYASDEFAULT = 0x8,
    QACONTAINER_UIDEAD = 0x10,
    QACONTAINER_AUTOCLIP = 0x20,
    QACONTAINER_MESSAGEREFLECT = 0x40,
    QACONTAINER_SUPPORTSMNEMONICS = 0x80
} QACONTAINERFLAGS;
typedef DWORD OLE_COLOR;
typedef struct tagQACONTAINER {
    ULONG cbSize;
    IOleClientSite *pClientSite;
    IAdviseSinkEx *pAdviseSink;
    IPropertyNotifySink *pPropertyNotifySink;
    IUnknown *pUnkEventSink;
    DWORD dwAmbientFlags;
    OLE_COLOR colorFore;
    OLE_COLOR colorBack;
    IFont *pFont;
    IOleUndoManager *pUndoMgr;
    DWORD dwAppearance;
    LONG lcid;
    HPALETTE hpal;
    IBindHost *pBindHost;
    IOleControlSite *pOleControlSite;
    IServiceProvider *pServiceProvider;
} QACONTAINER;
typedef struct tagQACONTROL {
    ULONG cbSize;
    DWORD dwMiscStatus;
    DWORD dwViewStatus;
    DWORD dwEventCookie;
    DWORD dwPropNotifyCookie;
    DWORD dwPointerActivationPolicy;
} QACONTROL;
extern const GUID IID_IQuickActivate;
typedef struct IQuickActivateVtbl {
   
    HRESULT (__attribute__((__stdcall__)) *QueryInterface)(
        IQuickActivate *This,
        const IID *const riid,
        void **ppvObject);
    ULONG (__attribute__((__stdcall__)) *AddRef)(
        IQuickActivate *This);
    ULONG (__attribute__((__stdcall__)) *Release)(
        IQuickActivate *This);
    HRESULT (__attribute__((__stdcall__)) *QuickActivate)(
        IQuickActivate *This,
        QACONTAINER *pQaContainer,
        QACONTROL *pQaControl);
    HRESULT (__attribute__((__stdcall__)) *SetContentExtent)(
        IQuickActivate *This,
        LPSIZEL pSizel);
    HRESULT (__attribute__((__stdcall__)) *GetContentExtent)(
        IQuickActivate *This,
        LPSIZEL pSizel);
   
} IQuickActivateVtbl;
struct IQuickActivate {
    IQuickActivateVtbl* lpVtbl;
};
HRESULT __attribute__((__stdcall__)) IQuickActivate_RemoteQuickActivate_Proxy(
    IQuickActivate* This,
    QACONTAINER *pQaContainer,
    QACONTROL *pQaControl);
void __attribute__((__stdcall__)) IQuickActivate_RemoteQuickActivate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT __attribute__((__stdcall__)) IQuickActivate_QuickActivate_Proxy(
    IQuickActivate* This,
    QACONTAINER *pQaContainer,
    QACONTROL *pQaControl);
HRESULT __attribute__((__stdcall__)) IQuickActivate_QuickActivate_Stub(
    IQuickActivate* This,
    QACONTAINER *pQaContainer,
    QACONTROL *pQaControl);
ULONG __attribute__((__stdcall__)) BSTR_UserSize (ULONG *, ULONG, BSTR *);
unsigned char * __attribute__((__stdcall__)) BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *);
unsigned char * __attribute__((__stdcall__)) BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void __attribute__((__stdcall__)) BSTR_UserFree (ULONG *, BSTR *);
ULONG __attribute__((__stdcall__)) HACCEL_UserSize (ULONG *, ULONG, HACCEL *);
unsigned char * __attribute__((__stdcall__)) HACCEL_UserMarshal (ULONG *, unsigned char *, HACCEL *);
unsigned char * __attribute__((__stdcall__)) HACCEL_UserUnmarshal(ULONG *, unsigned char *, HACCEL *);
void __attribute__((__stdcall__)) HACCEL_UserFree (ULONG *, HACCEL *);
ULONG __attribute__((__stdcall__)) HWND_UserSize (ULONG *, ULONG, HWND *);
unsigned char * __attribute__((__stdcall__)) HWND_UserMarshal (ULONG *, unsigned char *, HWND *);
unsigned char * __attribute__((__stdcall__)) HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
void __attribute__((__stdcall__)) HWND_UserFree (ULONG *, HWND *);
ULONG __attribute__((__stdcall__)) HFONT_UserSize (ULONG *, ULONG, HFONT *);
unsigned char * __attribute__((__stdcall__)) HFONT_UserMarshal (ULONG *, unsigned char *, HFONT *);
unsigned char * __attribute__((__stdcall__)) HFONT_UserUnmarshal(ULONG *, unsigned char *, HFONT *);
void __attribute__((__stdcall__)) HFONT_UserFree (ULONG *, HFONT *);
ULONG __attribute__((__stdcall__)) HDC_UserSize (ULONG *, ULONG, HDC *);
unsigned char * __attribute__((__stdcall__)) HDC_UserMarshal (ULONG *, unsigned char *, HDC *);
unsigned char * __attribute__((__stdcall__)) HDC_UserUnmarshal(ULONG *, unsigned char *, HDC *);
void __attribute__((__stdcall__)) HDC_UserFree (ULONG *, HDC *);
ULONG __attribute__((__stdcall__)) HRGN_UserSize (ULONG *, ULONG, HRGN *);
unsigned char * __attribute__((__stdcall__)) HRGN_UserMarshal (ULONG *, unsigned char *, HRGN *);
unsigned char * __attribute__((__stdcall__)) HRGN_UserUnmarshal(ULONG *, unsigned char *, HRGN *);
void __attribute__((__stdcall__)) HRGN_UserFree (ULONG *, HRGN *);
ULONG __attribute__((__stdcall__)) VARIANT_UserSize (ULONG *, ULONG, VARIANT *);
unsigned char * __attribute__((__stdcall__)) VARIANT_UserMarshal (ULONG *, unsigned char *, VARIANT *);
unsigned char * __attribute__((__stdcall__)) VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
void __attribute__((__stdcall__)) VARIANT_UserFree (ULONG *, VARIANT *);
ULONG __attribute__((__stdcall__)) CLIPFORMAT_UserSize (ULONG *, ULONG, CLIPFORMAT *);
unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserMarshal (ULONG *, unsigned char *, CLIPFORMAT *);
unsigned char * __attribute__((__stdcall__)) CLIPFORMAT_UserUnmarshal(ULONG *, unsigned char *, CLIPFORMAT *);
void __attribute__((__stdcall__)) CLIPFORMAT_UserFree (ULONG *, CLIPFORMAT *);
ULONG __attribute__((__stdcall__)) HPALETTE_UserSize (ULONG *, ULONG, HPALETTE *);
unsigned char * __attribute__((__stdcall__)) HPALETTE_UserMarshal (ULONG *, unsigned char *, HPALETTE *);
unsigned char * __attribute__((__stdcall__)) HPALETTE_UserUnmarshal(ULONG *, unsigned char *, HPALETTE *);
void __attribute__((__stdcall__)) HPALETTE_UserFree (ULONG *, HPALETTE *);
#define __INapTypes_INTERFACE_DEFINED__ 
extern RPC_IF_HANDLE INapTypes_v0_0_c_ifspec;
extern RPC_IF_HANDLE INapTypes_v0_0_s_ifspec;
#define freshSoHRequest (0x1)
#define shaFixup (0x1)
#define percentageNotSupported (101)
#define maxSoHAttributeCount (100)
#define maxSoHAttributeSize (4000)
#define minNetworkSoHSize (12)
#define maxNetworkSoHSize (4000)
#define maxDwordCountPerSoHAttribute (maxSoHAttributeSize / sizeof(DWORD))
#define maxIpv4CountPerSoHAttribute (maxSoHAttributeSize / 4)
#define maxIpv6CountPerSoHAttribute (maxSoHAttributeSize / 16)
#define maxStringLength (1024)
#define maxStringLengthInBytes ((maxStringLength + 1) * sizeof(WCHAR))
#define maxSystemHealthEntityCount (20)
#define maxEnforcerCount (20)
#define maxPrivateDataSize (200)
#define maxConnectionCountPerEnforcer (20)
#define maxCachedSoHCount ((maxSystemHealthEntityCount * maxEnforcerCount) * maxConnectionCountPerEnforcer)
#define failureCategoryCount (5)
#define ComponentTypeEnforcementClientSoH (0x1)
#define ComponentTypeEnforcementClientRp (0x2)
typedef enum tagIsolationState {
    isolationStateNotRestricted = 1,
    isolationStateInProbation = 2,
    isolationStateRestrictedAccess = 3
} IsolationState;
typedef enum tagExtendedIsolationState {
    extendedIsolationStateNoData = 0x0,
    extendedIsolationStateTransition = 0x1,
    extendedIsolationStateInfected = 0x2,
    extendedIsolationStateUnknown = 0x3
} ExtendedIsolationState;
typedef enum tagNapTracingLevel {
    tracingLevelUndefined = 0,
    tracingLevelBasic = 1,
    tracingLevelAdvanced = 2,
    tracingLevelDebug = 3
} NapTracingLevel;
typedef enum tagFailureCategory {
    failureCategoryNone = 0,
    failureCategoryOther = 1,
    failureCategoryClientComponent = 2,
    failureCategoryClientCommunication = 3,
    failureCategoryServerComponent = 4,
    failureCategoryServerCommunication = 5
} FailureCategory;
typedef enum tagFixupState {
    fixupStateSuccess = 0,
    fixupStateInProgress = 1,
    fixupStateCouldNotUpdate = 2
} FixupState;
typedef enum tagNapNotifyType {
    napNotifyTypeUnknown = 0,
    napNotifyTypeServiceState = 1,
    napNotifyTypeQuarState = 2
} NapNotifyType;
typedef enum tagRemoteConfigurationType {
    remoteConfigTypeMachine = 1,
    remoteConfigTypeConfigBlob = 2
} RemoteConfigurationType;
typedef FILETIME ProbationTime;
typedef UINT32 MessageId;
typedef UINT32 NapComponentId;
typedef NapComponentId SystemHealthEntityId;
typedef NapComponentId EnforcementEntityId;
typedef struct tagCountedString {
    UINT16 length;
    WCHAR *string;
} CountedString;
typedef CountedString StringCorrelationId;
typedef struct tagIsolationInfo {
    IsolationState isolationState;
    ProbationTime probEndTime;
    CountedString failureUrl;
} IsolationInfo;
typedef struct tagIsolationInfoEx {
    IsolationState isolationState;
    ExtendedIsolationState extendedIsolationState;
    ProbationTime probEndTime;
    CountedString failureUrl;
} IsolationInfoEx;
typedef struct tagFailureCategoryMapping {
    WINBOOL mappingCompliance[5];
} FailureCategoryMapping;
typedef UINT16 SystemHealthEntityCount;
typedef UINT16 EnforcementEntityCount;
typedef struct tagCorrelationId {
    GUID connId;
    FILETIME timeStamp;
} CorrelationId;
typedef GUID ConnectionId;
typedef UINT8 Percentage;
typedef struct tagResultCodes {
    UINT16 count;
    HRESULT *results;
} ResultCodes;
typedef struct tagIpv4Address {
    BYTE addr[4];
} Ipv4Address;
typedef struct tagIpv6Address {
    BYTE addr[16];
} Ipv6Address;
typedef struct tagFixupInfo {
    FixupState state;
    Percentage percentage;
    ResultCodes resultCodes;
    MessageId fixupMsgId;
} FixupInfo;
typedef struct tagSystemHealthAgentState {
    SystemHealthEntityId id;
    ResultCodes shaResultCodes;
    FailureCategory failureCategory;
    FixupInfo fixupInfo;
} SystemHealthAgentState;
typedef struct tagSoHAttribute {
    UINT16 type;
    UINT16 size;
    BYTE *value;
} SoHAttribute;
typedef struct tagSoH {
    UINT16 count;
    SoHAttribute *attributes;
} SoH;
typedef struct tagSoH SoHRequest;
typedef struct tagSoH SoHResponse;
typedef struct tagNetworkSoH {
    UINT16 size;
    BYTE *data;
} NetworkSoH;
typedef struct tagNetworkSoH NetworkSoHRequest;
typedef struct tagNetworkSoH NetworkSoHResponse;
typedef struct tagPrivateData {
    UINT16 size;
    BYTE *data;
} PrivateData;
typedef struct tagNapComponentRegistrationInfo {
    NapComponentId id;
    CountedString friendlyName;
    CountedString description;
    CountedString version;
    CountedString vendorName;
    CLSID infoClsid;
    CLSID configClsid;
    FILETIME registrationDate;
    UINT32 componentType;
} NapComponentRegistrationInfo;
typedef struct in_addr RASIPV4ADDR;
typedef struct in6_addr RASIPV6ADDR;
#pragma pack(push,4)
#define RAS_MaxDeviceType 16
#define RAS_MaxPhoneNumber 128
#define RAS_MaxIpAddress 15
#define RAS_MaxIpxAddress 21
#define RAS_MaxEntryName 256
#define RAS_MaxDeviceName 128
#define RAS_MaxCallbackNumber RAS_MaxPhoneNumber
#define RAS_MaxAreaCode 10
#define RAS_MaxPadType 32
#define RAS_MaxX25Address 200
#define RAS_MaxFacilities 200
#define RAS_MaxUserData 200
#define RAS_MaxReplyMessage 1024
#define RAS_MaxDnsSuffix 256
  struct HRASCONN__ { int unused; }; typedef struct HRASCONN__ *HRASCONN;
#define LPHRASCONN HRASCONN*
#define RASCF_AllUsers 0x00000001
#define RASCF_GlobalCreds 0x00000002
#define RASCONNW struct tagRASCONNW
  struct tagRASCONNW {
    DWORD dwSize;
    HRASCONN hrasconn;
    WCHAR szEntryName[256 + 1 ];
    WCHAR szDeviceType[16 + 1 ];
    WCHAR szDeviceName[128 + 1 ];
    WCHAR szPhonebook [260 ];
    DWORD dwSubEntry;
    GUID guidEntry;
    DWORD dwFlags;
    LUID luid;
  };
#define RASCONNA struct tagRASCONNA
  struct tagRASCONNA {
    DWORD dwSize;
    HRASCONN hrasconn;
    CHAR szEntryName[256 + 1 ];
    CHAR szDeviceType[16 + 1 ];
    CHAR szDeviceName[128 + 1 ];
    CHAR szPhonebook [260 ];
    DWORD dwSubEntry;
    GUID guidEntry;
    DWORD dwFlags;
    LUID luid;
  };
#define RASCONN __MINGW_NAME_AW(RASCONN)
#define LPRASCONNW RASCONNW*
#define LPRASCONNA RASCONNA*
#define LPRASCONN RASCONN*
#define RASCS_PAUSED 0x1000
#define RASCS_DONE 0x2000
#define RASCONNSTATE enum tagRASCONNSTATE
  enum tagRASCONNSTATE {
    RASCS_OpenPort = 0,RASCS_PortOpened,RASCS_ConnectDevice,RASCS_DeviceConnected,RASCS_AllDevicesConnected,RASCS_Authenticate,
    RASCS_AuthNotify,RASCS_AuthRetry,RASCS_AuthCallback,RASCS_AuthChangePassword,RASCS_AuthProject,RASCS_AuthLinkSpeed,
    RASCS_AuthAck,RASCS_ReAuthenticate,RASCS_Authenticated,RASCS_PrepareForCallback,RASCS_WaitForModemReset,RASCS_WaitForCallback,RASCS_Projected,
    RASCS_StartAuthentication,RASCS_CallbackComplete,RASCS_LogonNetwork,RASCS_SubEntryConnected,
    RASCS_SubEntryDisconnected,RASCS_Interactive = 0x1000,RASCS_RetryAuthentication,RASCS_CallbackSetByCaller,RASCS_PasswordExpired,
    RASCS_InvokeEapUI,RASCS_Connected = 0x2000,RASCS_Disconnected
  };
#define LPRASCONNSTATE RASCONNSTATE*
#define RASCONNSTATUSW struct tagRASCONNSTATUSW
  struct tagRASCONNSTATUSW {
    DWORD dwSize;
    enum tagRASCONNSTATE rasconnstate;
    DWORD dwError;
    WCHAR szDeviceType[16 + 1 ];
    WCHAR szDeviceName[128 + 1 ];
    WCHAR szPhoneNumber[128 + 1 ];
  };
#define RASCONNSTATUSA struct tagRASCONNSTATUSA
  struct tagRASCONNSTATUSA {
    DWORD dwSize;
    enum tagRASCONNSTATE rasconnstate;
    DWORD dwError;
    CHAR szDeviceType[16 + 1 ];
    CHAR szDeviceName[128 + 1 ];
    CHAR szPhoneNumber[128 + 1 ];
  };
#define RASCONNSTATUS __MINGW_NAME_AW(RASCONNSTATUS)
#define LPRASCONNSTATUSW RASCONNSTATUSW*
#define LPRASCONNSTATUSA RASCONNSTATUSA*
#define LPRASCONNSTATUS RASCONNSTATUS*
#define RASDIALPARAMSW struct tagRASDIALPARAMSW
  struct tagRASDIALPARAMSW {
    DWORD dwSize;
    WCHAR szEntryName[256 + 1 ];
    WCHAR szPhoneNumber[128 + 1 ];
    WCHAR szCallbackNumber[128 + 1 ];
    WCHAR szUserName[256 + 1 ];
    WCHAR szPassword[256 + 1 ];
    WCHAR szDomain[15 + 1 ];
    DWORD dwSubEntry;
    ULONG_PTR dwCallbackId;
  };
#define RASDIALPARAMSA struct tagRASDIALPARAMSA
  struct tagRASDIALPARAMSA {
    DWORD dwSize;
    CHAR szEntryName[256 + 1 ];
    CHAR szPhoneNumber[128 + 1 ];
    CHAR szCallbackNumber[128 + 1 ];
    CHAR szUserName[256 + 1 ];
    CHAR szPassword[256 + 1 ];
    CHAR szDomain[15 + 1 ];
    DWORD dwSubEntry;
    ULONG_PTR dwCallbackId;
  };
#define RASDIALPARAMS __MINGW_NAME_AW(RASDIALPARAMS)
#define LPRASDIALPARAMSW RASDIALPARAMSW*
#define LPRASDIALPARAMSA RASDIALPARAMSA*
#define LPRASDIALPARAMS RASDIALPARAMS*
#define RASEAPINFO struct tagRASEAPINFO
  struct tagRASEAPINFO {
    DWORD dwSizeofEapInfo;
    BYTE *pbEapInfo;
  };
#define RASDIALEXTENSIONS struct tagRASDIALEXTENSIONS
  struct tagRASDIALEXTENSIONS {
    DWORD dwSize;
    DWORD dwfOptions;
    HWND hwndParent;
    ULONG_PTR reserved;
    ULONG_PTR reserved1;
    struct tagRASEAPINFO RasEapInfo;
  };
#define LPRASDIALEXTENSIONS RASDIALEXTENSIONS*
#define RDEOPT_UsePrefixSuffix 0x00000001
#define RDEOPT_PausedStates 0x00000002
#define RDEOPT_IgnoreModemSpeaker 0x00000004
#define RDEOPT_SetModemSpeaker 0x00000008
#define RDEOPT_IgnoreSoftwareCompression 0x00000010
#define RDEOPT_SetSoftwareCompression 0x00000020
#define RDEOPT_DisableConnectedUI 0x00000040
#define RDEOPT_DisableReconnectUI 0x00000080
#define RDEOPT_DisableReconnect 0x00000100
#define RDEOPT_NoUser 0x00000200
#define RDEOPT_PauseOnScript 0x00000400
#define RDEOPT_Router 0x00000800
#define RDEOPT_CustomDial 0x00001000
#define RDEOPT_UseCustomScripting 0x00002000
#define REN_User 0x00000000
#define REN_AllUsers 0x00000001
#define RASENTRYNAMEW struct tagRASENTRYNAMEW
  struct tagRASENTRYNAMEW {
    DWORD dwSize;
    WCHAR szEntryName[256 + 1 ];
    DWORD dwFlags;
    WCHAR szPhonebookPath[260 + 1];
  };
#define RASENTRYNAMEA struct tagRASENTRYNAMEA
  struct tagRASENTRYNAMEA {
    DWORD dwSize;
    CHAR szEntryName[256 + 1 ];
    DWORD dwFlags;
    CHAR szPhonebookPath[260 + 1];
  };
#define RASENTRYNAME __MINGW_NAME_AW(RASENTRYNAME)
#define LPRASENTRYNAMEW RASENTRYNAMEW*
#define LPRASENTRYNAMEA RASENTRYNAMEA*
#define LPRASENTRYNAME RASENTRYNAME*
#define RASPROJECTION enum tagRASPROJECTION
  enum tagRASPROJECTION {
    RASP_Amb = 0x10000,RASP_PppNbf = 0x803F,RASP_PppIpx = 0x802B,RASP_PppIp = 0x8021,
    RASP_PppCcp = 0x80FD,RASP_PppLcp = 0xC021,RASP_Slip = 0x20000
  };
#define LPRASPROJECTION RASPROJECTION *
#define RASAMBW struct tagRASAMBW
  struct tagRASAMBW {
    DWORD dwSize;
    DWORD dwError;
    WCHAR szNetBiosError[16 + 1 ];
    BYTE bLana;
  };
#define RASAMBA struct tagRASAMBA
  struct tagRASAMBA {
    DWORD dwSize;
    DWORD dwError;
    CHAR szNetBiosError[16 + 1 ];
    BYTE bLana;
  };
#define RASAMB __MINGW_NAME_AW(RASAMB)
#define LPRASAMBW RASAMBW*
#define LPRASAMBA RASAMBA*
#define LPRASAMB RASAMB*
#define RASPPPNBFW struct tagRASPPPNBFW
  struct tagRASPPPNBFW {
    DWORD dwSize;
    DWORD dwError;
    DWORD dwNetBiosError;
    WCHAR szNetBiosError[16 + 1 ];
    WCHAR szWorkstationName[16 + 1 ];
    BYTE bLana;
  };
#define RASPPPNBFA struct tagRASPPPNBFA
  struct tagRASPPPNBFA {
    DWORD dwSize;
    DWORD dwError;
    DWORD dwNetBiosError;
    CHAR szNetBiosError[16 + 1 ];
    CHAR szWorkstationName[16 + 1 ];
    BYTE bLana;
  };
#define RASPPPNBF __MINGW_NAME_AW(RASPPPNBF)
#define LPRASPPPNBFW RASPPPNBFW*
#define LPRASPPPNBFA RASPPPNBFA*
#define LPRASPPPNBF RASPPPNBF*
#define RASPPPIPXW struct tagRASIPXW
  struct tagRASIPXW {
    DWORD dwSize;
    DWORD dwError;
    WCHAR szIpxAddress[21 + 1 ];
  };
#define RASPPPIPXA struct tagRASPPPIPXA
  struct tagRASPPPIPXA {
    DWORD dwSize;
    DWORD dwError;
    CHAR szIpxAddress[21 + 1 ];
  };
#define RASPPPIPX __MINGW_NAME_AW(RASPPPIPX)
#define LPRASPPPIPXW RASPPPIPXW *
#define LPRASPPPIPXA RASPPPIPXA *
#define LPRASPPPIPX RASPPPIPX *
#define RASIPO_VJ 0x00000001
#define RASPPPIPW struct tagRASPPPIPW
  struct tagRASPPPIPW {
    DWORD dwSize;
    DWORD dwError;
    WCHAR szIpAddress[15 + 1 ];
    WCHAR szServerIpAddress[15 + 1 ];
    DWORD dwOptions;
    DWORD dwServerOptions;
  };
#define RASPPPIPA struct tagRASPPPIPA
  struct tagRASPPPIPA {
    DWORD dwSize;
    DWORD dwError;
    CHAR szIpAddress[15 + 1 ];
    CHAR szServerIpAddress[15 + 1 ];
    DWORD dwOptions;
    DWORD dwServerOptions;
  };
#define RASPPPIP __MINGW_NAME_AW(RASPPPIP)
#define LPRASPPPIPW RASPPPIPW*
#define LPRASPPPIPA RASPPPIPA*
#define LPRASPPPIP RASPPPIP*
#define RASLCPAP_PAP 0xC023
#define RASLCPAP_SPAP 0xC027
#define RASLCPAP_CHAP 0xC223
#define RASLCPAP_EAP 0xC227
#define RASLCPAD_CHAP_MD5 0x05
#define RASLCPAD_CHAP_MS 0x80
#define RASLCPAD_CHAP_MSV2 0x81
#define RASLCPO_PFC 0x00000001
#define RASLCPO_ACFC 0x00000002
#define RASLCPO_SSHF 0x00000004
#define RASLCPO_DES_56 0x00000008
#define RASLCPO_3_DES 0x00000010
#define RASPPPLCPW struct tagRASPPPLCPW
  struct tagRASPPPLCPW {
    DWORD dwSize;
    WINBOOL fBundled;
    DWORD dwError;
    DWORD dwAuthenticationProtocol;
    DWORD dwAuthenticationData;
    DWORD dwEapTypeId;
    DWORD dwServerAuthenticationProtocol;
    DWORD dwServerAuthenticationData;
    DWORD dwServerEapTypeId;
    WINBOOL fMultilink;
    DWORD dwTerminateReason;
    DWORD dwServerTerminateReason;
    WCHAR szReplyMessage[1024];
    DWORD dwOptions;
    DWORD dwServerOptions;
  };
#define RASPPPLCPA struct tagRASPPPLCPA
  struct tagRASPPPLCPA {
    DWORD dwSize;
    WINBOOL fBundled;
    DWORD dwError;
    DWORD dwAuthenticationProtocol;
    DWORD dwAuthenticationData;
    DWORD dwEapTypeId;
    DWORD dwServerAuthenticationProtocol;
    DWORD dwServerAuthenticationData;
    DWORD dwServerEapTypeId;
    WINBOOL fMultilink;
    DWORD dwTerminateReason;
    DWORD dwServerTerminateReason;
    CHAR szReplyMessage[1024];
    DWORD dwOptions;
    DWORD dwServerOptions;
  };
#define RASPPPLCP __MINGW_NAME_AW(RASPPPLCP)
#define LPRASPPPLCPW RASPPPLCPW *
#define LPRASPPPLCPA RASPPPLCPA *
#define LPRASPPPLCP RASPPPLCP *
#define RASSLIPW struct tagRASSLIPW
  struct tagRASSLIPW {
    DWORD dwSize;
    DWORD dwError;
    WCHAR szIpAddress[15 + 1 ];
  };
#define RASSLIPA struct tagRASSLIPA
  struct tagRASSLIPA {
    DWORD dwSize;
    DWORD dwError;
    CHAR szIpAddress[15 + 1 ];
  };
#define RASSLIP __MINGW_NAME_AW(RASSLIP)
#define LPRASSLIPW RASSLIPW*
#define LPRASSLIPA RASSLIPA*
#define LPRASSLIP RASSLIP*
#define RASCCPCA_MPPC 0x00000006
#define RASCCPCA_STAC 0x00000005
#define RASCCPO_Compression 0x00000001
#define RASCCPO_HistoryLess 0x00000002
#define RASCCPO_Encryption56bit 0x00000010
#define RASCCPO_Encryption40bit 0x00000020
#define RASCCPO_Encryption128bit 0x00000040
#define RASPPPCCP struct tagRASPPPCCP
  struct tagRASPPPCCP {
    DWORD dwSize;
    DWORD dwError;
    DWORD dwCompressionAlgorithm;
    DWORD dwOptions;
    DWORD dwServerCompressionAlgorithm;
    DWORD dwServerOptions;
  };
#define LPRASPPPCCP RASPPPCCP *
#define RASDIALEVENT "RasDialEvent"
#define WM_RASDIALEVENT 0xCCCD
  typedef void (__attribute__((__stdcall__)) *RASDIALFUNC)(UINT,enum tagRASCONNSTATE,DWORD);
  typedef void (__attribute__((__stdcall__)) *RASDIALFUNC1)(HRASCONN,UINT,enum tagRASCONNSTATE,DWORD,DWORD);
  typedef DWORD (__attribute__((__stdcall__)) *RASDIALFUNC2)(ULONG_PTR,DWORD,HRASCONN,UINT,enum tagRASCONNSTATE,DWORD,DWORD);
#define RASDEVINFOW struct tagRASDEVINFOW
  struct tagRASDEVINFOW {
    DWORD dwSize;
    WCHAR szDeviceType[16 + 1 ];
    WCHAR szDeviceName[128 + 1 ];
  };
#define RASDEVINFOA struct tagRASDEVINFOA
  struct tagRASDEVINFOA {
    DWORD dwSize;
    CHAR szDeviceType[16 + 1 ];
    CHAR szDeviceName[128 + 1 ];
  };
#define RASDEVINFO __MINGW_NAME_AW(RASDEVINFO)
#define LPRASDEVINFOW RASDEVINFOW*
#define LPRASDEVINFOA RASDEVINFOA*
#define LPRASDEVINFO RASDEVINFO*

  struct RASCTRYINFO {
    DWORD dwSize;
    DWORD dwCountryID;
    DWORD dwNextCountryID;
    DWORD dwCountryCode;
    DWORD dwCountryNameOffset;
  };
#define RASCTRYINFOW RASCTRYINFO
#define RASCTRYINFOA RASCTRYINFO
#define LPRASCTRYINFOW RASCTRYINFOW*
#define LPRASCTRYINFOA RASCTRYINFOW*
#define LPRASCTRYINFO RASCTRYINFO*

  struct RASIPADDR {
    BYTE a;
    BYTE b;
    BYTE c;
    BYTE d;
  };
#define ET_None 0
#define ET_Require 1
#define ET_RequireMax 2
#define ET_Optional 3
#define VS_Default 0
#define VS_PptpOnly 1
#define VS_PptpFirst 2
#define VS_L2tpOnly 3
#define VS_L2tpFirst 4
#define RASENTRYA struct tagRASENTRYA
  struct tagRASENTRYA {
    DWORD dwSize;
    DWORD dwfOptions;
    DWORD dwCountryID;
    DWORD dwCountryCode;
    CHAR szAreaCode[10 + 1 ];
    CHAR szLocalPhoneNumber[128 + 1 ];
    DWORD dwAlternateOffset;
    struct RASIPADDR ipaddr;
    struct RASIPADDR ipaddrDns;
    struct RASIPADDR ipaddrDnsAlt;
    struct RASIPADDR ipaddrWins;
    struct RASIPADDR ipaddrWinsAlt;
    DWORD dwFrameSize;
    DWORD dwfNetProtocols;
    DWORD dwFramingProtocol;
    CHAR szScript[260 ];
    CHAR szAutodialDll[260 ];
    CHAR szAutodialFunc[260 ];
    CHAR szDeviceType[16 + 1 ];
    CHAR szDeviceName[128 + 1 ];
    CHAR szX25PadType[32 + 1 ];
    CHAR szX25Address[200 + 1 ];
    CHAR szX25Facilities[200 + 1 ];
    CHAR szX25UserData[200 + 1 ];
    DWORD dwChannels;
    DWORD dwReserved1;
    DWORD dwReserved2;
    DWORD dwSubEntries;
    DWORD dwDialMode;
    DWORD dwDialExtraPercent;
    DWORD dwDialExtraSampleSeconds;
    DWORD dwHangUpExtraPercent;
    DWORD dwHangUpExtraSampleSeconds;
    DWORD dwIdleDisconnectSeconds;
    DWORD dwType;
    DWORD dwEncryptionType;
    DWORD dwCustomAuthKey;
    GUID guidId;
    CHAR szCustomDialDll[260];
    DWORD dwVpnStrategy;
    DWORD dwfOptions2;
    DWORD dwfOptions3;
    CHAR szDnsSuffix[256];
    DWORD dwTcpWindowSize;
    CHAR szPrerequisitePbk[260];
    CHAR szPrerequisiteEntry[256 + 1];
    DWORD dwRedialCount;
    DWORD dwRedialPause;
  };
#define RASENTRYW struct tagRASENTRYW
  struct tagRASENTRYW {
    DWORD dwSize;
    DWORD dwfOptions;
    DWORD dwCountryID;
    DWORD dwCountryCode;
    WCHAR szAreaCode[10 + 1 ];
    WCHAR szLocalPhoneNumber[128 + 1 ];
    DWORD dwAlternateOffset;
    struct RASIPADDR ipaddr;
    struct RASIPADDR ipaddrDns;
    struct RASIPADDR ipaddrDnsAlt;
    struct RASIPADDR ipaddrWins;
    struct RASIPADDR ipaddrWinsAlt;
    DWORD dwFrameSize;
    DWORD dwfNetProtocols;
    DWORD dwFramingProtocol;
    WCHAR szScript[260 ];
    WCHAR szAutodialDll[260 ];
    WCHAR szAutodialFunc[260 ];
    WCHAR szDeviceType[16 + 1 ];
    WCHAR szDeviceName[128 + 1 ];
    WCHAR szX25PadType[32 + 1 ];
    WCHAR szX25Address[200 + 1 ];
    WCHAR szX25Facilities[200 + 1 ];
    WCHAR szX25UserData[200 + 1 ];
    DWORD dwChannels;
    DWORD dwReserved1;
    DWORD dwReserved2;
    DWORD dwSubEntries;
    DWORD dwDialMode;
    DWORD dwDialExtraPercent;
    DWORD dwDialExtraSampleSeconds;
    DWORD dwHangUpExtraPercent;
    DWORD dwHangUpExtraSampleSeconds;
    DWORD dwIdleDisconnectSeconds;
    DWORD dwType;
    DWORD dwEncryptionType;
    DWORD dwCustomAuthKey;
    GUID guidId;
    WCHAR szCustomDialDll[260];
    DWORD dwVpnStrategy;
    DWORD dwfOptions2;
    DWORD dwfOptions3;
    WCHAR szDnsSuffix[256];
    DWORD dwTcpWindowSize;
    WCHAR szPrerequisitePbk[260];
    WCHAR szPrerequisiteEntry[256 + 1];
    DWORD dwRedialCount;
    DWORD dwRedialPause;
  };
#define RASENTRY __MINGW_NAME_AW(RASENTRY)
#define LPRASENTRYW RASENTRYW*
#define LPRASENTRYA RASENTRYA*
#define LPRASENTRY RASENTRY*
#define RASEO_UseCountryAndAreaCodes 0x00000001
#define RASEO_SpecificIpAddr 0x00000002
#define RASEO_SpecificNameServers 0x00000004
#define RASEO_IpHeaderCompression 0x00000008
#define RASEO_RemoteDefaultGateway 0x00000010
#define RASEO_DisableLcpExtensions 0x00000020
#define RASEO_TerminalBeforeDial 0x00000040
#define RASEO_TerminalAfterDial 0x00000080
#define RASEO_ModemLights 0x00000100
#define RASEO_SwCompression 0x00000200
#define RASEO_RequireEncryptedPw 0x00000400
#define RASEO_RequireMsEncryptedPw 0x00000800
#define RASEO_RequireDataEncryption 0x00001000
#define RASEO_NetworkLogon 0x00002000
#define RASEO_UseLogonCredentials 0x00004000
#define RASEO_PromoteAlternates 0x00008000
#define RASEO_SecureLocalFiles 0x00010000
#define RASEO_RequireEAP 0x00020000
#define RASEO_RequirePAP 0x00040000
#define RASEO_RequireSPAP 0x00080000
#define RASEO_Custom 0x00100000
#define RASEO_PreviewPhoneNumber 0x00200000
#define RASEO_SharedPhoneNumbers 0x00800000
#define RASEO_PreviewUserPw 0x01000000
#define RASEO_PreviewDomain 0x02000000
#define RASEO_ShowDialingProgress 0x04000000
#define RASEO_RequireCHAP 0x08000000
#define RASEO_RequireMsCHAP 0x10000000
#define RASEO_RequireMsCHAP2 0x20000000
#define RASEO_RequireW95MSCHAP 0x40000000
#define RASEO_CustomScript 0x80000000
#define RASEO2_SecureFileAndPrint 0x00000001
#define RASEO2_SecureClientForMSNet 0x00000002
#define RASEO2_DontNegotiateMultilink 0x00000004
#define RASEO2_DontUseRasCredentials 0x00000008
#define RASEO2_UsePreSharedKey 0x00000010
#define RASEO2_Internet 0x00000020
#define RASEO2_DisableNbtOverIP 0x00000040
#define RASEO2_UseGlobalDeviceSettings 0x00000080
#define RASEO2_ReconnectIfDropped 0x00000100
#define RASEO2_SharePhoneNumbers 0x00000200
#define RASNP_NetBEUI 0x00000001
#define RASNP_Ipx 0x00000002
#define RASNP_Ip 0x00000004
#define RASFP_Ppp 0x00000001
#define RASFP_Slip 0x00000002
#define RASFP_Ras 0x00000004
#define RASDT_Modem TEXT("modem")
#define RASDT_Isdn TEXT("isdn")
#define RASDT_X25 TEXT("x25")
#define RASDT_Vpn TEXT("vpn")
#define RASDT_Pad TEXT("pad")
#define RASDT_Generic TEXT("GENERIC")
#define RASDT_Serial TEXT("SERIAL")
#define RASDT_FrameRelay TEXT("FRAMERELAY")
#define RASDT_Atm TEXT("ATM")
#define RASDT_Sonet TEXT("SONET")
#define RASDT_SW56 TEXT("SW56")
#define RASDT_Irda TEXT("IRDA")
#define RASDT_Parallel TEXT("PARALLEL")
#define RASDT_PPPoE TEXT("PPPoE")
#define RASET_Phone 1
#define RASET_Vpn 2
#define RASET_Direct 3
#define RASET_Internet 4
#define RASET_Broadband 5
  typedef WINBOOL (__attribute__((__stdcall__)) *ORASADFUNC)(HWND,LPSTR,DWORD,LPDWORD);
#define RASCN_Connection 0x00000001
#define RASCN_Disconnection 0x00000002
#define RASCN_BandwidthAdded 0x00000004
#define RASCN_BandwidthRemoved 0x00000008
#define RASEDM_DialAll 1
#define RASEDM_DialAsNeeded 2
#define RASIDS_Disabled 0xffffffff
#define RASIDS_UseGlobalValue 0
#define RASADPARAMS struct tagRASADPARAMS
  struct tagRASADPARAMS {
    DWORD dwSize;
    HWND hwndOwner;
    DWORD dwFlags;
    LONG xDlg;
    LONG yDlg;
  };
#define LPRASADPARAMS RASADPARAMS*
#define RASADFLG_PositionDlg 0x00000001
  typedef WINBOOL (__attribute__((__stdcall__)) *RASADFUNCA)(LPSTR,LPSTR,struct tagRASADPARAMS*,LPDWORD);
  typedef WINBOOL (__attribute__((__stdcall__)) *RASADFUNCW)(LPWSTR,LPWSTR,struct tagRASADPARAMS*,LPDWORD);
#define RASADFUNC __MINGW_NAME_AW(RASADFUNC)
#define RASSUBENTRYA struct tagRASSUBENTRYA
  struct tagRASSUBENTRYA {
    DWORD dwSize;
    DWORD dwfFlags;
    CHAR szDeviceType[16 + 1 ];
    CHAR szDeviceName[128 + 1 ];
    CHAR szLocalPhoneNumber[128 + 1 ];
    DWORD dwAlternateOffset;
  };
#define RASSUBENTRYW struct tagRASSUBENTRYW
  struct tagRASSUBENTRYW {
    DWORD dwSize;
    DWORD dwfFlags;
    WCHAR szDeviceType[16 + 1 ];
    WCHAR szDeviceName[128 + 1 ];
    WCHAR szLocalPhoneNumber[128 + 1 ];
    DWORD dwAlternateOffset;
  };
#define RASSUBENTRY __MINGW_NAME_AW(RASSUBENTRY)
#define LPRASSUBENTRYW RASSUBENTRYW*
#define LPRASSUBENTRYA RASSUBENTRYA*
#define LPRASSUBENTRY RASSUBENTRY*
#define RASCREDENTIALSA struct tagRASCREDENTIALSA
  struct tagRASCREDENTIALSA {
    DWORD dwSize;
    DWORD dwMask;
    CHAR szUserName[256 + 1 ];
    CHAR szPassword[256 + 1 ];
    CHAR szDomain[15 + 1 ];
  };
#define RASCREDENTIALSW struct tagRASCREDENTIALSW
  struct tagRASCREDENTIALSW {
    DWORD dwSize;
    DWORD dwMask;
    WCHAR szUserName[256 + 1 ];
    WCHAR szPassword[256 + 1 ];
    WCHAR szDomain[15 + 1 ];
  };
#define RASCREDENTIALS __MINGW_NAME_AW(RASCREDENTIALS)
#define LPRASCREDENTIALSW RASCREDENTIALSW*
#define LPRASCREDENTIALSA RASCREDENTIALSA*
#define LPRASCREDENTIALS RASCREDENTIALS*
#define RASCM_UserName 0x00000001
#define RASCM_Password 0x00000002
#define RASCM_Domain 0x00000004
#define RASCM_DefaultCreds 0x00000008
#define RASCM_PreSharedKey 0x00000010
#define RASCM_ServerPreSharedKey 0x00000020
#define RASCM_DDMPreSharedKey 0x00000040
#define RASAUTODIALENTRYA struct tagRASAUTODIALENTRYA
  struct tagRASAUTODIALENTRYA {
    DWORD dwSize;
    DWORD dwFlags;
    DWORD dwDialingLocation;
    CHAR szEntry[256 + 1];
  };
#define RASAUTODIALENTRYW struct tagRASAUTODIALENTRYW
  struct tagRASAUTODIALENTRYW {
    DWORD dwSize;
    DWORD dwFlags;
    DWORD dwDialingLocation;
    WCHAR szEntry[256 + 1];
  };
#define RASAUTODIALENTRY __MINGW_NAME_AW(RASAUTODIALENTRY)
#define LPRASAUTODIALENTRYW RASAUTODIALENTRYW*
#define LPRASAUTODIALENTRYA RASAUTODIALENTRYA*
#define LPRASAUTODIALENTRY RASAUTODIALENTRY*
#define RASADP_DisableConnectionQuery 0
#define RASADP_LoginSessionDisable 1
#define RASADP_SavedAddressesLimit 2
#define RASADP_FailedConnectionTimeout 3
#define RASADP_ConnectionQueryTimeout 4
#define RASEAPF_NonInteractive 0x00000002
#define RASEAPF_Logon 0x00000004
#define RASEAPF_Preview 0x00000008
#define RASEAPUSERIDENTITYA struct tagRASEAPUSERIDENTITYA
  struct tagRASEAPUSERIDENTITYA {
    CHAR szUserName[256 + 1 ];
    DWORD dwSizeofEapInfo;
    BYTE pbEapInfo[1 ];
  };
#define RASEAPUSERIDENTITYW struct tagRASEAPUSERIDENTITYW
  struct tagRASEAPUSERIDENTITYW {
    WCHAR szUserName[256 + 1 ];
    DWORD dwSizeofEapInfo;
    BYTE pbEapInfo[1 ];
  };
#define RASEAPUSERIDENTITY __MINGW_NAME_AW(RASEAPUSERIDENTITY)
#define LPRASEAPUSERIDENTITYW RASEAPUSERIDENTITYW*
#define LPRASEAPUSERIDENTITYA RASEAPUSERIDENTITYA*
  typedef DWORD (__attribute__((__stdcall__)) *PFNRASGETBUFFER) (PBYTE *ppBuffer,PDWORD pdwSize);
  typedef DWORD (__attribute__((__stdcall__)) *PFNRASFREEBUFFER) (PBYTE pBufer);
  typedef DWORD (__attribute__((__stdcall__)) *PFNRASSENDBUFFER) (HANDLE hPort,PBYTE pBuffer,DWORD dwSize);
  typedef DWORD (__attribute__((__stdcall__)) *PFNRASRECEIVEBUFFER) (HANDLE hPort,PBYTE pBuffer,PDWORD pdwSize,DWORD dwTimeOut,HANDLE hEvent);
  typedef DWORD (__attribute__((__stdcall__)) *PFNRASRETRIEVEBUFFER) (HANDLE hPort,PBYTE pBuffer,PDWORD pdwSize);
  typedef DWORD (__attribute__((__stdcall__)) *RasCustomScriptExecuteFn) (HANDLE hPort,LPCWSTR lpszPhonebook,LPCWSTR lpszEntryName,PFNRASGETBUFFER pfnRasGetBuffer,PFNRASFREEBUFFER pfnRasFreeBuffer,PFNRASSENDBUFFER pfnRasSendBuffer,PFNRASRECEIVEBUFFER pfnRasReceiveBuffer,PFNRASRETRIEVEBUFFER pfnRasRetrieveBuffer,HWND hWnd,struct tagRASDIALPARAMSA *pRasDialParams,PVOID pvReserved);
#define RASCOMMSETTINGS struct tagRASCOMMSETTINGS
  struct tagRASCOMMSETTINGS {
    DWORD dwSize;
    BYTE bParity;
    BYTE bStop;
    BYTE bByteSize;
    BYTE bAlign;
  };
  typedef DWORD (__attribute__((__stdcall__)) *PFNRASSETCOMMSETTINGS) (HANDLE hPort,struct tagRASCOMMSETTINGS *pRasCommSettings,PVOID pvReserved);
#define RASCUSTOMSCRIPTEXTENSIONS struct tagRASCUSTOMSCRIPTEXTENSIONS
  struct tagRASCUSTOMSCRIPTEXTENSIONS {
    DWORD dwSize;
    PFNRASSETCOMMSETTINGS pfnRasSetCommSettings;
  };
  DWORD __attribute__((__stdcall__)) RasDialA(struct tagRASDIALEXTENSIONS*,LPCSTR,struct tagRASDIALPARAMSA*,DWORD,LPVOID,HRASCONN*);
  DWORD __attribute__((__stdcall__)) RasDialW(struct tagRASDIALEXTENSIONS*,LPCWSTR,struct tagRASDIALPARAMSW*,DWORD,LPVOID,HRASCONN*);
  DWORD __attribute__((__stdcall__)) RasEnumConnectionsA(struct tagRASCONNA*,LPDWORD,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasEnumConnectionsW(struct tagRASCONNW*,LPDWORD,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasEnumEntriesA(LPCSTR,LPCSTR,struct tagRASENTRYNAMEA*,LPDWORD,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasEnumEntriesW(LPCWSTR,LPCWSTR,struct tagRASENTRYNAMEW*,LPDWORD,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasGetConnectStatusA(HRASCONN,struct tagRASCONNSTATUSA*);
  DWORD __attribute__((__stdcall__)) RasGetConnectStatusW(HRASCONN,struct tagRASCONNSTATUSW*);
  DWORD __attribute__((__stdcall__)) RasGetErrorStringA(UINT,LPSTR,DWORD);
  DWORD __attribute__((__stdcall__)) RasGetErrorStringW(UINT,LPWSTR,DWORD);
  DWORD __attribute__((__stdcall__)) RasHangUpA(HRASCONN);
  DWORD __attribute__((__stdcall__)) RasHangUpW(HRASCONN);
  DWORD __attribute__((__stdcall__)) RasGetProjectionInfoA(HRASCONN,enum tagRASPROJECTION,LPVOID,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasGetProjectionInfoW(HRASCONN,enum tagRASPROJECTION,LPVOID,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasCreatePhonebookEntryA(HWND,LPCSTR);
  DWORD __attribute__((__stdcall__)) RasCreatePhonebookEntryW(HWND,LPCWSTR);
  DWORD __attribute__((__stdcall__)) RasEditPhonebookEntryA(HWND,LPCSTR,LPCSTR);
  DWORD __attribute__((__stdcall__)) RasEditPhonebookEntryW(HWND,LPCWSTR,LPCWSTR);
  DWORD __attribute__((__stdcall__)) RasSetEntryDialParamsA(LPCSTR,struct tagRASDIALPARAMSA*,WINBOOL);
  DWORD __attribute__((__stdcall__)) RasSetEntryDialParamsW(LPCWSTR,struct tagRASDIALPARAMSW*,WINBOOL);
  DWORD __attribute__((__stdcall__)) RasGetEntryDialParamsA(LPCSTR,struct tagRASDIALPARAMSA*,LPBOOL);
  DWORD __attribute__((__stdcall__)) RasGetEntryDialParamsW(LPCWSTR,struct tagRASDIALPARAMSW*,LPBOOL);
  DWORD __attribute__((__stdcall__)) RasEnumDevicesA(struct tagRASDEVINFOA*,LPDWORD,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasEnumDevicesW(struct tagRASDEVINFOW*,LPDWORD,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasGetCountryInfoA(struct RASCTRYINFO*,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasGetCountryInfoW(struct RASCTRYINFO*,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasGetEntryPropertiesA(LPCSTR,LPCSTR,struct tagRASENTRYA*,LPDWORD,LPBYTE,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasGetEntryPropertiesW(LPCWSTR,LPCWSTR,struct tagRASENTRYW*,LPDWORD,LPBYTE,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasSetEntryPropertiesA(LPCSTR,LPCSTR,struct tagRASENTRYA*,DWORD,LPBYTE,DWORD);
  DWORD __attribute__((__stdcall__)) RasSetEntryPropertiesW(LPCWSTR,LPCWSTR,struct tagRASENTRYW*,DWORD,LPBYTE,DWORD);
  DWORD __attribute__((__stdcall__)) RasRenameEntryA(LPCSTR,LPCSTR,LPCSTR);
  DWORD __attribute__((__stdcall__)) RasRenameEntryW(LPCWSTR,LPCWSTR,LPCWSTR);
  DWORD __attribute__((__stdcall__)) RasDeleteEntryA(LPCSTR,LPCSTR);
  DWORD __attribute__((__stdcall__)) RasDeleteEntryW(LPCWSTR,LPCWSTR);
  DWORD __attribute__((__stdcall__)) RasValidateEntryNameA(LPCSTR,LPCSTR);
  DWORD __attribute__((__stdcall__)) RasValidateEntryNameW(LPCWSTR,LPCWSTR);
  DWORD __attribute__((__stdcall__)) RasConnectionNotificationA(HRASCONN,HANDLE,DWORD);
  DWORD __attribute__((__stdcall__)) RasConnectionNotificationW(HRASCONN,HANDLE,DWORD);
  DWORD __attribute__((__stdcall__)) RasGetSubEntryHandleA(HRASCONN,DWORD,HRASCONN*);
  DWORD __attribute__((__stdcall__)) RasGetSubEntryHandleW(HRASCONN,DWORD,HRASCONN*);
  DWORD __attribute__((__stdcall__)) RasGetCredentialsA(LPCSTR,LPCSTR,struct tagRASCREDENTIALSA*);
  DWORD __attribute__((__stdcall__)) RasGetCredentialsW(LPCWSTR,LPCWSTR,struct tagRASCREDENTIALSW*);
  DWORD __attribute__((__stdcall__)) RasSetCredentialsA(LPCSTR,LPCSTR,struct tagRASCREDENTIALSA*,WINBOOL);
  DWORD __attribute__((__stdcall__)) RasSetCredentialsW(LPCWSTR,LPCWSTR,struct tagRASCREDENTIALSW*,WINBOOL);
  DWORD __attribute__((__stdcall__)) RasGetSubEntryPropertiesA(LPCSTR,LPCSTR,DWORD,struct tagRASSUBENTRYA*,LPDWORD,LPBYTE,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasGetSubEntryPropertiesW(LPCWSTR,LPCWSTR,DWORD,struct tagRASSUBENTRYW*,LPDWORD,LPBYTE,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasSetSubEntryPropertiesA(LPCSTR,LPCSTR,DWORD,struct tagRASSUBENTRYA*,DWORD,LPBYTE,DWORD);
  DWORD __attribute__((__stdcall__)) RasSetSubEntryPropertiesW(LPCWSTR,LPCWSTR,DWORD,struct tagRASSUBENTRYW*,DWORD,LPBYTE,DWORD);
  DWORD __attribute__((__stdcall__)) RasGetAutodialAddressA(LPCSTR,LPDWORD,struct tagRASAUTODIALENTRYA*,LPDWORD,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasGetAutodialAddressW(LPCWSTR,LPDWORD,struct tagRASAUTODIALENTRYW*,LPDWORD,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasSetAutodialAddressA(LPCSTR,DWORD,struct tagRASAUTODIALENTRYA*,DWORD,DWORD);
  DWORD __attribute__((__stdcall__)) RasSetAutodialAddressW(LPCWSTR,DWORD,struct tagRASAUTODIALENTRYW*,DWORD,DWORD);
  DWORD __attribute__((__stdcall__)) RasEnumAutodialAddressesA(LPSTR *,LPDWORD,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasEnumAutodialAddressesW(LPWSTR *,LPDWORD,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasGetAutodialEnableA(DWORD,LPBOOL);
  DWORD __attribute__((__stdcall__)) RasGetAutodialEnableW(DWORD,LPBOOL);
  DWORD __attribute__((__stdcall__)) RasSetAutodialEnableA(DWORD,WINBOOL);
  DWORD __attribute__((__stdcall__)) RasSetAutodialEnableW(DWORD,WINBOOL);
  DWORD __attribute__((__stdcall__)) RasGetAutodialParamA(DWORD,LPVOID,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasGetAutodialParamW(DWORD,LPVOID,LPDWORD);
  DWORD __attribute__((__stdcall__)) RasSetAutodialParamA(DWORD,LPVOID,DWORD);
  DWORD __attribute__((__stdcall__)) RasSetAutodialParamW(DWORD,LPVOID,DWORD);
  typedef struct _RAS_STATS {
    DWORD dwSize;
    DWORD dwBytesXmited;
    DWORD dwBytesRcved;
    DWORD dwFramesXmited;
    DWORD dwFramesRcved;
    DWORD dwCrcErr;
    DWORD dwTimeoutErr;
    DWORD dwAlignmentErr;
    DWORD dwHardwareOverrunErr;
    DWORD dwFramingErr;
    DWORD dwBufferOverrunErr;
    DWORD dwCompressionRatioIn;
    DWORD dwCompressionRatioOut;
    DWORD dwBps;
    DWORD dwConnectDuration;
  } RAS_STATS,*PRAS_STATS;
  typedef DWORD (__attribute__((__stdcall__)) *RasCustomHangUpFn)(HRASCONN hRasConn);
  typedef DWORD (__attribute__((__stdcall__)) *RasCustomDialFn)(HINSTANCE hInstDll,struct tagRASDIALEXTENSIONS* lpRasDialExtensions,LPCWSTR lpszPhonebook,struct tagRASDIALPARAMSA* lpRasDialParams,DWORD dwNotifierType,LPVOID lpvNotifier,HRASCONN* lphRasConn,DWORD dwFlags);
  typedef DWORD (__attribute__((__stdcall__)) *RasCustomDeleteEntryNotifyFn)(LPCWSTR lpszPhonebook,LPCWSTR lpszEntry,DWORD dwFlags);
#define RCD_SingleUser 0
#define RCD_AllUsers 0x00000001
#define RCD_Eap 0x00000002
#define RCD_Logon 0x00000004
  DWORD __attribute__((__stdcall__)) RasInvokeEapUI(HRASCONN,DWORD,struct tagRASDIALEXTENSIONS*,HWND);
  DWORD __attribute__((__stdcall__)) RasGetLinkStatistics(HRASCONN hRasConn,DWORD dwSubEntry,RAS_STATS *lpStatistics);
  DWORD __attribute__((__stdcall__)) RasGetConnectionStatistics(HRASCONN hRasConn,RAS_STATS *lpStatistics);
  DWORD __attribute__((__stdcall__)) RasClearLinkStatistics(HRASCONN hRasConn,DWORD dwSubEntry);
  DWORD __attribute__((__stdcall__)) RasClearConnectionStatistics(HRASCONN hRasConn);
  DWORD __attribute__((__stdcall__)) RasGetEapUserDataA(HANDLE hToken,LPCSTR pszPhonebook,LPCSTR pszEntry,BYTE *pbEapData,DWORD *pdwSizeofEapData);
  DWORD __attribute__((__stdcall__)) RasGetEapUserDataW(HANDLE hToken,LPCWSTR pszPhonebook,LPCWSTR pszEntry,BYTE *pbEapData,DWORD *pdwSizeofEapData);
  DWORD __attribute__((__stdcall__)) RasSetEapUserDataA(HANDLE hToken,LPCSTR pszPhonebook,LPCSTR pszEntry,BYTE *pbEapData,DWORD dwSizeofEapData);
  DWORD __attribute__((__stdcall__)) RasSetEapUserDataW(HANDLE hToken,LPCWSTR pszPhonebook,LPCWSTR pszEntry,BYTE *pbEapData,DWORD dwSizeofEapData);
  DWORD __attribute__((__stdcall__)) RasGetCustomAuthDataA(LPCSTR pszPhonebook,LPCSTR pszEntry,BYTE *pbCustomAuthData,DWORD *pdwSizeofCustomAuthData);
  DWORD __attribute__((__stdcall__)) RasGetCustomAuthDataW(LPCWSTR pszPhonebook,LPCWSTR pszEntry,BYTE *pbCustomAuthData,DWORD *pdwSizeofCustomAuthData);
  DWORD __attribute__((__stdcall__)) RasSetCustomAuthDataA(LPCSTR pszPhonebook,LPCSTR pszEntry,BYTE *pbCustomAuthData,DWORD dwSizeofCustomAuthData);
  DWORD __attribute__((__stdcall__)) RasSetCustomAuthDataW(LPCWSTR pszPhonebook,LPCWSTR pszEntry,BYTE *pbCustomAuthData,DWORD dwSizeofCustomAuthData);
  DWORD __attribute__((__stdcall__)) RasGetEapUserIdentityW(LPCWSTR pszPhonebook,LPCWSTR pszEntry,DWORD dwFlags,HWND hwnd,struct tagRASEAPUSERIDENTITYW* *ppRasEapUserIdentity);
  DWORD __attribute__((__stdcall__)) RasGetEapUserIdentityA(LPCSTR pszPhonebook,LPCSTR pszEntry,DWORD dwFlags,HWND hwnd,struct tagRASEAPUSERIDENTITYA* *ppRasEapUserIdentity);
  void __attribute__((__stdcall__)) RasFreeEapUserIdentityW(struct tagRASEAPUSERIDENTITYW* pRasEapUserIdentity);
  void __attribute__((__stdcall__)) RasFreeEapUserIdentityA(struct tagRASEAPUSERIDENTITYA* pRasEapUserIdentity);
  DWORD __attribute__((__stdcall__)) RasDeleteSubEntryA(LPCSTR pszPhonebook,LPCSTR pszEntry,DWORD dwSubentryId);
  DWORD __attribute__((__stdcall__)) RasDeleteSubEntryW(LPCWSTR pszPhonebook,LPCWSTR pszEntry,DWORD dwSubEntryId);
#define RasDial __MINGW_NAME_AW(RasDial)
#define RasEnumConnections __MINGW_NAME_AW(RasEnumConnections)
#define RasEnumEntries __MINGW_NAME_AW(RasEnumEntries)
#define RasGetConnectStatus __MINGW_NAME_AW(RasGetConnectStatus)
#define RasGetErrorString __MINGW_NAME_AW(RasGetErrorString)
#define RasHangUp __MINGW_NAME_AW(RasHangUp)
#define RasGetProjectionInfo __MINGW_NAME_AW(RasGetProjectionInfo)
#define RasCreatePhonebookEntry __MINGW_NAME_AW(RasCreatePhonebookEntry)
#define RasEditPhonebookEntry __MINGW_NAME_AW(RasEditPhonebookEntry)
#define RasSetEntryDialParams __MINGW_NAME_AW(RasSetEntryDialParams)
#define RasGetEntryDialParams __MINGW_NAME_AW(RasGetEntryDialParams)
#define RasEnumDevices __MINGW_NAME_AW(RasEnumDevices)
#define RasGetCountryInfo __MINGW_NAME_AW(RasGetCountryInfo)
#define RasGetEntryProperties __MINGW_NAME_AW(RasGetEntryProperties)
#define RasSetEntryProperties __MINGW_NAME_AW(RasSetEntryProperties)
#define RasRenameEntry __MINGW_NAME_AW(RasRenameEntry)
#define RasDeleteEntry __MINGW_NAME_AW(RasDeleteEntry)
#define RasValidateEntryName __MINGW_NAME_AW(RasValidateEntryName)
#define RasGetSubEntryHandle __MINGW_NAME_AW(RasGetSubEntryHandle)
#define RasConnectionNotification __MINGW_NAME_AW(RasConnectionNotification)
#define RasGetSubEntryProperties __MINGW_NAME_AW(RasGetSubEntryProperties)
#define RasSetSubEntryProperties __MINGW_NAME_AW(RasSetSubEntryProperties)
#define RasGetCredentials __MINGW_NAME_AW(RasGetCredentials)
#define RasSetCredentials __MINGW_NAME_AW(RasSetCredentials)
#define RasGetAutodialAddress __MINGW_NAME_AW(RasGetAutodialAddress)
#define RasSetAutodialAddress __MINGW_NAME_AW(RasSetAutodialAddress)
#define RasEnumAutodialAddresses __MINGW_NAME_AW(RasEnumAutodialAddresses)
#define RasGetAutodialEnable __MINGW_NAME_AW(RasGetAutodialEnable)
#define RasSetAutodialEnable __MINGW_NAME_AW(RasSetAutodialEnable)
#define RasGetAutodialParam __MINGW_NAME_AW(RasGetAutodialParam)
#define RasSetAutodialParam __MINGW_NAME_AW(RasSetAutodialParam)
#define RasGetEapUserData __MINGW_NAME_AW(RasGetEapUserData)
#define RasSetEapUserData __MINGW_NAME_AW(RasSetEapUserData)
#define RasGetCustomAuthData __MINGW_NAME_AW(RasGetCustomAuthData)
#define RasSetCustomAuthData __MINGW_NAME_AW(RasSetCustomAuthData)
#define RasGetEapUserIdentity __MINGW_NAME_AW(RasGetEapUserIdentity)
#define RasFreeEapUserIdentity __MINGW_NAME_AW(RasFreeEapUserIdentity)
#define RasDeleteSubEntry __MINGW_NAME_AW(RasDeleteSubEntry)
typedef struct _tagRasNapState {
  DWORD dwSize;
  DWORD dwFlags;
  IsolationState isolationState;
  ProbationTime probationTime;
} RASNAPSTATE, *LPRASNAPSTATE;
typedef struct _RASPPPIPV6 {
  DWORD dwSize;
  DWORD dwError;
  BYTE bLocalInterfaceIdentifier[8];
  BYTE bPeerInterfaceIdentifier[8];
  BYTE bLocalCompressionProtocol[2];
  BYTE bPeerCompressionProtocol[2];
} RASPPPIPV6, *LPRASPPPIPV6;
DWORD rasgetnapstatus(
  HRASCONN hRasConn,
  LPRASNAPSTATE pNapState
);
#pragma pack(pop)
#define RRAS_SERVICE_NAME TEXT("RemoteAccess")
#define PID_IPX 0x0000002B
#define PID_IP 0x00000021
#define PID_NBF 0x0000003F
#define PID_ATALK 0x00000029
#define MAX_INTERFACE_NAME_LEN 256
#define MAX_TRANSPORT_NAME_LEN 40
#define MAX_MEDIA_NAME 16
#define MAX_PORT_NAME 16
#define MAX_DEVICE_NAME 128
#define MAX_PHONE_NUMBER_LEN 128
#define MAX_DEVICETYPE_NAME 16
  typedef enum _ROUTER_INTERFACE_TYPE {
    ROUTER_IF_TYPE_CLIENT,ROUTER_IF_TYPE_HOME_ROUTER,ROUTER_IF_TYPE_FULL_ROUTER,ROUTER_IF_TYPE_DEDICATED,ROUTER_IF_TYPE_INTERNAL,
    ROUTER_IF_TYPE_LOOPBACK,ROUTER_IF_TYPE_TUNNEL1,ROUTER_IF_TYPE_DIALOUT
  } ROUTER_INTERFACE_TYPE;
  typedef enum _ROUTER_CONNECTION_STATE {
    ROUTER_IF_STATE_UNREACHABLE,ROUTER_IF_STATE_DISCONNECTED,ROUTER_IF_STATE_CONNECTING,ROUTER_IF_STATE_CONNECTED
  } ROUTER_CONNECTION_STATE;
#define MPR_INTERFACE_OUT_OF_RESOURCES 0x00000001
#define MPR_INTERFACE_ADMIN_DISABLED 0x00000002
#define MPR_INTERFACE_CONNECTION_FAILURE 0x00000004
#define MPR_INTERFACE_SERVICE_PAUSED 0x00000008
#define MPR_INTERFACE_DIALOUT_HOURS_RESTRICTION 0x00000010
#define MPR_INTERFACE_NO_MEDIA_SENSE 0x00000020
#define MPR_INTERFACE_NO_DEVICE 0x00000040
  typedef struct _MPR_INTERFACE_0 {
    WCHAR wszInterfaceName[256 +1];
    HANDLE hInterface;
    WINBOOL fEnabled;
    ROUTER_INTERFACE_TYPE dwIfType;
    ROUTER_CONNECTION_STATE dwConnectionState;
    DWORD fUnReachabilityReasons;
    DWORD dwLastError;
  } MPR_INTERFACE_0,*PMPR_INTERFACE_0;
  typedef struct _MPR_IPINIP_INTERFACE_0 {
    WCHAR wszFriendlyName[256 +1];
    GUID Guid;
  } MPR_IPINIP_INTERFACE_0,*PMPR_IPINIP_INTERFACE_0;
  typedef struct _MPR_INTERFACE_1 {
    WCHAR wszInterfaceName[256 +1];
    HANDLE hInterface;
    WINBOOL fEnabled;
    ROUTER_INTERFACE_TYPE dwIfType;
    ROUTER_CONNECTION_STATE dwConnectionState;
    DWORD fUnReachabilityReasons;
    DWORD dwLastError;
    LPWSTR lpwsDialoutHoursRestriction;
  } MPR_INTERFACE_1,*PMPR_INTERFACE_1;
#define MPR_MaxDeviceType RAS_MaxDeviceType
#define MPR_MaxPhoneNumber RAS_MaxPhoneNumber
#define MPR_MaxIpAddress RAS_MaxIpAddress
#define MPR_MaxIpxAddress RAS_MaxIpxAddress
#define MPR_MaxEntryName RAS_MaxEntryName
#define MPR_MaxDeviceName RAS_MaxDeviceName
#define MPR_MaxCallbackNumber RAS_MaxCallbackNumber
#define MPR_MaxAreaCode RAS_MaxAreaCode
#define MPR_MaxPadType RAS_MaxPadType
#define MPR_MaxX25Address RAS_MaxX25Address
#define MPR_MaxFacilities RAS_MaxFacilities
#define MPR_MaxUserData RAS_MaxUserData
#define MPRIO_SpecificIpAddr RASEO_SpecificIpAddr
#define MPRIO_SpecificNameServers RASEO_SpecificNameServers
#define MPRIO_IpHeaderCompression RASEO_IpHeaderCompression
#define MPRIO_RemoteDefaultGateway RASEO_RemoteDefaultGateway
#define MPRIO_DisableLcpExtensions RASEO_DisableLcpExtensions
#define MPRIO_SwCompression RASEO_SwCompression
#define MPRIO_RequireEncryptedPw RASEO_RequireEncryptedPw
#define MPRIO_RequireMsEncryptedPw RASEO_RequireMsEncryptedPw
#define MPRIO_RequireDataEncryption RASEO_RequireDataEncryption
#define MPRIO_NetworkLogon RASEO_NetworkLogon
#define MPRIO_PromoteAlternates RASEO_PromoteAlternates
#define MPRIO_SecureLocalFiles RASEO_SecureLocalFiles
#define MPRIO_RequireEAP RASEO_RequireEAP
#define MPRIO_RequirePAP RASEO_RequirePAP
#define MPRIO_RequireSPAP RASEO_RequireSPAP
#define MPRIO_SharedPhoneNumbers RASEO_SharedPhoneNumbers
#define MPRIO_RequireCHAP RASEO_RequireCHAP
#define MPRIO_RequireMsCHAP RASEO_RequireMsCHAP
#define MPRIO_RequireMsCHAP2 RASEO_RequireMsCHAP2
#define MPRIO_IpSecPreSharedKey 0x80000000
#define MPRNP_Ipx RASNP_Ipx
#define MPRNP_Ip RASNP_Ip
#define MPRDT_Modem RASDT_Modem
#define MPRDT_Isdn RASDT_Isdn
#define MPRDT_X25 RASDT_X25
#define MPRDT_Vpn RASDT_Vpn
#define MPRDT_Pad RASDT_Pad
#define MPRDT_Generic RASDT_Generic
#define MPRDT_Serial RASDT_Serial
#define MPRDT_FrameRelay RASDT_FrameRelay
#define MPRDT_Atm RASDT_Atm
#define MPRDT_Sonet RASDT_Sonet
#define MPRDT_SW56 RASDT_SW56
#define MPRDT_Irda RASDT_Irda
#define MPRDT_Parallel RASDT_Parallel
#define MPRET_Phone RASET_Phone
#define MPRET_Vpn RASET_Vpn
#define MPRET_Direct RASET_Direct
#define MPRDM_DialFirst 0
#define MPRDM_DialAll RASEDM_DialAll
#define MPRDM_DialAsNeeded RASEDM_DialAsNeeded
#define MPRIDS_Disabled RASIDS_Disabled
#define MPRIDS_UseGlobalValue RASIDS_UseGlobalValue
#define MPR_ET_None ET_None
#define MPR_ET_Require ET_Require
#define MPR_ET_RequireMax ET_RequireMax
#define MPR_ET_Optional ET_Optional
#define MPR_VS_Default VS_Default
#define MPR_VS_PptpOnly VS_PptpOnly
#define MPR_VS_PptpFirst VS_PptpFirst
#define MPR_VS_L2tpOnly VS_L2tpOnly
#define MPR_VS_L2tpFirst VS_L2tpFirst
  typedef struct _MPR_INTERFACE_2 {
    WCHAR wszInterfaceName[256 +1];
    HANDLE hInterface;
    WINBOOL fEnabled;
    ROUTER_INTERFACE_TYPE dwIfType;
    ROUTER_CONNECTION_STATE dwConnectionState;
    DWORD fUnReachabilityReasons;
    DWORD dwLastError;
    DWORD dwfOptions;
    WCHAR szLocalPhoneNumber[128 + 1 ];
    PWCHAR szAlternates;
    DWORD ipaddr;
    DWORD ipaddrDns;
    DWORD ipaddrDnsAlt;
    DWORD ipaddrWins;
    DWORD ipaddrWinsAlt;
    DWORD dwfNetProtocols;
    WCHAR szDeviceType[16 + 1 ];
    WCHAR szDeviceName[128 + 1 ];
    WCHAR szX25PadType[32 + 1 ];
    WCHAR szX25Address[200 + 1 ];
    WCHAR szX25Facilities[200 + 1 ];
    WCHAR szX25UserData[200 + 1 ];
    DWORD dwChannels;
    DWORD dwSubEntries;
    DWORD dwDialMode;
    DWORD dwDialExtraPercent;
    DWORD dwDialExtraSampleSeconds;
    DWORD dwHangUpExtraPercent;
    DWORD dwHangUpExtraSampleSeconds;
    DWORD dwIdleDisconnectSeconds;
    DWORD dwType;
    DWORD dwEncryptionType;
    DWORD dwCustomAuthKey;
    DWORD dwCustomAuthDataSize;
    LPBYTE lpbCustomAuthData;
    GUID guidId;
    DWORD dwVpnStrategy;
  } MPR_INTERFACE_2,*PMPR_INTERFACE_2;
  typedef struct _MPR_INTERFACE_3 {
    WCHAR wszInterfaceName[256 +1];
    HANDLE hInterface;
    WINBOOL fEnabled;
    ROUTER_INTERFACE_TYPE dwIfType;
    ROUTER_CONNECTION_STATE dwConnectionState;
    DWORD fUnReachabilityReasons;
    DWORD dwLastError;
    DWORD dwfOptions;
    WCHAR szLocalPhoneNumber[128 + 1];
    PWCHAR szAlternates;
    DWORD ipaddr;
    DWORD ipaddrDns;
    DWORD ipaddrDnsAlt;
    DWORD ipaddrWins;
    DWORD ipaddrWinsAlt;
    DWORD dwfNetProtocols;
    WCHAR szDeviceType[16 + 1];
    WCHAR szDeviceName[128 + 1];
    WCHAR szX25PadType[32 + 1];
    WCHAR szX25Address[200 + 1];
    WCHAR szX25Facilities[200 + 1];
    WCHAR szX25UserData[200 + 1];
    DWORD dwChannels;
    DWORD dwSubEntries;
    DWORD dwDialMode;
    DWORD dwDialExtraPercent;
    DWORD dwDialExtraSampleSeconds;
    DWORD dwHangUpExtraPercent;
    DWORD dwHangUpExtraSampleSeconds;
    DWORD dwIdleDisconnectSeconds;
    DWORD dwType;
    DWORD dwEncryptionType;
    DWORD dwCustomAuthKey;
    DWORD dwCustomAuthDataSize;
    LPBYTE lpbCustomAuthData;
    GUID guidId;
    DWORD dwVpnStrategy;
    ULONG AddressCount;
    IN6_ADDR ipv6addrDns;
    IN6_ADDR ipv6addrDnsAlt;
    IN6_ADDR * ipv6addr;
  } MPR_INTERFACE_3, *PMPR_INTERFACE_3;
  typedef struct _MPR_DEVICE_0 {
    WCHAR szDeviceType[16 + 1 ];
    WCHAR szDeviceName[128 + 1 ];
  } MPR_DEVICE_0,*PMPR_DEVICE_0;
  typedef struct _MPR_DEVICE_1 {
    WCHAR szDeviceType[16 + 1 ];
    WCHAR szDeviceName[128 + 1 ];
    WCHAR szLocalPhoneNumber[128 + 1 ];
    PWCHAR szAlternates;
  } MPR_DEVICE_1,*PMPR_DEVICE_1;
  typedef struct _MPR_CREDENTIALSEX_0 {
    DWORD dwSize;
    LPBYTE lpbCredentialsInfo;
  } MPR_CREDENTIALSEX_0,*PMPR_CREDENTIALSEX_0;
  typedef struct _MPR_CREDENTIALSEX_1 {
    DWORD dwSize;
    LPBYTE lpbCredentialsInfo;
  } MPR_CREDENTIALSEX_1,*PMPR_CREDENTIALSEX_1;
  typedef struct _MPR_TRANSPORT_0 {
    DWORD dwTransportId;
    HANDLE hTransport;
    WCHAR wszTransportName[40 +1];
  } MPR_TRANSPORT_0,*PMPR_TRANSPORT_0;
  typedef struct _MPR_IFTRANSPORT_0
  {
    DWORD dwTransportId;
    HANDLE hIfTransport;
    WCHAR wszIfTransportName[40 +1];
  }
  MPR_IFTRANSPORT_0,*PMPR_IFTRANSPORT_0;
  typedef struct _MPR_SERVER_0
  {
    WINBOOL fLanOnlyMode;
    DWORD dwUpTime;
    DWORD dwTotalPorts;
    DWORD dwPortsInUse;
  }
  MPR_SERVER_0,*PMPR_SERVER_0;
#define MPR_ENABLE_RAS_ON_DEVICE 0x00000001
#define MPR_ENABLE_ROUTING_ON_DEVICE 0x00000002
  typedef struct _MPR_SERVER_1 {
    DWORD dwNumPptpPorts;
    DWORD dwPptpPortFlags;
    DWORD dwNumL2tpPorts;
    DWORD dwL2tpPortFlags;
  } MPR_SERVER_1,*PMPR_SERVER_1;
  typedef enum _RAS_PORT_CONDITION {
    RAS_PORT_NON_OPERATIONAL,RAS_PORT_DISCONNECTED,RAS_PORT_CALLING_BACK,RAS_PORT_LISTENING,RAS_PORT_AUTHENTICATING,RAS_PORT_AUTHENTICATED,
    RAS_PORT_INITIALIZING
  } RAS_PORT_CONDITION;
  typedef enum _RAS_HARDWARE_CONDITION {
    RAS_HARDWARE_OPERATIONAL,RAS_HARDWARE_FAILURE
  } RAS_HARDWARE_CONDITION;
  typedef struct _RAS_PORT_0 {
    HANDLE hPort;
    HANDLE hConnection;
    RAS_PORT_CONDITION dwPortCondition;
    DWORD dwTotalNumberOfCalls;
    DWORD dwConnectDuration;
    WCHAR wszPortName[16 + 1 ];
    WCHAR wszMediaName[16 + 1 ];
    WCHAR wszDeviceName[128 + 1 ];
    WCHAR wszDeviceType[16 + 1 ];
  } RAS_PORT_0,*PRAS_PORT_0;
  typedef struct _RAS_PORT_1 {
    HANDLE hPort;
    HANDLE hConnection;
    RAS_HARDWARE_CONDITION dwHardwareCondition;
    DWORD dwLineSpeed;
    DWORD dwBytesXmited;
    DWORD dwBytesRcved;
    DWORD dwFramesXmited;
    DWORD dwFramesRcved;
    DWORD dwCrcErr;
    DWORD dwTimeoutErr;
    DWORD dwAlignmentErr;
    DWORD dwHardwareOverrunErr;
    DWORD dwFramingErr;
    DWORD dwBufferOverrunErr;
    DWORD dwCompressionRatioIn;
    DWORD dwCompressionRatioOut;
  } RAS_PORT_1,*PRAS_PORT_1;
#define IPADDRESSLEN 15
#define IPXADDRESSLEN 22
#define ATADDRESSLEN 32
#define MAXIPADRESSLEN 64
  typedef struct _PPP_NBFCP_INFO {
    DWORD dwError;
    WCHAR wszWksta[16 + 1 ];
  } PPP_NBFCP_INFO;
  typedef struct _PPP_IPCP_INFO {
    DWORD dwError;
    WCHAR wszAddress[15 + 1 ];
    WCHAR wszRemoteAddress[15 + 1 ];
  } PPP_IPCP_INFO;
#define PPP_IPCP_VJ 0x00000001
  typedef struct _PPP_IPCP_INFO2 {
    DWORD dwError;
    WCHAR wszAddress[15 + 1 ];
    WCHAR wszRemoteAddress[15 + 1 ];
    DWORD dwOptions;
    DWORD dwRemoteOptions;
  } PPP_IPCP_INFO2;
  typedef struct _PPP_IPXCP_INFO {
    DWORD dwError;
    WCHAR wszAddress[22 + 1 ];
  } PPP_IPXCP_INFO;
  typedef struct _PPP_ATCP_INFO {
    DWORD dwError;
    WCHAR wszAddress[32 + 1 ];
  } PPP_ATCP_INFO;
  typedef struct _PPP_INFO {
    PPP_NBFCP_INFO nbf;
    PPP_IPCP_INFO ip;
    PPP_IPXCP_INFO ipx;
    PPP_ATCP_INFO at;
  } PPP_INFO;
#define RASCCPCA_MPPC 0x00000006
#define RASCCPCA_STAC 0x00000005
#define PPP_CCP_COMPRESSION 0x00000001
#define PPP_CCP_ENCRYPTION40BITOLD 0x00000010
#define PPP_CCP_ENCRYPTION40BIT 0x00000020
#define PPP_CCP_ENCRYPTION128BIT 0x00000040
#define PPP_CCP_ENCRYPTION56BIT 0x00000080
#define PPP_CCP_HISTORYLESS 0x01000000
  typedef struct _PPP_CCP_INFO {
    DWORD dwError;
    DWORD dwCompressionAlgorithm;
    DWORD dwOptions;
    DWORD dwRemoteCompressionAlgorithm;
    DWORD dwRemoteOptions;
  } PPP_CCP_INFO;
#define PPP_LCP_PAP 0xC023
#define PPP_LCP_SPAP 0xC027
#define PPP_LCP_CHAP 0xC223
#define PPP_LCP_EAP 0xC227
#define PPP_LCP_CHAP_MD5 0x05
#define PPP_LCP_CHAP_MS 0x80
#define PPP_LCP_CHAP_MSV2 0x81
#define PPP_LCP_MULTILINK_FRAMING 0x00000001
#define PPP_LCP_PFC 0x00000002
#define PPP_LCP_ACFC 0x00000004
#define PPP_LCP_SSHF 0x00000008
#define PPP_LCP_DES_56 0x00000010
#define PPP_LCP_3_DES 0x00000020
  typedef struct _PPP_LCP_INFO {
    DWORD dwError;
    DWORD dwAuthenticationProtocol;
    DWORD dwAuthenticationData;
    DWORD dwRemoteAuthenticationProtocol;
    DWORD dwRemoteAuthenticationData;
    DWORD dwTerminateReason;
    DWORD dwRemoteTerminateReason;
    DWORD dwOptions;
    DWORD dwRemoteOptions;
    DWORD dwEapTypeId;
    DWORD dwRemoteEapTypeId;
  } PPP_LCP_INFO;
  typedef struct _PPP_INFO_2 {
    PPP_NBFCP_INFO nbf;
    PPP_IPCP_INFO2 ip;
    PPP_IPXCP_INFO ipx;
    PPP_ATCP_INFO at;
    PPP_CCP_INFO ccp;
    PPP_LCP_INFO lcp;
  } PPP_INFO_2;
#define RAS_FLAGS_PPP_CONNECTION 0x00000001
#define RAS_FLAGS_MESSENGER_PRESENT 0x00000002
#define RAS_FLAGS_QUARANTINE_PRESENT 0x00000008
  typedef struct _RAS_CONNECTION_0 {
    HANDLE hConnection;
    HANDLE hInterface;
    DWORD dwConnectDuration;
    ROUTER_INTERFACE_TYPE dwInterfaceType;
    DWORD dwConnectionFlags;
    WCHAR wszInterfaceName[256 + 1 ];
    WCHAR wszUserName[256 + 1 ];
    WCHAR wszLogonDomain[15 + 1 ];
    WCHAR wszRemoteComputer[16 + 1 ];
  } RAS_CONNECTION_0,*PRAS_CONNECTION_0;
  typedef struct _RAS_CONNECTION_1 {
    HANDLE hConnection;
    HANDLE hInterface;
    PPP_INFO PppInfo;
    DWORD dwBytesXmited;
    DWORD dwBytesRcved;
    DWORD dwFramesXmited;
    DWORD dwFramesRcved;
    DWORD dwCrcErr;
    DWORD dwTimeoutErr;
    DWORD dwAlignmentErr;
    DWORD dwHardwareOverrunErr;
    DWORD dwFramingErr;
    DWORD dwBufferOverrunErr;
    DWORD dwCompressionRatioIn;
    DWORD dwCompressionRatioOut;
  } RAS_CONNECTION_1,*PRAS_CONNECTION_1;
  typedef struct _RAS_CONNECTION_2 {
    HANDLE hConnection;
    WCHAR wszUserName[256 + 1 ];
    ROUTER_INTERFACE_TYPE dwInterfaceType;
    GUID guid;
    PPP_INFO_2 PppInfo2;
  } RAS_CONNECTION_2,*PRAS_CONNECTION_2;
#define RASPRIV_NoCallback 0x01
#define RASPRIV_AdminSetCallback 0x02
#define RASPRIV_CallerSetCallback 0x04
#define RASPRIV_DialinPrivilege 0x08
#define RASPRIV2_DialinPolicy 0x1
#define RASPRIV_CallbackType (RASPRIV_AdminSetCallback | RASPRIV_CallerSetCallback | RASPRIV_NoCallback)
  typedef struct _RAS_USER_0 {
    BYTE bfPrivilege;
    WCHAR wszPhoneNumber[128 + 1];
  } RAS_USER_0,*PRAS_USER_0;
  typedef struct _RAS_USER_1 {
    BYTE bfPrivilege;
    WCHAR wszPhoneNumber[128 + 1];
    BYTE bfPrivilege2;
  } RAS_USER_1,*PRAS_USER_1;
  typedef HANDLE RAS_SERVER_HANDLE;
  typedef HANDLE MPR_SERVER_HANDLE;
  typedef HANDLE MIB_SERVER_HANDLE;
  DWORD __attribute__((__stdcall__)) MprAdminConnectionEnum(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,LPBYTE *lplpbBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle);
  DWORD __attribute__((__stdcall__)) MprAdminPortEnum(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,HANDLE hConnection,LPBYTE *lplpbBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle);
  DWORD __attribute__((__stdcall__)) MprAdminConnectionGetInfo(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,HANDLE hConnection,LPBYTE *lplpbBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminPortGetInfo(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,HANDLE hPort,LPBYTE *lplpbBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminConnectionClearStats(RAS_SERVER_HANDLE hRasServer,HANDLE hConnection);
  DWORD __attribute__((__stdcall__)) MprAdminPortClearStats(RAS_SERVER_HANDLE hRasServer,HANDLE hPort);
  DWORD __attribute__((__stdcall__)) MprAdminPortReset(RAS_SERVER_HANDLE hRasServer,HANDLE hPort);
  DWORD __attribute__((__stdcall__)) MprAdminPortDisconnect(RAS_SERVER_HANDLE hRasServer,HANDLE hPort);
  WINBOOL __attribute__((__stdcall__)) MprAdminAcceptNewConnection(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1);
  WINBOOL __attribute__((__stdcall__)) MprAdminAcceptNewConnection2(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1,RAS_CONNECTION_2 *pRasConnection2);
  WINBOOL __attribute__((__stdcall__)) MprAdminAcceptNewLink (RAS_PORT_0 *pRasPort0,RAS_PORT_1 *pRasPort1);
  void __attribute__((__stdcall__)) MprAdminConnectionHangupNotification(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1);
  void __attribute__((__stdcall__)) MprAdminConnectionHangupNotification2(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1,RAS_CONNECTION_2 *pRasConnection2);
  DWORD __attribute__((__stdcall__)) MprAdminConnectionRemoveQuarantine(HANDLE hRasServer,HANDLE hRasConnection,WINBOOL fIsIpAddress);
  void __attribute__((__stdcall__)) MprAdminLinkHangupNotification (RAS_PORT_0 *pRasPort0,RAS_PORT_1 *pRasPort1);
  DWORD __attribute__((__stdcall__)) MprAdminGetIpAddressForUser (WCHAR *lpwszUserName,WCHAR *lpwszPortName,DWORD *lpdwIpAddress,WINBOOL *bNotifyRelease);
  void __attribute__((__stdcall__)) MprAdminReleaseIpAddress (WCHAR *lpszUserName,WCHAR *lpszPortName,DWORD *lpdwIpAddress);
  DWORD __attribute__((__stdcall__)) MprAdminInitializeDll(void);
  DWORD __attribute__((__stdcall__)) MprAdminTerminateDll(void);
  DWORD __attribute__((__stdcall__)) MprAdminUserGetInfo(const WCHAR *lpszServer,const WCHAR *lpszUser,DWORD dwLevel,LPBYTE lpbBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminUserSetInfo(const WCHAR *lpszServer,const WCHAR *lpszUser,DWORD dwLevel,const LPBYTE lpbBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminSendUserMessage(MPR_SERVER_HANDLE hMprServer,HANDLE hConnection,LPWSTR lpwszMessage);
  DWORD __attribute__((__stdcall__)) MprAdminGetPDCServer(const WCHAR *lpszDomain,const WCHAR *lpszServer,LPWSTR lpszPDCServer);
  WINBOOL __attribute__((__stdcall__)) MprAdminIsServiceRunning(LPWSTR lpwsServerName);
  DWORD __attribute__((__stdcall__)) MprAdminServerConnect(LPWSTR lpwsServerName,MPR_SERVER_HANDLE *phMprServer);
  void __attribute__((__stdcall__)) MprAdminServerDisconnect(MPR_SERVER_HANDLE hMprServer);
  DWORD __attribute__((__stdcall__)) MprAdminServerGetCredentials(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminServerSetCredentials(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminBufferFree(LPVOID pBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminGetErrorString(DWORD dwError,LPWSTR *lpwsErrorString);
  DWORD __attribute__((__stdcall__)) MprAdminServerGetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminServerSetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminEstablishDomainRasServer (PWCHAR pszDomain,PWCHAR pszMachine,WINBOOL bEnable);
  DWORD __attribute__((__stdcall__)) MprAdminIsDomainRasServer (PWCHAR pszDomain,PWCHAR pszMachine,PBOOL pbIsRasServer);
  DWORD __attribute__((__stdcall__)) MprAdminTransportCreate(MPR_SERVER_HANDLE hMprServer,DWORD dwTransportId,LPWSTR lpwsTransportName,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize,LPWSTR lpwsDLLPath);
  DWORD __attribute__((__stdcall__)) MprAdminTransportSetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwTransportId,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize);
  DWORD __attribute__((__stdcall__)) MprAdminTransportGetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwTransportId,LPBYTE *ppGlobalInfo,LPDWORD lpdwGlobalInfoSize,LPBYTE *ppClientInterfaceInfo,LPDWORD lpdwClientInterfaceInfoSize);
  DWORD __attribute__((__stdcall__)) MprAdminDeviceEnum(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer,LPDWORD lpdwTotalEntries);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceGetHandle(MPR_SERVER_HANDLE hMprServer,LPWSTR lpwsInterfaceName,HANDLE *phInterface,WINBOOL fIncludeClientInterfaces);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceCreate(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer,HANDLE *phInterface);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceGetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE *lplpbBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceSetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE lpbBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceDelete(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceDeviceGetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwIndex,DWORD dwLevel,LPBYTE *lplpBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceDeviceSetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwIndex,DWORD dwLevel,LPBYTE lplpBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceTransportRemove(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceTransportAdd(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceTransportGetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId,LPBYTE *ppInterfaceInfo,LPDWORD lpdwpInterfaceInfoSize);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceTransportSetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceEnum(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle);
  DWORD __attribute__((__stdcall__)) MprSetupIpInIpInterfaceFriendlyNameEnum(PWCHAR pwszMachineName,LPBYTE *lplpBuffer,LPDWORD lpdwEntriesRead);
  DWORD __attribute__((__stdcall__)) MprSetupIpInIpInterfaceFriendlyNameFree(LPVOID lpBuffer);
  DWORD __attribute__((__stdcall__)) MprSetupIpInIpInterfaceFriendlyNameCreate(PWCHAR pwszMachineName,PMPR_IPINIP_INTERFACE_0 pNameInformation);
  DWORD __attribute__((__stdcall__)) MprSetupIpInIpInterfaceFriendlyNameDelete(PWCHAR pwszMachineName,GUID *pGuid);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceSetCredentials(LPWSTR lpwsServer,LPWSTR lpwsInterfaceName,LPWSTR lpwsUserName,LPWSTR lpwsDomainName,LPWSTR lpwsPassword);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceGetCredentials(LPWSTR lpwsServer,LPWSTR lpwsInterfaceName,LPWSTR lpwsUserName,LPWSTR lpwsPassword,LPWSTR lpwsDomainName);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceSetCredentialsEx(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE lpbBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceGetCredentialsEx(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE *lplpbBuffer);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceConnect(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,HANDLE hEvent,WINBOOL fSynchronous);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceDisconnect(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceUpdateRoutes(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwProtocolId,HANDLE hEvent);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceQueryUpdateResult(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwProtocolId,LPDWORD lpdwUpdateResult);
  DWORD __attribute__((__stdcall__)) MprAdminInterfaceUpdatePhonebookInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface);
  DWORD __attribute__((__stdcall__)) MprAdminRegisterConnectionNotification(MPR_SERVER_HANDLE hMprServer,HANDLE hEventNotification);
  DWORD __attribute__((__stdcall__)) MprAdminDeregisterConnectionNotification(MPR_SERVER_HANDLE hMprServer,HANDLE hEventNotification);
  DWORD __attribute__((__stdcall__)) MprAdminMIBServerConnect(LPWSTR lpwsServerName,MIB_SERVER_HANDLE *phMibServer);
  void __attribute__((__stdcall__)) MprAdminMIBServerDisconnect(MIB_SERVER_HANDLE hMibServer);
  DWORD __attribute__((__stdcall__)) MprAdminMIBEntryCreate(MIB_SERVER_HANDLE hMibServer,DWORD dwPid,DWORD dwRoutingPid,LPVOID lpEntry,DWORD dwEntrySize);
  DWORD __attribute__((__stdcall__)) MprAdminMIBEntryDelete(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpEntry,DWORD dwEntrySize);
  DWORD __attribute__((__stdcall__)) MprAdminMIBEntrySet(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpEntry,DWORD dwEntrySize);
  DWORD __attribute__((__stdcall__)) MprAdminMIBEntryGet(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInEntry,DWORD dwInEntrySize,LPVOID *lplpOutEntry,LPDWORD lpOutEntrySize);
  DWORD __attribute__((__stdcall__)) MprAdminMIBEntryGetFirst(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInEntry,DWORD dwInEntrySize,LPVOID *lplpOutEntry,LPDWORD lpOutEntrySize);
  DWORD __attribute__((__stdcall__)) MprAdminMIBEntryGetNext(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInEntry,DWORD dwInEntrySize,LPVOID *lplpOutEntry,LPDWORD lpOutEntrySize);
  DWORD __attribute__((__stdcall__)) MprAdminMIBGetTrapInfo(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInData,DWORD dwInDataSize,LPVOID *lplpOutData,LPDWORD lpOutDataSize);
  DWORD __attribute__((__stdcall__)) MprAdminMIBSetTrapInfo(DWORD dwProtocolId,DWORD dwRoutingPid,HANDLE hEvent,LPVOID lpInData,DWORD dwInDataSize,LPVOID *lplpOutData,LPDWORD lpOutDataSize);
  DWORD __attribute__((__stdcall__)) MprAdminMIBBufferFree(LPVOID pBuffer);
  DWORD __attribute__((__stdcall__)) MprConfigServerInstall(DWORD dwLevel,PVOID pBuffer);
  DWORD __attribute__((__stdcall__)) MprConfigServerConnect(LPWSTR lpwsServerName,HANDLE *phMprConfig);
  void __attribute__((__stdcall__)) MprConfigServerDisconnect(HANDLE hMprConfig);
  DWORD __attribute__((__stdcall__)) MprConfigServerRefresh(HANDLE hMprConfig);
  DWORD __attribute__((__stdcall__)) MprConfigBufferFree(LPVOID pBuffer);
  DWORD __attribute__((__stdcall__)) MprConfigServerGetInfo(HANDLE hMprConfig,DWORD dwLevel,LPBYTE *lplpbBuffer);
  DWORD __attribute__((__stdcall__)) MprConfigServerSetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer);
  DWORD __attribute__((__stdcall__)) MprConfigServerBackup(HANDLE hMprConfig,LPWSTR lpwsPath);
  DWORD __attribute__((__stdcall__)) MprConfigServerRestore(HANDLE hMprConfig,LPWSTR lpwsPath);
  DWORD __attribute__((__stdcall__)) MprConfigTransportCreate(HANDLE hMprConfig,DWORD dwTransportId,LPWSTR lpwsTransportName,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize,LPWSTR lpwsDLLPath,HANDLE *phRouterTransport);
  DWORD __attribute__((__stdcall__)) MprConfigTransportDelete(HANDLE hMprConfig,HANDLE hRouterTransport);
  DWORD __attribute__((__stdcall__)) MprConfigTransportGetHandle(HANDLE hMprConfig,DWORD dwTransportId,HANDLE *phRouterTransport);
  DWORD __attribute__((__stdcall__)) MprConfigTransportSetInfo(HANDLE hMprConfig,HANDLE hRouterTransport,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize,LPWSTR lpwsDLLPath);
  DWORD __attribute__((__stdcall__)) MprConfigTransportGetInfo(HANDLE hMprConfig,HANDLE hRouterTransport,LPBYTE *ppGlobalInfo,LPDWORD lpdwGlobalInfoSize,LPBYTE *ppClientInterfaceInfo,LPDWORD lpdwClientInterfaceInfoSize,LPWSTR *lplpwsDLLPath);
  DWORD __attribute__((__stdcall__)) MprConfigTransportEnum(HANDLE hMprConfig,DWORD dwLevel,LPBYTE *lplpBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle);
  DWORD __attribute__((__stdcall__)) MprConfigInterfaceCreate(HANDLE hMprConfig,DWORD dwLevel,LPBYTE lpbBuffer,HANDLE *phRouterInterface);
  DWORD __attribute__((__stdcall__)) MprConfigInterfaceDelete(HANDLE hMprConfig,HANDLE hRouterInterface);
  DWORD __attribute__((__stdcall__)) MprConfigInterfaceGetHandle(HANDLE hMprConfig,LPWSTR lpwsInterfaceName,HANDLE *phRouterInterface);
  DWORD __attribute__((__stdcall__)) MprConfigInterfaceGetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwLevel,LPBYTE *lplpBuffer,LPDWORD lpdwBufferSize);
  DWORD __attribute__((__stdcall__)) MprConfigInterfaceSetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwLevel,LPBYTE lpbBuffer);
  DWORD __attribute__((__stdcall__)) MprConfigInterfaceEnum(HANDLE hMprConfig,DWORD dwLevel,LPBYTE *lplpBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle);
  DWORD __attribute__((__stdcall__)) MprConfigInterfaceTransportAdd(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwTransportId,LPWSTR lpwsTransportName,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize,HANDLE *phRouterIfTransport);
  DWORD __attribute__((__stdcall__)) MprConfigInterfaceTransportRemove(HANDLE hMprConfig,HANDLE hRouterInterface,HANDLE hRouterIfTransport);
  DWORD __attribute__((__stdcall__)) MprConfigInterfaceTransportGetHandle(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwTransportId,HANDLE *phRouterIfTransport);
  DWORD __attribute__((__stdcall__)) MprConfigInterfaceTransportGetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,HANDLE hRouterIfTransport,LPBYTE *ppInterfaceInfo,LPDWORD lpdwInterfaceInfoSize);
  DWORD __attribute__((__stdcall__)) MprConfigInterfaceTransportSetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,HANDLE hRouterIfTransport,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize);
  DWORD __attribute__((__stdcall__)) MprConfigInterfaceTransportEnum(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwLevel,LPBYTE *lplpBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle);
  DWORD __attribute__((__stdcall__)) MprConfigGetFriendlyName(HANDLE hMprConfig,PWCHAR pszGuidName,PWCHAR pszBuffer,DWORD dwBufferSize);
  DWORD __attribute__((__stdcall__)) MprConfigGetGuidName(HANDLE hMprConfig,PWCHAR pszFriendlyName,PWCHAR pszBuffer,DWORD dwBufferSize);
  DWORD __attribute__((__stdcall__)) MprInfoCreate(DWORD dwVersion,LPVOID *lplpNewHeader);
  DWORD __attribute__((__stdcall__)) MprInfoDelete(LPVOID lpHeader);
  DWORD __attribute__((__stdcall__)) MprInfoRemoveAll(LPVOID lpHeader,LPVOID *lplpNewHeader);
  DWORD __attribute__((__stdcall__)) MprInfoDuplicate(LPVOID lpHeader,LPVOID *lplpNewHeader);
  DWORD __attribute__((__stdcall__)) MprInfoBlockAdd(LPVOID lpHeader,DWORD dwInfoType,DWORD dwItemSize,DWORD dwItemCount,LPBYTE lpItemData,LPVOID *lplpNewHeader);
  DWORD __attribute__((__stdcall__)) MprInfoBlockRemove(LPVOID lpHeader,DWORD dwInfoType,LPVOID *lplpNewHeader);
  DWORD __attribute__((__stdcall__)) MprInfoBlockSet(LPVOID lpHeader,DWORD dwInfoType,DWORD dwItemSize,DWORD dwItemCount,LPBYTE lpItemData,LPVOID *lplpNewHeader);
  DWORD __attribute__((__stdcall__)) MprInfoBlockFind(LPVOID lpHeader,DWORD dwInfoType,LPDWORD lpdwItemSize,LPDWORD lpdwItemCount,LPBYTE *lplpItemData);
  DWORD __attribute__((__stdcall__)) MprInfoBlockQuerySize(LPVOID lpHeader);
#define MprInfoBlockExists(h,t) (MprInfoBlockFind((h),(t),NULL,NULL,NULL)==NO_ERROR)
typedef enum _RAS_QUARANTINE_STATE {
  RAS_QUAR_STATE_NORMAL,
  RAS_QUAR_STATE_QUARANTINE,
  RAS_QUAR_STATE_PROBATION,
  RAS_QUAR_STATE_NOT_CAPABLE
} RAS_QUARANTINE_STATE;
typedef struct _MPR_FILTER_0 {
  WINBOOL fEnabled;
} MPR_FILTER_0, *PMPR_FILTER_0;
typedef struct _MPR_SERVER_2 {
  DWORD dwNumPptpPorts;
  DWORD dwPptpPortFlags;
  DWORD dwNumL2tpPorts;
  DWORD dwL2tpPortFlags;
  DWORD dwNumSstpPorts;
  DWORD dwSstpPortFlags;
} MPR_SERVER_2, *PMPR_SERVER_2;
typedef struct _PPP_IPV6CP_INFO {
  DWORD dwVersion;
  DWORD dwSize;
  DWORD dwError;
  BYTE bInterfaceIdentifier[8];
  BYTE bRemoteInterfaceIdentifier[8];
  DWORD dwOptions;
  DWORD dwRemoteOptions;
  BYTE bPrefix[8];
  DWORD dwPrefixLength;
} PPP_IPV6_CP_INFO, *PPPP_IPV6_CP_INFO;
typedef struct _PPP_INFO_3 {
  PPP_NBFCP_INFO nbf;
  PPP_IPCP_INFO2 ip;
  PPP_IPV6_CP_INFO ipv6;
  PPP_CCP_INFO ccp;
  PPP_LCP_INFO lcp;
} PPP_INFO_3;
typedef struct _RAS_CONNECTION_3 {
  DWORD dwVersion;
  DWORD dwSize;
  HANDLE hConnection;
  WCHAR wszUserName[256 + 1];
  ROUTER_INTERFACE_TYPE dwInterfaceType;
  GUID guid;
  PPP_INFO_3 PppInfo3;
  RAS_QUARANTINE_STATE rasQuarState;
  FILETIME timer;
} RAS_CONNECTION_3, *PRAS_CONNECTION_3;
WINBOOL __attribute__((__stdcall__)) MprAdminAcceptNewConnection3(
  RAS_CONNECTION_0 *pRasConnection0,
  RAS_CONNECTION_1 *pRasConnection1,
  RAS_CONNECTION_2 *pRasConnection2,
  RAS_CONNECTION_3 *pRasConnection3
);
WINBOOL __attribute__((__stdcall__)) MprAdminAcceptReauthentication(
  RAS_CONNECTION_0 *pRasConnection0,
  RAS_CONNECTION_1 *pRasConnection1,
  RAS_CONNECTION_2 *pRasConnection2,
  RAS_CONNECTION_3 *pRasConnection3
);
void __attribute__((__stdcall__)) MprAdminConnectionHangupNotification3(
  RAS_CONNECTION_0 *pRasConnection0,
  RAS_CONNECTION_1 *pRasConnection1,
  RAS_CONNECTION_2 *pRasConnection2,
  RAS_CONNECTION_3 *pRasConnection3
);
DWORD __attribute__((__stdcall__)) MprAdminGetIpv6AddressForUser(
  WCHAR *lpwszUserName,
  WCHAR *lpwszPortName,
  IN6_ADDR *lpdwIpv6Address,
  WINBOOL *bNotifyRelease
);
DWORD __attribute__((__stdcall__)) MprAdminReleaseIpv6AddressForUser(
  WCHAR *lpwszUserName,
  WCHAR *lpwszPortName,
  IN6_ADDR *lpdwIpv6Address
);
DWORD __attribute__((__stdcall__)) MprConfigFilterGetInfo(
  HANDLE hMprConfig,
  DWORD dwLevel,
  DWORD dwTransportId,
  LPBYTE lpBuffer
);
DWORD __attribute__((__stdcall__)) MprConfigFilterSetInfo(
  HANDLE hMprConfig,
  DWORD dwLevel,
  DWORD dwTransportId,
  LPBYTE lpBuffer
);
#define _NLDEF_ 
typedef enum {
  NldsInvalid,
  NldsTentative,
  NldsDuplicate,
  NldsDeprecated,
  NldsPreferred,
  IpDadStateInvalid = 0,
  IpDadStateTentative,
  IpDadStateDuplicate,
  IpDadStateDeprecated,
  IpDadStatePreferred,
} NL_DAD_STATE;
#define MAKE_ROUTE_PROTOCOL(N,V) MIB_IPPROTO_ ## N = V, PROTO_IP_ ## N = V
typedef enum {
  RouteProtocolOther = 1,
  RouteProtocolLocal = 2,
  RouteProtocolNetMgmt = 3,
  RouteProtocolIcmp = 4,
  RouteProtocolEgp = 5,
  RouteProtocolGgp = 6,
  RouteProtocolHello = 7,
  RouteProtocolRip = 8,
  RouteProtocolIsIs = 9,
  RouteProtocolEsIs = 10,
  RouteProtocolCisco = 11,
  RouteProtocolBbn = 12,
  RouteProtocolOspf = 13,
  RouteProtocolBgp = 14,
  MIB_IPPROTO_OTHER = 1, PROTO_IP_OTHER = 1,
  MIB_IPPROTO_LOCAL = 2, PROTO_IP_LOCAL = 2,
  MIB_IPPROTO_NETMGMT = 3, PROTO_IP_NETMGMT = 3,
  MIB_IPPROTO_ICMP = 4, PROTO_IP_ICMP = 4,
  MIB_IPPROTO_EGP = 5, PROTO_IP_EGP = 5,
  MIB_IPPROTO_GGP = 6, PROTO_IP_GGP = 6,
  MIB_IPPROTO_HELLO = 7, PROTO_IP_HELLO = 7,
  MIB_IPPROTO_RIP = 8, PROTO_IP_RIP = 8,
  MIB_IPPROTO_IS_IS = 9, PROTO_IP_IS_IS = 9,
  MIB_IPPROTO_ES_IS = 10, PROTO_IP_ES_IS = 10,
  MIB_IPPROTO_CISCO = 11, PROTO_IP_CISCO = 11,
  MIB_IPPROTO_BBN = 12, PROTO_IP_BBN = 12,
  MIB_IPPROTO_OSPF = 13, PROTO_IP_OSPF = 13,
  MIB_IPPROTO_BGP = 14, PROTO_IP_BGP = 14,
  MIB_IPPROTO_NT_AUTOSTATIC = 10002, PROTO_IP_NT_AUTOSTATIC = 10002,
  MIB_IPPROTO_NT_STATIC = 10006, PROTO_IP_NT_STATIC = 10006,
  MIB_IPPROTO_NT_STATIC_NON_DOD = 10007, PROTO_IP_NT_STATIC_NON_DOD = 10007
} NL_ROUTE_PROTOCOL,*PNL_ROUTE_PROTOCOL;
typedef enum {
  IpPrefixOriginOther = 0,
  IpPrefixOriginManual,
  IpPrefixOriginWellKnown,
  IpPrefixOriginDhcp,
  IpPrefixOriginRouterAdvertisement,
  IpPrefixOriginUnchanged = 16
} NL_PREFIX_ORIGIN;
typedef enum {
  NlsoOther = 0,
  NlsoManual,
  NlsoWellKnown,
  NlsoDhcp,
  NlsoLinkLayerAddress,
  NlsoRandom,
  IpSuffixOriginOther = 0,
  IpSuffixOriginManual,
  IpSuffixOriginWellKnown,
  IpSuffixOriginDhcp,
  IpSuffixOriginLinkLayerAddress,
  IpSuffixOriginRandom,
  IpSuffixOriginUnchanged = 16
} NL_SUFFIX_ORIGIN;
typedef enum {
  NlatUnspecified,
  NlatUnicast,
  NlatAnycast,
  NlatMulticast,
  NlatBroadcast,
  NlatInvalid
} NL_ADDRESS_TYPE, *PNL_ADDRESS_TYPE;
typedef enum _NL_ROUTE_ORIGIN {
  NlroManual,
  NlroWellKnown,
  NlroDHCP,
  NlroRouterAdvertisement,
  Nlro6to4,
} NL_ROUTE_ORIGIN, *PNL_ROUTE_ORIGIN;
typedef enum _NL_NEIGHBOR_STATE {
  NlnsUnreachable,
  NlnsIncomplete,
  NlnsProbe,
  NlnsDelay,
  NlnsStale,
  NlnsReachable,
  NlnsPermanent,
  NlnsMaximum,
} NL_NEIGHBOR_STATE, *PNL_NEIGHBOR_STATE;
typedef enum _NL_LINK_LOCAL_ADDRESS_BEHAVIOR {
  LinkLocalAlwaysOff = 0,
  LinkLocalDelayed,
  LinkLocalAlwaysOn,
  LinkLocalUnchanged = -1
} NL_LINK_LOCAL_ADDRESS_BEHAVIOR;
typedef enum _NL_ROUTER_DISCOVERY_BEHAVIOR {
  RouterDiscoveryDisabled = 0,
  RouterDiscoveryEnabled,
  RouterDiscoveryDhcp,
  RouterDiscoveryUnchanged = -1
} NL_ROUTER_DISCOVERY_BEHAVIOR;
typedef enum _NL_BANDWIDTH_FLAG {
  NlbwDisabled = 0,
  NlbwEnabled,
  NlbwUnchanged = -1
} NL_BANDWIDTH_FLAG, *PNL_BANDWIDTH_FLAG;
typedef enum _NL_INTERFACE_NETWORK_CATEGORY_STATE {
  NlincCategoryUnknown = 0,
  NlincPublic = 1,
  NlincPrivate = 2,
  NlincDomainAuthenticated = 3,
  NlincCategoryStateMax
} NL_INTERFACE_NETWORK_CATEGORY_STATE, *PNL_INTERFACE_NETWORK_CATEGORY_STATE;
typedef struct _NL_INTERFACE_OFFLOAD_ROD {
  BOOLEAN NlChecksumSupported : 1;
  BOOLEAN NlOptionsSupported : 1;
  BOOLEAN TlDatagramChecksumSupported : 1;
  BOOLEAN TlStreamChecksumSupported : 1;
  BOOLEAN TlStreamOptionsSupported : 1;
  BOOLEAN FastPathCompatible : 1;
  BOOLEAN TlLargeSendOffloadSupported : 1;
  BOOLEAN TlGiantSendOffloadSupported : 1;
} NL_INTERFACE_OFFLOAD_ROD, *PNL_INTERFACE_OFFLOAD_ROD;
typedef struct _NL_PATH_BANDWIDTH_ROD {
  ULONG64 Bandwidth;
  ULONG64 Instability;
  BOOLEAN BandwidthPeaked;
} NL_PATH_BANDWIDTH_ROD, *PNL_PATH_BANDWIDTH_ROD;
typedef enum _NL_NETWORK_CATEGORY {
  NetworkCategoryPublic,
  NetworkCategoryPrivate,
  NetworkCategoryDomainAuthenticated,
  NetworkCategoryUnchanged = -1,
  NetworkCategoryUnknown = -1
} NL_NETWORK_CATEGORY,*PNL_NETWORK_CATEGORY;
typedef struct _NL_BANDWIDTH_INFORMATION {
  ULONG64 Bandwidth;
  ULONG64 Instability;
  BOOLEAN BandwidthPeaked;
} NL_BANDWIDTH_INFORMATION, *PNL_BANDWIDTH_INFORMATION;
#define NlpoOther IpPrefixOriginOther
#define NlpoManual IpPrefixOriginManual
#define NlpoWellKnown IpPrefixOriginWellKnown
#define NlpoDhcp IpPrefixOriginDhcp
#define NlpoRouterAdvertisement IpPrefixOriginRouterAdvertisement
#define NL_MAX_METRIC_COMPONENT ((((ULONG) 1) << 31) - 1)
#define NET_IF_CURRENT_SESSION ((ULONG)-1)
#define __IPIFCONS_H__ 
typedef ULONG IFTYPE;
#define MIN_IF_TYPE 1
#define IF_TYPE_OTHER 1
#define IF_TYPE_REGULAR_1822 2
#define IF_TYPE_HDH_1822 3
#define IF_TYPE_DDN_X25 4
#define IF_TYPE_RFC877_X25 5
#define IF_TYPE_ETHERNET_CSMACD 6
#define IF_TYPE_IS088023_CSMACD 7
#define IF_TYPE_ISO88024_TOKENBUS 8
#define IF_TYPE_ISO88025_TOKENRING 9
#define IF_TYPE_ISO88026_MAN 10
#define IF_TYPE_STARLAN 11
#define IF_TYPE_PROTEON_10MBIT 12
#define IF_TYPE_PROTEON_80MBIT 13
#define IF_TYPE_HYPERCHANNEL 14
#define IF_TYPE_FDDI 15
#define IF_TYPE_LAP_B 16
#define IF_TYPE_SDLC 17
#define IF_TYPE_DS1 18
#define IF_TYPE_E1 19
#define IF_TYPE_BASIC_ISDN 20
#define IF_TYPE_PRIMARY_ISDN 21
#define IF_TYPE_PROP_POINT2POINT_SERIAL 22
#define IF_TYPE_PPP 23
#define IF_TYPE_SOFTWARE_LOOPBACK 24
#define IF_TYPE_EON 25
#define IF_TYPE_ETHERNET_3MBIT 26
#define IF_TYPE_NSIP 27
#define IF_TYPE_SLIP 28
#define IF_TYPE_ULTRA 29
#define IF_TYPE_DS3 30
#define IF_TYPE_SIP 31
#define IF_TYPE_FRAMERELAY 32
#define IF_TYPE_RS232 33
#define IF_TYPE_PARA 34
#define IF_TYPE_ARCNET 35
#define IF_TYPE_ARCNET_PLUS 36
#define IF_TYPE_ATM 37
#define IF_TYPE_MIO_X25 38
#define IF_TYPE_SONET 39
#define IF_TYPE_X25_PLE 40
#define IF_TYPE_ISO88022_LLC 41
#define IF_TYPE_LOCALTALK 42
#define IF_TYPE_SMDS_DXI 43
#define IF_TYPE_FRAMERELAY_SERVICE 44
#define IF_TYPE_V35 45
#define IF_TYPE_HSSI 46
#define IF_TYPE_HIPPI 47
#define IF_TYPE_MODEM 48
#define IF_TYPE_AAL5 49
#define IF_TYPE_SONET_PATH 50
#define IF_TYPE_SONET_VT 51
#define IF_TYPE_SMDS_ICIP 52
#define IF_TYPE_PROP_VIRTUAL 53
#define IF_TYPE_PROP_MULTIPLEXOR 54
#define IF_TYPE_IEEE80212 55
#define IF_TYPE_FIBRECHANNEL 56
#define IF_TYPE_HIPPIINTERFACE 57
#define IF_TYPE_FRAMERELAY_INTERCONNECT 58
#define IF_TYPE_AFLANE_8023 59
#define IF_TYPE_AFLANE_8025 60
#define IF_TYPE_CCTEMUL 61
#define IF_TYPE_FASTETHER 62
#define IF_TYPE_ISDN 63
#define IF_TYPE_V11 64
#define IF_TYPE_V36 65
#define IF_TYPE_G703_64K 66
#define IF_TYPE_G703_2MB 67
#define IF_TYPE_QLLC 68
#define IF_TYPE_FASTETHER_FX 69
#define IF_TYPE_CHANNEL 70
#define IF_TYPE_IEEE80211 71
#define IF_TYPE_IBM370PARCHAN 72
#define IF_TYPE_ESCON 73
#define IF_TYPE_DLSW 74
#define IF_TYPE_ISDN_S 75
#define IF_TYPE_ISDN_U 76
#define IF_TYPE_LAP_D 77
#define IF_TYPE_IPSWITCH 78
#define IF_TYPE_RSRB 79
#define IF_TYPE_ATM_LOGICAL 80
#define IF_TYPE_DS0 81
#define IF_TYPE_DS0_BUNDLE 82
#define IF_TYPE_BSC 83
#define IF_TYPE_ASYNC 84
#define IF_TYPE_CNR 85
#define IF_TYPE_ISO88025R_DTR 86
#define IF_TYPE_EPLRS 87
#define IF_TYPE_ARAP 88
#define IF_TYPE_PROP_CNLS 89
#define IF_TYPE_HOSTPAD 90
#define IF_TYPE_TERMPAD 91
#define IF_TYPE_FRAMERELAY_MPI 92
#define IF_TYPE_X213 93
#define IF_TYPE_ADSL 94
#define IF_TYPE_RADSL 95
#define IF_TYPE_SDSL 96
#define IF_TYPE_VDSL 97
#define IF_TYPE_ISO88025_CRFPRINT 98
#define IF_TYPE_MYRINET 99
#define IF_TYPE_VOICE_EM 100
#define IF_TYPE_VOICE_FXO 101
#define IF_TYPE_VOICE_FXS 102
#define IF_TYPE_VOICE_ENCAP 103
#define IF_TYPE_VOICE_OVERIP 104
#define IF_TYPE_ATM_DXI 105
#define IF_TYPE_ATM_FUNI 106
#define IF_TYPE_ATM_IMA 107
#define IF_TYPE_PPPMULTILINKBUNDLE 108
#define IF_TYPE_IPOVER_CDLC 109
#define IF_TYPE_IPOVER_CLAW 110
#define IF_TYPE_STACKTOSTACK 111
#define IF_TYPE_VIRTUALIPADDRESS 112
#define IF_TYPE_MPC 113
#define IF_TYPE_IPOVER_ATM 114
#define IF_TYPE_ISO88025_FIBER 115
#define IF_TYPE_TDLC 116
#define IF_TYPE_GIGABITETHERNET 117
#define IF_TYPE_HDLC 118
#define IF_TYPE_LAP_F 119
#define IF_TYPE_V37 120
#define IF_TYPE_X25_MLP 121
#define IF_TYPE_X25_HUNTGROUP 122
#define IF_TYPE_TRANSPHDLC 123
#define IF_TYPE_INTERLEAVE 124
#define IF_TYPE_FAST 125
#define IF_TYPE_IP 126
#define IF_TYPE_DOCSCABLE_MACLAYER 127
#define IF_TYPE_DOCSCABLE_DOWNSTREAM 128
#define IF_TYPE_DOCSCABLE_UPSTREAM 129
#define IF_TYPE_A12MPPSWITCH 130
#define IF_TYPE_TUNNEL 131
#define IF_TYPE_COFFEE 132
#define IF_TYPE_CES 133
#define IF_TYPE_ATM_SUBINTERFACE 134
#define IF_TYPE_L2_VLAN 135
#define IF_TYPE_L3_IPVLAN 136
#define IF_TYPE_L3_IPXVLAN 137
#define IF_TYPE_DIGITALPOWERLINE 138
#define IF_TYPE_MEDIAMAILOVERIP 139
#define IF_TYPE_DTM 140
#define IF_TYPE_DCN 141
#define IF_TYPE_IPFORWARD 142
#define IF_TYPE_MSDSL 143
#define IF_TYPE_IEEE1394 144
#define IF_TYPE_RECEIVE_ONLY 145
#define MAX_IF_TYPE 145
#define IF_ACCESS_LOOPBACK 1
#define IF_ACCESS_BROADCAST 2
#define IF_ACCESS_POINTTOPOINT 3
#define IF_ACCESS_POINTTOMULTIPOINT 4
#define IF_CHECK_NONE 0x00
#define IF_CHECK_MCAST 0x01
#define IF_CHECK_SEND 0x02
#define IF_CONNECTION_DEDICATED 1
#define IF_CONNECTION_PASSIVE 2
#define IF_CONNECTION_DEMAND 3
#define IF_ADMIN_STATUS_UP 1
#define IF_ADMIN_STATUS_DOWN 2
#define IF_ADMIN_STATUS_TESTING 3
#define IF_OPER_STATUS_NON_OPERATIONAL 0
#define IF_OPER_STATUS_UNREACHABLE 1
#define IF_OPER_STATUS_DISCONNECTED 2
#define IF_OPER_STATUS_CONNECTING 3
#define IF_OPER_STATUS_CONNECTED 4
#define IF_OPER_STATUS_OPERATIONAL 5
#define MIB_IF_TYPE_OTHER 1
#define MIB_IF_TYPE_ETHERNET 6
#define MIB_IF_TYPE_TOKENRING 9
#define MIB_IF_TYPE_FDDI 15
#define MIB_IF_TYPE_PPP 23
#define MIB_IF_TYPE_LOOPBACK 24
#define MIB_IF_TYPE_SLIP 28
#define MIB_IF_ADMIN_STATUS_UP 1
#define MIB_IF_ADMIN_STATUS_DOWN 2
#define MIB_IF_ADMIN_STATUS_TESTING 3
#define MIB_IF_OPER_STATUS_NON_OPERATIONAL 0
#define MIB_IF_OPER_STATUS_UNREACHABLE 1
#define MIB_IF_OPER_STATUS_DISCONNECTED 2
#define MIB_IF_OPER_STATUS_CONNECTING 3
#define MIB_IF_OPER_STATUS_CONNECTED 4
#define MIB_IF_OPER_STATUS_OPERATIONAL 5
#define _INC_UDPMIB 
#define ANY_SIZE 1
typedef struct _MIB_UDP6ROW {
  IN6_ADDR dwLocalAddr;
  DWORD dwLocalScopeId;
  DWORD dwLocalPort;
} MIB_UDP6ROW, *PMIB_UDP6ROW;
typedef struct _MIB_UDP6TABLE {
  DWORD dwNumEntries;
  MIB_UDP6ROW table[1];
} MIB_UDP6TABLE, *PMIB_UDP6TABLE;
#define _INC_TCPMIB 
typedef int MIB_TCP_STATE;
typedef enum _TCP_CONNECTION_OFFLOAD_STATE {
  TcpConnectionOffloadStateInHost = 0,
  TcpConnectionOffloadStateOffloading = 1,
  TcpConnectionOffloadStateOffloaded = 2,
  TcpConnectionOffloadStateUploading = 3,
  TcpConnectionOffloadStateMax = 4
} TCP_CONNECTION_OFFLOAD_STATE;
typedef struct _MIB_TCP6ROW {
  MIB_TCP_STATE State;
  IN6_ADDR LocalAddr;
  DWORD dwLocalScopeId;
  DWORD dwLocalPort;
  IN6_ADDR RemoteAddr;
  DWORD dwRemoteScopeId;
  DWORD dwRemotePort;
} MIB_TCP6ROW, *PMIB_TCP6ROW;
typedef struct _MIB_TCP6TABLE {
  DWORD dwNumEntries;
  MIB_TCP6ROW table[1];
} MIB_TCP6TABLE, *PMIB_TCP6TABLE;
typedef struct _MIB_TCP6ROW2 {
  IN6_ADDR LocalAddr;
  DWORD dwLocalScopeId;
  DWORD dwLocalPort;
  IN6_ADDR RemoteAddr;
  DWORD dwRemoteScopeId;
  DWORD dwRemotePort;
  MIB_TCP_STATE State;
  DWORD dwOwningPid;
  TCP_CONNECTION_OFFLOAD_STATE dwOffloadState;
} MIB_TCP6ROW2, *PMIB_TCP6ROW2;
typedef struct _MIB_TCP6TABLE2 {
  DWORD dwNumEntries;
  MIB_TCP6ROW2 table[1];
} MIB_TCP6TABLE2, *PMIB_TCP6TABLE2;
typedef struct _MIB_TCPROW2 {
  DWORD dwState;
  DWORD dwLocalAddr;
  DWORD dwLocalPort;
  DWORD dwRemoteAddr;
  DWORD dwRemotePort;
  DWORD dwOwningPid;
  TCP_CONNECTION_OFFLOAD_STATE dwOffloadState;
} MIB_TCPROW2, *PMIB_TCPROW2;
typedef struct _MIB_TCPTABLE2 {
  DWORD dwNumEntries;
  MIB_TCPROW2 table[1];
} MIB_TCPTABLE2, *PMIB_TCPTABLE2;
#define IPRTRMGR_PID 10000
#define TCPIP_OWNING_MODULE_SIZE 16
#define IF_NUMBER 0
#define IF_TABLE (IF_NUMBER + 1)
#define IF_ROW (IF_TABLE + 1)
#define IP_STATS (IF_ROW + 1)
#define IP_ADDRTABLE (IP_STATS + 1)
#define IP_ADDRROW (IP_ADDRTABLE + 1)
#define IP_FORWARDNUMBER (IP_ADDRROW + 1)
#define IP_FORWARDTABLE (IP_FORWARDNUMBER + 1)
#define IP_FORWARDROW (IP_FORWARDTABLE + 1)
#define IP_NETTABLE (IP_FORWARDROW + 1)
#define IP_NETROW (IP_NETTABLE + 1)
#define ICMP_STATS (IP_NETROW + 1)
#define TCP_STATS (ICMP_STATS + 1)
#define TCP_TABLE (TCP_STATS + 1)
#define TCP_ROW (TCP_TABLE + 1)
#define UDP_STATS (TCP_ROW + 1)
#define UDP_TABLE (UDP_STATS + 1)
#define UDP_ROW (UDP_TABLE + 1)
#define MCAST_MFE (UDP_ROW + 1)
#define MCAST_MFE_STATS (MCAST_MFE + 1)
#define BEST_IF (MCAST_MFE_STATS + 1)
#define BEST_ROUTE (BEST_IF + 1)
#define PROXY_ARP (BEST_ROUTE + 1)
#define MCAST_IF_ENTRY (PROXY_ARP + 1)
#define MCAST_GLOBAL (MCAST_IF_ENTRY + 1)
#define IF_STATUS (MCAST_GLOBAL + 1)
#define MCAST_BOUNDARY (IF_STATUS + 1)
#define MCAST_SCOPE (MCAST_BOUNDARY + 1)
#define DEST_MATCHING (MCAST_SCOPE + 1)
#define DEST_LONGER (DEST_MATCHING + 1)
#define DEST_SHORTER (DEST_LONGER + 1)
#define ROUTE_MATCHING (DEST_SHORTER + 1)
#define ROUTE_LONGER (ROUTE_MATCHING + 1)
#define ROUTE_SHORTER (ROUTE_LONGER + 1)
#define ROUTE_STATE (ROUTE_SHORTER + 1)
#define MCAST_MFE_STATS_EX (ROUTE_STATE + 1)
#define IP6_STATS (MCAST_MFE_STATS_EX + 1)
#define UDP6_STATS (IP6_STATS + 1)
#define TCP6_STATS (UDP6_STATS + 1)
#define NUMBER_OF_EXPORTED_VARIABLES (TCP6_STATS + 1)
typedef struct _MIB_OPAQUE_QUERY {
  DWORD dwVarId;
  DWORD rgdwVarIndex[1];
} MIB_OPAQUE_QUERY,*PMIB_OPAQUE_QUERY;
typedef struct _MIB_IFNUMBER {
  DWORD dwValue;
} MIB_IFNUMBER,*PMIB_IFNUMBER;
#define MAXLEN_IFDESCR 256
#define MAXLEN_PHYSADDR 8
typedef struct _MIB_IFROW {
  WCHAR wszName[256];
  DWORD dwIndex;
  DWORD dwType;
  DWORD dwMtu;
  DWORD dwSpeed;
  DWORD dwPhysAddrLen;
  BYTE bPhysAddr[8];
  DWORD dwAdminStatus;
  DWORD dwOperStatus;
  DWORD dwLastChange;
  DWORD dwInOctets;
  DWORD dwInUcastPkts;
  DWORD dwInNUcastPkts;
  DWORD dwInDiscards;
  DWORD dwInErrors;
  DWORD dwInUnknownProtos;
  DWORD dwOutOctets;
  DWORD dwOutUcastPkts;
  DWORD dwOutNUcastPkts;
  DWORD dwOutDiscards;
  DWORD dwOutErrors;
  DWORD dwOutQLen;
  DWORD dwDescrLen;
  BYTE bDescr[256];
} MIB_IFROW,*PMIB_IFROW;
typedef struct _MIB_IFTABLE {
  DWORD dwNumEntries;
  MIB_IFROW table[1];
} MIB_IFTABLE,*PMIB_IFTABLE;
#define SIZEOF_IFTABLE(X) (FIELD_OFFSET(MIB_IFTABLE,table[0]) + ((X) *sizeof(MIB_IFROW)) + ALIGN_SIZE)
typedef struct _MIBICMPSTATS {
  DWORD dwMsgs;
  DWORD dwErrors;
  DWORD dwDestUnreachs;
  DWORD dwTimeExcds;
  DWORD dwParmProbs;
  DWORD dwSrcQuenchs;
  DWORD dwRedirects;
  DWORD dwEchos;
  DWORD dwEchoReps;
  DWORD dwTimestamps;
  DWORD dwTimestampReps;
  DWORD dwAddrMasks;
  DWORD dwAddrMaskReps;
} MIBICMPSTATS,*PMIBICMPSTATS;
typedef struct _MIBICMPINFO {
  MIBICMPSTATS icmpInStats;
  MIBICMPSTATS icmpOutStats;
} MIBICMPINFO;
typedef struct _MIB_ICMP {
  MIBICMPINFO stats;
} MIB_ICMP,*PMIB_ICMP;
typedef enum {
  ICMP6_DST_UNREACH = 1,ICMP6_PACKET_TOO_BIG = 2,ICMP6_TIME_EXCEEDED = 3,ICMP6_PARAM_PROB = 4,ICMP6_ECHO_REQUEST = 128,
  ICMP6_ECHO_REPLY = 129,ICMP6_MEMBERSHIP_QUERY = 130,ICMP6_MEMBERSHIP_REPORT = 131,ICMP6_MEMBERSHIP_REDUCTION = 132,
  ND_ROUTER_SOLICIT = 133,ND_ROUTER_ADVERT = 134,ND_NEIGHBOR_SOLICIT = 135,ND_NEIGHBOR_ADVERT = 136,ND_REDIRECT = 137
} ICMP6_TYPE,*PICMP6_TYPE;
typedef enum {
  ICMP4_ECHO_REPLY = 0,ICMP4_DST_UNREACH = 3,ICMP4_SOURCE_QUENCH = 4,ICMP4_REDIRECT = 5,ICMP4_ECHO_REQUEST = 8,ICMP4_ROUTER_ADVERT = 9,
  ICMP4_ROUTER_SOLICIT = 10,ICMP4_TIME_EXCEEDED = 11,ICMP4_PARAM_PROB = 12,ICMP4_TIMESTAMP_REQUEST = 13,ICMP4_TIMESTAMP_REPLY = 14,
  ICMP4_MASK_REQUEST = 17,ICMP4_MASK_REPLY = 18
} ICMP4_TYPE,*PICMP4_TYPE;
typedef struct _MIBICMPSTATS_EX {
  DWORD dwMsgs;
  DWORD dwErrors;
  DWORD rgdwTypeCount[256];
} MIBICMPSTATS_EX,*PMIBICMPSTATS_EX;
typedef struct _MIB_ICMP_EX {
  MIBICMPSTATS_EX icmpInStats;
  MIBICMPSTATS_EX icmpOutStats;
} MIB_ICMP_EX,*PMIB_ICMP_EX;
typedef struct _MIB_UDPSTATS {
  DWORD dwInDatagrams;
  DWORD dwNoPorts;
  DWORD dwInErrors;
  DWORD dwOutDatagrams;
  DWORD dwNumAddrs;
} MIB_UDPSTATS,*PMIB_UDPSTATS;
typedef struct _MIB_UDPROW {
  DWORD dwLocalAddr;
  DWORD dwLocalPort;
} MIB_UDPROW,*PMIB_UDPROW;
typedef MIB_UDPROW MIB_UDPROW_BASIC,*PMIB_UDPROW_BASIC;
typedef struct _MIB_UDPROW_OWNER_PID {
  DWORD dwLocalAddr;
  DWORD dwLocalPort;
  DWORD dwOwningPid;
} MIB_UDPROW_OWNER_PID,*PMIB_UDPROW_OWNER_PID;
typedef struct _MIB_UDPROW_OWNER_MODULE {
  DWORD dwLocalAddr;
  DWORD dwLocalPort;
  DWORD dwOwningPid;
  LARGE_INTEGER liCreateTimestamp;
  __extension__ union {
    __extension__ struct {
      DWORD SpecificPortBind : 1;
    };
    DWORD dwFlags;
  };
  ULONGLONG OwningModuleInfo[16];
} MIB_UDPROW_OWNER_MODULE,*PMIB_UDPROW_OWNER_MODULE;
typedef struct _MIB_UDP6ROW_OWNER_PID {
  UCHAR ucLocalAddr[16];
  DWORD dwLocalScopeId;
  DWORD dwLocalPort;
  DWORD dwOwningPid;
} MIB_UDP6ROW_OWNER_PID,*PMIB_UDP6ROW_OWNER_PID;
typedef struct _MIB_UDP6ROW_OWNER_MODULE {
  UCHAR ucLocalAddr[16];
  DWORD dwLocalScopeId;
  DWORD dwLocalPort;
  DWORD dwOwningPid;
  LARGE_INTEGER liCreateTimestamp;
  __extension__ union {
    __extension__ struct {
      DWORD SpecificPortBind : 1;
    };
    DWORD dwFlags;
  };
  ULONGLONG OwningModuleInfo[16];
} MIB_UDP6ROW_OWNER_MODULE,*PMIB_UDP6ROW_OWNER_MODULE;
typedef struct _MIB_UDPTABLE {
  DWORD dwNumEntries;
  MIB_UDPROW table[1];
} MIB_UDPTABLE,*PMIB_UDPTABLE;
typedef MIB_UDPTABLE MIB_UDPTABLE_BASIC,*PMIB_UDPTABLE_BASIC;
#define SIZEOF_UDPTABLE(X) (FIELD_OFFSET(MIB_UDPTABLE,table[0]) + ((X) *sizeof(MIB_UDPROW)) + ALIGN_SIZE)
#define SIZEOF_UDPTABLE_BASIC(X) SIZEOF_UDPTABLE(X)
typedef struct _MIB_UDPTABLE_OWNER_PID {
  DWORD dwNumEntries;
  MIB_UDPROW_OWNER_PID table[1];
} MIB_UDPTABLE_OWNER_PID,*PMIB_UDPTABLE_OWNER_PID;
#define SIZEOF_UDPTABLE_OWNER_PID(X) (FIELD_OFFSET(MIB_UDPTABLE_OWNER_PID,table[0]) + ((X) *sizeof(MIB_UDPROW_OWNER_PID)) + ALIGN_SIZE)
typedef struct _MIB_UDPTABLE_OWNER_MODULE {
  DWORD dwNumEntries;
  MIB_UDPROW_OWNER_MODULE table[1];
} MIB_UDPTABLE_OWNER_MODULE,*PMIB_UDPTABLE_OWNER_MODULE;
#define SIZEOF_UDPTABLE_OWNER_MODULE(X) (FIELD_OFFSET(MIB_UDPTABLE_OWNER_MODULE,table[0]) + ((X) *sizeof(MIB_UDPROW_OWNER_MODULE)) + ALIGN_SIZE)
typedef struct _MIB_UDP6TABLE_OWNER_PID {
  DWORD dwNumEntries;
  MIB_UDP6ROW_OWNER_PID table[1];
} MIB_UDP6TABLE_OWNER_PID,*PMIB_UDP6TABLE_OWNER_PID;
#define SIZEOF_UDP6TABLE_OWNER_PID(X) (FIELD_OFFSET(MIB_UDP6TABLE_OWNER_PID,table[0]) + ((X) *sizeof(MIB_UDP6ROW_OWNER_PID)) + ALIGN_SIZE)
typedef struct _MIB_UDP6TABLE_OWNER_MODULE {
  DWORD dwNumEntries;
  MIB_UDP6ROW_OWNER_MODULE table[1];
} MIB_UDP6TABLE_OWNER_MODULE,*PMIB_UDP6TABLE_OWNER_MODULE;
#define SIZEOF_UDP6TABLE_OWNER_MODULE(X) (FIELD_OFFSET(MIB_UDP6TABLE_OWNER_MODULE,table[0]) + ((X) *sizeof(MIB_UDP6ROW_OWNER_MODULE)) + ALIGN_SIZE)
typedef struct _MIB_TCPSTATS {
  DWORD dwRtoAlgorithm;
  DWORD dwRtoMin;
  DWORD dwRtoMax;
  DWORD dwMaxConn;
  DWORD dwActiveOpens;
  DWORD dwPassiveOpens;
  DWORD dwAttemptFails;
  DWORD dwEstabResets;
  DWORD dwCurrEstab;
  DWORD dwInSegs;
  DWORD dwOutSegs;
  DWORD dwRetransSegs;
  DWORD dwInErrs;
  DWORD dwOutRsts;
  DWORD dwNumConns;
} MIB_TCPSTATS,*PMIB_TCPSTATS;
#define MIB_TCP_RTO_OTHER 1
#define MIB_TCP_RTO_CONSTANT 2
#define MIB_TCP_RTO_RSRE 3
#define MIB_TCP_RTO_VANJ 4
#define MIB_TCP_MAXCONN_DYNAMIC (DWORD)-1
typedef enum _TCP_TABLE_CLASS {
  TCP_TABLE_BASIC_LISTENER,
  TCP_TABLE_BASIC_CONNECTIONS,
  TCP_TABLE_BASIC_ALL,
  TCP_TABLE_OWNER_PID_LISTENER,
  TCP_TABLE_OWNER_PID_CONNECTIONS,
  TCP_TABLE_OWNER_PID_ALL,
  TCP_TABLE_OWNER_MODULE_LISTENER,
  TCP_TABLE_OWNER_MODULE_CONNECTIONS,
  TCP_TABLE_OWNER_MODULE_ALL
} TCP_TABLE_CLASS, *PTCP_TABLE_CLASS;
typedef struct _MIB_TCPROW {
  DWORD dwState;
  DWORD dwLocalAddr;
  DWORD dwLocalPort;
  DWORD dwRemoteAddr;
  DWORD dwRemotePort;
} MIB_TCPROW,*PMIB_TCPROW;
typedef MIB_TCPROW MIB_TCPROW_BASIC,*PMIB_TCPROW_BASIC;
typedef struct _MIB_TCPROW_OWNER_PID {
  DWORD dwState;
  DWORD dwLocalAddr;
  DWORD dwLocalPort;
  DWORD dwRemoteAddr;
  DWORD dwRemotePort;
  DWORD dwOwningPid;
} MIB_TCPROW_OWNER_PID,*PMIB_TCPROW_OWNER_PID;
typedef struct _MIB_TCPROW_OWNER_MODULE {
  DWORD dwState;
  DWORD dwLocalAddr;
  DWORD dwLocalPort;
  DWORD dwRemoteAddr;
  DWORD dwRemotePort;
  DWORD dwOwningPid;
  LARGE_INTEGER liCreateTimestamp;
  ULONGLONG OwningModuleInfo[16];
} MIB_TCPROW_OWNER_MODULE,*PMIB_TCPROW_OWNER_MODULE;
typedef struct _MIB_TCP6ROW_OWNER_PID {
  UCHAR ucLocalAddr[16];
  DWORD dwLocalScopeId;
  DWORD dwLocalPort;
  UCHAR ucRemoteAddr[16];
  DWORD dwRemoteScopeId;
  DWORD dwRemotePort;
  DWORD dwState;
  DWORD dwOwningPid;
} MIB_TCP6ROW_OWNER_PID,*PMIB_TCP6ROW_OWNER_PID;
typedef struct _MIB_TCP6ROW_OWNER_MODULE {
  UCHAR ucLocalAddr[16];
  DWORD dwLocalScopeId;
  DWORD dwLocalPort;
  UCHAR ucRemoteAddr[16];
  DWORD dwRemoteScopeId;
  DWORD dwRemotePort;
  DWORD dwState;
  DWORD dwOwningPid;
  LARGE_INTEGER liCreateTimestamp;
  ULONGLONG OwningModuleInfo[16];
} MIB_TCP6ROW_OWNER_MODULE,*PMIB_TCP6ROW_OWNER_MODULE;
#define MIB_TCP_STATE_CLOSED 1
#define MIB_TCP_STATE_LISTEN 2
#define MIB_TCP_STATE_SYN_SENT 3
#define MIB_TCP_STATE_SYN_RCVD 4
#define MIB_TCP_STATE_ESTAB 5
#define MIB_TCP_STATE_FIN_WAIT1 6
#define MIB_TCP_STATE_FIN_WAIT2 7
#define MIB_TCP_STATE_CLOSE_WAIT 8
#define MIB_TCP_STATE_CLOSING 9
#define MIB_TCP_STATE_LAST_ACK 10
#define MIB_TCP_STATE_TIME_WAIT 11
#define MIB_TCP_STATE_DELETE_TCB 12
typedef struct _MIB_TCPTABLE {
  DWORD dwNumEntries;
  MIB_TCPROW table[1];
} MIB_TCPTABLE,*PMIB_TCPTABLE;
typedef MIB_TCPTABLE MIB_TCPTABLE_BASIC,*PMIB_TCPTABLE_BASIC;
#define SIZEOF_TCPTABLE(X) (FIELD_OFFSET(MIB_TCPTABLE,table[0]) + ((X) *sizeof(MIB_TCPROW)) + ALIGN_SIZE)
#define SIZEOF_TCPTABLE_BASIC(X) SIZEOF_TCPTABLE(X)
typedef struct _MIB_TCPTABLE_OWNER_PID {
  DWORD dwNumEntries;
  MIB_TCPROW_OWNER_PID table[1];
} MIB_TCPTABLE_OWNER_PID,*PMIB_TCPTABLE_OWNER_PID;
#define SIZEOF_TCPTABLE_OWNER_PID(X) (FIELD_OFFSET(MIB_TCPTABLE_OWNER_PID,table[0]) + ((X) *sizeof(MIB_TCPROW_OWNER_PID)) + ALIGN_SIZE)
typedef struct _MIB_TCPTABLE_OWNER_MODULE {
  DWORD dwNumEntries;
  MIB_TCPROW_OWNER_MODULE table[1];
} MIB_TCPTABLE_OWNER_MODULE,*PMIB_TCPTABLE_OWNER_MODULE;
#define SIZEOF_TCPTABLE_OWNER_MODULE(X) (FIELD_OFFSET(MIB_TCPTABLE_OWNER_MODULE,table[0]) + ((X) *sizeof(MIB_TCPROW_OWNER_MODULE)) + ALIGN_SIZE)
typedef struct _MIB_TCP6TABLE_OWNER_PID {
  DWORD dwNumEntries;
  MIB_TCP6ROW_OWNER_PID table[1];
} MIB_TCP6TABLE_OWNER_PID,*PMIB_TCP6TABLE_OWNER_PID;
#define SIZEOF_TCP6TABLE_OWNER_PID(X) (FIELD_OFFSET(MIB_TCP6TABLE_OWNER_PID,table[0]) + ((X) *sizeof(MIB_TCP6ROW_OWNER_PID)) + ALIGN_SIZE)
typedef struct _MIB_TCP6TABLE_OWNER_MODULE {
  DWORD dwNumEntries;
  MIB_TCP6ROW_OWNER_MODULE table[1];
} MIB_TCP6TABLE_OWNER_MODULE,*PMIB_TCP6TABLE_OWNER_MODULE;
#define SIZEOF_TCP6TABLE_OWNER_MODULE(X) (FIELD_OFFSET(MIB_TCP6TABLE_OWNER_MODULE,table[0]) + ((X) *sizeof(MIB_TCP6ROW_OWNER_PID)) + ALIGN_SIZE)
#define MIB_SECURITY_TCP_SYN_ATTACK 0x00000001
#define MIB_USE_CURRENT_TTL ((DWORD)-1)
#define MIB_USE_CURRENT_FORWARDING ((DWORD)-1)
typedef struct _MIB_IPSTATS {
  DWORD dwForwarding;
  DWORD dwDefaultTTL;
  DWORD dwInReceives;
  DWORD dwInHdrErrors;
  DWORD dwInAddrErrors;
  DWORD dwForwDatagrams;
  DWORD dwInUnknownProtos;
  DWORD dwInDiscards;
  DWORD dwInDelivers;
  DWORD dwOutRequests;
  DWORD dwRoutingDiscards;
  DWORD dwOutDiscards;
  DWORD dwOutNoRoutes;
  DWORD dwReasmTimeout;
  DWORD dwReasmReqds;
  DWORD dwReasmOks;
  DWORD dwReasmFails;
  DWORD dwFragOks;
  DWORD dwFragFails;
  DWORD dwFragCreates;
  DWORD dwNumIf;
  DWORD dwNumAddr;
  DWORD dwNumRoutes;
} MIB_IPSTATS,*PMIB_IPSTATS;
#define MIB_IP_FORWARDING 1
#define MIB_IP_NOT_FORWARDING 2
#define MIB_IPADDR_PRIMARY 0x0001
#define MIB_IPADDR_DYNAMIC 0x0004
#define MIB_IPADDR_DISCONNECTED 0x0008
#define MIB_IPADDR_DELETED 0x0040
#define MIB_IPADDR_TRANSIENT 0x0080
typedef struct _MIB_IPADDRROW {
  DWORD dwAddr;
  DWORD dwIndex;
  DWORD dwMask;
  DWORD dwBCastAddr;
  DWORD dwReasmSize;
  unsigned short unused1;
  unsigned short wType;
} MIB_IPADDRROW,*PMIB_IPADDRROW;
typedef struct _MIB_IPADDRTABLE {
  DWORD dwNumEntries;
  MIB_IPADDRROW table[1];
} MIB_IPADDRTABLE,*PMIB_IPADDRTABLE;
#define SIZEOF_IPADDRTABLE(X) (FIELD_OFFSET(MIB_IPADDRTABLE,table[0]) + ((X) *sizeof(MIB_IPADDRROW)) + ALIGN_SIZE)
typedef struct _MIB_IPFORWARDNUMBER {
  DWORD dwValue;
} MIB_IPFORWARDNUMBER,*PMIB_IPFORWARDNUMBER;
typedef struct _MIB_IPFORWARDROW {
  DWORD dwForwardDest;
  DWORD dwForwardMask;
  DWORD dwForwardPolicy;
  DWORD dwForwardNextHop;
  DWORD dwForwardIfIndex;
  DWORD dwForwardType;
  DWORD dwForwardProto;
  DWORD dwForwardAge;
  DWORD dwForwardNextHopAS;
  DWORD dwForwardMetric1;
  DWORD dwForwardMetric2;
  DWORD dwForwardMetric3;
  DWORD dwForwardMetric4;
  DWORD dwForwardMetric5;
} MIB_IPFORWARDROW,*PMIB_IPFORWARDROW;
#define MIB_IPROUTE_TYPE_OTHER 1
#define MIB_IPROUTE_TYPE_INVALID 2
#define MIB_IPROUTE_TYPE_DIRECT 3
#define MIB_IPROUTE_TYPE_INDIRECT 4
#define MIB_IPROUTE_METRIC_UNUSED (DWORD)-1
#define MIB_IPPROTO_OTHER 1
#define MIB_IPPROTO_LOCAL 2
#define MIB_IPPROTO_NETMGMT 3
#define MIB_IPPROTO_ICMP 4
#define MIB_IPPROTO_EGP 5
#define MIB_IPPROTO_GGP 6
#define MIB_IPPROTO_HELLO 7
#define MIB_IPPROTO_RIP 8
#define MIB_IPPROTO_IS_IS 9
#define MIB_IPPROTO_ES_IS 10
#define MIB_IPPROTO_CISCO 11
#define MIB_IPPROTO_BBN 12
#define MIB_IPPROTO_OSPF 13
#define MIB_IPPROTO_BGP 14
#define MIB_IPPROTO_NT_AUTOSTATIC 10002
#define MIB_IPPROTO_NT_STATIC 10006
#define MIB_IPPROTO_NT_STATIC_NON_DOD 10007
typedef struct _MIB_IPFORWARDTABLE {
  DWORD dwNumEntries;
  MIB_IPFORWARDROW table[1];
} MIB_IPFORWARDTABLE,*PMIB_IPFORWARDTABLE;
#define SIZEOF_IPFORWARDTABLE(X) (FIELD_OFFSET(MIB_IPFORWARDTABLE,table[0]) + ((X) *sizeof(MIB_IPFORWARDROW)) + ALIGN_SIZE)
typedef struct _MIB_IPNETROW {
  DWORD dwIndex;
  DWORD dwPhysAddrLen;
  BYTE bPhysAddr[8];
  DWORD dwAddr;
  DWORD dwType;
} MIB_IPNETROW,*PMIB_IPNETROW;
#define MIB_IPNET_TYPE_OTHER 1
#define MIB_IPNET_TYPE_INVALID 2
#define MIB_IPNET_TYPE_DYNAMIC 3
#define MIB_IPNET_TYPE_STATIC 4
typedef struct _MIB_IPNETTABLE {
  DWORD dwNumEntries;
  MIB_IPNETROW table[1];
} MIB_IPNETTABLE,*PMIB_IPNETTABLE;
#define SIZEOF_IPNETTABLE(X) (FIELD_OFFSET(MIB_IPNETTABLE,table[0]) + ((X) *sizeof(MIB_IPNETROW)) + ALIGN_SIZE)
typedef struct _MIB_IPMCAST_OIF {
  DWORD dwOutIfIndex;
  DWORD dwNextHopAddr;
  DWORD dwReserved;
  DWORD dwReserved1;
} MIB_IPMCAST_OIF,*PMIB_IPMCAST_OIF;
typedef struct _MIB_IPMCAST_MFE {
  DWORD dwGroup;
  DWORD dwSource;
  DWORD dwSrcMask;
  DWORD dwUpStrmNgbr;
  DWORD dwInIfIndex;
  DWORD dwInIfProtocol;
  DWORD dwRouteProtocol;
  DWORD dwRouteNetwork;
  DWORD dwRouteMask;
  ULONG ulUpTime;
  ULONG ulExpiryTime;
  ULONG ulTimeOut;
  ULONG ulNumOutIf;
  DWORD fFlags;
  DWORD dwReserved;
  MIB_IPMCAST_OIF rgmioOutInfo[1];
} MIB_IPMCAST_MFE,*PMIB_IPMCAST_MFE;
typedef struct _MIB_MFE_TABLE {
  DWORD dwNumEntries;
  MIB_IPMCAST_MFE table[1];
} MIB_MFE_TABLE,*PMIB_MFE_TABLE;
#define SIZEOF_BASIC_MIB_MFE (ULONG)(FIELD_OFFSET(MIB_IPMCAST_MFE,rgmioOutInfo[0]))
#define SIZEOF_MIB_MFE(X) (SIZEOF_BASIC_MIB_MFE + ((X) *sizeof(MIB_IPMCAST_OIF)))
typedef struct _MIB_IPMCAST_OIF_STATS {
  DWORD dwOutIfIndex;
  DWORD dwNextHopAddr;
  DWORD dwDialContext;
  ULONG ulTtlTooLow;
  ULONG ulFragNeeded;
  ULONG ulOutPackets;
  ULONG ulOutDiscards;
} MIB_IPMCAST_OIF_STATS,*PMIB_IPMCAST_OIF_STATS;
typedef struct _MIB_IPMCAST_MFE_STATS {
  DWORD dwGroup;
  DWORD dwSource;
  DWORD dwSrcMask;
  DWORD dwUpStrmNgbr;
  DWORD dwInIfIndex;
  DWORD dwInIfProtocol;
  DWORD dwRouteProtocol;
  DWORD dwRouteNetwork;
  DWORD dwRouteMask;
  ULONG ulUpTime;
  ULONG ulExpiryTime;
  ULONG ulNumOutIf;
  ULONG ulInPkts;
  ULONG ulInOctets;
  ULONG ulPktsDifferentIf;
  ULONG ulQueueOverflow;
  MIB_IPMCAST_OIF_STATS rgmiosOutStats[1];
} MIB_IPMCAST_MFE_STATS,*PMIB_IPMCAST_MFE_STATS;
typedef struct _MIB_MFE_STATS_TABLE {
  DWORD dwNumEntries;
  MIB_IPMCAST_MFE_STATS table[1];
} MIB_MFE_STATS_TABLE,*PMIB_MFE_STATS_TABLE;
#define SIZEOF_BASIC_MIB_MFE_STATS (ULONG)(FIELD_OFFSET(MIB_IPMCAST_MFE_STATS,rgmiosOutStats[0]))
#define SIZEOF_MIB_MFE_STATS(X) (SIZEOF_BASIC_MIB_MFE_STATS + ((X) *sizeof(MIB_IPMCAST_OIF_STATS)))
typedef struct _MIB_IPMCAST_MFE_STATS_EX {
  DWORD dwGroup;
  DWORD dwSource;
  DWORD dwSrcMask;
  DWORD dwUpStrmNgbr;
  DWORD dwInIfIndex;
  DWORD dwInIfProtocol;
  DWORD dwRouteProtocol;
  DWORD dwRouteNetwork;
  DWORD dwRouteMask;
  ULONG ulUpTime;
  ULONG ulExpiryTime;
  ULONG ulNumOutIf;
  ULONG ulInPkts;
  ULONG ulInOctets;
  ULONG ulPktsDifferentIf;
  ULONG ulQueueOverflow;
  ULONG ulUninitMfe;
  ULONG ulNegativeMfe;
  ULONG ulInDiscards;
  ULONG ulInHdrErrors;
  ULONG ulTotalOutPackets;
  MIB_IPMCAST_OIF_STATS rgmiosOutStats[1];
} MIB_IPMCAST_MFE_STATS_EX,*PMIB_IPMCAST_MFE_STATS_EX;
typedef struct _MIB_MFE_STATS_TABLE_EX {
  DWORD dwNumEntries;
  MIB_IPMCAST_MFE_STATS_EX table[1];
} MIB_MFE_STATS_TABLE_EX,*PMIB_MFE_STATS_TABLE_EX;
#define SIZEOF_BASIC_MIB_MFE_STATS_EX (ULONG)(FIELD_OFFSET(MIB_IPMCAST_MFE_STATS_EX,rgmiosOutStats[0]))
#define SIZEOF_MIB_MFE_STATS_EX(X) (SIZEOF_BASIC_MIB_MFE_STATS_EX + ((X) *sizeof(MIB_IPMCAST_OIF_STATS)))
typedef struct _MIB_IPMCAST_GLOBAL {
  DWORD dwEnable;
} MIB_IPMCAST_GLOBAL,*PMIB_IPMCAST_GLOBAL;
typedef struct _MIB_IPMCAST_IF_ENTRY {
  DWORD dwIfIndex;
  DWORD dwTtl;
  DWORD dwProtocol;
  DWORD dwRateLimit;
  ULONG ulInMcastOctets;
  ULONG ulOutMcastOctets;
} MIB_IPMCAST_IF_ENTRY,*PMIB_IPMCAST_IF_ENTRY;
typedef struct _MIB_IPMCAST_IF_TABLE {
  DWORD dwNumEntries;
  MIB_IPMCAST_IF_ENTRY table[1];
} MIB_IPMCAST_IF_TABLE,*PMIB_IPMCAST_IF_TABLE;
#define SIZEOF_MCAST_IF_TABLE(X) (FIELD_OFFSET(MIB_IPMCAST_IF_TABLE,table[0]) + ((X) *sizeof(MIB_IPMCAST_IF_ENTRY)) + ALIGN_SIZE)
typedef struct _MIB_IPMCAST_BOUNDARY {
  DWORD dwIfIndex;
  DWORD dwGroupAddress;
  DWORD dwGroupMask;
  DWORD dwStatus;
} MIB_IPMCAST_BOUNDARY,*PMIB_IPMCAST_BOUNDARY;
typedef struct _MIB_IPMCAST_BOUNDARY_TABLE {
  DWORD dwNumEntries;
  MIB_IPMCAST_BOUNDARY table[1];
} MIB_IPMCAST_BOUNDARY_TABLE,*PMIB_IPMCAST_BOUNDARY_TABLE;
#define SIZEOF_BOUNDARY_TABLE(X) (FIELD_OFFSET(MIB_IPMCAST_BOUNDARY_TABLE,table[0]) + ((X) *sizeof(MIB_IPMCAST_BOUNDARY)) + ALIGN_SIZE)
typedef struct {
  DWORD dwGroupAddress;
  DWORD dwGroupMask;
} MIB_BOUNDARYROW,*PMIB_BOUNDARYROW;
typedef struct {
  DWORD dwTtl;
  DWORD dwRateLimit;
} MIB_MCAST_LIMIT_ROW,*PMIB_MCAST_LIMIT_ROW;
#define MAX_SCOPE_NAME_LEN 255
#define SN_UNICODE 
typedef WCHAR SN_CHAR;
typedef SN_CHAR SCOPE_NAME_BUFFER[255 +1],*SCOPE_NAME;
typedef struct _MIB_IPMCAST_SCOPE {
  DWORD dwGroupAddress;
  DWORD dwGroupMask;
  SCOPE_NAME_BUFFER snNameBuffer;
  DWORD dwStatus;
} MIB_IPMCAST_SCOPE,*PMIB_IPMCAST_SCOPE;
typedef struct _MIB_IPDESTROW {
  __extension__ union {
    DWORD dwForwardDest;
    DWORD dwForwardMask;
    DWORD dwForwardPolicy;
    DWORD dwForwardNextHop;
    DWORD dwForwardIfIndex;
    DWORD dwForwardType;
    DWORD dwForwardProto;
    DWORD dwForwardAge;
    DWORD dwForwardNextHopAS;
    DWORD dwForwardMetric1;
    DWORD dwForwardMetric2;
    DWORD dwForwardMetric3;
    DWORD dwForwardMetric4;
    DWORD dwForwardMetric5;
  };
  DWORD dwForwardPreference;
  DWORD dwForwardViewSet;
} MIB_IPDESTROW,*PMIB_IPDESTROW;
typedef struct _MIB_IPDESTTABLE {
  DWORD dwNumEntries;
  MIB_IPDESTROW table[1];
} MIB_IPDESTTABLE,*PMIB_IPDESTTABLE;
typedef struct _MIB_BEST_IF {
  DWORD dwDestAddr;
  DWORD dwIfIndex;
} MIB_BEST_IF,*PMIB_BEST_IF;
typedef struct _MIB_PROXYARP {
  DWORD dwAddress;
  DWORD dwMask;
  DWORD dwIfIndex;
} MIB_PROXYARP,*PMIB_PROXYARP;
typedef struct _MIB_IFSTATUS {
  DWORD dwIfIndex;
  DWORD dwAdminStatus;
  DWORD dwOperationalStatus;
  WINBOOL bMHbeatActive;
  WINBOOL bMHbeatAlive;
} MIB_IFSTATUS,*PMIB_IFSTATUS;
typedef struct _MIB_ROUTESTATE {
  WINBOOL bRoutesSetToStack;
} MIB_ROUTESTATE,*PMIB_ROUTESTATE;
typedef struct _MIB_OPAQUE_INFO {
  DWORD dwId;
  __extension__ union {
    ULONGLONG ullAlign;
    BYTE rgbyData[1];
  };
} MIB_OPAQUE_INFO,*PMIB_OPAQUE_INFO;
typedef struct _TCPIP_OWNER_MODULE_BASIC_INFO {
  PWCHAR pModuleName;
  PWCHAR pModulePath;
} TCPIP_OWNER_MODULE_BASIC_INFO, *PTCPIP_OWNER_MODULE_BASIC_INFO;
typedef enum _UDP_TABLE_CLASS {
  UDP_TABLE_BASIC,
  UDP_TABLE_OWNER_PID,
  UDP_TABLE_OWNER_MODULE
} UDP_TABLE_CLASS, *PUDP_TABLE_CLASS;
typedef enum _TCPIP_OWNER_MODULE_INFO_CLASS {
  TCPIP_OWNER_MODULE_INFO_BASIC
} TCPIP_OWNER_MODULE_INFO_CLASS, *PTCPIP_OWNER_MODULE_INFO_CLASS;
#define MAX_MIB_OFFSET 8
#define MIB_INFO_SIZE(S) (MAX_MIB_OFFSET + sizeof(S))
#define MIB_INFO_SIZE_IN_DWORDS(S) ((MIB_INFO_SIZE(S))/sizeof(DWORD) + 1)
#define DEFINE_MIB_BUFFER(X,Y,Z) DWORD __rgdwBuff[MIB_INFO_SIZE_IN_DWORDS(Y)]; PMIB_OPAQUE_INFO X = (PMIB_OPAQUE_INFO)__rgdwBuff; Y *Z = (Y *)(X->rgbyData)
#define CAST_MIB_INFO(X,Y,Z) Z = (Y)(X->rgbyData)
#define IP_EXPORT_INCLUDED 1
typedef ULONG IPAddr;
typedef ULONG IPMask;
typedef ULONG IP_STATUS;
typedef struct in6_addr IPv6Addr;
typedef struct ip_option_information {
  UCHAR Ttl;
  UCHAR Tos;
  UCHAR Flags;
  UCHAR OptionsSize;
  PUCHAR OptionsData;
} IP_OPTION_INFORMATION,*PIP_OPTION_INFORMATION;
typedef struct icmp_echo_reply {
  IPAddr Address;
  ULONG Status;
  ULONG RoundTripTime;
  USHORT DataSize;
  USHORT Reserved;
  PVOID Data;
  struct ip_option_information Options;
} ICMP_ECHO_REPLY,*PICMP_ECHO_REPLY;
typedef struct arp_send_reply {
  IPAddr DestAddress;
  IPAddr SrcAddress;
} ARP_SEND_REPLY,*PARP_SEND_REPLY;
typedef struct tcp_reserve_port_range {
  USHORT UpperRange;
  USHORT LowerRange;
} TCP_RESERVE_PORT_RANGE,*PTCP_RESERVE_PORT_RANGE;
#define MAX_ADAPTER_NAME 128
typedef struct _IP_ADAPTER_INDEX_MAP {
  ULONG Index;
  WCHAR Name[128];
} IP_ADAPTER_INDEX_MAP,*PIP_ADAPTER_INDEX_MAP;
typedef struct _IP_INTERFACE_INFO {
  LONG NumAdapters;
  IP_ADAPTER_INDEX_MAP Adapter[1];
} IP_INTERFACE_INFO,*PIP_INTERFACE_INFO;
typedef struct _IP_UNIDIRECTIONAL_ADAPTER_ADDRESS {
  ULONG NumAdapters;
  IPAddr Address[1];
} IP_UNIDIRECTIONAL_ADAPTER_ADDRESS,*PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS;
typedef struct _IP_ADAPTER_ORDER_MAP {
  ULONG NumAdapters;
  ULONG AdapterOrder[1];
} IP_ADAPTER_ORDER_MAP,*PIP_ADAPTER_ORDER_MAP;
typedef struct _IP_MCAST_COUNTER_INFO {
  ULONG64 InMcastOctets;
  ULONG64 OutMcastOctets;
  ULONG64 InMcastPkts;
  ULONG64 OutMcastPkts;
} IP_MCAST_COUNTER_INFO,*PIP_MCAST_COUNTER_INFO;
typedef struct _IPV6_ADDRESS_EX {
  USHORT sin6_port;
  ULONG sin6_flowinfo;
  USHORT sin6_addr[8];
  ULONG sin6_scope_id;
} IPV6_ADDRESS_EX, *PIPV6_ADDRESS_EX;
#define IP_STATUS_BASE 11000
#define IP_SUCCESS 0
#define IP_BUF_TOO_SMALL (IP_STATUS_BASE + 1)
#define IP_DEST_NET_UNREACHABLE (IP_STATUS_BASE + 2)
#define IP_DEST_HOST_UNREACHABLE (IP_STATUS_BASE + 3)
#define IP_DEST_PROT_UNREACHABLE (IP_STATUS_BASE + 4)
#define IP_DEST_PORT_UNREACHABLE (IP_STATUS_BASE + 5)
#define IP_NO_RESOURCES (IP_STATUS_BASE + 6)
#define IP_BAD_OPTION (IP_STATUS_BASE + 7)
#define IP_HW_ERROR (IP_STATUS_BASE + 8)
#define IP_PACKET_TOO_BIG (IP_STATUS_BASE + 9)
#define IP_REQ_TIMED_OUT (IP_STATUS_BASE + 10)
#define IP_BAD_REQ (IP_STATUS_BASE + 11)
#define IP_BAD_ROUTE (IP_STATUS_BASE + 12)
#define IP_TTL_EXPIRED_TRANSIT (IP_STATUS_BASE + 13)
#define IP_TTL_EXPIRED_REASSEM (IP_STATUS_BASE + 14)
#define IP_PARAM_PROBLEM (IP_STATUS_BASE + 15)
#define IP_SOURCE_QUENCH (IP_STATUS_BASE + 16)
#define IP_OPTION_TOO_BIG (IP_STATUS_BASE + 17)
#define IP_BAD_DESTINATION (IP_STATUS_BASE + 18)
#define IP_DEST_NO_ROUTE (IP_STATUS_BASE + 2)
#define IP_DEST_ADDR_UNREACHABLE (IP_STATUS_BASE + 3)
#define IP_DEST_PROHIBITED (IP_STATUS_BASE + 4)
#define IP_DEST_PORT_UNREACHABLE (IP_STATUS_BASE + 5)
#define IP_HOP_LIMIT_EXCEEDED (IP_STATUS_BASE + 13)
#define IP_REASSEMBLY_TIME_EXCEEDED (IP_STATUS_BASE + 14)
#define IP_PARAMETER_PROBLEM (IP_STATUS_BASE + 15)
#define IP_DEST_UNREACHABLE (IP_STATUS_BASE + 40)
#define IP_TIME_EXCEEDED (IP_STATUS_BASE + 41)
#define IP_BAD_HEADER (IP_STATUS_BASE + 42)
#define IP_UNRECOGNIZED_NEXT_HEADER (IP_STATUS_BASE + 43)
#define IP_ICMP_ERROR (IP_STATUS_BASE + 44)
#define IP_DEST_SCOPE_MISMATCH (IP_STATUS_BASE + 45)
#define IP_ADDR_DELETED (IP_STATUS_BASE + 19)
#define IP_SPEC_MTU_CHANGE (IP_STATUS_BASE + 20)
#define IP_MTU_CHANGE (IP_STATUS_BASE + 21)
#define IP_UNLOAD (IP_STATUS_BASE + 22)
#define IP_ADDR_ADDED (IP_STATUS_BASE + 23)
#define IP_MEDIA_CONNECT (IP_STATUS_BASE + 24)
#define IP_MEDIA_DISCONNECT (IP_STATUS_BASE + 25)
#define IP_BIND_ADAPTER (IP_STATUS_BASE + 26)
#define IP_UNBIND_ADAPTER (IP_STATUS_BASE + 27)
#define IP_DEVICE_DOES_NOT_EXIST (IP_STATUS_BASE + 28)
#define IP_DUPLICATE_ADDRESS (IP_STATUS_BASE + 29)
#define IP_INTERFACE_METRIC_CHANGE (IP_STATUS_BASE + 30)
#define IP_RECONFIG_SECFLTR (IP_STATUS_BASE + 31)
#define IP_NEGOTIATING_IPSEC (IP_STATUS_BASE + 32)
#define IP_INTERFACE_WOL_CAPABILITY_CHANGE (IP_STATUS_BASE + 33)
#define IP_DUPLICATE_IPADD (IP_STATUS_BASE + 34)
#define IP_NO_FURTHER_SENDS (IP_STATUS_BASE + 35)
#define IP_GENERAL_FAILURE (IP_STATUS_BASE + 50)
#define MAX_IP_STATUS IP_GENERAL_FAILURE
#define IP_PENDING (IP_STATUS_BASE + 255)
#define IP_FLAG_DF 0x2
#define IP_OPT_EOL 0
#define IP_OPT_NOP 1
#define IP_OPT_SECURITY 0x82
#define IP_OPT_LSRR 0x83
#define IP_OPT_SSRR 0x89
#define IP_OPT_RR 0x7
#define IP_OPT_TS 0x44
#define IP_OPT_SID 0x88
#define IP_OPT_ROUTER_ALERT 0x94
#define MAX_OPT_SIZE 40
#define IP_TYPES_INCLUDED 
#define _TIME_H_ 
#pragma pack(push,_CRT_PACKING)
#define _CLOCK_T_DEFINED 
  typedef long clock_t;
#define _TM_DEFINED 
  struct tm {
    int tm_sec;
    int tm_min;
    int tm_hour;
    int tm_mday;
    int tm_mon;
    int tm_year;
    int tm_wday;
    int tm_yday;
    int tm_isdst;
  };
#define CLOCKS_PER_SEC 1000
  extern __attribute__ ((__dllimport__)) int _daylight;
  extern __attribute__ ((__dllimport__)) long _dstbias;
  extern __attribute__ ((__dllimport__)) long _timezone;
  extern __attribute__ ((__dllimport__)) char * _tzname[2];
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _get_daylight(int *_Daylight);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _get_dstbias(long *_Daylight_savings_bias);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _get_timezone(long *_Timezone);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _get_tzname(size_t *_ReturnValue,char *_Buffer,size_t _SizeInBytes,int _Index);
  char *__attribute__((__cdecl__)) asctime(const struct tm *_Tm) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) asctime_s (char *_Buf,size_t _SizeInWords,const struct tm *_Tm);
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _ctime32(const __time32_t *_Time) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _ctime32_s (char *_Buf,size_t _SizeInBytes,const __time32_t *_Time);
  clock_t __attribute__((__cdecl__)) clock(void);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _difftime32(__time32_t _Time1,__time32_t _Time2);
  __attribute__ ((__dllimport__)) struct tm *__attribute__((__cdecl__)) _gmtime32(const __time32_t *_Time) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _gmtime32_s (struct tm *_Tm,const __time32_t *_Time);
  __attribute__ ((__dllimport__)) struct tm *__attribute__((__cdecl__)) _localtime32(const __time32_t *_Time) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _localtime32_s (struct tm *_Tm,const __time32_t *_Time);
  size_t __attribute__((__cdecl__)) strftime(char * __restrict__ _Buf,size_t _SizeInBytes,const char * __restrict__ _Format,const struct tm * __restrict__ _Tm);
  __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _strftime_l(char * __restrict__ _Buf,size_t _Max_size,const char * __restrict__ _Format,const struct tm * __restrict__ _Tm,_locale_t _Locale);
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strdate(char *_Buffer) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _strdate_s (char *_Buf,size_t _SizeInBytes);
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _strtime(char *_Buffer) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _strtime_s (char *_Buf ,size_t _SizeInBytes);
  __attribute__ ((__dllimport__)) __time32_t __attribute__((__cdecl__)) _time32(__time32_t *_Time);
  __attribute__ ((__dllimport__)) __time32_t __attribute__((__cdecl__)) _mktime32(struct tm *_Tm);
  __attribute__ ((__dllimport__)) __time32_t __attribute__((__cdecl__)) _mkgmtime32(struct tm *_Tm);
  void __attribute__((__cdecl__)) tzset(void) ;
  __attribute__ ((__dllimport__))
  void __attribute__((__cdecl__)) _tzset(void);
  __attribute__ ((__dllimport__)) double __attribute__((__cdecl__)) _difftime64(__time64_t _Time1,__time64_t _Time2);
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _ctime64(const __time64_t *_Time) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _ctime64_s (char *_Buf,size_t _SizeInBytes,const __time64_t *_Time);
  __attribute__ ((__dllimport__)) struct tm *__attribute__((__cdecl__)) _gmtime64(const __time64_t *_Time) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _gmtime64_s (struct tm *_Tm,const __time64_t *_Time);
  __attribute__ ((__dllimport__)) struct tm *__attribute__((__cdecl__)) _localtime64(const __time64_t *_Time) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _localtime64_s (struct tm *_Tm,const __time64_t *_Time);
  __attribute__ ((__dllimport__)) __time64_t __attribute__((__cdecl__)) _mktime64(struct tm *_Tm);
  __attribute__ ((__dllimport__)) __time64_t __attribute__((__cdecl__)) _mkgmtime64(struct tm *_Tm);
  __attribute__ ((__dllimport__)) __time64_t __attribute__((__cdecl__)) _time64(__time64_t *_Time);
  unsigned __attribute__((__cdecl__)) _getsystime(struct tm *_Tm);
  unsigned __attribute__((__cdecl__)) _setsystime(struct tm *_Tm,unsigned _MilliSec);
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wasctime(const struct tm *_Tm);
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _wasctime_s (wchar_t *_Buf,size_t _SizeInWords,const struct tm *_Tm);
  wchar_t *__attribute__((__cdecl__)) _wctime32(const __time32_t *_Time) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _wctime32_s (wchar_t *_Buf,size_t _SizeInWords,const __time32_t *_Time);
  size_t __attribute__((__cdecl__)) wcsftime(wchar_t * __restrict__ _Buf,size_t _SizeInWords,const wchar_t * __restrict__ _Format,const struct tm * __restrict__ _Tm);
  __attribute__ ((__dllimport__)) size_t __attribute__((__cdecl__)) _wcsftime_l(wchar_t * __restrict__ _Buf,size_t _SizeInWords,const wchar_t * __restrict__ _Format,const struct tm * __restrict__ _Tm,_locale_t _Locale);
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wstrdate(wchar_t *_Buffer) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _wstrdate_s (wchar_t *_Buf,size_t _SizeInWords);
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wstrtime(wchar_t *_Buffer) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _wstrtime_s (wchar_t *_Buf,size_t _SizeInWords);
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wctime64(const __time64_t *_Time) ;
  __attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _wctime64_s (wchar_t *_Buf,size_t _SizeInWords,const __time64_t *_Time);
#define _INC_WTIME_INL 
  wchar_t *__attribute__((__cdecl__)) _wctime(const time_t *) ;
  extern inline __attribute__((__gnu_inline__)) wchar_t *__attribute__((__cdecl__)) _wctime(const time_t *_Time) { return _wctime64(_Time); }
#define _INC_WTIME_S_INL 
  errno_t __attribute__((__cdecl__)) _wctime_s(wchar_t *, size_t, const time_t *);
  extern inline __attribute__((__gnu_inline__)) errno_t __attribute__((__cdecl__)) _wctime_s (wchar_t *_Buffer,size_t _SizeInWords,const time_t *_Time) { return _wctime64_s (_Buffer,_SizeInWords,_Time); }
#define _WTIME_DEFINED 
static __inline time_t __attribute__((__cdecl__)) time(time_t *_Time) { return _time64(_Time); }
static __inline double __attribute__((__cdecl__)) difftime(time_t _Time1,time_t _Time2) { return _difftime64(_Time1,_Time2); }
static __inline struct tm *__attribute__((__cdecl__)) localtime(const time_t *_Time) { return _localtime64(_Time); }
static __inline errno_t __attribute__((__cdecl__)) localtime_s(struct tm *_Tm,const time_t *_Time) { return _localtime64_s(_Tm,_Time); }
static __inline struct tm *__attribute__((__cdecl__)) gmtime(const time_t *_Time) { return _gmtime64(_Time); }
static __inline errno_t __attribute__((__cdecl__)) gmtime_s(struct tm *_Tm, const time_t *_Time) { return _gmtime64_s(_Tm, _Time); }
static __inline char *__attribute__((__cdecl__)) ctime(const time_t *_Time) { return _ctime64(_Time); }
static __inline errno_t __attribute__((__cdecl__)) ctime_s(char *_Buf,size_t _SizeInBytes,const time_t *_Time) { return _ctime64_s(_Buf,_SizeInBytes,_Time); }
static __inline time_t __attribute__((__cdecl__)) mktime(struct tm *_Tm) { return _mktime64(_Tm); }
static __inline time_t __attribute__((__cdecl__)) _mkgmtime(struct tm *_Tm) { return _mkgmtime64(_Tm); }
#define CLK_TCK CLOCKS_PER_SEC
#define __MINGW_ATTRIB_DEPRECATED_UCRT 
  __attribute__ ((__dllimport__)) extern int daylight ;
  __attribute__ ((__dllimport__)) extern long timezone ;
  __attribute__ ((__dllimport__)) extern char *tzname[2] ;
  void __attribute__((__cdecl__)) tzset(void) ;
#define _TIMEZONE_DEFINED 
struct timezone {
  int tz_minuteswest;
  int tz_dsttime;
};
  extern int __attribute__((__cdecl__)) mingw_gettimeofday (struct timeval *p, struct timezone *z);
#pragma pack(pop)
#define _TIMEB_H_ 
#pragma pack(push,_CRT_PACKING)
#define _TIMEB_DEFINED 
  struct __timeb32 {
    __time32_t time;
    unsigned short millitm;
    short timezone;
    short dstflag;
  };
  struct timeb {
    time_t time;
    unsigned short millitm;
    short timezone;
    short dstflag;
  };
  struct __timeb64 {
    __time64_t time;
    unsigned short millitm;
    short timezone;
    short dstflag;
  };
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _ftime64(struct __timeb64 *_Time);
  __attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _ftime32(struct __timeb32 *_Time);
#define _timeb __timeb64
#define _ftime _ftime64
  void __attribute__((__cdecl__)) ftime (struct timeb *);
  extern inline __attribute__((__gnu_inline__)) void __attribute__((__cdecl__)) ftime(struct timeb *_Tmb) {
    _ftime64((struct __timeb64 *)_Tmb);
  }
#pragma pack(pop)
#define _TIMEB_H_S 
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ftime32_s(struct __timeb32 *_Time);
  __attribute__ ((__dllimport__)) errno_t __attribute__((__cdecl__)) _ftime64_s(struct __timeb64 *_Time);
#define _ftime_s _ftime64_s
#define WIN_PTHREADS_TIME_H 
#define _POSIX_TIMERS 200809L
#define _POSIX_MONOTONIC_CLOCK 200809L
#define _POSIX_CPUTIME 200809L
#define _POSIX_THREAD_CPUTIME 200809L
typedef int clockid_t;
#define __clockid_t_defined 1
#define TIMER_ABSTIME 1
#define CLOCK_REALTIME 0
#define CLOCK_MONOTONIC 1
#define CLOCK_PROCESS_CPUTIME_ID 2
#define CLOCK_THREAD_CPUTIME_ID 3
#define CLOCK_REALTIME_COARSE 4
       
#define WINPTHREAD_API 
int __attribute__((__cdecl__)) nanosleep(const struct timespec *request, struct timespec *remain);
int __attribute__((__cdecl__)) clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *request, struct timespec *remain);
int __attribute__((__cdecl__)) clock_getres(clockid_t clock_id, struct timespec *res);
int __attribute__((__cdecl__)) clock_gettime(clockid_t clock_id, struct timespec *tp);
int __attribute__((__cdecl__)) clock_settime(clockid_t clock_id, const struct timespec *tp);
       
#undef WINPTHREAD_API
#define _INC_IFDEF 
#define IF_MAX_STRING_SIZE 256
#define IF_MAX_PHYS_ADDRESS_LENGTH 32
typedef UINT32 NET_IF_COMPARTMENT_ID, *PNET_IF_COMPARTMENT_ID;
typedef ULONG NET_IFINDEX, *PNET_IFINDEX;
typedef UINT16 NET_IFTYPE, *PNET_IFTYPE;
typedef NET_IFINDEX IF_INDEX, *PIF_INDEX;
typedef GUID NET_IF_NETWORK_GUID;
typedef enum _IF_OPER_STATUS {
  IfOperStatusUp = 1,
  IfOperStatusDown,
  IfOperStatusTesting,
  IfOperStatusUnknown,
  IfOperStatusDormant,
  IfOperStatusNotPresent,
  IfOperStatusLowerLayerDown
} IF_OPER_STATUS;
typedef enum _NET_IF_OPER_STATUS {
  NET_IF_OPER_STATUS_UP = 1,
  NET_IF_OPER_STATUS_DOWN,
  NET_IF_OPER_STATUS_TESTING,
  NET_IF_OPER_STATUS_UNKNOWN,
  NET_IF_OPER_STATUS_DORMANT,
  NET_IF_OPER_STATUS_NOT_PRESENT,
  NET_IF_OPER_STATUS_LOWER_LAYER_DOWN
} NET_IF_OPER_STATUS, *PNET_IF_OPER_STATUS;
typedef enum _NET_IF_ADMIN_STATUS {
  NET_IF_ADMIN_STATUS_UP = 1,
  NET_IF_ADMIN_STATUS_DOWN,
  NET_IF_ADMIN_STATUS_TESTING
} NET_IF_ADMIN_STATUS, *PNET_IF_ADMIN_STATUS;
typedef enum _NET_IF_MEDIA_CONNECT_STATE {
  MediaConnectStateUnknown,
  MediaConnectStateConnected,
  MediaConnectStateDisconnected
} NET_IF_MEDIA_CONNECT_STATE, *PNET_IF_MEDIA_CONNECT_STATE;
typedef enum _NET_IF_ACCESS_TYPE {
  NET_IF_ACCESS_LOOPBACK = 1,
  NET_IF_ACCESS_BROADCAST,
  NET_IF_ACCESS_POINT_TO_POINT,
  NET_IF_ACCESS_POINT_TO_MULTI_POINT,
  NET_IF_ACCESS_MAXIMUM
} NET_IF_ACCESS_TYPE, *PNET_IF_ACCESS_TYPE;
typedef enum _NET_IF_CONNECTION_TYPE {
  NET_IF_CONNECTION_DEDICATED = 1,
  NET_IF_CONNECTION_PASSIVE,
  NET_IF_CONNECTION_DEMAND,
  NET_IF_CONNECTION_MAXIMUM
} NET_IF_CONNECTION_TYPE, *PNET_IF_CONNECTION_TYPE;
typedef enum _NET_IF_DIRECTION_TYPE {
  NET_IF_DIRECTION_SENDRECEIVE,
  NET_IF_DIRECTION_SENDONLY,
  NET_IF_DIRECTION_RECEIVEONLY,
  NET_IF_DIRECTION_MAXIMUM
} NET_IF_DIRECTION_TYPE, *PNET_IF_DIRECTION_TYPE;
typedef enum _NET_IF_MEDIA_DUPLEX_STATE {
  MediaDuplexStateUnknown,
  MediaDuplexStateHalf,
  MediaDuplexStateFull
} NET_IF_MEDIA_DUPLEX_STATE, *PNET_IF_MEDIA_DUPLEX_STATE;
typedef enum _TUNNEL_TYPE {
  TUNNEL_TYPE_NONE = 0,
  TUNNEL_TYPE_OTHER = 1,
  TUNNEL_TYPE_DIRECT = 2,
  TUNNEL_TYPE_6TO4 = 11,
  TUNNEL_TYPE_ISATAP = 13,
  TUNNEL_TYPE_TEREDO = 14,
  TUNNEL_TYPE_IPHTTPS = 15
} TUNNEL_TYPE, *PTUNNEL_TYPE;
typedef union _NET_LUID {
  ULONG64 Value;
  __extension__ struct {
    ULONG64 Reserved :24;
    ULONG64 NetLuidIndex :24;
    ULONG64 IfType :16;
  } Info;
} NET_LUID, *PNET_LUID;
typedef NET_LUID IF_LUID, *PIF_LUID;
typedef struct _IF_COUNTED_STRING_LH {
    USHORT Length;
    WCHAR String[256 + 1];
} IF_COUNTED_STRING_LH, *PIF_COUNTED_STRING_LH;
typedef IF_COUNTED_STRING_LH IF_COUNTED_STRING;
typedef IF_COUNTED_STRING *PIF_COUNTED_STRING;
typedef struct _IF_PHYSICAL_ADDRESS_LH {
    USHORT Length;
    UCHAR Address[32];
} IF_PHYSICAL_ADDRESS_LH, *PIF_PHYSICAL_ADDRESS_LH;
typedef IF_PHYSICAL_ADDRESS_LH IF_PHYSICAL_ADDRESS;
typedef IF_PHYSICAL_ADDRESS *PIF_PHYSICAL_ADDRESS;
#define MAX_ADAPTER_DESCRIPTION_LENGTH 128
#define MAX_ADAPTER_NAME_LENGTH 256
#define MAX_ADAPTER_ADDRESS_LENGTH 8
#define DEFAULT_MINIMUM_ENTITIES 32
#define MAX_HOSTNAME_LEN 128
#define MAX_DOMAIN_NAME_LEN 128
#define MAX_SCOPE_ID_LEN 256
#define MAX_DHCPV6_DUID_LENGTH 130
#define MAX_DNS_SUFFIX_STRING_LENGTH 256
#define BROADCAST_NODETYPE 1
#define PEER_TO_PEER_NODETYPE 2
#define MIXED_NODETYPE 4
#define HYBRID_NODETYPE 8
  typedef struct {
    char String[4*4];
  } IP_ADDRESS_STRING,*PIP_ADDRESS_STRING,IP_MASK_STRING,*PIP_MASK_STRING;
  typedef struct _IP_ADDR_STRING {
    struct _IP_ADDR_STRING *Next;
    IP_ADDRESS_STRING IpAddress;
    IP_MASK_STRING IpMask;
    DWORD Context;
  } IP_ADDR_STRING,*PIP_ADDR_STRING;
  typedef struct _IP_ADAPTER_INFO {
    struct _IP_ADAPTER_INFO *Next;
    DWORD ComboIndex;
    char AdapterName[256 + 4];
    char Description[128 + 4];
    UINT AddressLength;
    BYTE Address[8];
    DWORD Index;
    UINT Type;
    UINT DhcpEnabled;
    PIP_ADDR_STRING CurrentIpAddress;
    IP_ADDR_STRING IpAddressList;
    IP_ADDR_STRING GatewayList;
    IP_ADDR_STRING DhcpServer;
    WINBOOL HaveWins;
    IP_ADDR_STRING PrimaryWinsServer;
    IP_ADDR_STRING SecondaryWinsServer;
    time_t LeaseObtained;
    time_t LeaseExpires;
  } IP_ADAPTER_INFO,*PIP_ADAPTER_INFO;
  typedef NL_PREFIX_ORIGIN IP_PREFIX_ORIGIN;
  typedef NL_SUFFIX_ORIGIN IP_SUFFIX_ORIGIN;
  typedef NL_DAD_STATE IP_DAD_STATE;
  typedef struct _IP_ADAPTER_UNICAST_ADDRESS_XP {
    __extension__ union {
      ULONGLONG Alignment;
      __extension__ struct {
 ULONG Length;
 DWORD Flags;
      };
    };
    struct _IP_ADAPTER_UNICAST_ADDRESS_XP *Next;
    SOCKET_ADDRESS Address;
    IP_PREFIX_ORIGIN PrefixOrigin;
    IP_SUFFIX_ORIGIN SuffixOrigin;
    IP_DAD_STATE DadState;
    ULONG ValidLifetime;
    ULONG PreferredLifetime;
    ULONG LeaseLifetime;
  } IP_ADAPTER_UNICAST_ADDRESS_XP,*PIP_ADAPTER_UNICAST_ADDRESS_XP;
  typedef struct _IP_ADAPTER_UNICAST_ADDRESS_LH {
    __extension__ union {
      ULONGLONG Alignment;
      __extension__ struct {
 ULONG Length;
 DWORD Flags;
      };
    };
    struct _IP_ADAPTER_UNICAST_ADDRESS_LH *Next;
    SOCKET_ADDRESS Address;
    IP_PREFIX_ORIGIN PrefixOrigin;
    IP_SUFFIX_ORIGIN SuffixOrigin;
    IP_DAD_STATE DadState;
    ULONG ValidLifetime;
    ULONG PreferredLifetime;
    ULONG LeaseLifetime;
    UINT8 OnLinkPrefixLength;
  } IP_ADAPTER_UNICAST_ADDRESS_LH,*PIP_ADAPTER_UNICAST_ADDRESS_LH;
  typedef IP_ADAPTER_UNICAST_ADDRESS_LH IP_ADAPTER_UNICAST_ADDRESS;
  typedef IP_ADAPTER_UNICAST_ADDRESS_LH *PIP_ADAPTER_UNICAST_ADDRESS;
  typedef struct _IP_ADAPTER_ANYCAST_ADDRESS_XP {
    __extension__ union {
      ULONGLONG Alignment;
      __extension__ struct {
 ULONG Length;
 DWORD Flags;
      };
    };
    struct _IP_ADAPTER_ANYCAST_ADDRESS_XP *Next;
    SOCKET_ADDRESS Address;
  } IP_ADAPTER_ANYCAST_ADDRESS_XP,*PIP_ADAPTER_ANYCAST_ADDRESS_XP;
  typedef IP_ADAPTER_ANYCAST_ADDRESS_XP IP_ADAPTER_ANYCAST_ADDRESS;
  typedef IP_ADAPTER_ANYCAST_ADDRESS_XP *PIP_ADAPTER_ANYCAST_ADDRESS;
  typedef struct _IP_ADAPTER_MULTICAST_ADDRESS_XP {
    __extension__ union {
      ULONGLONG Alignment;
      __extension__ struct {
 ULONG Length;
 DWORD Flags;
      };
    };
    struct _IP_ADAPTER_MULTICAST_ADDRESS_XP *Next;
    SOCKET_ADDRESS Address;
  } IP_ADAPTER_MULTICAST_ADDRESS_XP,*PIP_ADAPTER_MULTICAST_ADDRESS_XP;
  typedef IP_ADAPTER_MULTICAST_ADDRESS_XP IP_ADAPTER_MULTICAST_ADDRESS;
  typedef IP_ADAPTER_MULTICAST_ADDRESS_XP *PIP_ADAPTER_MULTICAST_ADDRESS;
#define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x01
#define IP_ADAPTER_ADDRESS_TRANSIENT 0x02
#define IP_ADAPTER_ADDRESS_PRIMARY 0x04
  typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS_XP {
    __extension__ union {
      ULONGLONG Alignment;
      __extension__ struct {
 ULONG Length;
 DWORD Reserved;
      };
    };
    struct _IP_ADAPTER_DNS_SERVER_ADDRESS_XP *Next;
    SOCKET_ADDRESS Address;
  } IP_ADAPTER_DNS_SERVER_ADDRESS_XP,*PIP_ADAPTER_DNS_SERVER_ADDRESS_XP;
  typedef IP_ADAPTER_DNS_SERVER_ADDRESS_XP IP_ADAPTER_DNS_SERVER_ADDRESS;
  typedef IP_ADAPTER_DNS_SERVER_ADDRESS_XP *PIP_ADAPTER_DNS_SERVER_ADDRESS;
  typedef struct _IP_ADAPTER_PREFIX_XP {
    __extension__ union {
      ULONGLONG Alignment;
      __extension__ struct {
 ULONG Length;
 DWORD Flags;
      };
    };
    struct _IP_ADAPTER_PREFIX_XP *Next;
    SOCKET_ADDRESS Address;
    ULONG PrefixLength;
  } IP_ADAPTER_PREFIX_XP,*PIP_ADAPTER_PREFIX_XP;
  typedef IP_ADAPTER_PREFIX_XP IP_ADAPTER_PREFIX;
  typedef IP_ADAPTER_PREFIX_XP *PIP_ADAPTER_PREFIX;
  typedef struct _IP_ADAPTER_WINS_SERVER_ADDRESS_LH {
    __extension__ union {
      ULONGLONG Alignment;
      __extension__ struct {
 ULONG Length;
 DWORD Reserved;
      };
    };
    struct _IP_ADAPTER_WINS_SERVER_ADDRESS_LH *Next;
    SOCKET_ADDRESS Address;
  } IP_ADAPTER_WINS_SERVER_ADDRESS_LH,*PIP_ADAPTER_WINS_SERVER_ADDRESS_LH;
  typedef IP_ADAPTER_WINS_SERVER_ADDRESS_LH IP_ADAPTER_WINS_SERVER_ADDRESS;
  typedef IP_ADAPTER_WINS_SERVER_ADDRESS_LH *PIP_ADAPTER_WINS_SERVER_ADDRESS;
  typedef struct _IP_ADAPTER_GATEWAY_ADDRESS_LH {
    __extension__ union {
      ULONGLONG Alignment;
      __extension__ struct {
 ULONG Length;
 DWORD Reserved;
      };
    };
    struct _IP_ADAPTER_GATEWAY_ADDRESS_LH *Next;
    SOCKET_ADDRESS Address;
  } IP_ADAPTER_GATEWAY_ADDRESS_LH,*PIP_ADAPTER_GATEWAY_ADDRESS_LH;
  typedef IP_ADAPTER_GATEWAY_ADDRESS_LH IP_ADAPTER_GATEWAY_ADDRESS;
  typedef IP_ADAPTER_GATEWAY_ADDRESS_LH *PIP_ADAPTER_GATEWAY_ADDRESS;
  typedef struct _IP_ADAPTER_DNS_SUFFIX {
    struct _IP_ADAPTER_DNS_SUFFIX *Next;
    WCHAR String[256];
  } IP_ADAPTER_DNS_SUFFIX, *PIP_ADAPTER_DNS_SUFFIX;
#define IP_ADAPTER_DDNS_ENABLED 0x01
#define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x02
#define IP_ADAPTER_DHCP_ENABLED 0x04
#define IP_ADAPTER_RECEIVE_ONLY 0x08
#define IP_ADAPTER_NO_MULTICAST 0x10
#define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x20
#define IP_ADAPTER_NETBIOS_OVER_TCPIP_ENABLED 0x40
#define IP_ADAPTER_IPV4_ENABLED 0x80
#define IP_ADAPTER_IPV6_ENABLED 0x100
#define IP_ADAPTER_IPV6_MANAGE_ADDRESS_CONFIG 0x200
  typedef struct _IP_ADAPTER_ADDRESSES_LH {
    __extension__ union {
      ULONGLONG Alignment;
      __extension__ struct {
 ULONG Length;
 IF_INDEX IfIndex;
      };
    };
    struct _IP_ADAPTER_ADDRESSES_LH *Next;
    PCHAR AdapterName;
    PIP_ADAPTER_UNICAST_ADDRESS_LH FirstUnicastAddress;
    PIP_ADAPTER_ANYCAST_ADDRESS_XP FirstAnycastAddress;
    PIP_ADAPTER_MULTICAST_ADDRESS_XP FirstMulticastAddress;
    PIP_ADAPTER_DNS_SERVER_ADDRESS_XP FirstDnsServerAddress;
    PWCHAR DnsSuffix;
    PWCHAR Description;
    PWCHAR FriendlyName;
    BYTE PhysicalAddress[8];
    ULONG PhysicalAddressLength;
    __extension__ union {
      ULONG Flags;
      __extension__ struct {
 ULONG DdnsEnabled : 1;
 ULONG RegisterAdapterSuffix : 1;
 ULONG Dhcpv4Enabled : 1;
 ULONG ReceiveOnly : 1;
 ULONG NoMulticast : 1;
 ULONG Ipv6OtherStatefulConfig : 1;
 ULONG NetbiosOverTcpipEnabled : 1;
 ULONG Ipv4Enabled : 1;
 ULONG Ipv6Enabled : 1;
 ULONG Ipv6ManagedAddressConfigurationSupported : 1;
      };
    };
    ULONG Mtu;
    IFTYPE IfType;
    IF_OPER_STATUS OperStatus;
    IF_INDEX Ipv6IfIndex;
    ULONG ZoneIndices[16];
    PIP_ADAPTER_PREFIX_XP FirstPrefix;
    ULONG64 TransmitLinkSpeed;
    ULONG64 ReceiveLinkSpeed;
    PIP_ADAPTER_WINS_SERVER_ADDRESS_LH FirstWinsServerAddress;
    PIP_ADAPTER_GATEWAY_ADDRESS_LH FirstGatewayAddress;
    ULONG Ipv4Metric;
    ULONG Ipv6Metric;
    IF_LUID Luid;
    SOCKET_ADDRESS Dhcpv4Server;
    NET_IF_COMPARTMENT_ID CompartmentId;
    NET_IF_NETWORK_GUID NetworkGuid;
    NET_IF_CONNECTION_TYPE ConnectionType;
    TUNNEL_TYPE TunnelType;
    SOCKET_ADDRESS Dhcpv6Server;
    BYTE Dhcpv6ClientDuid[130];
    ULONG Dhcpv6ClientDuidLength;
    ULONG Dhcpv6Iaid;
  } IP_ADAPTER_ADDRESSES_LH, *PIP_ADAPTER_ADDRESSES_LH;
  typedef struct _IP_ADAPTER_ADDRESSES_XP {
    __extension__ union {
      ULONGLONG Alignment;
      __extension__ struct {
 ULONG Length;
 DWORD IfIndex;
      };
    };
    struct _IP_ADAPTER_ADDRESSES_XP *Next;
    PCHAR AdapterName;
    PIP_ADAPTER_UNICAST_ADDRESS_XP FirstUnicastAddress;
    PIP_ADAPTER_ANYCAST_ADDRESS_XP FirstAnycastAddress;
    PIP_ADAPTER_MULTICAST_ADDRESS_XP FirstMulticastAddress;
    PIP_ADAPTER_DNS_SERVER_ADDRESS_XP FirstDnsServerAddress;
    PWCHAR DnsSuffix;
    PWCHAR Description;
    PWCHAR FriendlyName;
    BYTE PhysicalAddress[8];
    DWORD PhysicalAddressLength;
    DWORD Flags;
    DWORD Mtu;
    DWORD IfType;
    IF_OPER_STATUS OperStatus;
    DWORD Ipv6IfIndex;
    DWORD ZoneIndices[16];
    PIP_ADAPTER_PREFIX_XP FirstPrefix;
  } IP_ADAPTER_ADDRESSES_XP,*PIP_ADAPTER_ADDRESSES_XP;
  typedef IP_ADAPTER_ADDRESSES_LH IP_ADAPTER_ADDRESSES;
  typedef IP_ADAPTER_ADDRESSES_LH *PIP_ADAPTER_ADDRESSES;
#define GAA_FLAG_SKIP_UNICAST 0x0001
#define GAA_FLAG_SKIP_ANYCAST 0x0002
#define GAA_FLAG_SKIP_MULTICAST 0x0004
#define GAA_FLAG_SKIP_DNS_SERVER 0x0008
#define GAA_FLAG_INCLUDE_PREFIX 0x0010
#define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020
#define GAA_FLAG_INCLUDE_WINS_INFO 0x0040
#define GAA_FLAG_INCLUDE_GATEWAYS 0x0080
#define GAA_FLAG_INCLUDE_ALL_INTERFACES 0x0100
#define GAA_FLAG_INCLUDE_ALL_COMPARTMENTS 0x0200
#define GAA_FLAG_INCLUDE_TUNNEL_BINDINGORDER 0x0400
  typedef struct _IP_PER_ADAPTER_INFO {
    UINT AutoconfigEnabled;
    UINT AutoconfigActive;
    PIP_ADDR_STRING CurrentDnsServer;
    IP_ADDR_STRING DnsServerList;
  } IP_PER_ADAPTER_INFO,*PIP_PER_ADAPTER_INFO;
  typedef struct {
    char HostName[128 + 4];
    char DomainName[128 + 4];
    PIP_ADDR_STRING CurrentDnsServer;
    IP_ADDR_STRING DnsServerList;
    UINT NodeType;
    char ScopeId[256 + 4];
    UINT EnableRouting;
    UINT EnableProxy;
    UINT EnableDns;
  } FIXED_INFO,*PFIXED_INFO;
#define IP_INTERFACE_NAME_INFO_DEFINED 
  typedef struct ip_interface_name_info {
    ULONG Index;
    ULONG MediaType;
    UCHAR ConnectionType;
    UCHAR AccessType;
    GUID DeviceGuid;
    GUID InterfaceGuid;
  } IP_INTERFACE_NAME_INFO,*PIP_INTERFACE_NAME_INFO;
#define _INC_TCPESTATS 
typedef struct _TCP_ESTATS_BANDWIDTH_ROD_v0 {
  ULONG64 OutboundBandwidth;
  ULONG64 InboundBandwidth;
  ULONG64 OutboundInstability;
  ULONG64 InboundInstability;
  BOOLEAN OutboundBandwidthPeaked;
  BOOLEAN InboundBandwidthPeaked;
} TCP_ESTATS_BANDWIDTH_ROD_v0, *PTCP_ESTATS_BANDWIDTH_ROD_v0;
typedef enum _TCP_BOOLEAN_OPTIONAL {
  TcpBoolOptDisabled = 0,
  TcpBoolOptEnabled = 1,
  TcpBoolOptUnchanged = -1
} TCP_BOOLEAN_OPTIONAL;
typedef struct _TCP_ESTATS_BANDWIDTH_RW_v0 {
  TCP_BOOLEAN_OPTIONAL EnableCollectionOutbound;
  TCP_BOOLEAN_OPTIONAL EnableCollectionInbound;
} TCP_ESTATS_BANDWIDTH_RW_v0, *PTCP_ESTATS_BANDWIDTH_RW_v0;
typedef struct _TCP_ESTATS_DATA_ROD_v0 {
  ULONG64 DataBytesOut;
  ULONG64 DataSegsOut;
  ULONG64 DataBytesIn;
  ULONG64 DataSegsIn;
  ULONG64 SegsOut;
  ULONG64 SegsIn;
  ULONG SoftErrors;
  ULONG SoftErrorReason;
  ULONG SndUna;
  ULONG SndNxt;
  ULONG SndMax;
  ULONG64 ThruBytesAcked;
  ULONG RcvNxt;
  ULONG64 ThruBytesReceived;
} TCP_ESTATS_DATA_ROD_v0, *PTCP_ESTATS_DATA_ROD_v0;
typedef struct _TCP_ESTATS_DATA_RW_v0 {
  BOOLEAN EnableCollection;
} TCP_ESTATS_DATA_RW_v0, *PTCP_ESTATS_DATA_RW_v0;
typedef struct _TCP_ESTATS_FINE_RTT_ROD_v0 {
  ULONG RttVar;
  ULONG MaxRtt;
  ULONG MinRtt;
  ULONG SumRtt;
} TCP_ESTATS_FINE_RTT_ROD_v0, *PTCP_ESTATS_FINE_RTT_ROD_v0;
typedef struct _TCP_ESTATS_FINE_RTT_RW_v0 {
  BOOLEAN EnableCollection;
} TCP_ESTATS_FINE_RTT_RW_v0, *PTCP_ESTATS_FINE_RTT_RW_v0;
typedef struct _TCP_ESTATS_OBS_REC_ROD_v0 {
  ULONG CurRwinRcvd;
  ULONG MaxRwinRcvd;
  ULONG MinRwinRcvd;
  UCHAR WinScaleRcvd;
} TCP_ESTATS_OBS_REC_ROD_v0, *PTCP_ESTATS_OBS_REC_ROD_v0;
typedef struct _TCP_ESTATS_OBS_REC_RW_v0 {
  BOOLEAN EnableCollection;
} TCP_ESTATS_OBS_REC_RW_v0, *PTCP_ESTATS_OBS_REC_RW_v0;
typedef struct _TCP_ESTATS_PATH_ROD_v0 {
  ULONG FastRetran;
  ULONG Timeouts;
  ULONG SubsequentTimeouts;
  ULONG CurTimeoutCount;
  ULONG AbruptTimeouts;
  ULONG PktsRetrans;
  ULONG BytesRetrans;
  ULONG DupAcksIn;
  ULONG SacksRcvd;
  ULONG SackBlocksRcvd;
  ULONG CongSignals;
  ULONG PreCongSumCwnd;
  ULONG PreCongSumRtt;
  ULONG PostCongSumRtt;
  ULONG PostCongCountRtt;
  ULONG EcnSignals;
  ULONG EceRcvd;
  ULONG SendStall;
  ULONG QuenchRcvd;
  ULONG RetranThresh;
  ULONG SndDupAckEpisodes;
  ULONG SumBytesReordered;
  ULONG NonRecovDa;
  ULONG NonRecovDaEpisodes;
  ULONG AckAfterFr;
  ULONG DsackDups;
  ULONG SampleRtt;
  ULONG SmoothedRtt;
  ULONG RttVar;
  ULONG MaxRtt;
  ULONG MinRtt;
  ULONG SumRtt;
  ULONG CountRtt;
  ULONG CurRto;
  ULONG MaxRto;
  ULONG MinRto;
  ULONG CurMss;
  ULONG MaxMss;
  ULONG MinMss;
  ULONG SpuriousRtoDetections;
} TCP_ESTATS_PATH_ROD_v0, *PTCP_ESTATS_PATH_ROD_v0;
typedef struct _TCP_ESTATS_PATH_RW_v0 {
  BOOLEAN EnableCollection;
} TCP_ESTATS_PATH_RW_v0, *PTCP_ESTATS_PATH_RW_v0;
typedef struct _TCP_ESTATS_REC_ROD_v0 {
  ULONG CurRwinSent;
  ULONG MaxRwinSent;
  ULONG MinRwinSent;
  ULONG LimRwin;
  ULONG DupAckEpisodes;
  ULONG DupAcksOut;
  ULONG CeRcvd;
  ULONG EcnSent;
  ULONG EcnNoncesRcvd;
  ULONG CurReasmQueue;
  ULONG MaxReasmQueue;
  SIZE_T CurAppRQueue;
  SIZE_T MaxAppRQueue;
  UCHAR WinScaleSent;
} TCP_ESTATS_REC_ROD_v0, *PTCP_ESTATS_REC_ROD_v0;
typedef struct _TCP_ESTATS_REC_RW_v0 {
  BOOLEAN EnableCollection;
} TCP_ESTATS_REC_RW_v0, *PTCP_ESTATS_REC_RW_v0;
typedef struct _TCP_ESTATS_SEND_BUFF_ROD_v0 {
  SIZE_T CurRetxQueue;
  SIZE_T MaxRetxQueue;
  SIZE_T CurAppWQueue;
  SIZE_T MaxAppWQueue;
} TCP_ESTATS_SEND_BUFF_ROD_v0, *PTCP_ESTATS_SEND_BUFF_ROD_v0;
typedef struct _TCP_ESTATS_SEND_BUFF_RW_v0 {
  BOOLEAN EnableCollection;
} TCP_ESTATS_SEND_BUFF_RW_v0, *PTCP_ESTATS_SEND_BUFF_RW_v0;
typedef struct _TCP_ESTATS_SND_CONG_ROD_v0 {
  ULONG SndLimTransRwin;
  ULONG SndLimTimeRwin;
  SIZE_T SndLimBytesRwin;
  ULONG SndLimTransCwnd;
  ULONG SndLimTimeCwnd;
  SIZE_T SndLimBytesCwnd;
  ULONG SndLimTransSnd;
  ULONG SndLimTimeSnd;
  SIZE_T SndLimBytesSnd;
  ULONG SlowStart;
  ULONG CongAvoid;
  ULONG OtherReductions;
  ULONG CurCwnd;
  ULONG MaxSsCwnd;
  ULONG MaxCaCwnd;
  ULONG CurSsthresh;
  ULONG MaxSsthresh;
  ULONG MinSsthresh;
} TCP_ESTATS_SND_CONG_ROD_v0, *PTCP_ESTATS_SND_CONG_ROD_v0;
typedef struct _TCP_ESTATS_SND_CONG_ROS_v0 {
  ULONG LimCwnd;
} TCP_ESTATS_SND_CONG_ROS_v0, *PTCP_ESTATS_SND_CONG_ROS_v0;
typedef struct _TCP_ESTATS_SND_CONG_RW_v0 {
  BOOLEAN EnableCollection;
} TCP_ESTATS_SND_CONG_RW_v0, *PTCP_ESTATS_SND_CONG_RW_v0;
typedef struct _TCP_ESTATS_SYN_OPTS_ROS_v0 {
  BOOLEAN ActiveOpen;
  ULONG MssRcvd;
  ULONG MssSent;
} TCP_ESTATS_SYN_OPTS_ROS_v0, *PTCP_ESTATS_SYN_OPTS_ROS_v0;
typedef enum _TCP_ESTATS_TYPE {
  TcpConnectionEstatsSynOpts,
  TcpConnectionEstatsData,
  TcpConnectionEstatsSndCong,
  TcpConnectionEstatsPath,
  TcpConnectionEstatsSendBuff,
  TcpConnectionEstatsRec,
  TcpConnectionEstatsObsRec,
  TcpConnectionEstatsBandwidth,
  TcpConnectionEstatsFineRtt,
  TcpConnectionEstatsMaximum
} TCP_ESTATS_TYPE;
  DWORD __attribute__((__stdcall__)) GetNumberOfInterfaces (PDWORD pdwNumIf);
  DWORD __attribute__((__stdcall__)) GetIfEntry (PMIB_IFROW pIfRow);
  DWORD __attribute__((__stdcall__)) GetIfTable (PMIB_IFTABLE pIfTable, PULONG pdwSize, WINBOOL bOrder);
  DWORD __attribute__((__stdcall__)) GetIpAddrTable (PMIB_IPADDRTABLE pIpAddrTable, PULONG pdwSize, WINBOOL bOrder);
  ULONG __attribute__((__stdcall__)) GetIpNetTable (PMIB_IPNETTABLE IpNetTable, PULONG SizePointer, WINBOOL Order);
  DWORD __attribute__((__stdcall__)) GetIpForwardTable (PMIB_IPFORWARDTABLE pIpForwardTable, PULONG pdwSize, WINBOOL bOrder);
  ULONG __attribute__((__stdcall__)) GetTcpTable (PMIB_TCPTABLE TcpTable, PULONG SizePointer, WINBOOL Order);
  DWORD __attribute__((__stdcall__)) GetExtendedTcpTable (PVOID pTcpTable, PDWORD pdwSize, WINBOOL bOrder, ULONG ulAf, TCP_TABLE_CLASS TableClass, ULONG Reserved);
  DWORD __attribute__((__stdcall__)) GetOwnerModuleFromTcpEntry (PMIB_TCPROW_OWNER_MODULE pTcpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize);
  ULONG __attribute__((__stdcall__)) GetUdpTable (PMIB_UDPTABLE UdpTable, PULONG SizePointer, WINBOOL Order);
  DWORD __attribute__((__stdcall__)) GetExtendedUdpTable (PVOID pUdpTable, PDWORD pdwSize, WINBOOL bOrder, ULONG ulAf, UDP_TABLE_CLASS TableClass, ULONG Reserved);
  DWORD __attribute__((__stdcall__)) GetOwnerModuleFromUdpEntry (PMIB_UDPROW_OWNER_MODULE pUdpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize);
  ULONG __attribute__((__stdcall__)) GetTcpTable2 (PMIB_TCPTABLE2 TcpTable, PULONG SizePointer, WINBOOL Order);
  ULONG __attribute__((__stdcall__)) GetTcp6Table (PMIB_TCP6TABLE TcpTable, PULONG SizePointer, WINBOOL Order);
  ULONG __attribute__((__stdcall__)) GetTcp6Table2 (PMIB_TCP6TABLE2 TcpTable, PULONG SizePointer, WINBOOL Order);
  ULONG __attribute__((__stdcall__)) GetPerTcpConnectionEStats (PMIB_TCPROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, PUCHAR Ros, ULONG RosVersion, ULONG RosSize, PUCHAR Rod, ULONG RodVersion, ULONG RodSize);
  ULONG __attribute__((__stdcall__)) SetPerTcpConnectionEStats (PMIB_TCPROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, ULONG Offset);
  ULONG __attribute__((__stdcall__)) GetPerTcp6ConnectionEStats (PMIB_TCP6ROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, PUCHAR Ros, ULONG RosVersion, ULONG RosSize, PUCHAR Rod, ULONG RodVersion, ULONG RodSize);
  ULONG __attribute__((__stdcall__)) SetPerTcp6ConnectionEStats (PMIB_TCP6ROW Row, TCP_ESTATS_TYPE EstatsType, PUCHAR Rw, ULONG RwVersion, ULONG RwSize, ULONG Offset);
  ULONG __attribute__((__stdcall__)) GetUdp6Table (PMIB_UDP6TABLE Udp6Table, PULONG SizePointer, WINBOOL Order);
  DWORD __attribute__((__stdcall__)) GetOwnerModuleFromTcp6Entry (PMIB_TCP6ROW_OWNER_MODULE pTcpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize);
  DWORD __attribute__((__stdcall__)) GetOwnerModuleFromUdp6Entry (PMIB_UDP6ROW_OWNER_MODULE pUdpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize);
  DWORD GetOwnerModuleFromPidAndInfo (ULONG ulPid, ULONGLONG *pInfo, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID pBuffer, PDWORD pdwSize);
  ULONG __attribute__((__stdcall__)) GetIpStatistics (PMIB_IPSTATS Statistics);
  ULONG __attribute__((__stdcall__)) GetIcmpStatistics (PMIB_ICMP Statistics);
  ULONG __attribute__((__stdcall__)) GetTcpStatistics (PMIB_TCPSTATS Statistics);
  ULONG __attribute__((__stdcall__)) GetUdpStatistics (PMIB_UDPSTATS Stats);
  ULONG __attribute__((__stdcall__)) GetIpStatisticsEx (PMIB_IPSTATS Statistics, ULONG Family);
  ULONG __attribute__((__stdcall__)) SetIpStatisticsEx (PMIB_IPSTATS Statistics, ULONG Family);
  ULONG __attribute__((__stdcall__)) GetIcmpStatisticsEx (PMIB_ICMP_EX Statistics, ULONG Family);
  ULONG __attribute__((__stdcall__)) GetTcpStatisticsEx (PMIB_TCPSTATS Statistics, ULONG Family);
  ULONG __attribute__((__stdcall__)) GetUdpStatisticsEx (PMIB_UDPSTATS Statistics, ULONG Family);
  DWORD __attribute__((__stdcall__)) SetIfEntry (PMIB_IFROW pIfRow);
  DWORD __attribute__((__stdcall__)) CreateIpForwardEntry (PMIB_IPFORWARDROW pRoute);
  DWORD __attribute__((__stdcall__)) SetIpForwardEntry (PMIB_IPFORWARDROW pRoute);
  DWORD __attribute__((__stdcall__)) DeleteIpForwardEntry (PMIB_IPFORWARDROW pRoute);
  DWORD __attribute__((__stdcall__)) SetIpStatistics (PMIB_IPSTATS pIpStats);
  DWORD __attribute__((__stdcall__)) SetIpTTL (UINT nTTL);
  DWORD __attribute__((__stdcall__)) CreateIpNetEntry (PMIB_IPNETROW pArpEntry);
  DWORD __attribute__((__stdcall__)) SetIpNetEntry (PMIB_IPNETROW pArpEntry);
  DWORD __attribute__((__stdcall__)) DeleteIpNetEntry (PMIB_IPNETROW pArpEntry);
  DWORD __attribute__((__stdcall__)) FlushIpNetTable (DWORD dwIfIndex);
  DWORD __attribute__((__stdcall__)) CreateProxyArpEntry (DWORD dwAddress, DWORD dwMask, DWORD dwIfIndex);
  DWORD __attribute__((__stdcall__)) DeleteProxyArpEntry (DWORD dwAddress, DWORD dwMask, DWORD dwIfIndex);
  DWORD __attribute__((__stdcall__)) SetTcpEntry (PMIB_TCPROW pTcpRow);
  DWORD __attribute__((__stdcall__)) GetInterfaceInfo (PIP_INTERFACE_INFO pIfTable, PULONG dwOutBufLen);
  DWORD __attribute__((__stdcall__)) GetUniDirectionalAdapterInfo (PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS pIPIfInfo, PULONG dwOutBufLen);
#define NHPALLOCATEANDGETINTERFACEINFOFROMSTACK_DEFINED 
  DWORD __attribute__((__stdcall__)) NhpAllocateAndGetInterfaceInfoFromStack (IP_INTERFACE_NAME_INFO **ppTable, PDWORD pdwCount, WINBOOL bOrder, HANDLE hHeap, DWORD dwFlags);
  DWORD __attribute__((__stdcall__)) GetBestInterface (IPAddr dwDestAddr, PDWORD pdwBestIfIndex);
  DWORD __attribute__((__stdcall__)) GetBestInterfaceEx (struct sockaddr *pDestAddr, PDWORD pdwBestIfIndex);
  DWORD __attribute__((__stdcall__)) GetBestRoute (DWORD dwDestAddr, DWORD dwSourceAddr, PMIB_IPFORWARDROW pBestRoute);
  DWORD __attribute__((__stdcall__)) NotifyAddrChange (PHANDLE Handle, LPOVERLAPPED overlapped);
  DWORD __attribute__((__stdcall__)) NotifyRouteChange (PHANDLE Handle, LPOVERLAPPED overlapped);
  WINBOOL __attribute__((__stdcall__)) CancelIPChangeNotify (LPOVERLAPPED notifyOverlapped);
  DWORD __attribute__((__stdcall__)) GetAdapterIndex (LPWSTR AdapterName, PULONG IfIndex);
  DWORD __attribute__((__stdcall__)) AddIPAddress (IPAddr Address, IPMask IpMask, DWORD IfIndex, PULONG NTEContext, PULONG NTEInstance);
  DWORD __attribute__((__stdcall__)) DeleteIPAddress (ULONG NTEContext);
  DWORD __attribute__((__stdcall__)) GetNetworkParams (PFIXED_INFO pFixedInfo, PULONG pOutBufLen);
  ULONG __attribute__((__stdcall__)) GetAdaptersInfo (PIP_ADAPTER_INFO AdapterInfo, PULONG SizePointer);
  PIP_ADAPTER_ORDER_MAP __attribute__((__stdcall__)) GetAdapterOrderMap (void);
  ULONG __attribute__((__stdcall__)) GetAdaptersAddresses (ULONG Family, ULONG Flags, PVOID Reserved, PIP_ADAPTER_ADDRESSES AdapterAddresses, PULONG SizePointer);
  DWORD __attribute__((__stdcall__)) GetPerAdapterInfo (ULONG IfIndex, PIP_PER_ADAPTER_INFO pPerAdapterInfo, PULONG pOutBufLen);
  DWORD __attribute__((__stdcall__)) IpReleaseAddress (PIP_ADAPTER_INDEX_MAP AdapterInfo);
  DWORD __attribute__((__stdcall__)) IpRenewAddress (PIP_ADAPTER_INDEX_MAP AdapterInfo);
  DWORD __attribute__((__stdcall__)) SendARP (IPAddr DestIP, IPAddr SrcIP, PVOID pMacAddr, PULONG PhyAddrLen);
  WINBOOL __attribute__((__stdcall__)) GetRTTAndHopCount (IPAddr DestIpAddress, PULONG HopCount, ULONG MaxHops, PULONG RTT);
  DWORD __attribute__((__stdcall__)) GetFriendlyIfIndex (DWORD IfIndex);
  DWORD __attribute__((__stdcall__)) EnableRouter (HANDLE *pHandle, OVERLAPPED *pOverlapped);
  DWORD __attribute__((__stdcall__)) UnenableRouter (OVERLAPPED *pOverlapped, LPDWORD lpdwEnableCount);
  DWORD __attribute__((__stdcall__)) DisableMediaSense (HANDLE *pHandle, OVERLAPPED *pOverLapped);
  DWORD __attribute__((__stdcall__)) RestoreMediaSense (OVERLAPPED *pOverlapped, LPDWORD lpdwEnableCount);
#define NET_STRING_IPV4_ADDRESS 0x00000001
#define NET_STRING_IPV4_SERVICE 0x00000002
#define NET_STRING_IPV4_NETWORK 0x00000004
#define NET_STRING_IPV6_ADDRESS 0x00000008
#define NET_STRING_IPV6_ADDRESS_NO_SCOPE 0x00000010
#define NET_STRING_IPV6_SERVICE 0x00000020
#define NET_STRING_IPV6_SERVICE_NO_SCOPE 0x00000040
#define NET_STRING_IPV6_NETWORK 0x00000080
#define NET_STRING_NAMED_ADDRESS 0x00000100
#define NET_STRING_NAMED_SERVICE 0x00000200
#define NET_STRING_IP_ADDRESS (NET_STRING_IPV4_ADDRESS | NET_STRING_IPV6_ADDRESS)
#define NET_STRING_IP_ADDRESS_NO_SCOPE (NET_STRING_IPV4_ADDRESS | NET_STRING_IPV6_ADDRESS_NO_SCOPE)
#define NET_STRING_IP_SERVICE (NET_STRING_IPV4_SERVICE | NET_STRING_IPV6_SERVICE)
#define NET_STRING_IP_SERVICE_NO_SCOPE (NET_STRING_IPV4_SERVICE | NET_STRING_IPV6_SERVICE_NO_SCOPE)
#define NET_STRING_IP_NETWORK (NET_STRING_IPV4_NETWORK | NET_STRING_IPV6_NETWORK)
#define NET_STRING_ANY_ADDRESS (NET_STRING_NAMED_ADDRESS | NET_STRING_IP_ADDRESS)
#define NET_STRING_ANY_ADDRESS_NO_SCOPE (NET_STRING_NAMED_ADDRESS | NET_STRING_IP_ADDRESS_NO_SCOPE)
#define NET_STRING_ANY_SERVICE (NET_STRING_NAMED_SERVICE | NET_STRING_IP_SERVICE)
#define NET_STRING_ANY_SERVICE_NO_SCOPE (NET_STRING_NAMED_SERVICE | NET_STRING_IP_SERVICE_NO_SCOPE)
  typedef enum NET_ADDRESS_FORMAT_ {
    NET_ADDRESS_FORMAT_UNSPECIFIED = 0,
    NET_ADDRESS_DNS_NAME,
    NET_ADDRESS_IPV4,
    NET_ADDRESS_IPV6
  } NET_ADDRESS_FORMAT;
  DWORD __attribute__((__stdcall__)) GetIpErrorString (IP_STATUS ErrorCode, PWSTR Buffer, PDWORD Size);
  ULONG __attribute__((__stdcall__)) ResolveNeighbor (SOCKADDR *NetworkAddress, PVOID PhysicalAddress, PULONG PhysicalAddressLength);
  ULONG __attribute__((__stdcall__)) CreatePersistentTcpPortReservation (USHORT StartPort, USHORT NumberOfPorts, PULONG64 Token);
  ULONG __attribute__((__stdcall__)) CreatePersistentUdpPortReservation (USHORT StartPort, USHORT NumberOfPorts, PULONG64 Token);
  ULONG __attribute__((__stdcall__)) DeletePersistentTcpPortReservation (USHORT StartPort, USHORT NumberOfPorts);
  ULONG __attribute__((__stdcall__)) DeletePersistentUdpPortReservation (USHORT StartPort, USHORT NumberOfPorts);
  ULONG __attribute__((__stdcall__)) LookupPersistentTcpPortReservation (USHORT StartPort, USHORT NumberOfPorts, PULONG64 Token);
  ULONG __attribute__((__stdcall__)) LookupPersistentUdpPortReservation (USHORT StartPort, USHORT NumberOfPorts, PULONG64 Token);
#define _NETIOAPI_H_ 
#define NETIO_STATUS DWORD
#define NETIO_SUCCESS(x) ((x) == NO_ERROR)
#define NETIOAPI_API_ WINAPI
#define _NETIOAPI_SUCCESS_ 
#define NETIOAPI_API NETIO_STATUS NETIOAPI_API_
#define IF_NAMESIZE NDIS_IF_MAX_STRING_SIZE
  typedef enum _MIB_NOTIFICATION_TYPE {
    MibParameterNotification,
    MibAddInstance,
    MibDeleteInstance,
    MibInitialNotification
  } MIB_NOTIFICATION_TYPE,*PMIB_NOTIFICATION_TYPE;
#define _NTDDNDIS_ 
#define NDIS_SUPPORT_NDIS6 0
#define _DEVPROPDEF_H_ 
typedef ULONG DEVPROPTYPE, *PDEVPROPTYPE;
#define DEVPROP_TYPEMOD_ARRAY 0x00001000
#define DEVPROP_TYPEMOD_LIST 0x00002000
#define DEVPROP_TYPE_EMPTY 0x00000000
#define DEVPROP_TYPE_NULL 0x00000001
#define DEVPROP_TYPE_SBYTE 0x00000002
#define DEVPROP_TYPE_BYTE 0x00000003
#define DEVPROP_TYPE_INT16 0x00000004
#define DEVPROP_TYPE_UINT16 0x00000005
#define DEVPROP_TYPE_INT32 0x00000006
#define DEVPROP_TYPE_UINT32 0x00000007
#define DEVPROP_TYPE_INT64 0x00000008
#define DEVPROP_TYPE_UINT64 0x00000009
#define DEVPROP_TYPE_FLOAT 0x0000000A
#define DEVPROP_TYPE_DOUBLE 0x0000000B
#define DEVPROP_TYPE_DECIMAL 0x0000000C
#define DEVPROP_TYPE_GUID 0x0000000D
#define DEVPROP_TYPE_CURRENCY 0x0000000E
#define DEVPROP_TYPE_DATE 0x0000000F
#define DEVPROP_TYPE_FILETIME 0x00000010
#define DEVPROP_TYPE_BOOLEAN 0x00000011
#define DEVPROP_TYPE_STRING 0x00000012
#define DEVPROP_TYPE_STRING_LIST (DEVPROP_TYPE_STRING|DEVPROP_TYPEMOD_LIST)
#define DEVPROP_TYPE_SECURITY_DESCRIPTOR 0x00000013
#define DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING 0x00000014
#define DEVPROP_TYPE_DEVPROPKEY 0x00000015
#define DEVPROP_TYPE_DEVPROPTYPE 0x00000016
#define DEVPROP_TYPE_BINARY (DEVPROP_TYPE_BYTE|DEVPROP_TYPEMOD_ARRAY)
#define DEVPROP_TYPE_ERROR 0x00000017
#define DEVPROP_TYPE_NTSTATUS 0x00000018
#define DEVPROP_TYPE_STRING_INDIRECT 0x00000019
#define MAX_DEVPROP_TYPE 0x00000019
#define MAX_DEVPROP_TYPEMOD 0x00002000
#define DEVPROP_MASK_TYPE 0x00000FFF
#define DEVPROP_MASK_TYPEMOD 0x0000F000
typedef CHAR DEVPROP_BOOLEAN, *PDEVPROP_BOOLEAN;
#define DEVPROP_TRUE ((DEVPROP_BOOLEAN)-1)
#define DEVPROP_FALSE ((DEVPROP_BOOLEAN) 0)
#define DEVPROPKEY_DEFINED 
typedef GUID DEVPROPGUID, *PDEVPROPGUID;
typedef ULONG DEVPROPID, *PDEVPROPID;
typedef struct _DEVPROPKEY {
  DEVPROPGUID fmtid;
  DEVPROPID pid;
} DEVPROPKEY, *PDEVPROPKEY;
#define DEVPROPID_FIRST_USABLE 2
#define DEFINE_DEVPROPKEY(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8,pid) EXTERN_C const DEVPROPKEY name
#define IsEqualDevPropKey(a,b) (((a).pid == (b).pid) && IsEqualIID(&(a).fmtid, &(b).fmtid))
extern const DEVPROPKEY DEVPKEY_NAME;
extern const DEVPROPKEY DEVPKEY_Device_DeviceDesc;
extern const DEVPROPKEY DEVPKEY_Device_HardwareIds;
extern const DEVPROPKEY DEVPKEY_Device_CompatibleIds;
extern const DEVPROPKEY DEVPKEY_Device_Service;
extern const DEVPROPKEY DEVPKEY_Device_Class;
extern const DEVPROPKEY DEVPKEY_Device_ClassGuid;
extern const DEVPROPKEY DEVPKEY_Device_Driver;
extern const DEVPROPKEY DEVPKEY_Device_ConfigFlags;
extern const DEVPROPKEY DEVPKEY_Device_Manufacturer;
extern const DEVPROPKEY DEVPKEY_Device_FriendlyName;
extern const DEVPROPKEY DEVPKEY_Device_LocationInfo;
extern const DEVPROPKEY DEVPKEY_Device_PDOName;
extern const DEVPROPKEY DEVPKEY_Device_Capabilities;
extern const DEVPROPKEY DEVPKEY_Device_UINumber;
extern const DEVPROPKEY DEVPKEY_Device_UpperFilters;
extern const DEVPROPKEY DEVPKEY_Device_LowerFilters;
extern const DEVPROPKEY DEVPKEY_Device_BusTypeGuid;
extern const DEVPROPKEY DEVPKEY_Device_LegacyBusType;
extern const DEVPROPKEY DEVPKEY_Device_BusNumber;
extern const DEVPROPKEY DEVPKEY_Device_EnumeratorName;
extern const DEVPROPKEY DEVPKEY_Device_Security;
extern const DEVPROPKEY DEVPKEY_Device_SecuritySDS;
extern const DEVPROPKEY DEVPKEY_Device_DevType;
extern const DEVPROPKEY DEVPKEY_Device_Exclusive;
extern const DEVPROPKEY DEVPKEY_Device_Characteristics;
extern const DEVPROPKEY DEVPKEY_Device_Address;
extern const DEVPROPKEY DEVPKEY_Device_UINumberDescFormat;
extern const DEVPROPKEY DEVPKEY_Device_PowerData;
extern const DEVPROPKEY DEVPKEY_Device_RemovalPolicy;
extern const DEVPROPKEY DEVPKEY_Device_RemovalPolicyDefault;
extern const DEVPROPKEY DEVPKEY_Device_RemovalPolicyOverride;
extern const DEVPROPKEY DEVPKEY_Device_InstallState;
extern const DEVPROPKEY DEVPKEY_Device_LocationPaths;
extern const DEVPROPKEY DEVPKEY_Device_BaseContainerId;
extern const DEVPROPKEY DEVPKEY_Device_InstanceId;
extern const DEVPROPKEY DEVPKEY_Device_DevNodeStatus;
extern const DEVPROPKEY DEVPKEY_Device_ProblemCode;
extern const DEVPROPKEY DEVPKEY_Device_EjectionRelations;
extern const DEVPROPKEY DEVPKEY_Device_RemovalRelations;
extern const DEVPROPKEY DEVPKEY_Device_PowerRelations;
extern const DEVPROPKEY DEVPKEY_Device_BusRelations;
extern const DEVPROPKEY DEVPKEY_Device_Parent;
extern const DEVPROPKEY DEVPKEY_Device_Children;
extern const DEVPROPKEY DEVPKEY_Device_Siblings;
extern const DEVPROPKEY DEVPKEY_Device_TransportRelations;
extern const DEVPROPKEY DEVPKEY_Device_ProblemStatus;
extern const DEVPROPKEY DEVPKEY_Device_Reported;
extern const DEVPROPKEY DEVPKEY_Device_Legacy;
extern const DEVPROPKEY DEVPKEY_Device_ContainerId;
extern const DEVPROPKEY DEVPKEY_Device_InLocalMachineContainer;
extern const DEVPROPKEY DEVPKEY_Device_Model;
extern const DEVPROPKEY DEVPKEY_Device_ModelId;
extern const DEVPROPKEY DEVPKEY_Device_FriendlyNameAttributes;
extern const DEVPROPKEY DEVPKEY_Device_ManufacturerAttributes;
extern const DEVPROPKEY DEVPKEY_Device_PresenceNotForDevice;
extern const DEVPROPKEY DEVPKEY_Device_SignalStrength;
extern const DEVPROPKEY DEVPKEY_Device_IsAssociateableByUserAction;
extern const DEVPROPKEY DEVPKEY_Device_ShowInUninstallUI;
extern const DEVPROPKEY DEVPKEY_Device_Numa_Proximity_Domain;
extern const DEVPROPKEY DEVPKEY_Device_DHP_Rebalance_Policy;
extern const DEVPROPKEY DEVPKEY_Device_Numa_Node;
extern const DEVPROPKEY DEVPKEY_Device_BusReportedDeviceDesc;
extern const DEVPROPKEY DEVPKEY_Device_IsPresent;
extern const DEVPROPKEY DEVPKEY_Device_HasProblem;
extern const DEVPROPKEY DEVPKEY_Device_ConfigurationId;
extern const DEVPROPKEY DEVPKEY_Device_ReportedDeviceIdsHash;
extern const DEVPROPKEY DEVPKEY_Device_PhysicalDeviceLocation;
extern const DEVPROPKEY DEVPKEY_Device_BiosDeviceName;
extern const DEVPROPKEY DEVPKEY_Device_DriverProblemDesc;
extern const DEVPROPKEY DEVPKEY_Device_DebuggerSafe;
extern const DEVPROPKEY DEVPKEY_Device_PostInstallInProgress;
extern const DEVPROPKEY DEVPKEY_Device_Stack;
extern const DEVPROPKEY DEVPKEY_Device_ExtendedConfigurationIds;
extern const DEVPROPKEY DEVPKEY_Device_IsRebootRequired;
extern const DEVPROPKEY DEVPKEY_Device_FirmwareDate;
extern const DEVPROPKEY DEVPKEY_Device_FirmwareVersion;
extern const DEVPROPKEY DEVPKEY_Device_FirmwareRevision;
extern const DEVPROPKEY DEVPKEY_Device_DependencyProviders;
extern const DEVPROPKEY DEVPKEY_Device_DependencyDependents;
extern const DEVPROPKEY DEVPKEY_Device_SoftRestartSupported;
extern const DEVPROPKEY DEVPKEY_Device_ExtendedAddress;
extern const DEVPROPKEY DEVPKEY_Device_SessionId;
extern const DEVPROPKEY DEVPKEY_Device_InstallDate;
extern const DEVPROPKEY DEVPKEY_Device_FirstInstallDate;
extern const DEVPROPKEY DEVPKEY_Device_LastArrivalDate;
extern const DEVPROPKEY DEVPKEY_Device_LastRemovalDate;
extern const DEVPROPKEY DEVPKEY_Device_DriverDate;
extern const DEVPROPKEY DEVPKEY_Device_DriverVersion;
extern const DEVPROPKEY DEVPKEY_Device_DriverDesc;
extern const DEVPROPKEY DEVPKEY_Device_DriverInfPath;
extern const DEVPROPKEY DEVPKEY_Device_DriverInfSection;
extern const DEVPROPKEY DEVPKEY_Device_DriverInfSectionExt;
extern const DEVPROPKEY DEVPKEY_Device_MatchingDeviceId;
extern const DEVPROPKEY DEVPKEY_Device_DriverProvider;
extern const DEVPROPKEY DEVPKEY_Device_DriverPropPageProvider;
extern const DEVPROPKEY DEVPKEY_Device_DriverCoInstallers;
extern const DEVPROPKEY DEVPKEY_Device_ResourcePickerTags;
extern const DEVPROPKEY DEVPKEY_Device_ResourcePickerExceptions;
extern const DEVPROPKEY DEVPKEY_Device_DriverRank;
extern const DEVPROPKEY DEVPKEY_Device_DriverLogoLevel;
extern const DEVPROPKEY DEVPKEY_Device_NoConnectSound;
extern const DEVPROPKEY DEVPKEY_Device_GenericDriverInstalled;
extern const DEVPROPKEY DEVPKEY_Device_AdditionalSoftwareRequested;
extern const DEVPROPKEY DEVPKEY_Device_SafeRemovalRequired;
extern const DEVPROPKEY DEVPKEY_Device_SafeRemovalRequiredOverride;
extern const DEVPROPKEY DEVPKEY_DrvPkg_Model;
extern const DEVPROPKEY DEVPKEY_DrvPkg_VendorWebSite;
extern const DEVPROPKEY DEVPKEY_DrvPkg_DetailedDescription;
extern const DEVPROPKEY DEVPKEY_DrvPkg_DocumentationLink;
extern const DEVPROPKEY DEVPKEY_DrvPkg_Icon;
extern const DEVPROPKEY DEVPKEY_DrvPkg_BrandingIcon;
extern const DEVPROPKEY DEVPKEY_DeviceClass_UpperFilters;
extern const DEVPROPKEY DEVPKEY_DeviceClass_LowerFilters;
extern const DEVPROPKEY DEVPKEY_DeviceClass_Security;
extern const DEVPROPKEY DEVPKEY_DeviceClass_SecuritySDS;
extern const DEVPROPKEY DEVPKEY_DeviceClass_DevType;
extern const DEVPROPKEY DEVPKEY_DeviceClass_Exclusive;
extern const DEVPROPKEY DEVPKEY_DeviceClass_Characteristics;
extern const DEVPROPKEY DEVPKEY_DeviceClass_Name;
extern const DEVPROPKEY DEVPKEY_DeviceClass_ClassName;
extern const DEVPROPKEY DEVPKEY_DeviceClass_Icon;
extern const DEVPROPKEY DEVPKEY_DeviceClass_ClassInstaller;
extern const DEVPROPKEY DEVPKEY_DeviceClass_PropPageProvider;
extern const DEVPROPKEY DEVPKEY_DeviceClass_NoInstallClass;
extern const DEVPROPKEY DEVPKEY_DeviceClass_NoDisplayClass;
extern const DEVPROPKEY DEVPKEY_DeviceClass_SilentInstall;
extern const DEVPROPKEY DEVPKEY_DeviceClass_NoUseClass;
extern const DEVPROPKEY DEVPKEY_DeviceClass_DefaultService;
extern const DEVPROPKEY DEVPKEY_DeviceClass_IconPath;
extern const DEVPROPKEY DEVPKEY_DeviceClass_DHPRebalanceOptOut;
extern const DEVPROPKEY DEVPKEY_DeviceClass_ClassCoInstallers;
extern const DEVPROPKEY DEVPKEY_DeviceInterface_FriendlyName;
extern const DEVPROPKEY DEVPKEY_DeviceInterface_Enabled;
extern const DEVPROPKEY DEVPKEY_DeviceInterface_ClassGuid;
extern const DEVPROPKEY DEVPKEY_DeviceInterface_ReferenceString;
extern const DEVPROPKEY DEVPKEY_DeviceInterface_Restricted;
extern const DEVPROPKEY DEVPKEY_DeviceInterface_UnrestrictedAppCapabilities;
extern const DEVPROPKEY DEVPKEY_DeviceInterface_SchematicName;
extern const DEVPROPKEY DEVPKEY_DeviceInterfaceClass_DefaultInterface;
extern const DEVPROPKEY DEVPKEY_DeviceInterfaceClass_Name;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_Address;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_DiscoveryMethod;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsEncrypted;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsAuthenticated;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsConnected;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsPaired;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_Icon;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_Version;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_Last_Seen;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_Last_Connected;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsShowInDisconnectedState;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsLocalMachine;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_MetadataPath;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsMetadataSearchInProgress;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_MetadataChecksum;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsNotInterestingForDisplay;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_LaunchDeviceStageOnDeviceConnect;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_LaunchDeviceStageFromExplorer;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_BaselineExperienceId;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsDeviceUniquelyIdentifiable;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_AssociationArray;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_DeviceDescription1;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_DeviceDescription2;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_HasProblem;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsSharedDevice;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsNetworkDevice;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsDefaultDevice;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_MetadataCabinet;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_RequiresPairingElevation;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_ExperienceId;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_Category;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_Category_Desc_Singular;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_Category_Desc_Plural;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_Category_Icon;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_CategoryGroup_Desc;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_CategoryGroup_Icon;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_PrimaryCategory;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_UnpairUninstall;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_RequiresUninstallElevation;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_DeviceFunctionSubRank;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_AlwaysShowDeviceAsConnected;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_ConfigFlags;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_PrivilegedPackageFamilyNames;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_CustomPrivilegedPackageFamilyNames;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_IsRebootRequired;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_FriendlyName;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_Manufacturer;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_ModelName;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_ModelNumber;
extern const DEVPROPKEY DEVPKEY_DeviceContainer_InstallInProgress;
extern const DEVPROPKEY DEVPKEY_DevQuery_ObjectType;
#define DEVPKEY_Numa_Proximity_Domain DEVPKEY_Device_Numa_Proximity_Domain
#define DEVPKEY_DeviceDisplay_DiscoveryMethod DEVPKEY_DeviceContainer_DiscoveryMethod
#define DEVPKEY_DeviceDisplay_IsShowInDisconnectedState DEVPKEY_DeviceContainer_IsShowInDisconnectedState
#define DEVPKEY_DeviceDisplay_IsNotInterestingForDisplay DEVPKEY_DeviceContainer_IsNotInterestingForDisplay
#define DEVPKEY_DeviceDisplay_IsNetworkDevice DEVPKEY_DeviceContainer_IsNetworkDevice
#define DEVPKEY_DeviceDisplay_Category DEVPKEY_DeviceContainer_Category
#define DEVPKEY_DeviceDisplay_UnpairUninstall DEVPKEY_DeviceContainer_UnpairUninstall
#define DEVPKEY_DeviceDisplay_RequiresUninstallElevation DEVPKEY_DeviceContainer_RequiresUninstallElevation
#define DEVPKEY_DeviceDisplay_AlwaysShowDeviceAsConnected DEVPKEY_DeviceContainer_AlwaysShowDeviceAsConnected
#define _PCIPROP_ 
#undef DEFINE_DEVPROPKEY
#define DEFINE_DEVPROPKEY(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8,pid) EXTERN_C const DEVPROPKEY name
#define DEFINE_PCI_ROOT_BUS_DEVPKEY(_DPKNAME,_PID) DEFINE_DEVPROPKEY ((_DPKNAME), 0xd817fc28, 0x793e, 0x4b9e, 0x99, 0x70, 0x46, 0x9d, 0x8b, 0xe6, 0x30, 0x73, (_PID))
#define DEFINE_PCI_DEVICE_DEVPKEY(_DPKNAME,_PID) DEFINE_DEVPROPKEY ((_DPKNAME), 0x3ab22e31, 0x8264, 0x4b4e, 0x9a, 0xf5, 0xa8, 0xd2, 0xd8, 0xe3, 0x3e, 0x62, (_PID))
extern const DEVPROPKEY (DEVPKEY_PciRootBus_SecondaryInterface);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_CurrentSpeedAndMode);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_SupportedSpeedsAndModes);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_DeviceIDMessagingCapable);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_SecondaryBusWidth);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_ExtendedConfigAvailable);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_ExtendedPCIConfigOpRegionSupport);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_ASPMSupport);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_ClockPowerManagementSupport);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCISegmentGroupsSupport);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_MSISupport);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCIExpressNativeHotPlugControl);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_SHPCNativeHotPlugControl);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCIExpressNativePMEControl);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCIExpressAERControl);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_PCIExpressCapabilityControl);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_NativePciExpressControl);
extern const DEVPROPKEY (DEVPKEY_PciRootBus_SystemMsiSupport);
extern const DEVPROPKEY (DEVPKEY_PciDevice_DeviceType);
extern const DEVPROPKEY (DEVPKEY_PciDevice_CurrentSpeedAndMode);
extern const DEVPROPKEY (DEVPKEY_PciDevice_BaseClass);
extern const DEVPROPKEY (DEVPKEY_PciDevice_SubClass);
extern const DEVPROPKEY (DEVPKEY_PciDevice_ProgIf);
extern const DEVPROPKEY (DEVPKEY_PciDevice_CurrentPayloadSize);
extern const DEVPROPKEY (DEVPKEY_PciDevice_MaxPayloadSize);
extern const DEVPROPKEY (DEVPKEY_PciDevice_MaxReadRequestSize);
extern const DEVPROPKEY (DEVPKEY_PciDevice_CurrentLinkSpeed);
extern const DEVPROPKEY (DEVPKEY_PciDevice_CurrentLinkWidth);
extern const DEVPROPKEY (DEVPKEY_PciDevice_MaxLinkSpeed);
extern const DEVPROPKEY (DEVPKEY_PciDevice_MaxLinkWidth);
extern const DEVPROPKEY (DEVPKEY_PciDevice_ExpressSpecVersion);
extern const DEVPROPKEY (DEVPKEY_PciDevice_InterruptSupport);
extern const DEVPROPKEY (DEVPKEY_PciDevice_InterruptMessageMaximum);
extern const DEVPROPKEY (DEVPKEY_PciDevice_BarTypes);
extern const DEVPROPKEY (DEVPKEY_PciDevice_AERCapabilityPresent);
extern const DEVPROPKEY (DEVPKEY_PciDevice_FirmwareErrorHandling);
extern const DEVPROPKEY (DEVPKEY_PciDevice_Uncorrectable_Error_Mask);
extern const DEVPROPKEY (DEVPKEY_PciDevice_Uncorrectable_Error_Severity);
extern const DEVPROPKEY (DEVPKEY_PciDevice_Correctable_Error_Mask);
extern const DEVPROPKEY (DEVPKEY_PciDevice_ECRC_Errors);
extern const DEVPROPKEY (DEVPKEY_PciDevice_Error_Reporting);
extern const DEVPROPKEY (DEVPKEY_PciDevice_RootError_Reporting);
extern const DEVPROPKEY (DEVPKEY_PciDevice_S0WakeupSupported);
extern const DEVPROPKEY (DEVPKEY_PciDevice_SriovSupport);
extern const DEVPROPKEY (DEVPKEY_PciDevice_Label_Id);
extern const DEVPROPKEY (DEVPKEY_PciDevice_Label_String);
extern const DEVPROPKEY (DEVPKEY_PciDevice_AcsSupport);
extern const DEVPROPKEY (DEVPKEY_PciDevice_AriSupport);
#define DevProp_PciRootBus_SecondaryInterface_PciConventional 0
#define DevProp_PciRootBus_SecondaryInterface_PciXMode1 1
#define DevProp_PciRootBus_SecondaryInterface_PciXMode2 2
#define DevProp_PciRootBus_SecondaryInterface_PciExpress 3
#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_Conventional_33Mhz 0
#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_Conventional_66Mhz 1
#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_66Mhz 2
#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_100Mhz 3
#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_133Mhz 4
#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_ECC_66Mhz 5
#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_ECC_100Mhz 6
#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_Mode1_ECC_133Mhz 7
#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_266_Mode2_66Mhz 8
#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_266_Mode2_100Mhz 9
#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_266_Mode2_133Mhz 10
#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_533_Mode2_66Mhz 11
#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_533_Mode2_100Mhz 12
#define DevProp_PciRootBus_CurrentSpeedAndMode_Pci_X_533_Mode2_133Mhz 13
#define DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_Conventional_33Mhz 1
#define DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_Conventional_66Mhz 2
#define DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_X_66Mhz 4
#define DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_X_133Mhz 8
#define DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_X_266Mhz 16
#define DevProp_PciRootBus_SupportedSpeedsAndModes_Pci_X_533Mhz 32
#define DevProp_PciRootBus_BusWidth_32Bits 0
#define DevProp_PciRootBus_BusWidth_64Bits 1
#define DevProp_PciDevice_DeviceType_PciConventional 0
#define DevProp_PciDevice_DeviceType_PciX 1
#define DevProp_PciDevice_DeviceType_PciExpressEndpoint 2
#define DevProp_PciDevice_DeviceType_PciExpressLegacyEndpoint 3
#define DevProp_PciDevice_DeviceType_PciExpressRootComplexIntegratedEndpoint 4
#define DevProp_PciDevice_DeviceType_PciExpressTreatedAsPci 5
#define DevProp_PciDevice_BridgeType_PciConventional 6
#define DevProp_PciDevice_BridgeType_PciX 7
#define DevProp_PciDevice_BridgeType_PciExpressRootPort 8
#define DevProp_PciDevice_BridgeType_PciExpressUpstreamSwitchPort 9
#define DevProp_PciDevice_BridgeType_PciExpressDownstreamSwitchPort 10
#define DevProp_PciDevice_BridgeType_PciExpressToPciXBridge 11
#define DevProp_PciDevice_BridgeType_PciXToExpressBridge 12
#define DevProp_PciDevice_BridgeType_PciExpressTreatedAsPci 13
#define DevProp_PciDevice_CurrentSpeedAndMode_Pci_Conventional_33MHz 0
#define DevProp_PciDevice_CurrentSpeedAndMode_Pci_Conventional_66MHz 1
#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode_Conventional_Pci 0x0
#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_66Mhz 0x1
#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_100Mhz 0x2
#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_133MHZ 0x3
#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_ECC_66Mhz 0x5
#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_ECC_100Mhz 0x6
#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode1_ECC_133Mhz 0x7
#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_266_66MHz 0x9
#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_266_100MHz 0xa
#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_266_133MHz 0xb
#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_533_66MHz 0xd
#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_533_100MHz 0xe
#define DevProp_PciDevice_CurrentSpeedAndMode_PciX_Mode2_533_133MHz 0xf
#define DevProp_PciExpressDevice_PayloadOrRequestSize_128Bytes 0
#define DevProp_PciExpressDevice_PayloadOrRequestSize_256Bytes 1
#define DevProp_PciExpressDevice_PayloadOrRequestSize_512Bytes 2
#define DevProp_PciExpressDevice_PayloadOrRequestSize_1024Bytes 3
#define DevProp_PciExpressDevice_PayloadOrRequestSize_2048Bytes 4
#define DevProp_PciExpressDevice_PayloadOrRequestSize_4096Bytes 5
#define DevProp_PciExpressDevice_LinkSpeed_TwoAndHalf_Gbps 1
#define DevProp_PciExpressDevice_LinkSpeed_Five_Gbps 2
#define DevProp_PciExpressDevice_LinkWidth_By_1 1
#define DevProp_PciExpressDevice_LinkWidth_By_2 2
#define DevProp_PciExpressDevice_LinkWidth_By_4 4
#define DevProp_PciExpressDevice_LinkWidth_By_8 8
#define DevProp_PciExpressDevice_LinkWidth_By_12 12
#define DevProp_PciExpressDevice_LinkWidth_By_16 16
#define DevProp_PciExpressDevice_LinkWidth_By_32 32
#define DevProp_PciExpressDevice_LinkSpeed_TwoAndHalf_Gbps 1
#define DevProp_PciExpressDevice_Spec_Version_10 1
#define DevProp_PciExpressDevice_Spec_Version_11 2
#define DevProp_PciDevice_InterruptType_LineBased 1
#define DevProp_PciDevice_InterruptType_Msi 2
#define DevProp_PciDevice_InterruptType_MsiX 4
#define DevProp_PciDevice_IoBarCount(_PD) ((_PD) & 0xff)
#define DevProp_PciDevice_NonPrefetchable_MemoryBarCount(_PD) (((_PD) >> 8) & 0xff)
#define DevProp_PciDevice_32BitPrefetchable_MemoryBarCount(_PD) (((_PD) >> 16) & 0xff)
#define DevProp_PciDevice_64BitPrefetchable_MemoryBarCount(_PD) (((_PD) >> 24) & 0xff)
#define DevProp_PciDevice_SriovSupport_Ok 0x0
#define DevProp_PciDevice_SriovSupport_MissingAcs 0x1
#define DevProp_PciDevice_SriovSupport_MissingPfDriver 0x2
#define DevProp_PciDevice_SriovSupport_NoBusResource 0x3
#define DevProp_PciDevice_SriovSupport_DidntGetVfBarSpace 0x4
#define DevProp_PciDevice_AcsSupport_Present 0x0
#define DevProp_PciDevice_AcsSupport_NotNeeded 0x1
#define DevProp_PciDevice_AcsSupport_Missing 0x2
#define NDIS_SUPPORT_NDIS61 0
#define NDIS_SUPPORT_NDIS620 0
#define NDIS_SUPPORT_NDIS630 0
#define DD_NDIS_DEVICE_NAME "\\Device\\UNKNOWN"
#define _NDIS_CONTROL_CODE(request,method) CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, request, method, FILE_ANY_ACCESS)
#define IOCTL_NDIS_QUERY_GLOBAL_STATS _NDIS_CONTROL_CODE (0, METHOD_OUT_DIRECT)
#define IOCTL_NDIS_QUERY_ALL_STATS _NDIS_CONTROL_CODE (1, METHOD_OUT_DIRECT)
#define IOCTL_NDIS_DO_PNP_OPERATION _NDIS_CONTROL_CODE (2, METHOD_BUFFERED)
#define IOCTL_NDIS_QUERY_SELECTED_STATS _NDIS_CONTROL_CODE (3, METHOD_OUT_DIRECT)
#define IOCTL_NDIS_ENUMERATE_INTERFACES _NDIS_CONTROL_CODE (4, METHOD_BUFFERED)
#define IOCTL_NDIS_ADD_TDI_DEVICE _NDIS_CONTROL_CODE (5, METHOD_BUFFERED)
#define IOCTL_NDIS_GET_LOG_DATA _NDIS_CONTROL_CODE (7, METHOD_OUT_DIRECT)
#define IOCTL_NDIS_GET_VERSION _NDIS_CONTROL_CODE (8, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED1 _NDIS_CONTROL_CODE (9, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED2 _NDIS_CONTROL_CODE (0xa, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED3 _NDIS_CONTROL_CODE (0xb, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED4 _NDIS_CONTROL_CODE (0xc, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED5 CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, 0xd, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_NDIS_RESERVED6 CTL_CODE (FILE_DEVICE_PHYSICAL_NETCARD, 0xe, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define IOCTL_NDIS_RESERVED7 _NDIS_CONTROL_CODE (0xf, METHOD_OUT_DIRECT)
#define IOCTL_NDIS_RESERVED8 _NDIS_CONTROL_CODE (0x10, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED9 _NDIS_CONTROL_CODE (0x11, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED10 _NDIS_CONTROL_CODE (0x12, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED11 _NDIS_CONTROL_CODE (0x13, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED12 _NDIS_CONTROL_CODE (0x14, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED13 _NDIS_CONTROL_CODE (0x15, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED14 _NDIS_CONTROL_CODE (0x16, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED15 _NDIS_CONTROL_CODE (0x17, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED16 _NDIS_CONTROL_CODE (0x18, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED17 _NDIS_CONTROL_CODE (0x19, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED18 _NDIS_CONTROL_CODE (0x1a, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED19 _NDIS_CONTROL_CODE (0x1b, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED20 _NDIS_CONTROL_CODE (0x1c, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED21 _NDIS_CONTROL_CODE (0x1d, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED22 _NDIS_CONTROL_CODE (0x1e, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED23 _NDIS_CONTROL_CODE (0x1f, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED24 _NDIS_CONTROL_CODE (0x20, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED25 _NDIS_CONTROL_CODE (0x21, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED26 _NDIS_CONTROL_CODE (0x22, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED27 _NDIS_CONTROL_CODE (0x23, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED28 _NDIS_CONTROL_CODE (0x24, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED29 _NDIS_CONTROL_CODE (0x25, METHOD_BUFFERED)
#define IOCTL_NDIS_RESERVED30 _NDIS_CONTROL_CODE (0x26, METHOD_BUFFERED)
  typedef ULONG NDIS_OID, *PNDIS_OID;
  typedef struct _NDIS_STATISTICS_VALUE {
    NDIS_OID Oid;
    ULONG DataLength;
    UCHAR Data[1];
  } NDIS_STATISTICS_VALUE;
  typedef NDIS_STATISTICS_VALUE *PNDIS_STATISTICS_VALUE;
  typedef struct _NDIS_STATISTICS_VALUE_EX {
    NDIS_OID Oid;
    ULONG DataLength;
    ULONG Length;
    UCHAR Data[1];
  } NDIS_STATISTICS_VALUE_EX;
  typedef NDIS_STATISTICS_VALUE_EX *PNDIS_STATISTICS_VALUE_EX;
  typedef struct _NDIS_VAR_DATA_DESC {
    USHORT Length;
    USHORT MaximumLength;
    ULONG_PTR Offset;
  } NDIS_VAR_DATA_DESC, *PNDIS_VAR_DATA_DESC;
#define NDIS_OBJECT_TYPE_DEFAULT 0x80
#define NDIS_OBJECT_TYPE_MINIPORT_INIT_PARAMETERS 0x81
#define NDIS_OBJECT_TYPE_SG_DMA_DESCRIPTION 0x83
#define NDIS_OBJECT_TYPE_MINIPORT_INTERRUPT 0x84
#define NDIS_OBJECT_TYPE_DEVICE_OBJECT_ATTRIBUTES 0x85
#define NDIS_OBJECT_TYPE_BIND_PARAMETERS 0x86
#define NDIS_OBJECT_TYPE_OPEN_PARAMETERS 0x87
#define NDIS_OBJECT_TYPE_RSS_CAPABILITIES 0x88
#define NDIS_OBJECT_TYPE_RSS_PARAMETERS 0x89
#define NDIS_OBJECT_TYPE_MINIPORT_DRIVER_CHARACTERISTICS 0x8a
#define NDIS_OBJECT_TYPE_FILTER_DRIVER_CHARACTERISTICS 0x8b
#define NDIS_OBJECT_TYPE_FILTER_PARTIAL_CHARACTERISTICS 0x8c
#define NDIS_OBJECT_TYPE_FILTER_ATTRIBUTES 0x8d
#define NDIS_OBJECT_TYPE_CLIENT_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS 0x8e
#define NDIS_OBJECT_TYPE_PROVIDER_CHIMNEY_OFFLOAD_GENERIC_CHARACTERISTICS 0x8f
#define NDIS_OBJECT_TYPE_CO_PROTOCOL_CHARACTERISTICS 0x90
#define NDIS_OBJECT_TYPE_CO_MINIPORT_CHARACTERISTICS 0x91
#define NDIS_OBJECT_TYPE_MINIPORT_PNP_CHARACTERISTICS 0x92
#define NDIS_OBJECT_TYPE_CLIENT_CHIMNEY_OFFLOAD_CHARACTERISTICS 0x93
#define NDIS_OBJECT_TYPE_PROVIDER_CHIMNEY_OFFLOAD_CHARACTERISTICS 0x94
#define NDIS_OBJECT_TYPE_PROTOCOL_DRIVER_CHARACTERISTICS 0x95
#define NDIS_OBJECT_TYPE_REQUEST_EX 0x96
#define NDIS_OBJECT_TYPE_OID_REQUEST 0x96
#define NDIS_OBJECT_TYPE_TIMER_CHARACTERISTICS 0x97
#define NDIS_OBJECT_TYPE_STATUS_INDICATION 0x98
#define NDIS_OBJECT_TYPE_FILTER_ATTACH_PARAMETERS 0x99
#define NDIS_OBJECT_TYPE_FILTER_PAUSE_PARAMETERS 0x9a
#define NDIS_OBJECT_TYPE_FILTER_RESTART_PARAMETERS 0x9b
#define NDIS_OBJECT_TYPE_PORT_CHARACTERISTICS 0x9c
#define NDIS_OBJECT_TYPE_PORT_STATE 0x9d
#define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 0x9e
#define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 0x9f
#define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES 0xa0
#define NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_NATIVE_802_11_ATTRIBUTES 0xa1
#define NDIS_OBJECT_TYPE_RESTART_GENERAL_ATTRIBUTES 0xa2
#define NDIS_OBJECT_TYPE_PROTOCOL_RESTART_PARAMETERS 0xa3
#define NDIS_OBJECT_TYPE_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES 0xa4
#define NDIS_OBJECT_TYPE_CO_CALL_MANAGER_OPTIONAL_HANDLERS 0xa5
#define NDIS_OBJECT_TYPE_CO_CLIENT_OPTIONAL_HANDLERS 0xa6
#define NDIS_OBJECT_TYPE_OFFLOAD 0xa7
#define NDIS_OBJECT_TYPE_OFFLOAD_ENCAPSULATION 0xa8
#define NDIS_OBJECT_TYPE_CONFIGURATION_OBJECT 0xa9
#define NDIS_OBJECT_TYPE_DRIVER_WRAPPER_OBJECT 0xaa
#define NDIS_OBJECT_TYPE_NSI_NETWORK_RW_STRUCT 0xac
#define NDIS_OBJECT_TYPE_NSI_COMPARTMENT_RW_STRUCT 0xad
#define NDIS_OBJECT_TYPE_NSI_INTERFACE_PERSIST_RW_STRUCT 0xae
  typedef struct _NDIS_OBJECT_HEADER {
    UCHAR Type;
    UCHAR Revision;
    USHORT Size;
  } NDIS_OBJECT_HEADER, *PNDIS_OBJECT_HEADER;
  typedef enum _NDIS_REQUEST_TYPE {
    NdisRequestQueryInformation,
    NdisRequestSetInformation,
    NdisRequestQueryStatistics,
    NdisRequestOpen,
    NdisRequestClose,
    NdisRequestSend,
    NdisRequestTransferData,
    NdisRequestReset,
    NdisRequestGeneric1,
    NdisRequestGeneric2,
    NdisRequestGeneric3,
    NdisRequestGeneric4
  } NDIS_REQUEST_TYPE, *PNDIS_REQUEST_TYPE;
#define NDIS_OBJECT_REVISION_1 1
#define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_FRAMES_RCV 0x00000001
#define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_FRAMES_RCV 0x00000002
#define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_FRAMES_RCV 0x00000004
#define NDIS_STATISTICS_FLAGS_VALID_BYTES_RCV 0x00000008
#define NDIS_STATISTICS_FLAGS_VALID_RCV_DISCARDS 0x00000010
#define NDIS_STATISTICS_FLAGS_VALID_RCV_ERROR 0x00000020
#define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_FRAMES_XMIT 0x00000040
#define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_FRAMES_XMIT 0x00000080
#define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_FRAMES_XMIT 0x00000100
#define NDIS_STATISTICS_FLAGS_VALID_BYTES_XMIT 0x00000200
#define NDIS_STATISTICS_FLAGS_VALID_XMIT_ERROR 0x00000400
#define NDIS_STATISTICS_FLAGS_VALID_XMIT_DISCARDS 0x00008000
#define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_BYTES_RCV 0x00010000
#define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_BYTES_RCV 0x00020000
#define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_BYTES_RCV 0x00040000
#define NDIS_STATISTICS_FLAGS_VALID_DIRECTED_BYTES_XMIT 0x00080000
#define NDIS_STATISTICS_FLAGS_VALID_MULTICAST_BYTES_XMIT 0x00100000
#define NDIS_STATISTICS_FLAGS_VALID_BROADCAST_BYTES_XMIT 0x00200000
#define NDIS_INTERRUPT_MODERATION_CHANGE_NEEDS_RESET 0x00000001
#define NDIS_INTERRUPT_MODERATION_CHANGE_NEEDS_REINITIALIZE 0x00000002
#define NDIS_STATISTICS_INFO_REVISION_1 1
#define NDIS_INTERRUPT_MODERATION_PARAMETERS_REVISION_1 1
#define NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES_REVISION_1 1
#define NDIS_OBJECT_TYPE_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_1 1
#define NDIS_SIZEOF_STATISTICS_INFO_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_STATISTICS_INFO, ifHCOutBroadcastOctets)
#define NDIS_SIZEOF_INTERRUPT_MODERATION_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_INTERRUPT_MODERATION_PARAMETERS, InterruptModeration)
#define NDIS_SIZEOF_TIMEOUT_DPC_REQUEST_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES, TimeoutArray)
#define NDIS_SIZEOF_PCI_DEVICE_CUSTOM_PROPERTIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PCI_DEVICE_CUSTOM_PROPERTIES, MaxLinkWidth)
  typedef struct _NDIS_STATISTICS_INFO {
    NDIS_OBJECT_HEADER Header;
    ULONG SupportedStatistics;
    ULONG64 ifInDiscards;
    ULONG64 ifInErrors;
    ULONG64 ifHCInOctets;
    ULONG64 ifHCInUcastPkts;
    ULONG64 ifHCInMulticastPkts;
    ULONG64 ifHCInBroadcastPkts;
    ULONG64 ifHCOutOctets;
    ULONG64 ifHCOutUcastPkts;
    ULONG64 ifHCOutMulticastPkts;
    ULONG64 ifHCOutBroadcastPkts;
    ULONG64 ifOutErrors;
    ULONG64 ifOutDiscards;
    ULONG64 ifHCInUcastOctets;
    ULONG64 ifHCInMulticastOctets;
    ULONG64 ifHCInBroadcastOctets;
    ULONG64 ifHCOutUcastOctets;
    ULONG64 ifHCOutMulticastOctets;
    ULONG64 ifHCOutBroadcastOctets;
  } NDIS_STATISTICS_INFO, *PNDIS_STATISTICS_INFO;
  typedef enum _NDIS_INTERRUPT_MODERATION {
    NdisInterruptModerationUnknown,
    NdisInterruptModerationNotSupported,
    NdisInterruptModerationEnabled,
    NdisInterruptModerationDisabled
  } NDIS_INTERRUPT_MODERATION, *PNDIS_INTERRUPT_MODERATION;
  typedef struct _NDIS_INTERRUPT_MODERATION_PARAMETERS {
    NDIS_OBJECT_HEADER Header;
    ULONG Flags;
    NDIS_INTERRUPT_MODERATION InterruptModeration;
  } NDIS_INTERRUPT_MODERATION_PARAMETERS, *PNDIS_INTERRUPT_MODERATION_PARAMETERS;
  typedef struct _NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES {
    NDIS_OBJECT_HEADER Header;
    ULONG Flags;
    ULONG TimeoutArrayLength;
    ULONG TimeoutArray[1];
  } NDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES, *PNDIS_TIMEOUT_DPC_REQUEST_CAPABILITIES;
  typedef struct _NDIS_PCI_DEVICE_CUSTOM_PROPERTIES {
    NDIS_OBJECT_HEADER Header;
    UINT32 DeviceType;
    UINT32 CurrentSpeedAndMode;
    UINT32 CurrentPayloadSize;
    UINT32 MaxPayloadSize;
    UINT32 MaxReadRequestSize;
    UINT32 CurrentLinkSpeed;
    UINT32 CurrentLinkWidth;
    UINT32 MaxLinkSpeed;
    UINT32 MaxLinkWidth;
  } NDIS_PCI_DEVICE_CUSTOM_PROPERTIES, *PNDIS_PCI_DEVICE_CUSTOM_PROPERTIES;
#define OID_GEN_SUPPORTED_LIST 0x00010101
#define OID_GEN_HARDWARE_STATUS 0x00010102
#define OID_GEN_MEDIA_SUPPORTED 0x00010103
#define OID_GEN_MEDIA_IN_USE 0x00010104
#define OID_GEN_MAXIMUM_LOOKAHEAD 0x00010105
#define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106
#define OID_GEN_LINK_SPEED 0x00010107
#define OID_GEN_TRANSMIT_BUFFER_SPACE 0x00010108
#define OID_GEN_RECEIVE_BUFFER_SPACE 0x00010109
#define OID_GEN_TRANSMIT_BLOCK_SIZE 0x0001010a
#define OID_GEN_RECEIVE_BLOCK_SIZE 0x0001010b
#define OID_GEN_VENDOR_ID 0x0001010c
#define OID_GEN_VENDOR_DESCRIPTION 0x0001010d
#define OID_GEN_CURRENT_PACKET_FILTER 0x0001010e
#define OID_GEN_CURRENT_LOOKAHEAD 0x0001010f
#define OID_GEN_DRIVER_VERSION 0x00010110
#define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111
#define OID_GEN_PROTOCOL_OPTIONS 0x00010112
#define OID_GEN_MAC_OPTIONS 0x00010113
#define OID_GEN_MEDIA_CONNECT_STATUS 0x00010114
#define OID_GEN_MAXIMUM_SEND_PACKETS 0x00010115
#define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116
#define OID_GEN_SUPPORTED_GUIDS 0x00010117
#define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118
#define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119
#define OID_GEN_MEDIA_CAPABILITIES 0x00010201
#define OID_GEN_PHYSICAL_MEDIUM 0x00010202
#define OID_GEN_RECEIVE_SCALE_CAPABILITIES 0x00010203
#define OID_GEN_RECEIVE_SCALE_PARAMETERS 0x00010204
#define OID_GEN_MAC_ADDRESS 0x00010205
#define OID_GEN_MAX_LINK_SPEED 0x00010206
#define OID_GEN_LINK_STATE 0x00010207
#define OID_GEN_LINK_PARAMETERS 0x00010208
#define OID_GEN_INTERRUPT_MODERATION 0x00010209
#define OID_GEN_NDIS_RESERVED_3 0x0001020a
#define OID_GEN_NDIS_RESERVED_4 0x0001020b
#define OID_GEN_NDIS_RESERVED_5 0x0001020c
#define OID_GEN_ENUMERATE_PORTS 0x0001020d
#define OID_GEN_PORT_STATE 0x0001020e
#define OID_GEN_PORT_AUTHENTICATION_PARAMETERS 0x0001020f
#define OID_GEN_TIMEOUT_DPC_REQUEST_CAPABILITIES 0x00010210
#define OID_GEN_PCI_DEVICE_CUSTOM_PROPERTIES 0x00010211
#define OID_GEN_NDIS_RESERVED_6 0x00010212
#define OID_GEN_PHYSICAL_MEDIUM_EX 0x00010213
#define OID_GEN_MACHINE_NAME 0x0001021a
#define OID_GEN_RNDIS_CONFIG_PARAMETER 0x0001021b
#define OID_GEN_VLAN_ID 0x0001021c
#define OID_GEN_RECEIVE_HASH 0x0001021f
#define OID_GEN_MINIPORT_RESTART_ATTRIBUTES 0x0001021d
#define OID_GEN_PROMISCUOUS_MODE 0x00010280
#define OID_GEN_LAST_CHANGE 0x00010281
#define OID_GEN_DISCONTINUITY_TIME 0x00010282
#define OID_GEN_OPERATIONAL_STATUS 0x00010283
#define OID_GEN_XMIT_LINK_SPEED 0x00010284
#define OID_GEN_RCV_LINK_SPEED 0x00010285
#define OID_GEN_UNKNOWN_PROTOS 0x00010286
#define OID_GEN_INTERFACE_INFO 0x00010287
#define OID_GEN_ADMIN_STATUS 0x00010288
#define OID_GEN_ALIAS 0x00010289
#define OID_GEN_MEDIA_CONNECT_STATUS_EX 0x0001028a
#define OID_GEN_LINK_SPEED_EX 0x0001028b
#define OID_GEN_MEDIA_DUPLEX_STATE 0x0001028c
#define OID_GEN_IP_OPER_STATUS 0x0001028d
#define OID_WWAN_DRIVER_CAPS 0x0e010100
#define OID_WWAN_DEVICE_CAPS 0x0e010101
#define OID_WWAN_READY_INFO 0x0e010102
#define OID_WWAN_RADIO_STATE 0x0e010103
#define OID_WWAN_PIN 0x0e010104
#define OID_WWAN_PIN_LIST 0x0e010105
#define OID_WWAN_HOME_PROVIDER 0x0e010106
#define OID_WWAN_PREFERRED_PROVIDERS 0x0e010107
#define OID_WWAN_VISIBLE_PROVIDERS 0x0e010108
#define OID_WWAN_REGISTER_STATE 0x0e010109
#define OID_WWAN_PACKET_SERVICE 0x0e01010a
#define OID_WWAN_SIGNAL_STATE 0x0e01010b
#define OID_WWAN_CONNECT 0x0e01010c
#define OID_WWAN_PROVISIONED_CONTEXTS 0x0e01010d
#define OID_WWAN_SERVICE_ACTIVATION 0x0e01010e
#define OID_WWAN_SMS_CONFIGURATION 0x0e01010f
#define OID_WWAN_SMS_READ 0x0e010110
#define OID_WWAN_SMS_SEND 0x0e010111
#define OID_WWAN_SMS_DELETE 0x0e010112
#define OID_WWAN_SMS_STATUS 0x0e010113
#define OID_WWAN_VENDOR_SPECIFIC 0x0e010114
#define OID_GEN_XMIT_OK 0x00020101
#define OID_GEN_RCV_OK 0x00020102
#define OID_GEN_XMIT_ERROR 0x00020103
#define OID_GEN_RCV_ERROR 0x00020104
#define OID_GEN_RCV_NO_BUFFER 0x00020105
#define OID_GEN_STATISTICS 0x00020106
#define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201
#define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202
#define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203
#define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204
#define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205
#define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206
#define OID_GEN_DIRECTED_BYTES_RCV 0x00020207
#define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208
#define OID_GEN_MULTICAST_BYTES_RCV 0x00020209
#define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020a
#define OID_GEN_BROADCAST_BYTES_RCV 0x0002020b
#define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020c
#define OID_GEN_RCV_CRC_ERROR 0x0002020d
#define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020e
#define OID_GEN_GET_TIME_CAPS 0x0002020f
#define OID_GEN_GET_NETCARD_TIME 0x00020210
#define OID_GEN_NETCARD_LOAD 0x00020211
#define OID_GEN_DEVICE_PROFILE 0x00020212
#define OID_GEN_INIT_TIME_MS 0x00020213
#define OID_GEN_RESET_COUNTS 0x00020214
#define OID_GEN_MEDIA_SENSE_COUNTS 0x00020215
#define OID_GEN_FRIENDLY_NAME 0x00020216
#define OID_GEN_NDIS_RESERVED_1 0x00020217
#define OID_GEN_NDIS_RESERVED_2 0x00020218
#define OID_GEN_NDIS_RESERVED_5 0x0001020c
#define OID_GEN_BYTES_RCV 0x00020219
#define OID_GEN_BYTES_XMIT 0x0002021a
#define OID_GEN_RCV_DISCARDS 0x0002021b
#define OID_GEN_XMIT_DISCARDS 0x0002021c
#define OID_GEN_CO_SUPPORTED_LIST OID_GEN_SUPPORTED_LIST
#define OID_GEN_CO_HARDWARE_STATUS OID_GEN_HARDWARE_STATUS
#define OID_GEN_CO_MEDIA_SUPPORTED OID_GEN_MEDIA_SUPPORTED
#define OID_GEN_CO_MEDIA_IN_USE OID_GEN_MEDIA_IN_USE
#define OID_GEN_CO_LINK_SPEED OID_GEN_LINK_SPEED
#define OID_GEN_CO_VENDOR_ID OID_GEN_VENDOR_ID
#define OID_GEN_CO_VENDOR_DESCRIPTION OID_GEN_VENDOR_DESCRIPTION
#define OID_GEN_CO_DRIVER_VERSION OID_GEN_DRIVER_VERSION
#define OID_GEN_CO_PROTOCOL_OPTIONS OID_GEN_PROTOCOL_OPTIONS
#define OID_GEN_CO_MAC_OPTIONS OID_GEN_MAC_OPTIONS
#define OID_GEN_CO_MEDIA_CONNECT_STATUS OID_GEN_MEDIA_CONNECT_STATUS
#define OID_GEN_CO_VENDOR_DRIVER_VERSION OID_GEN_VENDOR_DRIVER_VERSION
#define OID_GEN_CO_SUPPORTED_GUIDS OID_GEN_SUPPORTED_GUIDS
#define OID_GEN_CO_GET_TIME_CAPS OID_GEN_GET_TIME_CAPS
#define OID_GEN_CO_GET_NETCARD_TIME OID_GEN_GET_NETCARD_TIME
#define OID_GEN_CO_MINIMUM_LINK_SPEED 0x00020120
#define OID_GEN_CO_XMIT_PDUS_OK OID_GEN_XMIT_OK
#define OID_GEN_CO_RCV_PDUS_OK OID_GEN_RCV_OK
#define OID_GEN_CO_XMIT_PDUS_ERROR OID_GEN_XMIT_ERROR
#define OID_GEN_CO_RCV_PDUS_ERROR OID_GEN_RCV_ERROR
#define OID_GEN_CO_RCV_PDUS_NO_BUFFER OID_GEN_RCV_NO_BUFFER
#define OID_GEN_CO_RCV_CRC_ERROR OID_GEN_RCV_CRC_ERROR
#define OID_GEN_CO_TRANSMIT_QUEUE_LENGTH OID_GEN_TRANSMIT_QUEUE_LENGTH
#define OID_GEN_CO_BYTES_XMIT OID_GEN_DIRECTED_BYTES_XMIT
#define OID_GEN_CO_BYTES_RCV OID_GEN_DIRECTED_BYTES_RCV
#define OID_GEN_CO_NETCARD_LOAD OID_GEN_NETCARD_LOAD
#define OID_GEN_CO_DEVICE_PROFILE OID_GEN_DEVICE_PROFILE
#define OID_GEN_CO_BYTES_XMIT_OUTSTANDING 0x00020221
#define OID_802_3_PERMANENT_ADDRESS 0x01010101
#define OID_802_3_CURRENT_ADDRESS 0x01010102
#define OID_802_3_MULTICAST_LIST 0x01010103
#define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104
#define OID_802_3_MAC_OPTIONS 0x01010105
#define NDIS_802_3_MAC_OPTION_PRIORITY 0x00000001
#define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101
#define OID_802_3_XMIT_ONE_COLLISION 0x01020102
#define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103
#define OID_802_3_XMIT_DEFERRED 0x01020201
#define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202
#define OID_802_3_RCV_OVERRUN 0x01020203
#define OID_802_3_XMIT_UNDERRUN 0x01020204
#define OID_802_3_XMIT_HEARTBEAT_FAILURE 0x01020205
#define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206
#define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207
#define OID_802_3_ADD_MULTICAST_ADDRESS 0x01010208
#define OID_802_3_DELETE_MULTICAST_ADDRESS 0x01010209
#define OID_802_5_PERMANENT_ADDRESS 0x02010101
#define OID_802_5_CURRENT_ADDRESS 0x02010102
#define OID_802_5_CURRENT_FUNCTIONAL 0x02010103
#define OID_802_5_CURRENT_GROUP 0x02010104
#define OID_802_5_LAST_OPEN_STATUS 0x02010105
#define OID_802_5_CURRENT_RING_STATUS 0x02010106
#define OID_802_5_CURRENT_RING_STATE 0x02010107
#define OID_802_5_LINE_ERRORS 0x02020101
#define OID_802_5_LOST_FRAMES 0x02020102
#define OID_802_5_BURST_ERRORS 0x02020201
#define OID_802_5_AC_ERRORS 0x02020202
#define OID_802_5_ABORT_DELIMETERS 0x02020203
#define OID_802_5_FRAME_COPIED_ERRORS 0x02020204
#define OID_802_5_FREQUENCY_ERRORS 0x02020205
#define OID_802_5_TOKEN_ERRORS 0x02020206
#define OID_802_5_INTERNAL_ERRORS 0x02020207
#define OID_FDDI_LONG_PERMANENT_ADDR 0x03010101
#define OID_FDDI_LONG_CURRENT_ADDR 0x03010102
#define OID_FDDI_LONG_MULTICAST_LIST 0x03010103
#define OID_FDDI_LONG_MAX_LIST_SIZE 0x03010104
#define OID_FDDI_SHORT_PERMANENT_ADDR 0x03010105
#define OID_FDDI_SHORT_CURRENT_ADDR 0x03010106
#define OID_FDDI_SHORT_MULTICAST_LIST 0x03010107
#define OID_FDDI_SHORT_MAX_LIST_SIZE 0x03010108
#define OID_FDDI_ATTACHMENT_TYPE 0x03020101
#define OID_FDDI_UPSTREAM_NODE_LONG 0x03020102
#define OID_FDDI_DOWNSTREAM_NODE_LONG 0x03020103
#define OID_FDDI_FRAME_ERRORS 0x03020104
#define OID_FDDI_FRAMES_LOST 0x03020105
#define OID_FDDI_RING_MGT_STATE 0x03020106
#define OID_FDDI_LCT_FAILURES 0x03020107
#define OID_FDDI_LEM_REJECTS 0x03020108
#define OID_FDDI_LCONNECTION_STATE 0x03020109
#define OID_FDDI_SMT_STATION_ID 0x03030201
#define OID_FDDI_SMT_OP_VERSION_ID 0x03030202
#define OID_FDDI_SMT_HI_VERSION_ID 0x03030203
#define OID_FDDI_SMT_LO_VERSION_ID 0x03030204
#define OID_FDDI_SMT_MANUFACTURER_DATA 0x03030205
#define OID_FDDI_SMT_USER_DATA 0x03030206
#define OID_FDDI_SMT_MIB_VERSION_ID 0x03030207
#define OID_FDDI_SMT_MAC_CT 0x03030208
#define OID_FDDI_SMT_NON_MASTER_CT 0x03030209
#define OID_FDDI_SMT_MASTER_CT 0x0303020a
#define OID_FDDI_SMT_AVAILABLE_PATHS 0x0303020b
#define OID_FDDI_SMT_CONFIG_CAPABILITIES 0x0303020c
#define OID_FDDI_SMT_CONFIG_POLICY 0x0303020d
#define OID_FDDI_SMT_CONNECTION_POLICY 0x0303020e
#define OID_FDDI_SMT_T_NOTIFY 0x0303020f
#define OID_FDDI_SMT_STAT_RPT_POLICY 0x03030210
#define OID_FDDI_SMT_TRACE_MAX_EXPIRATION 0x03030211
#define OID_FDDI_SMT_PORT_INDEXES 0x03030212
#define OID_FDDI_SMT_MAC_INDEXES 0x03030213
#define OID_FDDI_SMT_BYPASS_PRESENT 0x03030214
#define OID_FDDI_SMT_ECM_STATE 0x03030215
#define OID_FDDI_SMT_CF_STATE 0x03030216
#define OID_FDDI_SMT_HOLD_STATE 0x03030217
#define OID_FDDI_SMT_REMOTE_DISCONNECT_FLAG 0x03030218
#define OID_FDDI_SMT_STATION_STATUS 0x03030219
#define OID_FDDI_SMT_PEER_WRAP_FLAG 0x0303021a
#define OID_FDDI_SMT_MSG_TIME_STAMP 0x0303021b
#define OID_FDDI_SMT_TRANSITION_TIME_STAMP 0x0303021c
#define OID_FDDI_SMT_SET_COUNT 0x0303021d
#define OID_FDDI_SMT_LAST_SET_STATION_ID 0x0303021e
#define OID_FDDI_MAC_FRAME_STATUS_FUNCTIONS 0x0303021f
#define OID_FDDI_MAC_BRIDGE_FUNCTIONS 0x03030220
#define OID_FDDI_MAC_T_MAX_CAPABILITY 0x03030221
#define OID_FDDI_MAC_TVX_CAPABILITY 0x03030222
#define OID_FDDI_MAC_AVAILABLE_PATHS 0x03030223
#define OID_FDDI_MAC_CURRENT_PATH 0x03030224
#define OID_FDDI_MAC_UPSTREAM_NBR 0x03030225
#define OID_FDDI_MAC_DOWNSTREAM_NBR 0x03030226
#define OID_FDDI_MAC_OLD_UPSTREAM_NBR 0x03030227
#define OID_FDDI_MAC_OLD_DOWNSTREAM_NBR 0x03030228
#define OID_FDDI_MAC_DUP_ADDRESS_TEST 0x03030229
#define OID_FDDI_MAC_REQUESTED_PATHS 0x0303022a
#define OID_FDDI_MAC_DOWNSTREAM_PORT_TYPE 0x0303022b
#define OID_FDDI_MAC_INDEX 0x0303022c
#define OID_FDDI_MAC_SMT_ADDRESS 0x0303022d
#define OID_FDDI_MAC_LONG_GRP_ADDRESS 0x0303022e
#define OID_FDDI_MAC_SHORT_GRP_ADDRESS 0x0303022f
#define OID_FDDI_MAC_T_REQ 0x03030230
#define OID_FDDI_MAC_T_NEG 0x03030231
#define OID_FDDI_MAC_T_MAX 0x03030232
#define OID_FDDI_MAC_TVX_VALUE 0x03030233
#define OID_FDDI_MAC_T_PRI0 0x03030234
#define OID_FDDI_MAC_T_PRI1 0x03030235
#define OID_FDDI_MAC_T_PRI2 0x03030236
#define OID_FDDI_MAC_T_PRI3 0x03030237
#define OID_FDDI_MAC_T_PRI4 0x03030238
#define OID_FDDI_MAC_T_PRI5 0x03030239
#define OID_FDDI_MAC_T_PRI6 0x0303023a
#define OID_FDDI_MAC_FRAME_CT 0x0303023b
#define OID_FDDI_MAC_COPIED_CT 0x0303023c
#define OID_FDDI_MAC_TRANSMIT_CT 0x0303023d
#define OID_FDDI_MAC_TOKEN_CT 0x0303023e
#define OID_FDDI_MAC_ERROR_CT 0x0303023f
#define OID_FDDI_MAC_LOST_CT 0x03030240
#define OID_FDDI_MAC_TVX_EXPIRED_CT 0x03030241
#define OID_FDDI_MAC_NOT_COPIED_CT 0x03030242
#define OID_FDDI_MAC_LATE_CT 0x03030243
#define OID_FDDI_MAC_RING_OP_CT 0x03030244
#define OID_FDDI_MAC_FRAME_ERROR_THRESHOLD 0x03030245
#define OID_FDDI_MAC_FRAME_ERROR_RATIO 0x03030246
#define OID_FDDI_MAC_NOT_COPIED_THRESHOLD 0x03030247
#define OID_FDDI_MAC_NOT_COPIED_RATIO 0x03030248
#define OID_FDDI_MAC_RMT_STATE 0x03030249
#define OID_FDDI_MAC_DA_FLAG 0x0303024a
#define OID_FDDI_MAC_UNDA_FLAG 0x0303024b
#define OID_FDDI_MAC_FRAME_ERROR_FLAG 0x0303024c
#define OID_FDDI_MAC_NOT_COPIED_FLAG 0x0303024d
#define OID_FDDI_MAC_MA_UNITDATA_AVAILABLE 0x0303024e
#define OID_FDDI_MAC_HARDWARE_PRESENT 0x0303024f
#define OID_FDDI_MAC_MA_UNITDATA_ENABLE 0x03030250
#define OID_FDDI_PATH_INDEX 0x03030251
#define OID_FDDI_PATH_RING_LATENCY 0x03030252
#define OID_FDDI_PATH_TRACE_STATUS 0x03030253
#define OID_FDDI_PATH_SBA_PAYLOAD 0x03030254
#define OID_FDDI_PATH_SBA_OVERHEAD 0x03030255
#define OID_FDDI_PATH_CONFIGURATION 0x03030256
#define OID_FDDI_PATH_T_R_MODE 0x03030257
#define OID_FDDI_PATH_SBA_AVAILABLE 0x03030258
#define OID_FDDI_PATH_TVX_LOWER_BOUND 0x03030259
#define OID_FDDI_PATH_T_MAX_LOWER_BOUND 0x0303025a
#define OID_FDDI_PATH_MAX_T_REQ 0x0303025b
#define OID_FDDI_PORT_MY_TYPE 0x0303025c
#define OID_FDDI_PORT_NEIGHBOR_TYPE 0x0303025d
#define OID_FDDI_PORT_CONNECTION_POLICIES 0x0303025e
#define OID_FDDI_PORT_MAC_INDICATED 0x0303025f
#define OID_FDDI_PORT_CURRENT_PATH 0x03030260
#define OID_FDDI_PORT_REQUESTED_PATHS 0x03030261
#define OID_FDDI_PORT_MAC_PLACEMENT 0x03030262
#define OID_FDDI_PORT_AVAILABLE_PATHS 0x03030263
#define OID_FDDI_PORT_MAC_LOOP_TIME 0x03030264
#define OID_FDDI_PORT_PMD_CLASS 0x03030265
#define OID_FDDI_PORT_CONNECTION_CAPABILITIES 0x03030266
#define OID_FDDI_PORT_INDEX 0x03030267
#define OID_FDDI_PORT_MAINT_LS 0x03030268
#define OID_FDDI_PORT_BS_FLAG 0x03030269
#define OID_FDDI_PORT_PC_LS 0x0303026a
#define OID_FDDI_PORT_EB_ERROR_CT 0x0303026b
#define OID_FDDI_PORT_LCT_FAIL_CT 0x0303026c
#define OID_FDDI_PORT_LER_ESTIMATE 0x0303026d
#define OID_FDDI_PORT_LEM_REJECT_CT 0x0303026e
#define OID_FDDI_PORT_LEM_CT 0x0303026f
#define OID_FDDI_PORT_LER_CUTOFF 0x03030270
#define OID_FDDI_PORT_LER_ALARM 0x03030271
#define OID_FDDI_PORT_CONNNECT_STATE 0x03030272
#define OID_FDDI_PORT_PCM_STATE 0x03030273
#define OID_FDDI_PORT_PC_WITHHOLD 0x03030274
#define OID_FDDI_PORT_LER_FLAG 0x03030275
#define OID_FDDI_PORT_HARDWARE_PRESENT 0x03030276
#define OID_FDDI_SMT_STATION_ACTION 0x03030277
#define OID_FDDI_PORT_ACTION 0x03030278
#define OID_FDDI_IF_DESCR 0x03030279
#define OID_FDDI_IF_TYPE 0x0303027a
#define OID_FDDI_IF_MTU 0x0303027b
#define OID_FDDI_IF_SPEED 0x0303027c
#define OID_FDDI_IF_PHYS_ADDRESS 0x0303027d
#define OID_FDDI_IF_ADMIN_STATUS 0x0303027e
#define OID_FDDI_IF_OPER_STATUS 0x0303027f
#define OID_FDDI_IF_LAST_CHANGE 0x03030280
#define OID_FDDI_IF_IN_OCTETS 0x03030281
#define OID_FDDI_IF_IN_UCAST_PKTS 0x03030282
#define OID_FDDI_IF_IN_NUCAST_PKTS 0x03030283
#define OID_FDDI_IF_IN_DISCARDS 0x03030284
#define OID_FDDI_IF_IN_ERRORS 0x03030285
#define OID_FDDI_IF_IN_UNKNOWN_PROTOS 0x03030286
#define OID_FDDI_IF_OUT_OCTETS 0x03030287
#define OID_FDDI_IF_OUT_UCAST_PKTS 0x03030288
#define OID_FDDI_IF_OUT_NUCAST_PKTS 0x03030289
#define OID_FDDI_IF_OUT_DISCARDS 0x0303028a
#define OID_FDDI_IF_OUT_ERRORS 0x0303028b
#define OID_FDDI_IF_OUT_QLEN 0x0303028c
#define OID_FDDI_IF_SPECIFIC 0x0303028d
#define OID_WAN_PERMANENT_ADDRESS 0x04010101
#define OID_WAN_CURRENT_ADDRESS 0x04010102
#define OID_WAN_QUALITY_OF_SERVICE 0x04010103
#define OID_WAN_PROTOCOL_TYPE 0x04010104
#define OID_WAN_MEDIUM_SUBTYPE 0x04010105
#define OID_WAN_HEADER_FORMAT 0x04010106
#define OID_WAN_GET_INFO 0x04010107
#define OID_WAN_SET_LINK_INFO 0x04010108
#define OID_WAN_GET_LINK_INFO 0x04010109
#define OID_WAN_LINE_COUNT 0x0401010a
#define OID_WAN_PROTOCOL_CAPS 0x0401010b
#define OID_WAN_GET_BRIDGE_INFO 0x0401020a
#define OID_WAN_SET_BRIDGE_INFO 0x0401020b
#define OID_WAN_GET_COMP_INFO 0x0401020c
#define OID_WAN_SET_COMP_INFO 0x0401020d
#define OID_WAN_GET_STATS_INFO 0x0401020e
#define OID_WAN_CO_GET_INFO 0x04010180
#define OID_WAN_CO_SET_LINK_INFO 0x04010181
#define OID_WAN_CO_GET_LINK_INFO 0x04010182
#define OID_WAN_CO_GET_COMP_INFO 0x04010280
#define OID_WAN_CO_SET_COMP_INFO 0x04010281
#define OID_WAN_CO_GET_STATS_INFO 0x04010282
#define OID_LTALK_CURRENT_NODE_ID 0x05010102
#define OID_LTALK_IN_BROADCASTS 0x05020101
#define OID_LTALK_IN_LENGTH_ERRORS 0x05020102
#define OID_LTALK_OUT_NO_HANDLERS 0x05020201
#define OID_LTALK_COLLISIONS 0x05020202
#define OID_LTALK_DEFERS 0x05020203
#define OID_LTALK_NO_DATA_ERRORS 0x05020204
#define OID_LTALK_RANDOM_CTS_ERRORS 0x05020205
#define OID_LTALK_FCS_ERRORS 0x05020206
#define OID_ARCNET_PERMANENT_ADDRESS 0x06010101
#define OID_ARCNET_CURRENT_ADDRESS 0x06010102
#define OID_ARCNET_RECONFIGURATIONS 0x06020201
#define OID_TAPI_ACCEPT 0x07030101
#define OID_TAPI_ANSWER 0x07030102
#define OID_TAPI_CLOSE 0x07030103
#define OID_TAPI_CLOSE_CALL 0x07030104
#define OID_TAPI_CONDITIONAL_MEDIA_DETECTION 0x07030105
#define OID_TAPI_CONFIG_DIALOG 0x07030106
#define OID_TAPI_DEV_SPECIFIC 0x07030107
#define OID_TAPI_DIAL 0x07030108
#define OID_TAPI_DROP 0x07030109
#define OID_TAPI_GET_ADDRESS_CAPS 0x0703010a
#define OID_TAPI_GET_ADDRESS_ID 0x0703010b
#define OID_TAPI_GET_ADDRESS_STATUS 0x0703010c
#define OID_TAPI_GET_CALL_ADDRESS_ID 0x0703010d
#define OID_TAPI_GET_CALL_INFO 0x0703010e
#define OID_TAPI_GET_CALL_STATUS 0x0703010f
#define OID_TAPI_GET_DEV_CAPS 0x07030110
#define OID_TAPI_GET_DEV_CONFIG 0x07030111
#define OID_TAPI_GET_EXTENSION_ID 0x07030112
#define OID_TAPI_GET_ID 0x07030113
#define OID_TAPI_GET_LINE_DEV_STATUS 0x07030114
#define OID_TAPI_MAKE_CALL 0x07030115
#define OID_TAPI_NEGOTIATE_EXT_VERSION 0x07030116
#define OID_TAPI_OPEN 0x07030117
#define OID_TAPI_PROVIDER_INITIALIZE 0x07030118
#define OID_TAPI_PROVIDER_SHUTDOWN 0x07030119
#define OID_TAPI_SECURE_CALL 0x0703011a
#define OID_TAPI_SELECT_EXT_VERSION 0x0703011b
#define OID_TAPI_SEND_USER_USER_INFO 0x0703011c
#define OID_TAPI_SET_APP_SPECIFIC 0x0703011d
#define OID_TAPI_SET_CALL_PARAMS 0x0703011e
#define OID_TAPI_SET_DEFAULT_MEDIA_DETECTION 0x0703011f
#define OID_TAPI_SET_DEV_CONFIG 0x07030120
#define OID_TAPI_SET_MEDIA_MODE 0x07030121
#define OID_TAPI_SET_STATUS_MESSAGES 0x07030122
#define OID_TAPI_GATHER_DIGITS 0x07030123
#define OID_TAPI_MONITOR_DIGITS 0x07030124
#define OID_ATM_SUPPORTED_VC_RATES 0x08010101
#define OID_ATM_SUPPORTED_SERVICE_CATEGORY 0x08010102
#define OID_ATM_SUPPORTED_AAL_TYPES 0x08010103
#define OID_ATM_HW_CURRENT_ADDRESS 0x08010104
#define OID_ATM_MAX_ACTIVE_VCS 0x08010105
#define OID_ATM_MAX_ACTIVE_VCI_BITS 0x08010106
#define OID_ATM_MAX_ACTIVE_VPI_BITS 0x08010107
#define OID_ATM_MAX_AAL0_PACKET_SIZE 0x08010108
#define OID_ATM_MAX_AAL1_PACKET_SIZE 0x08010109
#define OID_ATM_MAX_AAL34_PACKET_SIZE 0x0801010a
#define OID_ATM_MAX_AAL5_PACKET_SIZE 0x0801010b
#define OID_ATM_SIGNALING_VPIVCI 0x08010201
#define OID_ATM_ASSIGNED_VPI 0x08010202
#define OID_ATM_ACQUIRE_ACCESS_NET_RESOURCES 0x08010203
#define OID_ATM_RELEASE_ACCESS_NET_RESOURCES 0x08010204
#define OID_ATM_ILMI_VPIVCI 0x08010205
#define OID_ATM_DIGITAL_BROADCAST_VPIVCI 0x08010206
#define OID_ATM_GET_NEAREST_FLOW 0x08010207
#define OID_ATM_ALIGNMENT_REQUIRED 0x08010208
#define OID_ATM_LECS_ADDRESS 0x08010209
#define OID_ATM_SERVICE_ADDRESS 0x0801020a
#define OID_ATM_CALL_PROCEEDING 0x0801020b
#define OID_ATM_CALL_ALERTING 0x0801020c
#define OID_ATM_PARTY_ALERTING 0x0801020d
#define OID_ATM_CALL_NOTIFY 0x0801020e
#define OID_ATM_MY_IP_NM_ADDRESS 0x0801020f
#define OID_ATM_RCV_CELLS_OK 0x08020101
#define OID_ATM_XMIT_CELLS_OK 0x08020102
#define OID_ATM_RCV_CELLS_DROPPED 0x08020103
#define OID_ATM_RCV_INVALID_VPI_VCI 0x08020201
#define OID_ATM_CELLS_HEC_ERROR 0x08020202
#define OID_ATM_RCV_REASSEMBLY_ERROR 0x08020203
#define OID_802_11_BSSID 0x0d010101
#define OID_802_11_SSID 0x0d010102
#define OID_802_11_NETWORK_TYPES_SUPPORTED 0x0d010203
#define OID_802_11_NETWORK_TYPE_IN_USE 0x0d010204
#define OID_802_11_TX_POWER_LEVEL 0x0d010205
#define OID_802_11_RSSI 0x0d010206
#define OID_802_11_RSSI_TRIGGER 0x0d010207
#define OID_802_11_INFRASTRUCTURE_MODE 0x0d010108
#define OID_802_11_FRAGMENTATION_THRESHOLD 0x0d010209
#define OID_802_11_RTS_THRESHOLD 0x0d01020a
#define OID_802_11_NUMBER_OF_ANTENNAS 0x0d01020b
#define OID_802_11_RX_ANTENNA_SELECTED 0x0d01020c
#define OID_802_11_TX_ANTENNA_SELECTED 0x0d01020d
#define OID_802_11_SUPPORTED_RATES 0x0d01020e
#define OID_802_11_DESIRED_RATES 0x0d010210
#define OID_802_11_CONFIGURATION 0x0d010211
#define OID_802_11_STATISTICS 0x0d020212
#define OID_802_11_ADD_WEP 0x0d010113
#define OID_802_11_REMOVE_WEP 0x0d010114
#define OID_802_11_DISASSOCIATE 0x0d010115
#define OID_802_11_POWER_MODE 0x0d010216
#define OID_802_11_BSSID_LIST 0x0d010217
#define OID_802_11_AUTHENTICATION_MODE 0x0d010118
#define OID_802_11_PRIVACY_FILTER 0x0d010119
#define OID_802_11_BSSID_LIST_SCAN 0x0d01011a
#define OID_802_11_WEP_STATUS 0x0d01011b
#define OID_802_11_ENCRYPTION_STATUS OID_802_11_WEP_STATUS
#define OID_802_11_RELOAD_DEFAULTS 0x0d01011c
#define OID_802_11_ADD_KEY 0x0d01011d
#define OID_802_11_REMOVE_KEY 0x0d01011e
#define OID_802_11_ASSOCIATION_INFORMATION 0x0d01011f
#define OID_802_11_TEST 0x0d010120
#define OID_802_11_MEDIA_STREAM_MODE 0x0d010121
#define OID_802_11_CAPABILITY 0x0d010122
#define OID_802_11_PMKID 0x0d010123
#define OID_802_11_NON_BCAST_SSID_LIST 0x0d010124
#define OID_802_11_RADIO_STATUS 0x0d010125
#define NDIS_ETH_TYPE_IPV4 0x0800
#define NDIS_ETH_TYPE_ARP 0x0806
#define NDIS_ETH_TYPE_IPV6 0x86dd
#define NDIS_ETH_TYPE_802_1X 0x888e
#define NDIS_ETH_TYPE_802_1Q 0x8100
#define NDIS_ETH_TYPE_SLOW_PROTOCOL 0x8809
#define NDIS_802_11_LENGTH_SSID 32
#define NDIS_802_11_LENGTH_RATES 8
#define NDIS_802_11_LENGTH_RATES_EX 16
#define NDIS_802_11_AUTH_REQUEST_REAUTH 0x01
#define NDIS_802_11_AUTH_REQUEST_KEYUPDATE 0x02
#define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR 0x06
#define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR 0x0e
#define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS 0x0f
#define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x01
#define NDIS_802_11_AI_REQFI_CAPABILITIES 1
#define NDIS_802_11_AI_REQFI_LISTENINTERVAL 2
#define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS 4
#define NDIS_802_11_AI_RESFI_CAPABILITIES 1
#define NDIS_802_11_AI_RESFI_STATUSCODE 2
#define NDIS_802_11_AI_RESFI_ASSOCIATIONID 4
  typedef enum _NDIS_802_11_STATUS_TYPE {
    Ndis802_11StatusType_Authentication,
    Ndis802_11StatusType_MediaStreamMode,
    Ndis802_11StatusType_PMKID_CandidateList,
    Ndis802_11StatusTypeMax
  } NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE;
  typedef UCHAR NDIS_802_11_MAC_ADDRESS[6];
  typedef struct _NDIS_802_11_STATUS_INDICATION {
    NDIS_802_11_STATUS_TYPE StatusType;
  } NDIS_802_11_STATUS_INDICATION, *PNDIS_802_11_STATUS_INDICATION;
  typedef struct _NDIS_802_11_AUTHENTICATION_REQUEST {
    ULONG Length;
    NDIS_802_11_MAC_ADDRESS Bssid;
    ULONG Flags;
  } NDIS_802_11_AUTHENTICATION_REQUEST, *PNDIS_802_11_AUTHENTICATION_REQUEST;
  typedef struct _PMKID_CANDIDATE {
    NDIS_802_11_MAC_ADDRESS BSSID;
    ULONG Flags;
  } PMKID_CANDIDATE, *PPMKID_CANDIDATE;
  typedef struct _NDIS_802_11_PMKID_CANDIDATE_LIST {
    ULONG Version;
    ULONG NumCandidates;
    PMKID_CANDIDATE CandidateList[1];
  } NDIS_802_11_PMKID_CANDIDATE_LIST, *PNDIS_802_11_PMKID_CANDIDATE_LIST;
  typedef enum _NDIS_802_11_NETWORK_TYPE {
    Ndis802_11FH,
    Ndis802_11DS,
    Ndis802_11OFDM5,
    Ndis802_11OFDM24,
    Ndis802_11Automode,
    Ndis802_11NetworkTypeMax
  } NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE;
  typedef struct _NDIS_802_11_NETWORK_TYPE_LIST {
    ULONG NumberOfItems;
    NDIS_802_11_NETWORK_TYPE NetworkType [1];
  } NDIS_802_11_NETWORK_TYPE_LIST, *PNDIS_802_11_NETWORK_TYPE_LIST;
  typedef enum _NDIS_802_11_POWER_MODE {
    Ndis802_11PowerModeCAM,
    Ndis802_11PowerModeMAX_PSP,
    Ndis802_11PowerModeFast_PSP,
    Ndis802_11PowerModeMax
  } NDIS_802_11_POWER_MODE, *PNDIS_802_11_POWER_MODE;
  typedef ULONG NDIS_802_11_TX_POWER_LEVEL;
  typedef LONG NDIS_802_11_RSSI;
  typedef struct _NDIS_802_11_CONFIGURATION_FH {
    ULONG Length;
    ULONG HopPattern;
    ULONG HopSet;
    ULONG DwellTime;
  } NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH;
  typedef struct _NDIS_802_11_CONFIGURATION {
    ULONG Length;
    ULONG BeaconPeriod;
    ULONG ATIMWindow;
    ULONG DSConfig;
    NDIS_802_11_CONFIGURATION_FH FHConfig;
  } NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION;
  typedef struct _NDIS_802_11_STATISTICS {
    ULONG Length;
    LARGE_INTEGER TransmittedFragmentCount;
    LARGE_INTEGER MulticastTransmittedFrameCount;
    LARGE_INTEGER FailedCount;
    LARGE_INTEGER RetryCount;
    LARGE_INTEGER MultipleRetryCount;
    LARGE_INTEGER RTSSuccessCount;
    LARGE_INTEGER RTSFailureCount;
    LARGE_INTEGER ACKFailureCount;
    LARGE_INTEGER FrameDuplicateCount;
    LARGE_INTEGER ReceivedFragmentCount;
    LARGE_INTEGER MulticastReceivedFrameCount;
    LARGE_INTEGER FCSErrorCount;
    LARGE_INTEGER TKIPLocalMICFailures;
    LARGE_INTEGER TKIPICVErrorCount;
    LARGE_INTEGER TKIPCounterMeasuresInvoked;
    LARGE_INTEGER TKIPReplays;
    LARGE_INTEGER CCMPFormatErrors;
    LARGE_INTEGER CCMPReplays;
    LARGE_INTEGER CCMPDecryptErrors;
    LARGE_INTEGER FourWayHandshakeFailures;
    LARGE_INTEGER WEPUndecryptableCount;
    LARGE_INTEGER WEPICVErrorCount;
    LARGE_INTEGER DecryptSuccessCount;
    LARGE_INTEGER DecryptFailureCount;
  } NDIS_802_11_STATISTICS, *PNDIS_802_11_STATISTICS;
  typedef ULONG NDIS_802_11_KEY_INDEX;
  typedef ULONGLONG NDIS_802_11_KEY_RSC;
  typedef struct _NDIS_802_11_KEY {
    ULONG Length;
    ULONG KeyIndex;
    ULONG KeyLength;
    NDIS_802_11_MAC_ADDRESS BSSID;
    NDIS_802_11_KEY_RSC KeyRSC;
    UCHAR KeyMaterial[1];
  } NDIS_802_11_KEY, *PNDIS_802_11_KEY;
  typedef struct _NDIS_802_11_REMOVE_KEY {
    ULONG Length;
    ULONG KeyIndex;
    NDIS_802_11_MAC_ADDRESS BSSID;
  } NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY;
  typedef struct _NDIS_802_11_WEP {
    ULONG Length;
    ULONG KeyIndex;
    ULONG KeyLength;
    UCHAR KeyMaterial[1];
  } NDIS_802_11_WEP, *PNDIS_802_11_WEP;
  typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE {
    Ndis802_11IBSS,
    Ndis802_11Infrastructure,
    Ndis802_11AutoUnknown,
    Ndis802_11InfrastructureMax
  } NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE;
  typedef enum _NDIS_802_11_AUTHENTICATION_MODE {
    Ndis802_11AuthModeOpen,
    Ndis802_11AuthModeShared,
    Ndis802_11AuthModeAutoSwitch,
    Ndis802_11AuthModeWPA,
    Ndis802_11AuthModeWPAPSK,
    Ndis802_11AuthModeWPANone,
    Ndis802_11AuthModeWPA2,
    Ndis802_11AuthModeWPA2PSK,
    Ndis802_11AuthModeMax
  } NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE;
  typedef UCHAR NDIS_802_11_RATES[8];
  typedef UCHAR NDIS_802_11_RATES_EX[16];
  typedef struct _NDIS_802_11_SSID {
    ULONG SsidLength;
    UCHAR Ssid[32];
  } NDIS_802_11_SSID, *PNDIS_802_11_SSID;
  typedef struct _NDIS_WLAN_BSSID {
    ULONG Length;
    NDIS_802_11_MAC_ADDRESS MacAddress;
    UCHAR Reserved[2];
    NDIS_802_11_SSID Ssid;
    ULONG Privacy;
    NDIS_802_11_RSSI Rssi;
    NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
    NDIS_802_11_CONFIGURATION Configuration;
    NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
    NDIS_802_11_RATES SupportedRates;
  } NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID;
  typedef struct _NDIS_802_11_BSSID_LIST {
    ULONG NumberOfItems;
    NDIS_WLAN_BSSID Bssid[1];
  } NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST;
  typedef struct _NDIS_WLAN_BSSID_EX {
    ULONG Length;
    NDIS_802_11_MAC_ADDRESS MacAddress;
    UCHAR Reserved[2];
    NDIS_802_11_SSID Ssid;
    ULONG Privacy;
    NDIS_802_11_RSSI Rssi;
    NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
    NDIS_802_11_CONFIGURATION Configuration;
    NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
    NDIS_802_11_RATES_EX SupportedRates;
    ULONG IELength;
    UCHAR IEs[1];
  } NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX;
  typedef struct _NDIS_802_11_BSSID_LIST_EX {
    ULONG NumberOfItems;
    NDIS_WLAN_BSSID_EX Bssid[1];
  } NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX;
  typedef struct _NDIS_802_11_FIXED_IEs {
    UCHAR Timestamp[8];
    USHORT BeaconInterval;
    USHORT Capabilities;
  } NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs;
  typedef struct _NDIS_802_11_VARIABLE_IEs {
    UCHAR ElementID;
    UCHAR Length;
    UCHAR data[1];
  } NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs;
  typedef ULONG NDIS_802_11_FRAGMENTATION_THRESHOLD;
  typedef ULONG NDIS_802_11_RTS_THRESHOLD;
  typedef ULONG NDIS_802_11_ANTENNA;
  typedef enum _NDIS_802_11_PRIVACY_FILTER {
    Ndis802_11PrivFilterAcceptAll,
    Ndis802_11PrivFilter8021xWEP
  } NDIS_802_11_PRIVACY_FILTER, *PNDIS_802_11_PRIVACY_FILTER;
  typedef enum _NDIS_802_11_WEP_STATUS {
    Ndis802_11WEPEnabled,
    Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
    Ndis802_11WEPDisabled,
    Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
    Ndis802_11WEPKeyAbsent,
    Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
    Ndis802_11WEPNotSupported,
    Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
    Ndis802_11Encryption2Enabled,
    Ndis802_11Encryption2KeyAbsent,
    Ndis802_11Encryption3Enabled,
    Ndis802_11Encryption3KeyAbsent
  } NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS, NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS;
  typedef enum _NDIS_802_11_RELOAD_DEFAULTS {
    Ndis802_11ReloadWEPKeys
  } NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS;
  typedef struct _NDIS_802_11_AI_REQFI {
    USHORT Capabilities;
    USHORT ListenInterval;
    NDIS_802_11_MAC_ADDRESS CurrentAPAddress;
  } NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI;
  typedef struct _NDIS_802_11_AI_RESFI {
    USHORT Capabilities;
    USHORT StatusCode;
    USHORT AssociationId;
  } NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI;
  typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION {
    ULONG Length;
    USHORT AvailableRequestFixedIEs;
    NDIS_802_11_AI_REQFI RequestFixedIEs;
    ULONG RequestIELength;
    ULONG OffsetRequestIEs;
    USHORT AvailableResponseFixedIEs;
    NDIS_802_11_AI_RESFI ResponseFixedIEs;
    ULONG ResponseIELength;
    ULONG OffsetResponseIEs;
  } NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
  typedef struct _NDIS_802_11_AUTHENTICATION_EVENT {
    NDIS_802_11_STATUS_INDICATION Status;
    NDIS_802_11_AUTHENTICATION_REQUEST Request[1];
  } NDIS_802_11_AUTHENTICATION_EVENT, *PNDIS_802_11_AUTHENTICATION_EVENT;
  typedef struct _NDIS_802_11_TEST {
    ULONG Length;
    ULONG Type;
    __extension__ union {
      NDIS_802_11_AUTHENTICATION_EVENT AuthenticationEvent;
      NDIS_802_11_RSSI RssiTrigger;
    };
  } NDIS_802_11_TEST, *PNDIS_802_11_TEST;
  typedef enum _NDIS_802_11_MEDIA_STREAM_MODE {
    Ndis802_11MediaStreamOff,
    Ndis802_11MediaStreamOn,
  } NDIS_802_11_MEDIA_STREAM_MODE, *PNDIS_802_11_MEDIA_STREAM_MODE;
  typedef UCHAR NDIS_802_11_PMKID_VALUE[16];
  typedef struct _BSSID_INFO {
    NDIS_802_11_MAC_ADDRESS BSSID;
    NDIS_802_11_PMKID_VALUE PMKID;
  } BSSID_INFO, *PBSSID_INFO;
  typedef struct _NDIS_802_11_PMKID {
    ULONG Length;
    ULONG BSSIDInfoCount;
    BSSID_INFO BSSIDInfo[1];
  } NDIS_802_11_PMKID, *PNDIS_802_11_PMKID;
  typedef struct _NDIS_802_11_AUTHENTICATION_ENCRYPTION {
    NDIS_802_11_AUTHENTICATION_MODE AuthModeSupported;
    NDIS_802_11_ENCRYPTION_STATUS EncryptStatusSupported;
  } NDIS_802_11_AUTHENTICATION_ENCRYPTION, *PNDIS_802_11_AUTHENTICATION_ENCRYPTION;
  typedef struct _NDIS_802_11_CAPABILITY {
    ULONG Length;
    ULONG Version;
    ULONG NoOfPMKIDs;
    ULONG NoOfAuthEncryptPairsSupported;
    NDIS_802_11_AUTHENTICATION_ENCRYPTION AuthenticationEncryptionSupported[1];
  } NDIS_802_11_CAPABILITY, *PNDIS_802_11_CAPABILITY;
  typedef struct _NDIS_802_11_NON_BCAST_SSID_LIST {
    ULONG NumberOfItems;
    NDIS_802_11_SSID Non_Bcast_Ssid[1];
  } NDIS_802_11_NON_BCAST_SSID_LIST, *PNDIS_802_11_NON_BCAST_SSID_LIST;
  typedef enum _NDIS_802_11_RADIO_STATUS {
    Ndis802_11RadioStatusOn,
    Ndis802_11RadioStatusHardwareOff,
    Ndis802_11RadioStatusSoftwareOff,
    Ndis802_11RadioStatusHardwareSoftwareOff,
    Ndis802_11RadioStatusMax
  } NDIS_802_11_RADIO_STATUS, *PNDIS_802_11_RADIO_STATUS;
#define OID_IRDA_RECEIVING 0x0a010100
#define OID_IRDA_TURNAROUND_TIME 0x0a010101
#define OID_IRDA_SUPPORTED_SPEEDS 0x0a010102
#define OID_IRDA_LINK_SPEED 0x0a010103
#define OID_IRDA_MEDIA_BUSY 0x0a010104
#define OID_IRDA_EXTRA_RCV_BOFS 0x0a010200
#define OID_IRDA_RATE_SNIFF 0x0a010201
#define OID_IRDA_UNICAST_LIST 0x0a010202
#define OID_IRDA_MAX_UNICAST_LIST_SIZE 0x0a010203
#define OID_IRDA_MAX_RECEIVE_WINDOW_SIZE 0x0a010204
#define OID_IRDA_MAX_SEND_WINDOW_SIZE 0x0a010205
#define OID_IRDA_RESERVED1 0x0a01020a
#define OID_IRDA_RESERVED2 0x0a01020f
#define OID_1394_LOCAL_NODE_INFO 0x0c010101
#define OID_1394_VC_INFO 0x0c010102
#define OID_CO_ADD_PVC 0xfe000001
#define OID_CO_DELETE_PVC 0xfe000002
#define OID_CO_GET_CALL_INFORMATION 0xfe000003
#define OID_CO_ADD_ADDRESS 0xfe000004
#define OID_CO_DELETE_ADDRESS 0xfe000005
#define OID_CO_GET_ADDRESSES 0xfe000006
#define OID_CO_ADDRESS_CHANGE 0xfe000007
#define OID_CO_SIGNALING_ENABLED 0xfe000008
#define OID_CO_SIGNALING_DISABLED 0xfe000009
#define OID_CO_AF_CLOSE 0xfe00000a
#define OID_CO_TAPI_CM_CAPS 0xfe001001
#define OID_CO_TAPI_LINE_CAPS 0xfe001002
#define OID_CO_TAPI_ADDRESS_CAPS 0xfe001003
#define OID_CO_TAPI_TRANSLATE_TAPI_CALLPARAMS 0xfe001004
#define OID_CO_TAPI_TRANSLATE_NDIS_CALLPARAMS 0xfe001005
#define OID_CO_TAPI_TRANSLATE_TAPI_SAP 0xfe001006
#define OID_CO_TAPI_GET_CALL_DIAGNOSTICS 0xfe001007
#define OID_CO_TAPI_REPORT_DIGITS 0xfe001008
#define OID_CO_TAPI_DONT_REPORT_DIGITS 0xfe001009
#define OID_PNP_CAPABILITIES 0xfd010100
#define OID_PNP_SET_POWER 0xfd010101
#define OID_PNP_QUERY_POWER 0xfd010102
#define OID_PNP_ADD_WAKE_UP_PATTERN 0xfd010103
#define OID_PNP_REMOVE_WAKE_UP_PATTERN 0xfd010104
#define OID_PNP_WAKE_UP_PATTERN_LIST 0xfd010105
#define OID_PNP_ENABLE_WAKE_UP 0xfd010106
#define OID_PNP_WAKE_UP_OK 0xfd020200
#define OID_PNP_WAKE_UP_ERROR 0xfd020201
#define NDIS_PNP_WAKE_UP_MAGIC_PACKET 0x00000001
#define NDIS_PNP_WAKE_UP_PATTERN_MATCH 0x00000002
#define NDIS_PNP_WAKE_UP_LINK_CHANGE 0x00000004
#define OID_TCP_TASK_OFFLOAD 0xfc010201
#define OID_TCP_TASK_IPSEC_ADD_SA 0xfc010202
#define OID_TCP_TASK_IPSEC_DELETE_SA 0xfc010203
#define OID_TCP_SAN_SUPPORT 0xfc010204
#define OID_TCP_TASK_IPSEC_ADD_UDPESP_SA 0xfc010205
#define OID_TCP_TASK_IPSEC_DELETE_UDPESP_SA 0xfc010206
#define OID_TCP4_OFFLOAD_STATS 0xfc010207
#define OID_TCP6_OFFLOAD_STATS 0xfc010208
#define OID_IP4_OFFLOAD_STATS 0xfc010209
#define OID_IP6_OFFLOAD_STATS 0xfc01020a
#define OID_TCP_OFFLOAD_CURRENT_CONFIG 0xfc01020b
#define OID_TCP_OFFLOAD_PARAMETERS 0xfc01020c
#define OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES 0xfc01020d
#define OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG 0xfc01020e
#define OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES 0xfc01020f
#define OID_OFFLOAD_ENCAPSULATION 0x0101010a
#define OID_FFP_SUPPORT 0xfc010210
#define OID_FFP_FLUSH 0xfc010211
#define OID_FFP_CONTROL 0xfc010212
#define OID_FFP_PARAMS 0xfc010213
#define OID_FFP_DATA 0xfc010214
#define OID_FFP_DRIVER_STATS 0xfc020210
#define OID_FFP_ADAPTER_STATS 0xfc020211
#define OID_TCP_CONNECTION_OFFLOAD_PARAMETERS 0xfc030201
#define OID_QOS_RESERVED1 0xfb010100
#define OID_QOS_RESERVED2 0xfb010101
#define OID_QOS_RESERVED3 0xfb010102
#define OID_QOS_RESERVED4 0xfb010103
#define OID_QOS_RESERVED5 0xfb010104
#define OID_QOS_RESERVED6 0xfb010105
#define OID_QOS_RESERVED7 0xfb010106
#define OID_QOS_RESERVED8 0xfb010107
#define OID_QOS_RESERVED9 0xfb010108
#define OID_QOS_RESERVED10 0xfb010109
#define OID_QOS_RESERVED11 0xfb01010a
#define OID_QOS_RESERVED12 0xfb01010b
#define OID_QOS_RESERVED13 0xfb01010c
#define OID_QOS_RESERVED14 0xfb01010d
#define OID_QOS_RESERVED15 0xfb01010e
#define OID_QOS_RESERVED16 0xfb01010f
#define OID_QOS_RESERVED17 0xfb010110
#define OID_QOS_RESERVED18 0xfb010111
#define OID_QOS_RESERVED19 0xfb010112
#define OID_QOS_RESERVED20 0xfb010113
#define OFFLOAD_MAX_SAS 3
#define OFFLOAD_INBOUND_SA 0x0001
#define OFFLOAD_OUTBOUND_SA 0x0002
  typedef struct NDIS_CO_DEVICE_PROFILE {
    NDIS_VAR_DATA_DESC DeviceDescription;
    NDIS_VAR_DATA_DESC DevSpecificInfo;
    ULONG ulTAPISupplementaryPassThru;
    ULONG ulAddressModes;
    ULONG ulNumAddresses;
    ULONG ulBearerModes;
    ULONG ulMaxTxRate;
    ULONG ulMinTxRate;
    ULONG ulMaxRxRate;
    ULONG ulMinRxRate;
    ULONG ulMediaModes;
    ULONG ulGenerateToneModes;
    ULONG ulGenerateToneMaxNumFreq;
    ULONG ulGenerateDigitModes;
    ULONG ulMonitorToneMaxNumFreq;
    ULONG ulMonitorToneMaxNumEntries;
    ULONG ulMonitorDigitModes;
    ULONG ulGatherDigitsMinTimeout;
    ULONG ulGatherDigitsMaxTimeout;
    ULONG ulDevCapFlags;
    ULONG ulMaxNumActiveCalls;
    ULONG ulAnswerMode;
    ULONG ulUUIAcceptSize;
    ULONG ulUUIAnswerSize;
    ULONG ulUUIMakeCallSize;
    ULONG ulUUIDropSize;
    ULONG ulUUISendUserUserInfoSize;
    ULONG ulUUICallInfoSize;
  } NDIS_CO_DEVICE_PROFILE, *PNDIS_CO_DEVICE_PROFILE;
  typedef ULONG SPI_TYPE;
  typedef enum _OFFLOAD_OPERATION_E {
    AUTHENTICATE = 1,
    ENCRYPT
  } OFFLOAD_OPERATION_E;
  typedef struct _OFFLOAD_ALGO_INFO {
    ULONG algoIdentifier;
    ULONG algoKeylen;
    ULONG algoRounds;
  } OFFLOAD_ALGO_INFO, *POFFLOAD_ALGO_INFO;
  typedef enum _OFFLOAD_CONF_ALGO {
    OFFLOAD_IPSEC_CONF_NONE,
    OFFLOAD_IPSEC_CONF_DES,
    OFFLOAD_IPSEC_CONF_RESERVED,
    OFFLOAD_IPSEC_CONF_3_DES,
    OFFLOAD_IPSEC_CONF_MAX
  } OFFLOAD_CONF_ALGO;
  typedef enum _OFFLOAD_INTEGRITY_ALGO {
    OFFLOAD_IPSEC_INTEGRITY_NONE,
    OFFLOAD_IPSEC_INTEGRITY_MD5,
    OFFLOAD_IPSEC_INTEGRITY_SHA,
    OFFLOAD_IPSEC_INTEGRITY_MAX
  } OFFLOAD_INTEGRITY_ALGO;
  typedef struct _OFFLOAD_SECURITY_ASSOCIATION {
    OFFLOAD_OPERATION_E Operation;
    SPI_TYPE SPI;
    OFFLOAD_ALGO_INFO IntegrityAlgo;
    OFFLOAD_ALGO_INFO ConfAlgo;
    OFFLOAD_ALGO_INFO Reserved;
  } OFFLOAD_SECURITY_ASSOCIATION, *POFFLOAD_SECURITY_ASSOCIATION;
  typedef struct _OFFLOAD_IPSEC_ADD_SA {
    IPAddr SrcAddr;
    IPMask SrcMask;
    IPAddr DestAddr;
    IPMask DestMask;
    ULONG Protocol;
    USHORT SrcPort;
    USHORT DestPort;
    IPAddr SrcTunnelAddr;
    IPAddr DestTunnelAddr;
    USHORT Flags;
    SHORT NumSAs;
    OFFLOAD_SECURITY_ASSOCIATION SecAssoc[3];
    HANDLE OffloadHandle;
    ULONG KeyLen;
    UCHAR KeyMat[1];
  } OFFLOAD_IPSEC_ADD_SA, *POFFLOAD_IPSEC_ADD_SA;
  typedef struct _OFFLOAD_IPSEC_DELETE_SA {
    HANDLE OffloadHandle;
  } OFFLOAD_IPSEC_DELETE_SA, *POFFLOAD_IPSEC_DELETE_SA;
  typedef enum _UDP_ENCAP_TYPE {
    OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_IKE,
    OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_OTHER
  } UDP_ENCAP_TYPE, *PUDP_ENCAP_TYPE;
  typedef struct _OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY {
    UDP_ENCAP_TYPE UdpEncapType;
    USHORT DstEncapPort;
  } OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY, *POFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY;
  typedef struct _OFFLOAD_IPSEC_ADD_UDPESP_SA {
    IPAddr SrcAddr;
    IPMask SrcMask;
    IPAddr DstAddr;
    IPMask DstMask;
    ULONG Protocol;
    USHORT SrcPort;
    USHORT DstPort;
    IPAddr SrcTunnelAddr;
    IPAddr DstTunnelAddr;
    USHORT Flags;
    SHORT NumSAs;
    OFFLOAD_SECURITY_ASSOCIATION SecAssoc[3];
    HANDLE OffloadHandle;
    OFFLOAD_IPSEC_UDPESP_ENCAPTYPE_ENTRY EncapTypeEntry;
    HANDLE EncapTypeEntryOffldHandle;
    ULONG KeyLen;
    UCHAR KeyMat[1];
  } OFFLOAD_IPSEC_ADD_UDPESP_SA, *POFFLOAD_IPSEC_ADD_UDPESP_SA;
  typedef struct _OFFLOAD_IPSEC_DELETE_UDPESP_SA {
    HANDLE OffloadHandle;
    HANDLE EncapTypeEntryOffldHandle;
  } OFFLOAD_IPSEC_DELETE_UDPESP_SA, *POFFLOAD_IPSEC_DELETE_UDPESP_SA;
  typedef ULONG NDIS_VLAN_ID;
  typedef enum _NDIS_MEDIUM {
    NdisMedium802_3,
    NdisMedium802_5,
    NdisMediumFddi,
    NdisMediumWan,
    NdisMediumLocalTalk,
    NdisMediumDix,
    NdisMediumArcnetRaw,
    NdisMediumArcnet878_2,
    NdisMediumAtm,
    NdisMediumWirelessWan,
    NdisMediumIrda,
    NdisMediumBpc,
    NdisMediumCoWan,
    NdisMedium1394,
    NdisMediumInfiniBand,
    NdisMediumTunnel,
    NdisMediumNative802_11,
    NdisMediumLoopback,
    NdisMediumMax
  } NDIS_MEDIUM, *PNDIS_MEDIUM;
  typedef enum _NDIS_PHYSICAL_MEDIUM {
    NdisPhysicalMediumUnspecified,
    NdisPhysicalMediumWirelessLan,
    NdisPhysicalMediumCableModem,
    NdisPhysicalMediumPhoneLine,
    NdisPhysicalMediumPowerLine,
    NdisPhysicalMediumDSL,
    NdisPhysicalMediumFibreChannel,
    NdisPhysicalMedium1394,
    NdisPhysicalMediumWirelessWan,
    NdisPhysicalMediumNative802_11,
    NdisPhysicalMediumBluetooth,
    NdisPhysicalMediumInfiniband,
    NdisPhysicalMediumWiMax,
    NdisPhysicalMediumUWB,
    NdisPhysicalMedium802_3,
    NdisPhysicalMedium802_5,
    NdisPhysicalMediumIrda,
    NdisPhysicalMediumWiredWAN,
    NdisPhysicalMediumWiredCoWan,
    NdisPhysicalMediumOther,
    NdisPhysicalMediumMax
  } NDIS_PHYSICAL_MEDIUM, *PNDIS_PHYSICAL_MEDIUM;
  typedef struct _TRANSPORT_HEADER_OFFSET {
    USHORT ProtocolType;
    USHORT HeaderOffset;
  } TRANSPORT_HEADER_OFFSET, *PTRANSPORT_HEADER_OFFSET;
  typedef struct _NETWORK_ADDRESS {
    USHORT AddressLength;
    USHORT AddressType;
    UCHAR Address[1];
  } NETWORK_ADDRESS, *PNETWORK_ADDRESS;
  typedef struct _NETWORK_ADDRESS_LIST {
    LONG AddressCount;
    USHORT AddressType;
    NETWORK_ADDRESS Address[1];
  } NETWORK_ADDRESS_LIST, *PNETWORK_ADDRESS_LIST;
  typedef struct _NETWORK_ADDRESS_IP {
    USHORT sin_port;
    ULONG in_addr;
    UCHAR sin_zero[8];
  } NETWORK_ADDRESS_IP, *PNETWORK_ADDRESS_IP;
#define NDIS_PROTOCOL_ID_DEFAULT 0x00
#define NDIS_PROTOCOL_ID_TCP_IP 0x02
#define NDIS_PROTOCOL_ID_IPX 0x06
#define NDIS_PROTOCOL_ID_NBF 0x07
#define NDIS_PROTOCOL_ID_MAX 0x0f
#define NDIS_PROTOCOL_ID_MASK 0x0f
#define READABLE_LOCAL_CLOCK 0x00000001
#define CLOCK_NETWORK_DERIVED 0x00000002
#define CLOCK_PRECISION 0x00000004
#define RECEIVE_TIME_INDICATION_CAPABLE 0x00000008
#define TIMED_SEND_CAPABLE 0x00000010
#define TIME_STAMP_CAPABLE 0x00000020
#define NDIS_DEVICE_WAKE_UP_ENABLE 0x00000001
#define NDIS_DEVICE_WAKE_ON_PATTERN_MATCH_ENABLE 0x00000002
#define NDIS_DEVICE_WAKE_ON_MAGIC_PACKET_ENABLE 0x00000004
#define WAN_PROTOCOL_KEEPS_STATS 0x00000001
#define NETWORK_ADDRESS_LENGTH_IP sizeof (NETWORK_ADDRESS_IP)
#define NETWORK_ADDRESS_LENGTH_IPX sizeof (NETWORK_ADDRESS_IPX)
  typedef struct _NETWORK_ADDRESS_IPX {
    ULONG NetworkAddress;
    UCHAR NodeAddress[6];
    USHORT Socket;
  } NETWORK_ADDRESS_IPX, *PNETWORK_ADDRESS_IPX;
  typedef enum _NDIS_HARDWARE_STATUS {
    NdisHardwareStatusReady,
    NdisHardwareStatusInitializing,
    NdisHardwareStatusReset,
    NdisHardwareStatusClosing,
    NdisHardwareStatusNotReady
  } NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS;
  typedef struct _GEN_GET_TIME_CAPS {
    ULONG Flags;
    ULONG ClockPrecision;
  } GEN_GET_TIME_CAPS, *PGEN_GET_TIME_CAPS;
  typedef struct _GEN_GET_NETCARD_TIME {
    ULONGLONG ReadTime;
  } GEN_GET_NETCARD_TIME, *PGEN_GET_NETCARD_TIME;
  typedef struct _NDIS_PM_PACKET_PATTERN {
    ULONG Priority;
    ULONG Reserved;
    ULONG MaskSize;
    ULONG PatternOffset;
    ULONG PatternSize;
    ULONG PatternFlags;
  } NDIS_PM_PACKET_PATTERN, *PNDIS_PM_PACKET_PATTERN;
  typedef enum _NDIS_DEVICE_POWER_STATE {
    NdisDeviceStateUnspecified = 0,
    NdisDeviceStateD0,
    NdisDeviceStateD1,
    NdisDeviceStateD2,
    NdisDeviceStateD3,
    NdisDeviceStateMaximum
  } NDIS_DEVICE_POWER_STATE, *PNDIS_DEVICE_POWER_STATE;
  typedef struct _NDIS_PM_WAKE_UP_CAPABILITIES {
    NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp;
    NDIS_DEVICE_POWER_STATE MinPatternWakeUp;
    NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp;
  } NDIS_PM_WAKE_UP_CAPABILITIES, *PNDIS_PM_WAKE_UP_CAPABILITIES;
  typedef struct _NDIS_PNP_CAPABILITIES {
    ULONG Flags;
    NDIS_PM_WAKE_UP_CAPABILITIES WakeUpCapabilities;
  } NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES;
  typedef enum _NDIS_FDDI_ATTACHMENT_TYPE {
    NdisFddiTypeIsolated = 1,
    NdisFddiTypeLocalA,
    NdisFddiTypeLocalB,
    NdisFddiTypeLocalAB,
    NdisFddiTypeLocalS,
    NdisFddiTypeWrapA,
    NdisFddiTypeWrapB,
    NdisFddiTypeWrapAB,
    NdisFddiTypeWrapS,
    NdisFddiTypeCWrapA,
    NdisFddiTypeCWrapB,
    NdisFddiTypeCWrapS,
    NdisFddiTypeThrough
  } NDIS_FDDI_ATTACHMENT_TYPE, *PNDIS_FDDI_ATTACHMENT_TYPE;
  typedef enum _NDIS_FDDI_RING_MGT_STATE {
    NdisFddiRingIsolated = 1,
    NdisFddiRingNonOperational,
    NdisFddiRingOperational,
    NdisFddiRingDetect,
    NdisFddiRingNonOperationalDup,
    NdisFddiRingOperationalDup,
    NdisFddiRingDirected,
    NdisFddiRingTrace
  } NDIS_FDDI_RING_MGT_STATE, *PNDIS_FDDI_RING_MGT_STATE;
  typedef enum _NDIS_FDDI_LCONNECTION_STATE {
    NdisFddiStateOff = 1,
    NdisFddiStateBreak,
    NdisFddiStateTrace,
    NdisFddiStateConnect,
    NdisFddiStateNext,
    NdisFddiStateSignal,
    NdisFddiStateJoin,
    NdisFddiStateVerify,
    NdisFddiStateActive,
    NdisFddiStateMaintenance
  } NDIS_FDDI_LCONNECTION_STATE, *PNDIS_FDDI_LCONNECTION_STATE;
  typedef enum _NDIS_WAN_MEDIUM_SUBTYPE {
    NdisWanMediumHub,
    NdisWanMediumX_25,
    NdisWanMediumIsdn,
    NdisWanMediumSerial,
    NdisWanMediumFrameRelay,
    NdisWanMediumAtm,
    NdisWanMediumSonet,
    NdisWanMediumSW56K,
    NdisWanMediumPPTP,
    NdisWanMediumL2TP,
    NdisWanMediumIrda,
    NdisWanMediumParallel,
    NdisWanMediumPppoe,
    NdisWanMediumSSTP,
    NdisWanMediumAgileVPN,
  } NDIS_WAN_MEDIUM_SUBTYPE, *PNDIS_WAN_MEDIUM_SUBTYPE;
  typedef enum _NDIS_WAN_HEADER_FORMAT {
    NdisWanHeaderNative,
    NdisWanHeaderEthernet
  } NDIS_WAN_HEADER_FORMAT, *PNDIS_WAN_HEADER_FORMAT;
  typedef enum _NDIS_WAN_QUALITY {
    NdisWanRaw,
    NdisWanErrorControl,
    NdisWanReliable
  } NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY;
  typedef struct _NDIS_WAN_PROTOCOL_CAPS {
    ULONG Flags;
    ULONG Reserved;
  } NDIS_WAN_PROTOCOL_CAPS, *PNDIS_WAN_PROTOCOL_CAPS;
  typedef enum _NDIS_802_5_RING_STATE {
    NdisRingStateOpened = 1,
    NdisRingStateClosed,
    NdisRingStateOpening,
    NdisRingStateClosing,
    NdisRingStateOpenFailure,
    NdisRingStateRingFailure
  } NDIS_802_5_RING_STATE, *PNDIS_802_5_RING_STATE;
  typedef enum _NDIS_MEDIA_STATE {
    NdisMediaStateConnected,
    NdisMediaStateDisconnected
  } NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE;
  typedef ULONG Priority_802_3;
  typedef struct _NDIS_CO_LINK_SPEED {
    ULONG Outbound;
    ULONG Inbound;
  } NDIS_CO_LINK_SPEED, *PNDIS_CO_LINK_SPEED;
#define NDIS_LINK_SPEED_UNKNOWN NET_IF_LINK_SPEED_UNKNOWN
  typedef struct _NDIS_LINK_SPEED {
    ULONG64 XmitLinkSpeed;
    ULONG64 RcvLinkSpeed;
  } NDIS_LINK_SPEED, *PNDIS_LINK_SPEED;
  typedef int NDIS_STATUS, *PNDIS_STATUS;
#define __WINDOT11_H__ 
#define _INC_WLANTYPES 
#define DOT11_SSID_MAX_LENGTH 32
#define DOT11_AUTH_ALGORITHM_OPEN_SYSTEM DOT11_AUTH_ALGO_80211_OPEN
#define DOT11_AUTH_ALGORITHM_SHARED_KEY DOT11_AUTH_ALGO_80211_SHARED_KEY
#define DOT11_AUTH_ALGORITHM_WPA DOT11_AUTH_ALGO_WPA
#define DOT11_AUTH_ALGORITHM_WPA_PSK DOT11_AUTH_ALGO_WPA_PSK
#define DOT11_AUTH_ALGORITHM_WPA_NONE DOT11_AUTH_ALGO_WPA_NONE
#define DOT11_AUTH_ALGORITHM_RSNA DOT11_AUTH_ALGO_RSNA
#define DOT11_AUTH_ALGORITHM_RSNA_PSK DOT11_AUTH_ALGO_RSNA_PSK
typedef enum _DOT11_AUTH_ALGORITHM {
  DOT11_AUTH_ALGO_80211_OPEN = 1,
  DOT11_AUTH_ALGO_80211_SHARED_KEY = 2,
  DOT11_AUTH_ALGO_WPA = 3,
  DOT11_AUTH_ALGO_WPA_PSK = 4,
  DOT11_AUTH_ALGO_WPA_NONE = 5,
  DOT11_AUTH_ALGO_RSNA = 6,
  DOT11_AUTH_ALGO_RSNA_PSK = 7,
  DOT11_AUTH_ALGO_IHV_START = 0x80000000,
  DOT11_AUTH_ALGO_IHV_END = 0xffffffff
} DOT11_AUTH_ALGORITHM;
typedef DOT11_AUTH_ALGORITHM *PDOT11_AUTH_ALGORITHM;
typedef enum _DOT11_CIPHER_ALGORITHM {
  DOT11_CIPHER_ALGO_NONE = 0x00,
  DOT11_CIPHER_ALGO_WEP40 = 0x01,
  DOT11_CIPHER_ALGO_TKIP = 0x02,
  DOT11_CIPHER_ALGO_CCMP = 0x04,
  DOT11_CIPHER_ALGO_WEP104 = 0x05,
  DOT11_CIPHER_ALGO_WPA_USE_GROUP = 0x100,
  DOT11_CIPHER_ALGO_RSN_USE_GROUP = 0x100,
  DOT11_CIPHER_ALGO_WEP = 0x101,
  DOT11_CIPHER_ALGO_IHV_START = 0x80000000,
  DOT11_CIPHER_ALGO_IHV_END = 0xffffffff
} DOT11_CIPHER_ALGORITHM;
typedef DOT11_CIPHER_ALGORITHM *PDOT11_CIPHER_ALGORITHM;
typedef enum _DOT11_BSS_TYPE {
  dot11_BSS_type_infrastructure = 1,
  dot11_BSS_type_independent = 2,
  dot11_BSS_type_any = 3
} DOT11_BSS_TYPE, *PDOT11_BSS_TYPE;
typedef struct _DOT11_AUTH_CIPHER_PAIR {
  DOT11_AUTH_ALGORITHM AuthAlgoId;
  DOT11_CIPHER_ALGORITHM CipherAlgoId;
} DOT11_AUTH_CIPHER_PAIR, *PDOT11_AUTH_CIPHER_PAIR;
typedef struct _DOT11_SSID {
  ULONG uSSIDLength;
  UCHAR ucSSID[32];
} DOT11_SSID, *PDOT11_SSID;
#define DOT11_RATE_SET_MAX_LENGTH 126
#define DOT11_BSSID_LIST_REVISION_1 1
typedef UCHAR DOT11_MAC_ADDRESS[6];
typedef DOT11_MAC_ADDRESS *PDOT11_MAC_ADDRESS;
typedef struct DOT11_BSSID_LIST {
  NDIS_OBJECT_HEADER Header;
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_MAC_ADDRESS BSSIDs[1];
} DOT11_BSSID_LIST, *PDOT11_BSSID_LIST;
typedef
enum _DOT11_PHY_TYPE {
  dot11_phy_type_unknown = 0,
  dot11_phy_type_any = dot11_phy_type_unknown,
  dot11_phy_type_fhss = 1,
  dot11_phy_type_dsss = 2,
  dot11_phy_type_irbaseband = 3,
  dot11_phy_type_ofdm = 4,
  dot11_phy_type_hrdsss = 5,
  dot11_phy_type_erp = 6,
  dot11_phy_type_ht = 7,
  dot11_phy_type_IHV_start = 0x80000000,
  dot11_phy_type_IHV_end = 0xffffffff
} DOT11_PHY_TYPE, *PDOT11_PHY_TYPE;
typedef struct _DOT11_RATE_SET {
  ULONG uRateSetLength;
  UCHAR ucRateSet[126];
} DOT11_RATE_SET, *PDOT11_RATE_SET;
typedef UCHAR DOT11_COUNTRY_OR_REGION_STRING[3];
typedef DOT11_COUNTRY_OR_REGION_STRING *PDOT11_COUNTRY_OR_REGION_STRING;
typedef UCHAR DOT11_DIALOG_TOKEN;
typedef UCHAR DOT11_WFD_STATUS_CODE;
typedef UCHAR DOT11_WFD_MINOR_REASON_CODE;
#define NDIS_PACKET_TYPE_MEDIA_SPECIFIC_MASK (0x0fff0000U)
#define NDIS_PACKET_TYPE_802_11_DIRECTED_DATA NDIS_PACKET_TYPE_DIRECTED
#define NDIS_PACKET_TYPE_802_11_BROADCAST_DATA NDIS_PACKET_TYPE_BROADCAST
#define NDIS_PACKET_TYPE_802_11_MULTICAST_DATA NDIS_PACKET_TYPE_MULTICAST
#define NDIS_PACKET_TYPE_802_11_ALL_MULTICAST_DATA NDIS_PACKET_TYPE_ALL_MULTICAST
#define NDIS_PACKET_TYPE_802_11_PROMISCUOUS_DATA NDIS_PACKET_TYPE_PROMISCUOUS
#define NDIS_PACKET_TYPE_802_11_RAW_DATA (0x00010000U)
#define NDIS_PACKET_TYPE_802_11_DIRECTED_MGMT (0x00020000U)
#define NDIS_PACKET_TYPE_802_11_BROADCAST_MGMT (0x00040000U)
#define NDIS_PACKET_TYPE_802_11_MULTICAST_MGMT (0x00080000U)
#define NDIS_PACKET_TYPE_802_11_ALL_MULTICAST_MGMT (0x00100000U)
#define NDIS_PACKET_TYPE_802_11_PROMISCUOUS_MGMT (0x00200000U)
#define NDIS_PACKET_TYPE_802_11_RAW_MGMT (0x00400000U)
#define NDIS_PACKET_TYPE_802_11_DIRECTED_CTRL (0x00800000U)
#define NDIS_PACKET_TYPE_802_11_BROADCAST_CTRL (0x01000000U)
#define NDIS_PACKET_TYPE_802_11_PROMISCUOUS_CTRL (0x02000000U)
#define NDIS_PACKET_TYPE_ALL_802_11_FILTERS (NDIS_PACKET_TYPE_DIRECTED | NDIS_PACKET_TYPE_MULTICAST | NDIS_PACKET_TYPE_ALL_MULTICAST | NDIS_PACKET_TYPE_BROADCAST | NDIS_PACKET_TYPE_PROMISCUOUS | NDIS_PACKET_TYPE_802_11_RAW_DATA | NDIS_PACKET_TYPE_802_11_DIRECTED_MGMT | NDIS_PACKET_TYPE_802_11_BROADCAST_MGMT | NDIS_PACKET_TYPE_802_11_MULTICAST_MGMT | NDIS_PACKET_TYPE_802_11_ALL_MULTICAST_MGMT | NDIS_PACKET_TYPE_802_11_PROMISCUOUS_MGMT | NDIS_PACKET_TYPE_802_11_RAW_MGMT | NDIS_PACKET_TYPE_802_11_DIRECTED_CTRL | NDIS_PACKET_TYPE_802_11_BROADCAST_CTRL | NDIS_PACKET_TYPE_802_11_PROMISCUOUS_CTRL)
#define DOT11_MAX_PDU_SIZE 2346
#define DOT11_MIN_PDU_SIZE (256)
#define DOT11_MAX_NUM_DEFAULT_KEY 4
#define OID_DOT11_NDIS_START 0x0d010300
#define NWF_MANDATORY_OID (0x01U)
#define NWF_OPTIONAL_OID (0x02U)
#define NWF_OPERATIONAL_OID (0x01U)
#define NWF_STATISTICS_OID (0x02U)
#define NWF_DEFINE_OID(Seq,o,m) ((0x0e000000U) | ((o) << 16) | ((m) << 8) | (Seq))
#define OID_DOT11_OFFLOAD_CAPABILITY (OID_DOT11_NDIS_START + 0)
#define DOT11_HW_WEP_SUPPORTED_TX 0x00000001
#define DOT11_HW_WEP_SUPPORTED_RX 0x00000002
#define DOT11_HW_FRAGMENTATION_SUPPORTED 0x00000004
#define DOT11_HW_DEFRAGMENTATION_SUPPORTED 0x00000008
#define DOT11_HW_MSDU_AUTH_SUPPORTED_TX 0x00000010
#define DOT11_HW_MSDU_AUTH_SUPPORTED_RX 0x00000020
#define DOT11_CONF_ALGO_WEP_RC4 0x00000001
#define DOT11_CONF_ALGO_TKIP 0x00000002
#define DOT11_AUTH_ALGO_MICHAEL 0x00000001
#define DOT11_OPERATION_MODE_UNKNOWN 0x00000000
#define DOT11_OPERATION_MODE_STATION 0x00000001
#define DOT11_OPERATION_MODE_AP 0x00000002
#define DOT11_OPERATION_MODE_EXTENSIBLE_STATION 0x00000004
#define DOT11_OPERATION_MODE_EXTENSIBLE_AP 0x00000008
#define DOT11_OPERATION_MODE_WFD_DEVICE 0x00000010
#define DOT11_OPERATION_MODE_WFD_GROUP_OWNER 0x00000020
#define DOT11_OPERATION_MODE_WFD_CLIENT 0x00000040
#define DOT11_OPERATION_MODE_MANUFACTURING 0x40000000
#define DOT11_OPERATION_MODE_NETWORK_MONITOR 0x80000000
#define DOT11_PACKET_TYPE_DIRECTED_CTRL 0x00000001
#define DOT11_PACKET_TYPE_DIRECTED_MGMT 0x00000002
#define DOT11_PACKET_TYPE_DIRECTED_DATA 0x00000004
#define DOT11_PACKET_TYPE_MULTICAST_CTRL 0x00000008
#define DOT11_PACKET_TYPE_MULTICAST_MGMT 0x00000010
#define DOT11_PACKET_TYPE_MULTICAST_DATA 0x00000020
#define DOT11_PACKET_TYPE_BROADCAST_CTRL 0x00000040
#define DOT11_PACKET_TYPE_BROADCAST_MGMT 0x00000080
#define DOT11_PACKET_TYPE_BROADCAST_DATA 0x00000100
#define DOT11_PACKET_TYPE_PROMISCUOUS_CTRL 0x00000200
#define DOT11_PACKET_TYPE_PROMISCUOUS_MGMT 0x00000400
#define DOT11_PACKET_TYPE_PROMISCUOUS_DATA 0x00000800
#define DOT11_PACKET_TYPE_ALL_MULTICAST_CTRL 0x00001000
#define DOT11_PACKET_TYPE_ALL_MULTICAST_MGMT 0x00002000
#define DOT11_PACKET_TYPE_ALL_MULTICAST_DATA 0x00004000
#define DOT11_PACKET_TYPE_RESERVED (~ (DOT11_PACKET_TYPE_DIRECTED_CTRL | DOT11_PACKET_TYPE_DIRECTED_MGMT | DOT11_PACKET_TYPE_DIRECTED_DATA | DOT11_PACKET_TYPE_MULTICAST_CTRL | DOT11_PACKET_TYPE_MULTICAST_MGMT | DOT11_PACKET_TYPE_MULTICAST_DATA | DOT11_PACKET_TYPE_BROADCAST_CTRL | DOT11_PACKET_TYPE_BROADCAST_MGMT | DOT11_PACKET_TYPE_BROADCAST_DATA | DOT11_PACKET_TYPE_PROMISCUOUS_CTRL | DOT11_PACKET_TYPE_PROMISCUOUS_MGMT | DOT11_PACKET_TYPE_PROMISCUOUS_DATA | DOT11_PACKET_TYPE_ALL_MULTICAST_CTRL | DOT11_PACKET_TYPE_ALL_MULTICAST_MGMT | DOT11_PACKET_TYPE_ALL_MULTICAST_DATA | 0))
#define OID_DOT11_CURRENT_OFFLOAD_CAPABILITY (OID_DOT11_NDIS_START + 1)
#define OID_DOT11_WEP_OFFLOAD (OID_DOT11_NDIS_START + 2)
#define OID_DOT11_WEP_UPLOAD (OID_DOT11_NDIS_START + 3)
#define OID_DOT11_DEFAULT_WEP_OFFLOAD (OID_DOT11_NDIS_START + 4)
#define OID_DOT11_DEFAULT_WEP_UPLOAD (OID_DOT11_NDIS_START + 5)
#define OID_DOT11_MPDU_MAX_LENGTH (OID_DOT11_NDIS_START + 6)
#define OID_DOT11_OPERATION_MODE_CAPABILITY (OID_DOT11_NDIS_START + 7)
#define OID_DOT11_CURRENT_OPERATION_MODE (OID_DOT11_NDIS_START + 8)
#define OID_DOT11_CURRENT_PACKET_FILTER (OID_DOT11_NDIS_START + 9)
typedef struct _DOT11_OFFLOAD_CAPABILITY {
  ULONG uReserved;
  ULONG uFlags;
  ULONG uSupportedWEPAlgorithms;
  ULONG uNumOfReplayWindows;
  ULONG uMaxWEPKeyMappingLength;
  ULONG uSupportedAuthAlgorithms;
  ULONG uMaxAuthKeyMappingLength;
} DOT11_OFFLOAD_CAPABILITY, *PDOT11_OFFLOAD_CAPABILITY;
typedef struct _DOT11_CURRENT_OFFLOAD_CAPABILITY {
  ULONG uReserved;
  ULONG uFlags;
} DOT11_CURRENT_OFFLOAD_CAPABILITY, *PDOT11_CURRENT_OFFLOAD_CAPABILITY;
typedef enum _DOT11_OFFLOAD_TYPE {
  dot11_offload_type_wep = 1,
  dot11_offload_type_auth = 2
} DOT11_OFFLOAD_TYPE, *PDOT11_OFFLOAD_TYPE;
typedef struct _DOT11_IV48_COUNTER {
  ULONG uIV32Counter;
  USHORT usIV16Counter;
} DOT11_IV48_COUNTER, *PDOT11_IV48_COUNTER;
typedef struct _DOT11_WEP_OFFLOAD {
  ULONG uReserved;
  HANDLE hOffloadContext;
  HANDLE hOffload;
  DOT11_OFFLOAD_TYPE dot11OffloadType;
  ULONG dwAlgorithm;
  BOOLEAN bRowIsOutbound;
  BOOLEAN bUseDefault;
  ULONG uFlags;
  UCHAR ucMacAddress[6];
  ULONG uNumOfRWsOnPeer;
  ULONG uNumOfRWsOnMe;
  DOT11_IV48_COUNTER dot11IV48Counters[16];
  USHORT usDot11RWBitMaps[16];
  USHORT usKeyLength;
  UCHAR ucKey[1];
} DOT11_WEP_OFFLOAD, *PDOT11_WEP_OFFLOAD;
typedef struct _DOT11_WEP_UPLOAD {
  ULONG uReserved;
  DOT11_OFFLOAD_TYPE dot11OffloadType;
  HANDLE hOffload;
  ULONG uNumOfRWsUsed;
  DOT11_IV48_COUNTER dot11IV48Counters[16];
  USHORT usDot11RWBitMaps[16];
} DOT11_WEP_UPLOAD, *PDOT11_WEP_UPLOAD;
typedef enum _DOT11_KEY_DIRECTION {
  dot11_key_direction_both = 1,
  dot11_key_direction_inbound = 2,
  dot11_key_direction_outbound = 3
} DOT11_KEY_DIRECTION, *PDOT11_KEY_DIRECTION;
typedef struct _DOT11_DEFAULT_WEP_OFFLOAD {
  ULONG uReserved;
  HANDLE hOffloadContext;
  HANDLE hOffload;
  ULONG dwIndex;
  DOT11_OFFLOAD_TYPE dot11OffloadType;
  ULONG dwAlgorithm;
  ULONG uFlags;
  DOT11_KEY_DIRECTION dot11KeyDirection;
  UCHAR ucMacAddress[6];
  ULONG uNumOfRWsOnMe;
  DOT11_IV48_COUNTER dot11IV48Counters[16];
  USHORT usDot11RWBitMaps[16];
  USHORT usKeyLength;
  UCHAR ucKey[1];
} DOT11_DEFAULT_WEP_OFFLOAD, *PDOT11_DEFAULT_WEP_OFFLOAD;
typedef struct _DOT11_DEFAULT_WEP_UPLOAD {
  ULONG uReserved;
  DOT11_OFFLOAD_TYPE dot11OffloadType;
  HANDLE hOffload;
  ULONG uNumOfRWsUsed;
  DOT11_IV48_COUNTER dot11IV48Counters[16];
  USHORT usDot11RWBitMaps[16];
} DOT11_DEFAULT_WEP_UPLOAD, *PDOT11_DEFAULT_WEP_UPLOAD;
typedef struct _DOT11_OPERATION_MODE_CAPABILITY {
  ULONG uReserved;
  ULONG uMajorVersion;
  ULONG uMinorVersion;
  ULONG uNumOfTXBuffers;
  ULONG uNumOfRXBuffers;
  ULONG uOpModeCapability;
} DOT11_OPERATION_MODE_CAPABILITY, *PDOT11_OPERATION_MODE_CAPABILITY;
typedef struct _DOT11_CURRENT_OPERATION_MODE {
  ULONG uReserved;
  ULONG uCurrentOpMode;
} DOT11_CURRENT_OPERATION_MODE, *PDOT11_CURRENT_OPERATION_MODE;
typedef enum _DOT11_SCAN_TYPE {
  dot11_scan_type_active = 1,
  dot11_scan_type_passive = 2,
  dot11_scan_type_auto = 3,
  dot11_scan_type_forced = 0x80000000
} DOT11_SCAN_TYPE, *PDOT11_SCAN_TYPE;
typedef struct _DOT11_SCAN_REQUEST {
  DOT11_BSS_TYPE dot11BSSType;
  DOT11_MAC_ADDRESS dot11BSSID;
  DOT11_SSID dot11SSID;
  DOT11_SCAN_TYPE dot11ScanType;
  BOOLEAN bRestrictedScan;
  BOOLEAN bUseRequestIE;
  ULONG uRequestIDsOffset;
  ULONG uNumOfRequestIDs;
  ULONG uPhyTypesOffset;
  ULONG uNumOfPhyTypes;
  ULONG uIEsOffset;
  ULONG uIEsLength;
  UCHAR ucBuffer[1];
} DOT11_SCAN_REQUEST, *PDOT11_SCAN_REQUEST;
typedef enum _CH_DESCRIPTION_TYPE {
  ch_description_type_logical = 1,
  ch_description_type_center_frequency = 2,
  ch_description_type_phy_specific
} CH_DESCRIPTION_TYPE, *PCH_DESCRIPTION_TYPE;
typedef struct _DOT11_PHY_TYPE_INFO {
  DOT11_PHY_TYPE dot11PhyType;
  BOOLEAN bUseParameters;
  ULONG uProbeDelay;
  ULONG uMinChannelTime;
  ULONG uMaxChannelTime;
  CH_DESCRIPTION_TYPE ChDescriptionType;
  ULONG uChannelListSize;
  UCHAR ucChannelListBuffer[1];
} DOT11_PHY_TYPE_INFO, *PDOT11_PHY_TYPE_INFO;
typedef struct _DOT11_SCAN_REQUEST_V2 {
  DOT11_BSS_TYPE dot11BSSType;
  DOT11_MAC_ADDRESS dot11BSSID;
  DOT11_SCAN_TYPE dot11ScanType;
  BOOLEAN bRestrictedScan;
  ULONG udot11SSIDsOffset;
  ULONG uNumOfdot11SSIDs;
  BOOLEAN bUseRequestIE;
  ULONG uRequestIDsOffset;
  ULONG uNumOfRequestIDs;
  ULONG uPhyTypeInfosOffset;
  ULONG uNumOfPhyTypeInfos;
  ULONG uIEsOffset;
  ULONG uIEsLength;
  UCHAR ucBuffer[1];
} DOT11_SCAN_REQUEST_V2, *PDOT11_SCAN_REQUEST_V2;
typedef struct DOT11_PHY_TYPE_LIST {
  NDIS_OBJECT_HEADER Header;
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_PHY_TYPE dot11PhyType[1];
} DOT11_PHY_TYPE_LIST, *PDOT11_PHY_TYPE_LIST;
#define DOT11_PHY_TYPE_LIST_REVISION_1 1
#define DOT11_CAPABILITY_INFO_ESS 0x0001
#define DOT11_CAPABILITY_INFO_IBSS 0x0002
#define DOT11_CAPABILITY_INFO_CF_POLLABLE 0x0004
#define DOT11_CAPABILITY_INFO_CF_POLL_REQ 0x0008
#define DOT11_CAPABILITY_INFO_PRIVACY 0x0010
#define DOT11_CAPABILITY_SHORT_PREAMBLE 0x0020
#define DOT11_CAPABILITY_PBCC 0x0040
#define DOT11_CAPABILITY_CHANNEL_AGILITY 0x0080
#define DOT11_CAPABILITY_SHORT_SLOT_TIME 0x0400
#define DOT11_CAPABILITY_DSSSOFDM 0x2000
#define OID_DOT11_ATIM_WINDOW (OID_DOT11_NDIS_START + 10)
#define OID_DOT11_SCAN_REQUEST (OID_DOT11_NDIS_START + 11)
#define OID_DOT11_CURRENT_PHY_TYPE (OID_DOT11_NDIS_START + 12)
#define OID_DOT11_JOIN_REQUEST (OID_DOT11_NDIS_START + 13)
#define OID_DOT11_START_REQUEST (OID_DOT11_NDIS_START + 14)
#define OID_DOT11_UPDATE_IE (OID_DOT11_NDIS_START + 15)
#define OID_DOT11_RESET_REQUEST (OID_DOT11_NDIS_START + 16)
typedef struct _DOT11_BSS_DESCRIPTION {
  ULONG uReserved;
  DOT11_MAC_ADDRESS dot11BSSID;
  DOT11_BSS_TYPE dot11BSSType;
  USHORT usBeaconPeriod;
  ULONGLONG ullTimestamp;
  USHORT usCapabilityInformation;
  ULONG uBufferLength;
  UCHAR ucBuffer[1];
} DOT11_BSS_DESCRIPTION, *PDOT11_BSS_DESCRIPTION;
typedef struct _DOT11_JOIN_REQUEST {
  ULONG uJoinFailureTimeout;
  DOT11_RATE_SET OperationalRateSet;
  ULONG uChCenterFrequency;
  DOT11_BSS_DESCRIPTION dot11BSSDescription;
} DOT11_JOIN_REQUEST, *PDOT11_JOIN_REQUEST;
typedef struct _DOT11_START_REQUEST {
  ULONG uStartFailureTimeout;
  DOT11_RATE_SET OperationalRateSet;
  ULONG uChCenterFrequency;
  DOT11_BSS_DESCRIPTION dot11BSSDescription;
} DOT11_START_REQUEST, *PDOT11_START_REQUEST;
typedef enum _DOT11_UPDATE_IE_OP {
  dot11_update_ie_op_create_replace = 1,
  dot11_update_ie_op_delete = 2,
} DOT11_UPDATE_IE_OP, *PDOT11_UPDATE_IE_OP;
typedef struct _DOT11_UPDATE_IE {
  DOT11_UPDATE_IE_OP dot11UpdateIEOp;
  ULONG uBufferLength;
  UCHAR ucBuffer[1];
} DOT11_UPDATE_IE, *PDOT11_UPDATE_IE;
typedef enum _DOT11_RESET_TYPE {
  dot11_reset_type_phy = 1,
  dot11_reset_type_mac = 2,
  dot11_reset_type_phy_and_mac = 3
} DOT11_RESET_TYPE, *PDOT11_RESET_TYPE;
typedef struct _DOT11_RESET_REQUEST {
  DOT11_RESET_TYPE dot11ResetType;
  DOT11_MAC_ADDRESS dot11MacAddress;
  BOOLEAN bSetDefaultMIB;
} DOT11_RESET_REQUEST, *PDOT11_RESET_REQUEST;
typedef struct _DOT11_OPTIONAL_CAPABILITY {
  ULONG uReserved;
  BOOLEAN bDot11PCF;
  BOOLEAN bDot11PCFMPDUTransferToPC;
  BOOLEAN bStrictlyOrderedServiceClass;
} DOT11_OPTIONAL_CAPABILITY, *PDOT11_OPTIONAL_CAPABILITY;
#define OID_DOT11_NIC_POWER_STATE (OID_DOT11_NDIS_START + 17)
#define OID_DOT11_OPTIONAL_CAPABILITY (OID_DOT11_NDIS_START + 18)
#define OID_DOT11_CURRENT_OPTIONAL_CAPABILITY (OID_DOT11_NDIS_START + 19)
#define OID_DOT11_STATION_ID (OID_DOT11_NDIS_START + 20)
#define OID_DOT11_MEDIUM_OCCUPANCY_LIMIT (OID_DOT11_NDIS_START + 21)
#define OID_DOT11_CF_POLLABLE (OID_DOT11_NDIS_START + 22)
#define OID_DOT11_CFP_PERIOD (OID_DOT11_NDIS_START + 23)
#define OID_DOT11_CFP_MAX_DURATION (OID_DOT11_NDIS_START + 24)
#define OID_DOT11_POWER_MGMT_MODE (OID_DOT11_NDIS_START + 25)
#define OID_DOT11_OPERATIONAL_RATE_SET (OID_DOT11_NDIS_START + 26)
#define OID_DOT11_BEACON_PERIOD (OID_DOT11_NDIS_START + 27)
#define OID_DOT11_DTIM_PERIOD (OID_DOT11_NDIS_START + 28)
#define OID_DOT11_WEP_ICV_ERROR_COUNT (OID_DOT11_NDIS_START + 29)
#define OID_DOT11_MAC_ADDRESS (OID_DOT11_NDIS_START + 30)
#define OID_DOT11_RTS_THRESHOLD (OID_DOT11_NDIS_START + 31)
#define OID_DOT11_SHORT_RETRY_LIMIT (OID_DOT11_NDIS_START + 32)
#define OID_DOT11_LONG_RETRY_LIMIT (OID_DOT11_NDIS_START + 33)
#define OID_DOT11_FRAGMENTATION_THRESHOLD (OID_DOT11_NDIS_START + 34)
#define OID_DOT11_MAX_TRANSMIT_MSDU_LIFETIME (OID_DOT11_NDIS_START + 35)
#define OID_DOT11_MAX_RECEIVE_LIFETIME (OID_DOT11_NDIS_START + 36)
#define OID_DOT11_COUNTERS_ENTRY (OID_DOT11_NDIS_START + 37)
typedef struct _DOT11_CURRENT_OPTIONAL_CAPABILITY {
  ULONG uReserved;
  BOOLEAN bDot11CFPollable;
  BOOLEAN bDot11PCF;
  BOOLEAN bDot11PCFMPDUTransferToPC;
  BOOLEAN bStrictlyOrderedServiceClass;
} DOT11_CURRENT_OPTIONAL_CAPABILITY, *PDOT11_CURRENT_OPTIONAL_CAPABILITY;
typedef enum _DOT11_POWER_MODE {
  dot11_power_mode_unknown = 0,
  dot11_power_mode_active = 1,
  dot11_power_mode_powersave = 2
} DOT11_POWER_MODE, *PDOT11_POWER_MODE;
#define DOT11_POWER_SAVE_LEVEL_MAX_PSP 1
#define DOT11_POWER_SAVE_LEVEL_FAST_PSP 2
typedef struct _DOT11_POWER_MGMT_MODE {
  DOT11_POWER_MODE dot11PowerMode;
  ULONG uPowerSaveLevel;
  USHORT usListenInterval;
  USHORT usAID;
  BOOLEAN bReceiveDTIMs;
} DOT11_POWER_MGMT_MODE, *PDOT11_POWER_MGMT_MODE;
typedef struct _DOT11_COUNTERS_ENTRY {
  ULONG uTransmittedFragmentCount;
  ULONG uMulticastTransmittedFrameCount;
  ULONG uFailedCount;
  ULONG uRetryCount;
  ULONG uMultipleRetryCount;
  ULONG uFrameDuplicateCount;
  ULONG uRTSSuccessCount;
  ULONG uRTSFailureCount;
  ULONG uACKFailureCount;
  ULONG uReceivedFragmentCount;
  ULONG uMulticastReceivedFrameCount;
  ULONG uFCSErrorCount;
  ULONG uTransmittedFrameCount;
} DOT11_COUNTERS_ENTRY, *PDOT11_COUNTERS_ENTRY;
#define OID_DOT11_SUPPORTED_PHY_TYPES (OID_DOT11_NDIS_START + 38)
typedef struct _DOT11_SUPPORTED_PHY_TYPES {
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_PHY_TYPE dot11PHYType[1];
} DOT11_SUPPORTED_PHY_TYPES, *PDOT11_SUPPORTED_PHY_TYPES;
#define OID_DOT11_CURRENT_REG_DOMAIN (OID_DOT11_NDIS_START + 39)
#define OID_DOT11_TEMP_TYPE (OID_DOT11_NDIS_START + 40)
#define OID_DOT11_CURRENT_TX_ANTENNA (OID_DOT11_NDIS_START + 41)
#define OID_DOT11_DIVERSITY_SUPPORT (OID_DOT11_NDIS_START + 42)
#define OID_DOT11_CURRENT_RX_ANTENNA (OID_DOT11_NDIS_START + 43)
#define OID_DOT11_SUPPORTED_POWER_LEVELS (OID_DOT11_NDIS_START + 44)
#define OID_DOT11_CURRENT_TX_POWER_LEVEL (OID_DOT11_NDIS_START + 45)
#define OID_DOT11_HOP_TIME (OID_DOT11_NDIS_START + 46)
#define OID_DOT11_CURRENT_CHANNEL_NUMBER (OID_DOT11_NDIS_START + 47)
#define OID_DOT11_MAX_DWELL_TIME (OID_DOT11_NDIS_START + 48)
#define OID_DOT11_CURRENT_DWELL_TIME (OID_DOT11_NDIS_START + 49)
#define OID_DOT11_CURRENT_SET (OID_DOT11_NDIS_START + 50)
#define OID_DOT11_CURRENT_PATTERN (OID_DOT11_NDIS_START + 51)
#define OID_DOT11_CURRENT_INDEX (OID_DOT11_NDIS_START + 52)
#define OID_DOT11_CURRENT_CHANNEL (OID_DOT11_NDIS_START + 53)
#define OID_DOT11_CCA_MODE_SUPPORTED (OID_DOT11_NDIS_START + 54)
#define OID_DOT11_CURRENT_CCA_MODE (OID_DOT11_NDIS_START + 55)
#define OID_DOT11_ED_THRESHOLD (OID_DOT11_NDIS_START + 56)
#define OID_DOT11_CCA_WATCHDOG_TIMER_MAX (OID_DOT11_NDIS_START + 57)
#define OID_DOT11_CCA_WATCHDOG_COUNT_MAX (OID_DOT11_NDIS_START + 58)
#define OID_DOT11_CCA_WATCHDOG_TIMER_MIN (OID_DOT11_NDIS_START + 59)
#define OID_DOT11_CCA_WATCHDOG_COUNT_MIN (OID_DOT11_NDIS_START + 60)
#define OID_DOT11_REG_DOMAINS_SUPPORT_VALUE (OID_DOT11_NDIS_START + 61)
#define OID_DOT11_SUPPORTED_TX_ANTENNA (OID_DOT11_NDIS_START + 62)
#define OID_DOT11_SUPPORTED_RX_ANTENNA (OID_DOT11_NDIS_START + 63)
#define OID_DOT11_DIVERSITY_SELECTION_RX (OID_DOT11_NDIS_START + 64)
#define OID_DOT11_SUPPORTED_DATA_RATES_VALUE (OID_DOT11_NDIS_START + 65)
#define OID_DOT11_CURRENT_FREQUENCY (OID_DOT11_NDIS_START + 66)
#define OID_DOT11_TI_THRESHOLD (OID_DOT11_NDIS_START + 67)
#define OID_DOT11_FREQUENCY_BANDS_SUPPORTED (OID_DOT11_NDIS_START + 68)
#define OID_DOT11_SHORT_PREAMBLE_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 69)
#define OID_DOT11_PBCC_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 70)
#define OID_DOT11_CHANNEL_AGILITY_PRESENT (OID_DOT11_NDIS_START + 71)
#define OID_DOT11_CHANNEL_AGILITY_ENABLED (OID_DOT11_NDIS_START + 72)
#define OID_DOT11_HR_CCA_MODE_SUPPORTED (OID_DOT11_NDIS_START + 73)
#define OID_DOT11_MULTI_DOMAIN_CAPABILITY_IMPLEMENTED (OID_DOT11_NDIS_START + 74)
#define OID_DOT11_MULTI_DOMAIN_CAPABILITY_ENABLED (OID_DOT11_NDIS_START + 75)
#define OID_DOT11_COUNTRY_STRING (OID_DOT11_NDIS_START + 76)
#define DOT11_REG_DOMAIN_OTHER 0x00000000
#define DOT11_REG_DOMAIN_FCC 0x00000010
#define DOT11_REG_DOMAIN_DOC 0x00000020
#define DOT11_REG_DOMAIN_ETSI 0x00000030
#define DOT11_REG_DOMAIN_SPAIN 0x00000031
#define DOT11_REG_DOMAIN_FRANCE 0x00000032
#define DOT11_REG_DOMAIN_MKK 0x00000040
typedef enum _DOT11_TEMP_TYPE {
  dot11_temp_type_unknown = 0,
  dot11_temp_type_1 = 1,
  dot11_temp_type_2 = 2
} DOT11_TEMP_TYPE, *PDOT11_TEMP_TYPE;
typedef enum _DOT11_DIVERSITY_SUPPORT {
  dot11_diversity_support_unknown = 0,
  dot11_diversity_support_fixedlist = 1,
  dot11_diversity_support_notsupported = 2,
  dot11_diversity_support_dynamic = 3
} DOT11_DIVERSITY_SUPPORT, *PDOT11_DIVERSITY_SUPPORT;
typedef struct _DOT11_SUPPORTED_POWER_LEVELS {
  ULONG uNumOfSupportedPowerLevels;
  ULONG uTxPowerLevelValues[8];
} DOT11_SUPPORTED_POWER_LEVELS, *PDOT11_SUPPORTED_POWER_LEVELS;
#define DOT11_CCA_MODE_ED_ONLY 0x00000001
#define DOT11_CCA_MODE_CS_ONLY 0x00000002
#define DOT11_CCA_MODE_ED_and_CS 0x00000004
#define DOT11_CCA_MODE_CS_WITH_TIMER 0x00000008
#define DOT11_CCA_MODE_HRCS_AND_ED 0x00000010
typedef struct _DOT11_REG_DOMAIN_VALUE {
  ULONG uRegDomainsSupportIndex;
  ULONG uRegDomainsSupportValue;
} DOT11_REG_DOMAIN_VALUE, *PDOT11_REG_DOMAIN_VALUE;
typedef struct _DOT11_REG_DOMAINS_SUPPORT_VALUE {
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_REG_DOMAIN_VALUE dot11RegDomainValue[1];
} DOT11_REG_DOMAINS_SUPPORT_VALUE, *PDOT11_REG_DOMAINS_SUPPORT_VALUE;
typedef struct _DOT11_SUPPORTED_ANTENNA {
  ULONG uAntennaListIndex;
  BOOLEAN bSupportedAntenna;
} DOT11_SUPPORTED_ANTENNA, *PDOT11_SUPPORTED_ANTENNA;
typedef struct _DOT11_SUPPORTED_ANTENNA_LIST {
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_SUPPORTED_ANTENNA dot11SupportedAntenna[1];
} DOT11_SUPPORTED_ANTENNA_LIST, *PDOT11_SUPPORTED_ANTENNA_LIST;
typedef struct _DOT11_DIVERSITY_SELECTION_RX {
  ULONG uAntennaListIndex;
  BOOLEAN bDiversitySelectionRX;
} DOT11_DIVERSITY_SELECTION_RX, *PDOT11_DIVERSITY_SELECTION_RX;
typedef struct _DOT11_DIVERSITY_SELECTION_RX_LIST {
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_DIVERSITY_SELECTION_RX dot11DiversitySelectionRx[1];
} DOT11_DIVERSITY_SELECTION_RX_LIST, *PDOT11_DIVERSITY_SELECTION_RX_LIST;
#define MAX_NUM_SUPPORTED_RATES 8
#define MAX_NUM_SUPPORTED_RATES_V2 255
typedef struct _DOT11_SUPPORTED_DATA_RATES_VALUE {
  UCHAR ucSupportedTxDataRatesValue[8];
  UCHAR ucSupportedRxDataRatesValue[8];
} DOT11_SUPPORTED_DATA_RATES_VALUE, *PDOT11_SUPPORTED_DATA_RATES_VALUE;
typedef struct _DOT11_SUPPORTED_DATA_RATES_VALUE_V2 {
  UCHAR ucSupportedTxDataRatesValue[255];
  UCHAR ucSupportedRxDataRatesValue[255];
} DOT11_SUPPORTED_DATA_RATES_VALUE_V2, *PDOT11_SUPPORTED_DATA_RATES_VALUE_V2;
typedef DOT11_SUPPORTED_DATA_RATES_VALUE_V2 DOT11_SUPPORTED_DATA_RATES_VALUE_V1, *PDOT11_SUPPORTED_DATA_RATES_VALUE_V1;
#define DOT11_FREQUENCY_BANDS_LOWER 0x00000001
#define DOT11_FREQUENCY_BANDS_MIDDLE 0x00000002
#define DOT11_FREQUENCY_BANDS_UPPER 0x00000004
#define DOT11_HR_CCA_MODE_ED_ONLY 0x00000001
#define DOT11_HR_CCA_MODE_CS_ONLY 0x00000002
#define DOT11_HR_CCA_MODE_CS_AND_ED 0x00000004
#define DOT11_HR_CCA_MODE_CS_WITH_TIMER 0x00000008
#define DOT11_HR_CCA_MODE_HRCS_AND_ED 0x00000010
typedef struct _DOT11_MULTI_DOMAIN_CAPABILITY_ENTRY {
  ULONG uMultiDomainCapabilityIndex;
  ULONG uFirstChannelNumber;
  ULONG uNumberOfChannels;
  LONG lMaximumTransmitPowerLevel;
} DOT11_MULTI_DOMAIN_CAPABILITY_ENTRY, *PDOT11_MULTI_DOMAIN_CAPABILITY_ENTRY;
typedef struct _DOT11_MD_CAPABILITY_ENTRY_LIST {
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_MULTI_DOMAIN_CAPABILITY_ENTRY dot11MDCapabilityEntry[1];
} DOT11_MD_CAPABILITY_ENTRY_LIST, *PDOT11_MD_CAPABILITY_ENTRY_LIST;
#define OID_DOT11_MULTI_DOMAIN_CAPABILITY (OID_DOT11_NDIS_START + 77)
#define OID_DOT11_EHCC_PRIME_RADIX (OID_DOT11_NDIS_START + 78)
#define OID_DOT11_EHCC_NUMBER_OF_CHANNELS_FAMILY_INDEX (OID_DOT11_NDIS_START + 79)
#define OID_DOT11_EHCC_CAPABILITY_IMPLEMENTED (OID_DOT11_NDIS_START + 80)
#define OID_DOT11_EHCC_CAPABILITY_ENABLED (OID_DOT11_NDIS_START + 81)
#define OID_DOT11_HOP_ALGORITHM_ADOPTED (OID_DOT11_NDIS_START + 82)
#define OID_DOT11_RANDOM_TABLE_FLAG (OID_DOT11_NDIS_START + 83)
#define OID_DOT11_NUMBER_OF_HOPPING_SETS (OID_DOT11_NDIS_START + 84)
#define OID_DOT11_HOP_MODULUS (OID_DOT11_NDIS_START + 85)
#define OID_DOT11_HOP_OFFSET (OID_DOT11_NDIS_START + 86)
#define OID_DOT11_HOPPING_PATTERN (OID_DOT11_NDIS_START + 87)
#define OID_DOT11_RANDOM_TABLE_FIELD_NUMBER (OID_DOT11_NDIS_START + 88)
#define OID_DOT11_WPA_TSC (OID_DOT11_NDIS_START + 89)
#define OID_DOT11_RSSI_RANGE (OID_DOT11_NDIS_START + 90)
#define OID_DOT11_RF_USAGE (OID_DOT11_NDIS_START + 91)
#define OID_DOT11_NIC_SPECIFIC_EXTENSION (OID_DOT11_NDIS_START + 92)
#define OID_DOT11_AP_JOIN_REQUEST (OID_DOT11_NDIS_START + 93)
#define OID_DOT11_ERP_PBCC_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 94)
#define OID_DOT11_ERP_PBCC_OPTION_ENABLED (OID_DOT11_NDIS_START + 95)
#define OID_DOT11_DSSS_OFDM_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 96)
#define OID_DOT11_DSSS_OFDM_OPTION_ENABLED (OID_DOT11_NDIS_START + 97)
#define OID_DOT11_SHORT_SLOT_TIME_OPTION_IMPLEMENTED (OID_DOT11_NDIS_START + 98)
#define OID_DOT11_SHORT_SLOT_TIME_OPTION_ENABLED (OID_DOT11_NDIS_START + 99)
#define OID_DOT11_MAX_MAC_ADDRESS_STATES (OID_DOT11_NDIS_START + 100)
#define OID_DOT11_RECV_SENSITIVITY_LIST (OID_DOT11_NDIS_START + 101)
typedef enum _DOT11_HOP_ALGO_ADOPTED {
  dot11_hop_algo_current = 0,
  dot11_hop_algo_hop_index = 1,
  dot11_hop_algo_hcc = 2
} DOT11_HOP_ALGO_ADOPTED, *PDOT11_HOP_ALGO_ADOPTED;
typedef struct _DOT11_HOPPING_PATTERN_ENTRY {
  ULONG uHoppingPatternIndex;
  ULONG uRandomTableFieldNumber;
} DOT11_HOPPING_PATTERN_ENTRY, *PDOT11_HOPPING_PATTERN_ENTRY;
typedef struct _DOT11_HOPPING_PATTERN_ENTRY_LIST {
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_HOPPING_PATTERN_ENTRY dot11HoppingPatternEntry[1];
} DOT11_HOPPING_PATTERN_ENTRY_LIST, *PDOT11_HOPPING_PATTERN_ENTRY_LIST;
typedef struct _DOT11_WPA_TSC {
  ULONG uReserved;
  DOT11_OFFLOAD_TYPE dot11OffloadType;
  HANDLE hOffload;
  DOT11_IV48_COUNTER dot11IV48Counter;
} DOT11_WPA_TSC, *PDOT11_WPA_TSC;
typedef struct _DOT11_RSSI_RANGE {
  DOT11_PHY_TYPE dot11PhyType;
  ULONG uRSSIMin;
  ULONG uRSSIMax;
} DOT11_RSSI_RANGE, *PDOT11_RSSI_RANGE;
typedef struct _DOT11_NIC_SPECIFIC_EXTENSION {
  ULONG uBufferLength;
  ULONG uTotalBufferLength;
  UCHAR ucBuffer[1];
} DOT11_NIC_SPECIFIC_EXTENSION, *PDOT11_NIC_SPECIFIC_EXTENSION;
typedef struct _DOT11_AP_JOIN_REQUEST {
  ULONG uJoinFailureTimeout;
  DOT11_RATE_SET OperationalRateSet;
  ULONG uChCenterFrequency;
  DOT11_BSS_DESCRIPTION dot11BSSDescription;
} DOT11_AP_JOIN_REQUEST, *PDOT11_AP_JOIN_REQUEST;
typedef struct _DOT11_RECV_SENSITIVITY {
  UCHAR ucDataRate;
  LONG lRSSIMin;
  LONG lRSSIMax;
} DOT11_RECV_SENSITIVITY, *PDOT11_RECV_SENSITIVITY;
typedef struct _DOT11_RECV_SENSITIVITY_LIST {
  __extension__ union {
    DOT11_PHY_TYPE dot11PhyType;
    ULONG uPhyId;
  };
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_RECV_SENSITIVITY dot11RecvSensitivity[1];
} DOT11_RECV_SENSITIVITY_LIST, *PDOT11_RECV_SENSITIVITY_LIST;
#define OID_DOT11_WME_IMPLEMENTED (OID_DOT11_NDIS_START + 102)
#define OID_DOT11_WME_ENABLED (OID_DOT11_NDIS_START + 103)
#define OID_DOT11_WME_AC_PARAMETERS (OID_DOT11_NDIS_START + 104)
#define OID_DOT11_WME_UPDATE_IE (OID_DOT11_NDIS_START + 105)
#define OID_DOT11_QOS_TX_QUEUES_SUPPORTED (OID_DOT11_NDIS_START + 106)
#define OID_DOT11_QOS_TX_DURATION (OID_DOT11_NDIS_START + 107)
typedef enum _DOT11_AC_PARAM {
  dot11_AC_param_BE = 0,
  dot11_AC_param_BK = 1,
  dot11_AC_param_VI = 2,
  dot11_AC_param_VO = 3,
  dot11_AC_param_max
} DOT11_AC_PARAM, *PDOT11_AC_PARAM;
typedef struct _DOT11_WME_AC_PARAMETERS {
  UCHAR ucAccessCategoryIndex;
  UCHAR ucAIFSN;
  UCHAR ucECWmin;
  UCHAR ucECWmax;
  USHORT usTXOPLimit;
} DOT11_WME_AC_PARAMETERS, *PDOT11_WME_AC_PARAMETERS;
typedef struct _DOT11_WME_AC_PARAMTERS_LIST {
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_WME_AC_PARAMETERS dot11WMEACParameters[1];
} DOT11_WME_AC_PARAMETERS_LIST, *PDOT11_WME_AC_PARAMETERS_LIST;
typedef struct _DOT11_WME_UPDATE_IE {
  ULONG uParamElemMinBeaconIntervals;
  ULONG uWMEInfoElemOffset;
  ULONG uWMEInfoElemLength;
  ULONG uWMEParamElemOffset;
  ULONG uWMEParamElemLength;
  UCHAR ucBuffer[1];
} DOT11_WME_UPDATE_IE, *PDOT11_WME_UPDATE_IE;
typedef struct _DOT11_QOS_TX_DURATION {
  ULONG uNominalMSDUSize;
  ULONG uMinPHYRate;
  ULONG uDuration;
} DOT11_QOS_TX_DURATION, *PDOT11_QOS_TX_DURATION;
typedef struct _DOT11_QOS_TX_MEDIUM_TIME {
  DOT11_MAC_ADDRESS dot11PeerAddress;
  UCHAR ucQoSPriority;
  ULONG uMediumTimeAdmited;
} DOT11_QOS_TX_MEDIUM_TIME, *PDOT11_QOS_TX_MEDIUM_TIME;
typedef struct _DOT11_SUPPORTED_OFDM_FREQUENCY {
  ULONG uCenterFrequency;
} DOT11_SUPPORTED_OFDM_FREQUENCY, *PDOT11_SUPPORTED_OFDM_FREQUENCY;
typedef struct _DOT11_SUPPORTED_OFDM_FREQUENCY_LIST {
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_SUPPORTED_OFDM_FREQUENCY dot11SupportedOFDMFrequency[1];
} DOT11_SUPPORTED_OFDM_FREQUENCY_LIST, *PDOT11_SUPPORTED_OFDM_FREQUENCY_LIST;
typedef struct _DOT11_SUPPORTED_DSSS_CHANNEL {
  ULONG uChannel;
} DOT11_SUPPORTED_DSSS_CHANNEL, *PDOT11_SUPPORTED_DSSS_CHANNEL;
typedef struct _DOT11_SUPPORTED_DSSS_CHANNEL_LIST {
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_SUPPORTED_DSSS_CHANNEL dot11SupportedDSSSChannel[1];
} DOT11_SUPPORTED_DSSS_CHANNEL_LIST, *PDOT11_SUPPORTED_DSSS_CHANNEL_LIST;
typedef struct DOT11_BYTE_ARRAY {
  NDIS_OBJECT_HEADER Header;
  ULONG uNumOfBytes;
  ULONG uTotalNumOfBytes;
  UCHAR ucBuffer[1];
} DOT11_BYTE_ARRAY, *PDOT11_BYTE_ARRAY;
#define OID_DOT11_QOS_TX_MEDIUM_TIME (OID_DOT11_NDIS_START + 108)
#define OID_DOT11_SUPPORTED_OFDM_FREQUENCY_LIST (OID_DOT11_NDIS_START + 109)
#define OID_DOT11_SUPPORTED_DSSS_CHANNEL_LIST (OID_DOT11_NDIS_START + 110)
#define OID_DOT11_AUTO_CONFIG_ENABLED NWF_DEFINE_OID (120, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_ENUM_BSS_LIST NWF_DEFINE_OID (121, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_FLUSH_BSS_LIST NWF_DEFINE_OID (122, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_POWER_MGMT_REQUEST NWF_DEFINE_OID (123, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_DESIRED_SSID_LIST NWF_DEFINE_OID (124, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_EXCLUDED_MAC_ADDRESS_LIST NWF_DEFINE_OID (125, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define DOT11_PHY_AUTO_CONFIG_ENABLED_FLAG 0x00000001U
#define DOT11_MAC_AUTO_CONFIG_ENABLED_FLAG 0x00000002U
#define DOT11_BSS_ENTRY_BYTE_ARRAY_REVISION_1 1
typedef union DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO {
  ULONG uChCenterFrequency;
  struct {
    ULONG uHopPattern;
    ULONG uHopSet;
    ULONG uDwellTime;
  } FHSS;
} DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO, *PDOT11_BSS_ENTRY_PHY_SPECIFIC_INFO;
typedef struct DOT11_BSS_ENTRY {
  ULONG uPhyId;
  DOT11_BSS_ENTRY_PHY_SPECIFIC_INFO PhySpecificInfo;
  DOT11_MAC_ADDRESS dot11BSSID;
  DOT11_BSS_TYPE dot11BSSType;
  LONG lRSSI;
  ULONG uLinkQuality;
  BOOLEAN bInRegDomain;
  USHORT usBeaconPeriod;
  ULONGLONG ullTimestamp;
  ULONGLONG ullHostTimestamp;
  USHORT usCapabilityInformation;
  ULONG uBufferLength;
  UCHAR ucBuffer[1];
} DOT11_BSS_ENTRY, *PDOT11_BSS_ENTRY;
#define DOT11_POWER_SAVING_NO_POWER_SAVING 0
#define DOT11_POWER_SAVING_FAST_PSP 8
#define DOT11_POWER_SAVING_MAX_PSP 16
#define DOT11_POWER_SAVING_MAXIMUM_LEVEL 24
#define DOT11_SSID_LIST_REVISION_1 1
#define DOT11_MAC_ADDRESS_LIST_REVISION_1 1
#define DOT11_PMKID_LIST_REVISION_1 1
typedef struct DOT11_SSID_LIST {
  NDIS_OBJECT_HEADER Header;
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_SSID SSIDs[1];
} DOT11_SSID_LIST, *PDOT11_SSID_LIST;
typedef struct DOT11_MAC_ADDRESS_LIST {
  NDIS_OBJECT_HEADER Header;
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_MAC_ADDRESS MacAddrs[1];
} DOT11_MAC_ADDRESS_LIST, *PDOT11_MAC_ADDRESS_LIST;
#define OID_DOT11_DESIRED_BSSID_LIST NWF_DEFINE_OID (126, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_DESIRED_BSS_TYPE NWF_DEFINE_OID (127, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_PMKID_LIST NWF_DEFINE_OID (128, NWF_OPERATIONAL_OID, NWF_OPTIONAL_OID)
#define OID_DOT11_CONNECT_REQUEST NWF_DEFINE_OID (129, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_EXCLUDE_UNENCRYPTED NWF_DEFINE_OID (130, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_STATISTICS NWF_DEFINE_OID (131, NWF_STATISTICS_OID, NWF_MANDATORY_OID)
#define OID_DOT11_PRIVACY_EXEMPTION_LIST NWF_DEFINE_OID (132, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_ENABLED_AUTHENTICATION_ALGORITHM NWF_DEFINE_OID (133, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
typedef UCHAR DOT11_PMKID_VALUE[16];
typedef struct DOT11_PMKID_ENTRY {
  DOT11_MAC_ADDRESS BSSID;
  DOT11_PMKID_VALUE PMKID;
  ULONG uFlags;
} DOT11_PMKID_ENTRY, *PDOT11_PMKID_ENTRY;
typedef struct DOT11_PMKID_LIST {
  NDIS_OBJECT_HEADER Header;
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_PMKID_ENTRY PMKIDs[1];
} DOT11_PMKID_LIST, *PDOT11_PMKID_LIST;
#define DOT11_STATISTICS_UNKNOWN (ULONGLONG) (-1LL)
typedef struct DOT11_PHY_FRAME_STATISTICS {
  ULONGLONG ullTransmittedFrameCount;
  ULONGLONG ullMulticastTransmittedFrameCount;
  ULONGLONG ullFailedCount;
  ULONGLONG ullRetryCount;
  ULONGLONG ullMultipleRetryCount;
  ULONGLONG ullMaxTXLifetimeExceededCount;
  ULONGLONG ullTransmittedFragmentCount;
  ULONGLONG ullRTSSuccessCount;
  ULONGLONG ullRTSFailureCount;
  ULONGLONG ullACKFailureCount;
  ULONGLONG ullReceivedFrameCount;
  ULONGLONG ullMulticastReceivedFrameCount;
  ULONGLONG ullPromiscuousReceivedFrameCount;
  ULONGLONG ullMaxRXLifetimeExceededCount;
  ULONGLONG ullFrameDuplicateCount;
  ULONGLONG ullReceivedFragmentCount;
  ULONGLONG ullPromiscuousReceivedFragmentCount;
  ULONGLONG ullFCSErrorCount;
} DOT11_PHY_FRAME_STATISTICS, *PDOT11_PHY_FRAME_STATISTICS;
typedef struct DOT11_MAC_FRAME_STATISTICS {
  ULONGLONG ullTransmittedFrameCount;
  ULONGLONG ullReceivedFrameCount;
  ULONGLONG ullTransmittedFailureFrameCount;
  ULONGLONG ullReceivedFailureFrameCount;
  ULONGLONG ullWEPExcludedCount;
  ULONGLONG ullTKIPLocalMICFailures;
  ULONGLONG ullTKIPReplays;
  ULONGLONG ullTKIPICVErrorCount;
  ULONGLONG ullCCMPReplays;
  ULONGLONG ullCCMPDecryptErrors;
  ULONGLONG ullWEPUndecryptableCount;
  ULONGLONG ullWEPICVErrorCount;
  ULONGLONG ullDecryptSuccessCount;
  ULONGLONG ullDecryptFailureCount;
} DOT11_MAC_FRAME_STATISTICS, *PDOT11_MAC_FRAME_STATISTICS;
#define DOT11_STATISTICS_REVISION_1 1
#define DOT11_PRIVACY_EXEMPTION_LIST_REVISION_1 1
typedef struct DOT11_STATISTICS {
  NDIS_OBJECT_HEADER Header;
  ULONGLONG ullFourWayHandshakeFailures;
  ULONGLONG ullTKIPCounterMeasuresInvoked;
  ULONGLONG ullReserved;
  DOT11_MAC_FRAME_STATISTICS MacUcastCounters;
  DOT11_MAC_FRAME_STATISTICS MacMcastCounters;
  DOT11_PHY_FRAME_STATISTICS PhyCounters[1];
} DOT11_STATISTICS, *PDOT11_STATISTICS;
#define DOT11_EXEMPT_NO_EXEMPTION 0
#define DOT11_EXEMPT_ALWAYS 1
#define DOT11_EXEMPT_ON_KEY_MAPPING_KEY_UNAVAILABLE 2
#define DOT11_EXEMPT_UNICAST 1
#define DOT11_EXEMPT_MULTICAST 2
#define DOT11_EXEMPT_BOTH 3
typedef struct DOT11_PRIVACY_EXEMPTION {
  USHORT usEtherType;
  USHORT usExemptionActionType;
  USHORT usExemptionPacketType;
} DOT11_PRIVACY_EXEMPTION, *PDOT11_PRIVACY_EXEMPTION;
typedef struct DOT11_PRIVACY_EXEMPTION_LIST {
  NDIS_OBJECT_HEADER Header;
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_PRIVACY_EXEMPTION PrivacyExemptionEntries[1];
} DOT11_PRIVACY_EXEMPTION_LIST, *PDOT11_PRIVACY_EXEMPTION_LIST;
#define DOT11_AUTH_ALGORITHM_LIST_REVISION_1 1
#define DOT11_AUTH_CIPHER_PAIR_LIST_REVISION_1 1
#define DOT11_CIPHER_ALGORITHM_LIST_REVISION_1 1
#define DOT11_CIPHER_DEFAULT_KEY_VALUE_REVISION_1 1
#define OID_DOT11_SUPPORTED_UNICAST_ALGORITHM_PAIR NWF_DEFINE_OID (134, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_ENABLED_UNICAST_CIPHER_ALGORITHM NWF_DEFINE_OID (135, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_SUPPORTED_MULTICAST_ALGORITHM_PAIR NWF_DEFINE_OID (136, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_ENABLED_MULTICAST_CIPHER_ALGORITHM NWF_DEFINE_OID (137, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_CIPHER_DEFAULT_KEY_ID NWF_DEFINE_OID (138, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_CIPHER_DEFAULT_KEY NWF_DEFINE_OID (139, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
typedef struct DOT11_AUTH_ALGORITHM_LIST {
  NDIS_OBJECT_HEADER Header;
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_AUTH_ALGORITHM AlgorithmIds[1];
} DOT11_AUTH_ALGORITHM_LIST, *PDOT11_AUTH_ALGORITHM_LIST;
typedef struct DOT11_AUTH_CIPHER_PAIR_LIST {
  NDIS_OBJECT_HEADER Header;
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_AUTH_CIPHER_PAIR AuthCipherPairs[1];
} DOT11_AUTH_CIPHER_PAIR_LIST, *PDOT11_AUTH_CIPHER_PAIR_LIST;
typedef struct DOT11_CIPHER_ALGORITHM_LIST {
  NDIS_OBJECT_HEADER Header;
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_CIPHER_ALGORITHM AlgorithmIds[1];
} DOT11_CIPHER_ALGORITHM_LIST, *PDOT11_CIPHER_ALGORITHM_LIST;
typedef struct DOT11_CIPHER_DEFAULT_KEY_VALUE {
  NDIS_OBJECT_HEADER Header;
  ULONG uKeyIndex;
  DOT11_CIPHER_ALGORITHM AlgorithmId;
  DOT11_MAC_ADDRESS MacAddr;
  BOOLEAN bDelete;
  BOOLEAN bStatic;
  USHORT usKeyLength;
  UCHAR ucKey[1];
} DOT11_CIPHER_DEFAULT_KEY_VALUE, *PDOT11_CIPHER_DEFAULT_KEY_VALUE;
typedef struct DOT11_KEY_ALGO_TKIP_MIC {
  UCHAR ucIV48Counter[6];
  ULONG ulTKIPKeyLength;
  ULONG ulMICKeyLength;
  UCHAR ucTKIPMICKeys[1];
} DOT11_KEY_ALGO_TKIP_MIC, *PDOT11_KEY_ALGO_TKIP_MIC;
typedef struct DOT11_KEY_ALGO_CCMP {
  UCHAR ucIV48Counter[6];
  ULONG ulCCMPKeyLength;
  UCHAR ucCCMPKey[1];
} DOT11_KEY_ALGO_CCMP, *PDOT11_KEY_ALGO_CCMP;
typedef struct DOT11_KEY_ALGO_BIP {
  UCHAR ucIPN[6];
  ULONG ulBIPKeyLength;
  UCHAR ucBIPKey[1];
} DOT11_KEY_ALGO_BIP, *PDOT11_KEY_ALGO_BIP;
#define DOT11_CIPHER_KEY_MAPPING_KEY_VALUE_BYTE_ARRAY_REVISION_1 1
#define DOT11_ASSOCIATION_INFO_LIST_REVISION_1 1
#define OID_DOT11_CIPHER_KEY_MAPPING_KEY NWF_DEFINE_OID (140, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_ENUM_ASSOCIATION_INFO NWF_DEFINE_OID (141, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
typedef enum DOT11_DIRECTION {
  DOT11_DIR_INBOUND = 1,
  DOT11_DIR_OUTBOUND,
  DOT11_DIR_BOTH
} DOT11_DIRECTION, *PDOT11_DIRECTION;
typedef struct DOT11_CIPHER_KEY_MAPPING_KEY_VALUE {
  DOT11_MAC_ADDRESS PeerMacAddr;
  DOT11_CIPHER_ALGORITHM AlgorithmId;
  DOT11_DIRECTION Direction;
  BOOLEAN bDelete;
  BOOLEAN bStatic;
  USHORT usKeyLength;
  UCHAR ucKey[1];
} DOT11_CIPHER_KEY_MAPPING_KEY_VALUE, *PDOT11_CIPHER_KEY_MAPPING_KEY_VALUE;
typedef enum _DOT11_ASSOCIATION_STATE {
  dot11_assoc_state_zero = 0,
  dot11_assoc_state_unauth_unassoc = 1,
  dot11_assoc_state_auth_unassoc = 2,
  dot11_assoc_state_auth_assoc = 3
} DOT11_ASSOCIATION_STATE, *PDOT11_ASSOCIATION_STATE;
typedef struct _DOT11_ASSOCIATION_INFO_EX {
  DOT11_MAC_ADDRESS PeerMacAddress;
  DOT11_MAC_ADDRESS BSSID;
  USHORT usCapabilityInformation;
  USHORT usListenInterval;
  UCHAR ucPeerSupportedRates[255];
  USHORT usAssociationID;
  DOT11_ASSOCIATION_STATE dot11AssociationState;
  DOT11_POWER_MODE dot11PowerMode;
  LARGE_INTEGER liAssociationUpTime;
  ULONGLONG ullNumOfTxPacketSuccesses;
  ULONGLONG ullNumOfTxPacketFailures;
  ULONGLONG ullNumOfRxPacketSuccesses;
  ULONGLONG ullNumOfRxPacketFailures;
} DOT11_ASSOCIATION_INFO_EX, *PDOT11_ASSOCIATION_INFO_EX;
typedef struct DOT11_ASSOCIATION_INFO_LIST {
  NDIS_OBJECT_HEADER Header;
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_ASSOCIATION_INFO_EX dot11AssocInfo[1];
} DOT11_ASSOCIATION_INFO_LIST, *PDOT11_ASSOCIATION_INFO_LIST;
typedef struct DOT11_PHY_ID_LIST {
  NDIS_OBJECT_HEADER Header;
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  ULONG dot11PhyId[1];
} DOT11_PHY_ID_LIST, *PDOT11_PHY_ID_LIST;
#define DOT11_PHY_ID_ANY (0xffffffffU)
#define OID_DOT11_DISCONNECT_REQUEST NWF_DEFINE_OID (142, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_UNICAST_USE_GROUP_ENABLED NWF_DEFINE_OID (143, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_HARDWARE_PHY_STATE NWF_DEFINE_OID (144, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_DESIRED_PHY_LIST NWF_DEFINE_OID (145, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_CURRENT_PHY_ID NWF_DEFINE_OID (146, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_MEDIA_STREAMING_ENABLED NWF_DEFINE_OID (147, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_UNREACHABLE_DETECTION_THRESHOLD NWF_DEFINE_OID (148, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_ACTIVE_PHY_LIST NWF_DEFINE_OID (149, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_EXTSTA_CAPABILITY NWF_DEFINE_OID (150, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define DOT11_PHY_ID_LIST_REVISION_1 1
#define DOT11_EXTSTA_CAPABILITY_REVISION_1 1
typedef struct DOT11_EXTSTA_CAPABILITY {
  NDIS_OBJECT_HEADER Header;
  ULONG uScanSSIDListSize;
  ULONG uDesiredBSSIDListSize;
  ULONG uDesiredSSIDListSize;
  ULONG uExcludedMacAddressListSize;
  ULONG uPrivacyExemptionListSize;
  ULONG uKeyMappingTableSize;
  ULONG uDefaultKeyTableSize;
  ULONG uWEPKeyValueMaxLength;
  ULONG uPMKIDCacheSize;
  ULONG uMaxNumPerSTADefaultKeyTables;
} DOT11_EXTSTA_CAPABILITY, *PDOT11_EXTSTA_CAPABILITY;
typedef struct DOT11_DATA_RATE_MAPPING_ENTRY {
  UCHAR ucDataRateIndex;
  UCHAR ucDataRateFlag;
  USHORT usDataRateValue;
} DOT11_DATA_RATE_MAPPING_ENTRY, *PDOT11_DATA_RATE_MAPPING_ENTRY;
typedef struct _DOT11_DATA_RATE_MAPPING_TABLE {
  NDIS_OBJECT_HEADER Header;
  ULONG uDataRateMappingLength;
  DOT11_DATA_RATE_MAPPING_ENTRY DataRateMappingEntries[126];
} DOT11_DATA_RATE_MAPPING_TABLE, *PDOT11_DATA_RATE_MAPPING_TABLE;
typedef struct DOT11_COUNTRY_OR_REGION_STRING_LIST {
  NDIS_OBJECT_HEADER Header;
  ULONG uNumOfEntries;
  ULONG uTotalNumOfEntries;
  DOT11_COUNTRY_OR_REGION_STRING CountryOrRegionStrings[1];
} DOT11_COUNTRY_OR_REGION_STRING_LIST, *PDOT11_COUNTRY_OR_REGION_STRING_LIST;
typedef struct DOT11_PORT_STATE_NOTIFICATION {
  NDIS_OBJECT_HEADER Header;
  DOT11_MAC_ADDRESS PeerMac;
  BOOLEAN bOpen;
} DOT11_PORT_STATE_NOTIFICATION, *PDOT11_PORT_STATE_NOTIFICATION;
typedef struct DOT11_IBSS_PARAMS {
  NDIS_OBJECT_HEADER Header;
  BOOLEAN bJoinOnly;
  ULONG uIEsOffset;
  ULONG uIEsLength;
} DOT11_IBSS_PARAMS, *PDOT11_IBSS_PARAMS;
typedef struct DOT11_QOS_PARAMS {
  NDIS_OBJECT_HEADER Header;
  UCHAR ucEnabledQoSProtocolFlags;
} DOT11_QOS_PARAMS, *PDOT11_QOS_PARAMS;
#define DOT11_DATA_RATE_NON_STANDARD 0x01U
#define DOT11_DATA_RATE_INDEX_MASK 0x7fU
#define DOT11_QOS_PROTOCOL_FLAG_WMM (0x01U)
#define DOT11_QOS_PROTOCOL_FLAG_11E (0x02U)
#define OID_DOT11_DATA_RATE_MAPPING_TABLE NWF_DEFINE_OID (151, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_SUPPORTED_COUNTRY_OR_REGION_STRING NWF_DEFINE_OID (152, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_DESIRED_COUNTRY_OR_REGION_STRING NWF_DEFINE_OID (153, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_PORT_STATE_NOTIFICATION NWF_DEFINE_OID (154, NWF_OPERATIONAL_OID, NWF_OPTIONAL_OID)
#define OID_DOT11_IBSS_PARAMS NWF_DEFINE_OID (155, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_QOS_PARAMS NWF_DEFINE_OID (156, NWF_OPERATIONAL_OID, NWF_OPTIONAL_OID)
#define OID_DOT11_SAFE_MODE_ENABLED NWF_DEFINE_OID (157, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_HIDDEN_NETWORK_ENABLED NWF_DEFINE_OID (158, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define OID_DOT11_ASSOCIATION_PARAMS NWF_DEFINE_OID (159, NWF_OPERATIONAL_OID, NWF_MANDATORY_OID)
#define DOT11_DATA_RATE_MAPPING_TABLE_REVISION_1 1
#define DOT11_COUNTRY_OR_REGION_STRING_LIST_REVISION_1 1
#define DOT11_PORT_STATE_NOTIFICATION_REVISION_1 1
#define DOT11_IBSS_PARAMS_REVISION_1 1
#define DOT11_QOS_PARAMS_REVISION_1 1
#define DOT11_ASSOCIATION_PARAMS_REVISION_1 1
typedef struct DOT11_ASSOCIATION_PARAMS {
  NDIS_OBJECT_HEADER Header;
  DOT11_MAC_ADDRESS BSSID;
  ULONG uAssocRequestIEsOffset;
  ULONG uAssocRequestIEsLength;
} DOT11_ASSOCIATION_PARAMS, *PDOT11_ASSOCIATION_PARAMS;
#define DOT11_MAX_NUM_OF_FRAGMENTS 16
#define DOT11_PRIORITY_CONTENTION 0
#define DOT11_PRIORITY_CONTENTION_FREE 1
#define DOT11_SERVICE_CLASS_REORDERABLE_MULTICAST 0
#define DOT11_SERVICE_CLASS_STRICTLY_ORDERED 1
#define DOT11_FLAGS_80211B_SHORT_PREAMBLE 0x00000001
#define DOT11_FLAGS_80211B_PBCC 0x00000002
#define DOT11_FLAGS_80211B_CHANNEL_AGILITY 0x00000004
#define DOT11_FLAGS_PS_ON 0x00000008
#define DOT11_FLAGS_80211G_DSSS_OFDM 0x00000010
#define DOT11_FLAGS_80211G_USE_PROTECTION 0x00000020
#define DOT11_FLAGS_80211G_NON_ERP_PRESENT 0x00000040
#define DOT11_FLAGS_80211G_BARKER_PREAMBLE_MODE 0x00000080
#define DOT11_WME_PACKET 0x00000100
typedef struct _DOT11_FRAGMENT_DESCRIPTOR {
  ULONG uOffset;
  ULONG uLength;
} DOT11_FRAGMENT_DESCRIPTOR, *PDOT11_FRAGMENT_DESCRIPTOR;
typedef struct _DOT11_PER_MSDU_COUNTERS {
  ULONG uTransmittedFragmentCount;
  ULONG uRetryCount;
  ULONG uRTSSuccessCount;
  ULONG uRTSFailureCount;
  ULONG uACKFailureCount;
} DOT11_PER_MSDU_COUNTERS, *PDOT11_PER_MSDU_COUNTERS;
typedef struct DOT11_PHY_ATTRIBUTES DOT11_PHY_ATTRIBUTES, *PDOT11_PHY_ATTRIBUTES;
typedef struct DOT11_HRDSSS_PHY_ATTRIBUTES {
  BOOLEAN bShortPreambleOptionImplemented;
  BOOLEAN bPBCCOptionImplemented;
  BOOLEAN bChannelAgilityPresent;
  ULONG uHRCCAModeSupported;
} DOT11_HRDSSS_PHY_ATTRIBUTES, *PDOT11_HRDSSS_PHY_ATTRIBUTES;
typedef struct DOT11_OFDM_PHY_ATTRIBUTES {
  ULONG uFrequencyBandsSupported;
} DOT11_OFDM_PHY_ATTRIBUTES, *PDOT11_OFDM_PHY_ATTRIBUTES;
typedef struct DOT11_ERP_PHY_ATTRIBUTES {
  __extension__ struct {
    BOOLEAN bShortPreambleOptionImplemented;
    BOOLEAN bPBCCOptionImplemented;
    BOOLEAN bChannelAgilityPresent;
    ULONG uHRCCAModeSupported;
  };
  BOOLEAN bERPPBCCOptionImplemented;
  BOOLEAN bDSSSOFDMOptionImplemented;
  BOOLEAN bShortSlotTimeOptionImplemented;
} DOT11_ERP_PHY_ATTRIBUTES, *PDOT11_ERP_PHY_ATTRIBUTES;
#define DOT11_PHY_ATTRIBUTES_REVISION_1 1
struct DOT11_PHY_ATTRIBUTES {
  NDIS_OBJECT_HEADER Header;
  DOT11_PHY_TYPE PhyType;
  BOOLEAN bHardwarePhyState;
  BOOLEAN bSoftwarePhyState;
  BOOLEAN bCFPollable;
  ULONG uMPDUMaxLength;
  DOT11_TEMP_TYPE TempType;
  DOT11_DIVERSITY_SUPPORT DiversitySupport;
  __extension__
  union {
    DOT11_HRDSSS_PHY_ATTRIBUTES HRDSSSAttributes;
    DOT11_OFDM_PHY_ATTRIBUTES OFDMAttributes;
    DOT11_ERP_PHY_ATTRIBUTES ERPAttributes;
  }
    ;
  ULONG uNumberSupportedPowerLevels;
  ULONG TxPowerLevels[8];
  ULONG uNumDataRateMappingEntries;
  DOT11_DATA_RATE_MAPPING_ENTRY DataRateMappingEntries[126];
  DOT11_SUPPORTED_DATA_RATES_VALUE_V2 SupportedDataRatesValue;
};
#define DOT11_EXTSTA_ATTRIBUTES_SAFEMODE_OID_SUPPORTED 0x1
#define DOT11_EXTSTA_ATTRIBUTES_SAFEMODE_CERTIFIED 0x2
#define DOT11_EXTSTA_ATTRIBUTES_SAFEMODE_RESERVED 0xc
#define DOT11_EXTSTA_ATTRIBUTES_REVISION_1 1
#define DOT11_EXTSTA_ATTRIBUTES_REVISION_2 2
#define DOT11_EXTSTA_ATTRIBUTES_REVISION_3 3
typedef struct DOT11_EXTSTA_ATTRIBUTES DOT11_EXTSTA_ATTRIBUTES, *PDOT11_EXTSTA_ATTRIBUTES;
struct DOT11_EXTSTA_ATTRIBUTES {
  NDIS_OBJECT_HEADER Header;
  ULONG uScanSSIDListSize;
  ULONG uDesiredBSSIDListSize;
  ULONG uDesiredSSIDListSize;
  ULONG uExcludedMacAddressListSize;
  ULONG uPrivacyExemptionListSize;
  ULONG uKeyMappingTableSize;
  ULONG uDefaultKeyTableSize;
  ULONG uWEPKeyValueMaxLength;
  ULONG uPMKIDCacheSize;
  ULONG uMaxNumPerSTADefaultKeyTables;
  BOOLEAN bStrictlyOrderedServiceClassImplemented;
  UCHAR ucSupportedQoSProtocolFlags;
  BOOLEAN bSafeModeImplemented;
  ULONG uNumSupportedCountryOrRegionStrings;
  PDOT11_COUNTRY_OR_REGION_STRING pSupportedCountryOrRegionStrings;
  ULONG uInfraNumSupportedUcastAlgoPairs;
  PDOT11_AUTH_CIPHER_PAIR pInfraSupportedUcastAlgoPairs;
  ULONG uInfraNumSupportedMcastAlgoPairs;
  PDOT11_AUTH_CIPHER_PAIR pInfraSupportedMcastAlgoPairs;
  ULONG uAdhocNumSupportedUcastAlgoPairs;
  PDOT11_AUTH_CIPHER_PAIR pAdhocSupportedUcastAlgoPairs;
  ULONG uAdhocNumSupportedMcastAlgoPairs;
  PDOT11_AUTH_CIPHER_PAIR pAdhocSupportedMcastAlgoPairs;
  BOOLEAN bAutoPowerSaveMode;
  ULONG uMaxNetworkOffloadListSize;
  BOOLEAN bMFPCapable;
  ULONG uInfraNumSupportedMcastMgmtAlgoPairs;
  PDOT11_AUTH_CIPHER_PAIR pInfraSupportedMcastMgmtAlgoPairs;
};
typedef struct _DOT11_RECV_EXTENSION_INFO {
  ULONG uVersion;
  PVOID pvReserved;
  DOT11_PHY_TYPE dot11PhyType;
  ULONG uChCenterFrequency;
  LONG lRSSI;
  LONG lRSSIMin;
  LONG lRSSIMax;
  ULONG uRSSI;
  UCHAR ucPriority;
  UCHAR ucDataRate;
  UCHAR ucPeerMacAddress[6];
  ULONG dwExtendedStatus;
  HANDLE hWEPOffloadContext;
  HANDLE hAuthOffloadContext;
  USHORT usWEPAppliedMask;
  USHORT usWPAMSDUPriority;
  DOT11_IV48_COUNTER dot11LowestIV48Counter;
  USHORT usDot11LeftRWBitMap;
  DOT11_IV48_COUNTER dot11HighestIV48Counter;
  USHORT usDot11RightRWBitMap;
  USHORT usNumberOfMPDUsReceived;
  USHORT usNumberOfFragments;
  PVOID pNdisPackets[1];
} DOT11_RECV_EXTENSION_INFO, *PDOT11_RECV_EXTENSION_INFO;
typedef struct _DOT11_RECV_EXTENSION_INFO_V2 {
  ULONG uVersion;
  PVOID pvReserved;
  DOT11_PHY_TYPE dot11PhyType;
  ULONG uChCenterFrequency;
  LONG lRSSI;
  ULONG uRSSI;
  UCHAR ucPriority;
  UCHAR ucDataRate;
  UCHAR ucPeerMacAddress[6];
  ULONG dwExtendedStatus;
  HANDLE hWEPOffloadContext;
  HANDLE hAuthOffloadContext;
  USHORT usWEPAppliedMask;
  USHORT usWPAMSDUPriority;
  DOT11_IV48_COUNTER dot11LowestIV48Counter;
  USHORT usDot11LeftRWBitMap;
  DOT11_IV48_COUNTER dot11HighestIV48Counter;
  USHORT usDot11RightRWBitMap;
  USHORT usNumberOfMPDUsReceived;
  USHORT usNumberOfFragments;
  PVOID pNdisPackets[1];
} DOT11_RECV_EXTENSION_INFO_V2, *PDOT11_RECV_EXTENSION_INFO_V2;
#define DOT11_STATUS_SUCCESS 0x00000001
#define DOT11_STATUS_RETRY_LIMIT_EXCEEDED 0x00000002
#define DOT11_STATUS_UNSUPPORTED_PRIORITY 0x00000004
#define DOT11_STATUS_UNSUPPORTED_SERVICE_CLASS 0x00000008
#define DOT11_STATUS_UNAVAILABLE_PRIORITY 0x00000010
#define DOT11_STATUS_UNAVAILABLE_SERVICE_CLASS 0x00000020
#define DOT11_STATUS_XMIT_MSDU_TIMER_EXPIRED 0x00000040
#define DOT11_STATUS_UNAVAILABLE_BSS 0x00000080
#define DOT11_STATUS_EXCESSIVE_DATA_LENGTH 0x00000100
#define DOT11_STATUS_ENCRYPTION_FAILED 0x00000200
#define DOT11_STATUS_WEP_KEY_UNAVAILABLE 0x00000400
#define DOT11_STATUS_ICV_VERIFIED 0x00000800
#define DOT11_STATUS_PACKET_REASSEMBLED 0x00001000
#define DOT11_STATUS_PACKET_NOT_REASSEMBLED 0x00002000
#define DOT11_STATUS_GENERATE_AUTH_FAILED 0x00004000
#define DOT11_STATUS_AUTH_NOT_VERIFIED 0x00008000
#define DOT11_STATUS_AUTH_VERIFIED 0x00010000
#define DOT11_STATUS_AUTH_FAILED 0x00020000
#define DOT11_STATUS_PS_LIFETIME_EXPIRED 0x00040000
typedef struct _DOT11_STATUS_INDICATION {
  ULONG uStatusType;
  NDIS_STATUS ndisStatus;
} DOT11_STATUS_INDICATION, *PDOT11_STATUS_INDICATION;
typedef struct DOT11_MPDU_MAX_LENGTH_INDICATION {
  NDIS_OBJECT_HEADER Header;
  ULONG uPhyId;
  ULONG uMPDUMaxLength;
} DOT11_MPDU_MAX_LENGTH_INDICATION, *PDOT11_MPDU_MAX_LENGTH_INDICATION;
#define DOT11_MPDU_MAX_LENGTH_INDICATION_REVISION_1 1
#define DOT11_ASSOCIATION_START_PARAMETERS_REVISION_1 1
typedef struct DOT11_ASSOCIATION_START_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  DOT11_MAC_ADDRESS MacAddr;
  DOT11_SSID SSID;
  ULONG uIHVDataOffset, uIHVDataSize;
} DOT11_ASSOCIATION_START_PARAMETERS, *PDOT11_ASSOCIATION_START_PARAMETERS;
typedef struct DOT11_ENCAP_ENTRY {
  USHORT usEtherType;
  USHORT usEncapType;
} DOT11_ENCAP_ENTRY, *PDOT11_ENCAP_ENTRY;
typedef enum DOT11_DS_INFO {
  DOT11_DS_CHANGED,
  DOT11_DS_UNCHANGED,
  DOT11_DS_UNKNOWN
} DOT11_DS_INFO, *PDOT11_DS_INFO;
typedef ULONG DOT11_ASSOC_STATUS;
#define DOT11_ENCAP_RFC_1042 1
#define DOT11_ENCAP_802_1H 2
#define DOT11_STATUS_SCAN_CONFIRM 1
#define DOT11_STATUS_JOIN_CONFIRM 2
#define DOT11_STATUS_START_CONFIRM 3
#define DOT11_STATUS_RESET_CONFIRM 4
#define DOT11_STATUS_AP_JOIN_CONFIRM 5
#define DOT11_STATUS_MPDU_MAX_LENGTH_CHANGED 6
#define DOT11_ASSOC_STATUS_SUCCESS 0
#define DOT11_ASSOC_STATUS_FAILURE 0x00000001U
#define DOT11_ASSOC_STATUS_UNREACHABLE 0x00000002U
#define DOT11_ASSOC_STATUS_RADIO_OFF 0x00000003U
#define DOT11_ASSOC_STATUS_PHY_DISABLED 0x00000004U
#define DOT11_ASSOC_STATUS_CANCELLED 0x00000005U
#define DOT11_ASSOC_STATUS_CANDIDATE_LIST_EXHAUSTED 0x00000006U
#define DOT11_ASSOC_STATUS_DISASSOCIATED_BY_OS 0x00000007U
#define DOT11_ASSOC_STATUS_DISASSOCIATED_BY_ROAMING 0x00000008U
#define DOT11_ASSOC_STATUS_DISASSOCIATED_BY_RESET 0x00000009U
#define DOT11_ASSOC_STATUS_SYSTEM_ERROR 0x0000000aU
#define DOT11_ASSOC_STATUS_ROAMING_BETTER_AP_FOUND 0x0000000bU
#define DOT11_ASSOC_STATUS_ROAMING_ASSOCIATION_LOST 0x0000000cU
#define DOT11_ASSOC_STATUS_ROAMING_ADHOC 0x0000000dU
#define DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED 0x00010000U
#define DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED_START DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED
#define DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED_END 0x0001ffffU
#define DOT11_ASSOC_STATUS_PEER_DISASSOCIATED 0x00020000U
#define DOT11_ASSOC_STATUS_PEER_DISASSOCIATED_START DOT11_ASSOC_STATUS_PEER_DISASSOCIATED
#define DOT11_ASSOC_STATUS_PEER_DISASSOCIATED_END 0x0002ffffU
#define DOT11_ASSOC_STATUS_ASSOCIATION_RESPONSE 0x00030000U
#define DOT11_ASSOC_STATUS_ASSOCIATION_RESPONSE_START DOT11_ASSOC_STATUS_ASSOCIATION_RESPONSE
#define DOT11_ASSOC_STATUS_ASSOCIATION_RESPONSE_END 0x0003ffffU
#define DOT11_ASSOC_STATUS_REASON_CODE_MASK 0xffffU
#define DOT11_ASSOC_STATUS_IHV_START 0x80000000U
#define DOT11_ASSOC_STATUS_IHV_END 0xffffffffU
#define DOT11_ASSOCIATION_COMPLETION_PARAMETERS_REVISION_1 1
#define DOT11_ASSOCIATION_COMPLETION_PARAMETERS_REVISION_2 2
typedef struct DOT11_ASSOCIATION_COMPLETION_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  DOT11_MAC_ADDRESS MacAddr;
  DOT11_ASSOC_STATUS uStatus;
  BOOLEAN bReAssocReq;
  BOOLEAN bReAssocResp;
  ULONG uAssocReqOffset, uAssocReqSize;
  ULONG uAssocRespOffset, uAssocRespSize;
  ULONG uBeaconOffset, uBeaconSize;
  ULONG uIHVDataOffset, uIHVDataSize;
  DOT11_AUTH_ALGORITHM AuthAlgo;
  DOT11_CIPHER_ALGORITHM UnicastCipher;
  DOT11_CIPHER_ALGORITHM MulticastCipher;
  ULONG uActivePhyListOffset, uActivePhyListSize;
  BOOLEAN bFourAddressSupported;
  BOOLEAN bPortAuthorized;
  UCHAR ucActiveQoSProtocol;
  DOT11_DS_INFO DSInfo;
  ULONG uEncapTableOffset, uEncapTableSize;
} DOT11_ASSOCIATION_COMPLETION_PARAMETERS, *PDOT11_ASSOCIATION_COMPLETION_PARAMETERS;
#define DOT11_CONNECTION_STATUS_SUCCESS DOT11_ASSOC_STATUS_SUCCESS
#define DOT11_CONNECTION_STATUS_FAILURE DOT11_ASSOC_STATUS_FAILURE
#define DOT11_CONNECTION_STATUS_CANDIDATE_LIST_EXHAUSTED DOT11_ASSOC_STATUS_CANDIDATE_LIST_EXHAUSTED
#define DOT11_CONNECTION_STATUS_PHY_POWER_DOWN DOT11_ASSOC_STATUS_RADIO_OFF
#define DOT11_CONNECTION_STATUS_CANCELLED DOT11_ASSOC_STATUS_CANCELLED
#define DOT11_CONNECTION_STATUS_IHV_START DOT11_ASSOC_STATUS_IHV_START
#define DOT11_CONNECTION_STATUS_IHV_END DOT11_ASSOC_STATUS_IHV_END
#define DOT11_ROAMING_REASON_BETTER_AP_FOUND DOT11_ASSOC_STATUS_ROAMING_BETTER_AP_FOUND
#define DOT11_ROAMING_REASON_ASSOCIATION_LOST DOT11_ASSOC_STATUS_ROAMING_ASSOCIATION_LOST
#define DOT11_ROAMING_REASON_ADHOC DOT11_ASSOC_STATUS_ROAMING_ADHOC
#define DOT11_ROAMING_REASON_IHV_START DOT11_ASSOC_STATUS_IHV_START
#define DOT11_ROAMING_REASON_IHV_END DOT11_ASSOC_STATUS_IHV_END
#define DOT11_DISASSOC_REASON_OS DOT11_ASSOC_STATUS_DISASSOCIATED_BY_OS
#define DOT11_DISASSOC_REASON_PEER_UNREACHABLE DOT11_ASSOC_STATUS_UNREACHABLE
#define DOT11_DISASSOC_REASON_PEER_DEAUTHENTICATED DOT11_ASSOC_STATUS_PEER_DEAUTHENTICATED
#define DOT11_DISASSOC_REASON_PEER_DISASSOCIATED DOT11_ASSOC_STATUS_PEER_DISASSOCIATED
#define DOT11_DISASSOC_REASON_RADIO_OFF DOT11_ASSOC_STATUS_RADIO_OFF
#define DOT11_DISASSOC_REASON_PHY_DISABLED DOT11_ASSOC_STATUS_PHY_DISABLED
#define DOT11_DISASSOC_REASON_IHV_START DOT11_ASSOC_STATUS_IHV_START
#define DOT11_DISASSOC_REASON_IHV_END DOT11_ASSOC_STATUS_IHV_END
#define DOT11_CONNECTION_START_PARAMETERS_REVISION_1 1
#define DOT11_CONNECTION_COMPLETION_PARAMETERS_REVISION_1 1
#define DOT11_ROAMING_START_PARAMETERS_REVISION_1 1
#define DOT11_ROAMING_COMPLETION_PARAMETERS_REVISION_1 1
#define DOT11_DISASSOCIATION_PARAMETERS_REVISION_1 1
#define DOT11_TKIPMIC_FAILURE_PARAMETERS_REVISION_1 1
#define DOT11_PMKID_CANDIDATE_LIST_PARAMETERS_REVISION_1 1
#define DOT11_PHY_STATE_PARAMETERS_REVISION_1 1
#define DOT11_LINK_QUALITY_PARAMETERS_REVISION_1 1
#define DOT11_EXTSTA_SEND_CONTEXT_REVISION_1 1
#define DOT11_EXTSTA_RECV_CONTEXT_REVISION_1 1
typedef struct DOT11_CONNECTION_START_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  DOT11_BSS_TYPE BSSType;
  DOT11_MAC_ADDRESS AdhocBSSID;
  DOT11_SSID AdhocSSID;
} DOT11_CONNECTION_START_PARAMETERS, *PDOT11_CONNECTION_START_PARAMETERS;
typedef struct DOT11_CONNECTION_COMPLETION_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  DOT11_ASSOC_STATUS uStatus;
} DOT11_CONNECTION_COMPLETION_PARAMETERS, *PDOT11_CONNECTION_COMPLETION_PARAMETERS;
typedef struct DOT11_ROAMING_START_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  DOT11_MAC_ADDRESS AdhocBSSID;
  DOT11_SSID AdhocSSID;
  DOT11_ASSOC_STATUS uRoamingReason;
} DOT11_ROAMING_START_PARAMETERS, *PDOT11_ROAMING_START_PARAMETERS;
typedef struct DOT11_ROAMING_COMPLETION_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  DOT11_ASSOC_STATUS uStatus;
} DOT11_ROAMING_COMPLETION_PARAMETERS, *PDOT11_ROAMING_COMPLETION_PARAMETERS;
typedef struct DOT11_DISASSOCIATION_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  DOT11_MAC_ADDRESS MacAddr;
  DOT11_ASSOC_STATUS uReason;
  ULONG uIHVDataOffset, uIHVDataSize;
} DOT11_DISASSOCIATION_PARAMETERS, *PDOT11_DISASSOCIATION_PARAMETERS;
typedef struct DOT11_TKIPMIC_FAILURE_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  BOOLEAN bDefaultKeyFailure;
  ULONG uKeyIndex;
  DOT11_MAC_ADDRESS PeerMac;
} DOT11_TKIPMIC_FAILURE_PARAMETERS, *PDOT11_TKIPMIC_FAILURE_PARAMETERS;
typedef struct DOT11_PMKID_CANDIDATE_LIST_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  ULONG uCandidateListSize;
  ULONG uCandidateListOffset;
} DOT11_PMKID_CANDIDATE_LIST_PARAMETERS, *PDOT11_PMKID_CANDIDATE_LIST_PARAMETERS;
typedef struct DOT11_BSSID_CANDIDATE {
  DOT11_MAC_ADDRESS BSSID;
  ULONG uFlags;
} DOT11_BSSID_CANDIDATE, *PDOT11_BSSID_CANDIDATE;
typedef struct DOT11_PHY_STATE_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  ULONG uPhyId;
  BOOLEAN bHardwarePhyState;
  BOOLEAN bSoftwarePhyState;
} DOT11_PHY_STATE_PARAMETERS, *PDOT11_PHY_STATE_PARAMETERS;
typedef struct DOT11_LINK_QUALITY_ENTRY {
  DOT11_MAC_ADDRESS PeerMacAddr;
  UCHAR ucLinkQuality;
} DOT11_LINK_QUALITY_ENTRY, *PDOT11_LINK_QUALITY_ENTRY;
typedef struct DOT11_LINK_QUALITY_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  ULONG uLinkQualityListSize;
  ULONG uLinkQualityListOffset;
} DOT11_LINK_QUALITY_PARAMETERS, *PDOT11_LINK_QUALITY_PARAMETERS;
typedef struct DOT11_EXTSTA_SEND_CONTEXT {
  NDIS_OBJECT_HEADER Header;
  USHORT usExemptionActionType;
  ULONG uPhyId;
  ULONG uDelayedSleepValue;
  PVOID pvMediaSpecificInfo;
  ULONG uSendFlags;
} DOT11_EXTSTA_SEND_CONTEXT, *PDOT11_EXTSTA_SEND_CONTEXT;
typedef struct DOT11_EXTSTA_RECV_CONTEXT {
  NDIS_OBJECT_HEADER Header;
  ULONG uReceiveFlags;
  ULONG uPhyId;
  ULONG uChCenterFrequency;
  USHORT usNumberOfMPDUsReceived;
  LONG lRSSI;
  UCHAR ucDataRate;
  ULONG uSizeMediaSpecificInfo;
  PVOID pvMediaSpecificInfo;
  ULONGLONG ullTimestamp;
} DOT11_EXTSTA_RECV_CONTEXT, *PDOT11_EXTSTA_RECV_CONTEXT;
#define OID_DOT11_PRIVATE_OIDS_START (OID_DOT11_NDIS_START + 1024)
#define OID_DOT11_CURRENT_ADDRESS (OID_DOT11_PRIVATE_OIDS_START + 2)
#define OID_DOT11_PERMANENT_ADDRESS (OID_DOT11_PRIVATE_OIDS_START + 3)
#define OID_DOT11_MULTICAST_LIST (OID_DOT11_PRIVATE_OIDS_START + 4)
#define OID_DOT11_MAXIMUM_LIST_SIZE (OID_DOT11_PRIVATE_OIDS_START + 5)
#define DOT11_RECV_FLAG_RAW_PACKET 0x00000001U
#define DOT11_RECV_FLAG_RAW_PACKET_FCS_FAILURE 0x00000002U
#define DOT11_RECV_FLAG_RAW_PACKET_TIMESTAMP 0x00000004U
#define DOT11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x00000001U
#define DEFINE_NWF_GUID(NAME,ORD) DEFINE_GUID (NAME, 0x6cb9a43e + (ORD), 0xc45f, 0x4039, 0x9f, 0xe6, 0xd0, 0x8c, 0xb0, 0x57, 0x18, 0x4c)
extern const GUID GUID_NWF_OFFLOAD_CAPABILITY;
extern const GUID GUID_NWF_CURRENT_OFFLOAD_CAPABILITY;
extern const GUID GUID_NWF_WEP_OFFLOAD;
extern const GUID GUID_NWF_WEP_UPLOAD;
extern const GUID GUID_NWF_DEFAULT_WEP_OFFLOAD;
extern const GUID GUID_NWF_DEFAULT_WEP_UPLOAD;
extern const GUID GUID_NWF_MPDU_MAX_LENGTH;
extern const GUID GUID_NWF_OPERATION_MODE_CAPABILITY;
extern const GUID GUID_NWF_CURRENT_OPERATION_MODE;
extern const GUID GUID_NWF_CURRENT_PACKET_FILTER;
extern const GUID GUID_NWF_ATIM_WINDOW;
extern const GUID GUID_NWF_SCAN_REQUEST;
extern const GUID GUID_NWF_CURRENT_PHY_TYPE;
extern const GUID GUID_NWF_JOIN_REQUEST;
extern const GUID GUID_NWF_START_REQUEST;
extern const GUID GUID_NWF_UPDATE_IE;
extern const GUID GUID_NWF_RESET_REQUEST;
extern const GUID GUID_NWF_NIC_POWER_STATE;
extern const GUID GUID_NWF_OPTIONAL_CAPABILITY;
extern const GUID GUID_NWF_CURRENT_OPTIONAL_CAPABILITY;
extern const GUID GUID_NWF_STATION_ID;
extern const GUID GUID_NWF_MEDIUM_OCCUPANCY_LIMIT;
extern const GUID GUID_NWF_CF_POLLABLE;
extern const GUID GUID_NWF_CFP_PERIOD;
extern const GUID GUID_NWF_CFP_MAX_DURATION;
extern const GUID GUID_NWF_POWER_MGMT_MODE;
extern const GUID GUID_NWF_OPERATIONAL_RATE_SET;
extern const GUID GUID_NWF_BEACON_PERIOD;
extern const GUID GUID_NWF_DTIM_PERIOD;
extern const GUID GUID_NWF_WEP_ICV_ERROR_COUNT;
extern const GUID GUID_NWF_MAC_ADDRESS;
extern const GUID GUID_NWF_RTS_THRESHOLD;
extern const GUID GUID_NWF_SHORT_RETRY_LIMIT;
extern const GUID GUID_NWF_LONG_RETRY_LIMIT;
extern const GUID GUID_NWF_FRAGMENTATION_THRESHOLD;
extern const GUID GUID_NWF_MAX_TRANSMIT_MSDU_LIFETIME;
extern const GUID GUID_NWF_MAX_RECEIVE_LIFETIME;
extern const GUID GUID_NWF_COUNTERS_ENTRY;
extern const GUID GUID_NWF_SUPPORTED_PHY_TYPES;
extern const GUID GUID_NWF_CURRENT_REG_DOMAIN;
extern const GUID GUID_NWF_TEMP_TYPE;
extern const GUID GUID_NWF_CURRENT_TX_ANTENNA;
extern const GUID GUID_NWF_DIVERSITY_SUPPORT;
extern const GUID GUID_NWF_CURRENT_RX_ANTENNA;
extern const GUID GUID_NWF_SUPPORTED_POWER_LEVELS;
extern const GUID GUID_NWF_CURRENT_TX_POWER_LEVEL;
extern const GUID GUID_NWF_HOP_TIME;
extern const GUID GUID_NWF_CURRENT_CHANNEL_NUMBER;
extern const GUID GUID_NWF_MAX_DWELL_TIME;
extern const GUID GUID_NWF_CURRENT_DWELL_TIME;
extern const GUID GUID_NWF_CURRENT_SET;
extern const GUID GUID_NWF_CURRENT_PATTERN;
extern const GUID GUID_NWF_CURRENT_INDEX;
extern const GUID GUID_NWF_CURRENT_CHANNEL;
extern const GUID GUID_NWF_CCA_MODE_SUPPORTED;
extern const GUID GUID_NWF_CURRENT_CCA_MODE;
extern const GUID GUID_NWF_ED_THRESHOLD;
extern const GUID GUID_NWF_CCA_WATCHDOG_TIMER_MAX;
extern const GUID GUID_NWF_CCA_WATCHDOG_COUNT_MAX;
extern const GUID GUID_NWF_CCA_WATCHDOG_TIMER_MIN;
extern const GUID GUID_NWF_CCA_WATCHDOG_COUNT_MIN;
extern const GUID GUID_NWF_REG_DOMAINS_SUPPORT_VALUE;
extern const GUID GUID_NWF_SUPPORTED_TX_ANTENNA;
extern const GUID GUID_NWF_SUPPORTED_RX_ANTENNA;
extern const GUID GUID_NWF_DIVERSITY_SELECTION_RX;
extern const GUID GUID_NWF_SUPPORTED_DATA_RATES_VALUE;
extern const GUID GUID_NWF_CURRENT_FREQUENCY;
extern const GUID GUID_NWF_TI_THRESHOLD;
extern const GUID GUID_NWF_FREQUENCY_BANDS_SUPPORTED;
extern const GUID GUID_NWF_SHORT_PREAMBLE_OPTION_IMPLEMENTED;
extern const GUID GUID_NWF_PBCC_OPTION_IMPLEMENTED;
extern const GUID GUID_NWF_CHANNEL_AGILITY_PRESENT;
extern const GUID GUID_NWF_CHANNEL_AGILITY_ENABLED;
extern const GUID GUID_NWF_HR_CCA_MODE_SUPPORTED;
extern const GUID GUID_NWF_MULTI_DOMAIN_CAPABILITY_IMPLEMENTED;
extern const GUID GUID_NWF_MULTI_DOMAIN_CAPABILITY_ENABLED;
extern const GUID GUID_NWF_COUNTRY_STRING;
extern const GUID GUID_NWF_MULTI_DOMAIN_CAPABILITY;
extern const GUID GUID_NWF_EHCC_PRIME_RADIX;
extern const GUID GUID_NWF_EHCC_NUMBER_OF_CHANNELS_FAMILY_INDEX;
extern const GUID GUID_NWF_EHCC_CAPABILITY_IMPLEMENTED;
extern const GUID GUID_NWF_EHCC_CAPABILITY_ENABLED;
extern const GUID GUID_NWF_HOP_ALGORITHM_ADOPTED;
extern const GUID GUID_NWF_RANDOM_TABLE_FLAG;
extern const GUID GUID_NWF_NUMBER_OF_HOPPING_SETS;
extern const GUID GUID_NWF_HOP_MODULUS;
extern const GUID GUID_NWF_HOP_OFFSET;
extern const GUID GUID_NWF_HOPPING_PATTERN;
extern const GUID GUID_NWF_RANDOM_TABLE_FIELD_NUMBER;
extern const GUID GUID_NWF_WPA_TSC;
extern const GUID GUID_NWF_RSSI_RANGE;
extern const GUID GUID_NWF_RF_USAGE;
extern const GUID GUID_NWF_NIC_SPECIFIC_EXTENSION;
extern const GUID GUID_NWF_AP_JOIN_REQUEST;
extern const GUID GUID_NWF_ERP_PBCC_OPTION_IMPLEMENTED;
extern const GUID GUID_NWF_ERP_PBCC_OPTION_ENABLED;
extern const GUID GUID_NWF_DSSS_OFDM_OPTION_IMPLEMENTED;
extern const GUID GUID_NWF_DSSS_OFDM_OPTION_ENABLED;
extern const GUID GUID_NWF_SHORT_SLOT_TIME_OPTION_IMPLEMENTED;
extern const GUID GUID_NWF_SHORT_SLOT_TIME_OPTION_ENABLED;
extern const GUID GUID_NWF_MAX_MAC_ADDRESS_STATES;
extern const GUID GUID_NWF_RECV_SENSITIVITY_LIST;
extern const GUID GUID_NWF_WME_IMPLEMENTED;
extern const GUID GUID_NWF_WME_ENABLED;
extern const GUID GUID_NWF_WME_AC_PARAMETERS;
extern const GUID GUID_NWF_WME_UPDATE_IE;
extern const GUID GUID_NWF_QOS_TX_QUEUES_SUPPORTED;
extern const GUID GUID_NWF_QOS_TX_DURATION;
extern const GUID GUID_NWF_QOS_TX_MEDIUM_TIME;
extern const GUID GUID_NWF_SUPPORTED_OFDM_FREQUENCY_LIST;
extern const GUID GUID_NWF_SUPPORTED_DSSS_CHANNEL_LIST;
extern const GUID GUID_NWF_AUTO_CONFIG_ENABLED;
extern const GUID GUID_NWF_ENUM_BSS_LIST;
extern const GUID GUID_NWF_FLUSH_BSS_LIST;
extern const GUID GUID_NWF_POWER_MGMT_REQUEST;
extern const GUID GUID_NWF_DESIRED_SSID_LIST;
extern const GUID GUID_NWF_EXCLUDED_MAC_ADDRESS_LIST;
extern const GUID GUID_NWF_DESIRED_BSSID_LIST;
extern const GUID GUID_NWF_DESIRED_BSS_TYPE;
extern const GUID GUID_NWF_PMKID_LIST;
extern const GUID GUID_NWF_CONNECT_REQUEST;
extern const GUID GUID_NWF_EXCLUDE_UNENCRYPTED;
extern const GUID GUID_NWF_STATISTICS;
extern const GUID GUID_NWF_PRIVACY_EXEMPTION_LIST;
extern const GUID GUID_NWF_ENABLED_AUTHENTICATION_ALGORITHM;
extern const GUID GUID_NWF_SUPPORTED_UNICAST_ALGORITHM_PAIR;
extern const GUID GUID_NWF_ENABLED_UNICAST_CIPHER_ALGORITHM;
extern const GUID GUID_NWF_SUPPORTED_MULTICAST_ALGORITHM_PAIR;
extern const GUID GUID_NWF_ENABLED_MULTICAST_CIPHER_ALGORITHM;
extern const GUID GUID_NWF_CIPHER_DEFAULT_KEY_ID;
extern const GUID GUID_NWF_CIPHER_DEFAULT_KEY;
extern const GUID GUID_NWF_CIPHER_KEY_MAPPING_KEY;
extern const GUID GUID_NWF_ENUM_ASSOCIATION_INFO;
extern const GUID GUID_NWF_DISCONNECT_REQUEST;
extern const GUID GUID_NWF_UNICAST_USE_GROUP_ENABLED;
extern const GUID GUID_NWF_PHY_STATE;
extern const GUID GUID_NWF_DESIRED_PHY_LIST;
extern const GUID GUID_NWF_CURRENT_PHY_ID;
extern const GUID GUID_NWF_MEDIA_STREAMING_ENABLED;
extern const GUID GUID_NWF_UNREACHABLE_DETECTION_THRESHOLD;
extern const GUID GUID_NWF_ACTIVE_PHY_LIST;
extern const GUID GUID_NWF_EXTSTA_CAPABILITY;
extern const GUID GUID_NWF_DATA_RATE_MAPPING_TABLE;
extern const GUID GUID_NWF_SUPPORTED_COUNTRY_OR_REGION_STRING;
extern const GUID GUID_NWF_DESIRED_COUNTRY_OR_REGION_STRING;
extern const GUID GUID_NWF_PORT_STATE_NOTIFICATION;
extern const GUID GUID_NWF_IBSS_PARAMS;
extern const GUID GUID_NWF_QOS_PARAMS;
extern const GUID GUID_NWF_SAFE_MODE_ENABLED;
extern const GUID GUID_NWF_HIDDEN_NETWORK_ENABLED;
extern const GUID GUID_NWF_ASSOCIATION_PARAMS;
extern const GUID GUID_NWF_CURRENT_ADDRESS;
extern const GUID GUID_NWF_PERMANENT_ADDRESS;
extern const GUID GUID_NWF_MULTICAST_LIST;
extern const GUID GUID_NWF_MAXIMUM_LIST_SIZE;
typedef struct _DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  NDIS_STATUS Status;
} DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS, *PDOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS;
#define NWF_MANUFACTURING_OID (0x08U)
#define DOT11_SIZEOF_OFFLOAD_NETWORK_STATUS_PARAMETERS_REVISION_1 sizeof (DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS)
#define DOT11_MANUFACTURING_TEST_REVISION_1 1
#define DOT11_MANUFACTURING_CALLBACK_REVISION_1 1
#define DOT11_OFFLOAD_NETWORK_STATUS_PARAMETERS_REVISION_1 1
#define OID_DOT11_MANUFACTURING_TEST NWF_DEFINE_OID (0x01, NWF_MANUFACTURING_OID, NWF_OPTIONAL_OID)
typedef enum _DOT11_MANUFACTURING_TEST_TYPE {
  dot11_manufacturing_test_unknown = 0,
  dot11_manufacturing_test_self_start = 1,
  dot11_manufacturing_test_self_query_result = 2,
  dot11_manufacturing_test_rx = 3,
  dot11_manufacturing_test_tx = 4,
  dot11_manufacturing_test_query_adc = 5,
  dot11_manufacturing_test_set_data = 6,
  dot11_manufacturing_test_query_data = 7,
  dot11_manufacturing_test_sleep = 8,
  dot11_manufacturing_test_awake = 9,
  dot11_manufacturing_test_IHV_start = 0x80000000,
  dot11_manufacturing_test_IHV_end = 0xffffffff
} DOT11_MANUFACTURING_TEST_TYPE, *PDOT11_MANUFACTURING_TEST_TYPE;
typedef struct _DOT11_MANUFACTURING_TEST {
  DOT11_MANUFACTURING_TEST_TYPE dot11ManufacturingTestType;
  ULONG uBufferLength;
  UCHAR ucBuffer[1];
} DOT11_MANUFACTURING_TEST, *PDOT11_MANUFACTURING_TEST;
typedef enum DOT11_MANUFACTURING_SELF_TEST_TYPE {
  DOT11_MANUFACTURING_SELF_TEST_TYPE_INTERFACE = 1,
  DOT11_MANUFACTURING_SELF_TEST_TYPE_RF_INTERFACE,
  DOT11_MANUFACTURING_SELF_TEST_TYPE_BT_COEXISTENCE
} DOT11_MANUFACTURING_SELF_TEST_TYPE, *PDOT11_MANUFACTURING_SELF_TEST_TYPE;
typedef struct _DOT11_MANUFACTURING_SELF_TEST_SET_PARAMS {
  DOT11_MANUFACTURING_SELF_TEST_TYPE SelfTestType;
  ULONG uTestID;
  ULONG uPinBitMask;
  PVOID pvContext;
  ULONG uBufferLength;
  UCHAR ucBufferIn[1];
} DOT11_MANUFACTURING_SELF_TEST_SET_PARAMS, *PDOT11_MANUFACTURING_SELF_TEST_SET_PARAMS;
typedef struct _DOT11_MANUFACTURING_SELF_TEST_QUERY_RESULTS {
  DOT11_MANUFACTURING_SELF_TEST_TYPE SelfTestType;
  ULONG uTestID;
  BOOLEAN bResult;
  ULONG uPinFailedBitMask;
  PVOID pvContext;
  ULONG uBytesWrittenOut;
  UCHAR ucBufferOut[1];
} DOT11_MANUFACTURING_SELF_TEST_QUERY_RESULTS, *PDOT11_MANUFACTURING_SELF_TEST_QUERY_RESULTS;
typedef enum DOT11_BAND {
  dot11_band_2p4g = 1,
  dot11_band_4p9g,
  dot11_band_5g
} DOT11_BAND, *PDOT11_BAND;
typedef struct _DOT11_MANUFACTURING_FUNCTIONAL_TEST_RX {
  BOOLEAN bEnabled;
  DOT11_BAND Dot11Band;
  ULONG uChannel;
  LONG PowerLevel;
} DOT11_MANUFACTURING_FUNCTIONAL_TEST_RX, *PDOT11_MANUFACTURING_FUNCTIONAL_TEST_RX;
typedef struct _DOT11_MANUFACTURING_FUNCTIONAL_TEST_TX {
  BOOLEAN bEnable;
  BOOLEAN bOpenLoop;
  DOT11_BAND Dot11Band;
  ULONG uChannel;
  ULONG uSetPowerLevel;
  LONG ADCPowerLevel;
} DOT11_MANUFACTURING_FUNCTIONAL_TEST_TX, *PDOT11_MANUFACTURING_FUNCTIONAL_TEST_TX;
typedef struct _DOT11_MANUFACTURING_FUNCTIONAL_TEST_QUERY_ADC {
  DOT11_BAND Dot11Band;
  ULONG uChannel;
  LONG ADCPowerLevel;
} DOT11_MANUFACTURING_FUNCTIONAL_TEST_QUERY_ADC, *PDOT11_MANUFACTURING_FUNCTIONAL_TEST_QUERY_ADC;
typedef struct _DOT11_MANUFACTURING_TEST_SET_DATA {
  ULONG uKey;
  ULONG uOffset;
  ULONG uBufferLength;
  UCHAR ucBufferIn[1];
} DOT11_MANUFACTURING_TEST_SET_DATA, *PDOT11_MANUFACTURING_TEST_SET_DATA;
typedef struct _DOT11_MANUFACTURING_TEST_QUERY_DATA {
  ULONG uKey;
  ULONG uOffset;
  ULONG uBufferLength;
  ULONG uBytesRead;
  UCHAR ucBufferOut[1];
} DOT11_MANUFACTURING_TEST_QUERY_DATA, *PDOT11_MANUFACTURING_TEST_QUERY_DATA;
typedef struct _DOT11_MANUFACTURING_TEST_SLEEP {
  ULONG uSleepTime;
  PVOID pvContext;
} DOT11_MANUFACTURING_TEST_SLEEP, *PDOT11_MANUFACTURING_TEST_SLEEP;
typedef enum _DOT11_MANUFACTURING_CALLBACK_TYPE {
  dot11_manufacturing_callback_unknown = 0,
  dot11_manufacturing_callback_self_test_complete = 1,
  dot11_manufacturing_callback_sleep_complete = 2,
  dot11_manufacturing_callback_IHV_start = 0x80000000,
  dot11_manufacturing_callback_IHV_end = 0xffffffff
} DOT11_MANUFACTURING_CALLBACK_TYPE, *PDOT11_MANUFACTURING_CALLBACK_TYPE;
typedef struct DOT11_MANUFACTURING_CALLBACK_PARAMETERS {
  NDIS_OBJECT_HEADER Header;
  DOT11_MANUFACTURING_CALLBACK_TYPE dot11ManufacturingCallbackType;
  ULONG uStatus;
  PVOID pvContext;
} DOT11_MANUFACTURING_CALLBACK_PARAMETERS, *PDOT11_MANUFACTURING_CALLBACK_PARAMETERS;
#define fNDIS_GUID_TO_OID 0x00000001
#define fNDIS_GUID_TO_STATUS 0x00000002
#define fNDIS_GUID_ANSI_STRING 0x00000004
#define fNDIS_GUID_UNICODE_STRING 0x00000008
#define fNDIS_GUID_ARRAY 0x00000010
#define fNDIS_GUID_ALLOW_READ 0x00000020
#define fNDIS_GUID_ALLOW_WRITE 0x00000040
#define fNDIS_GUID_METHOD 0x00000080
#define fNDIS_GUID_NDIS_RESERVED 0x00000100
#define fNDIS_GUID_SUPPORT_COMMON_HEADER 0x00000200
#define NDIS_PACKET_TYPE_DIRECTED 0x00000001
#define NDIS_PACKET_TYPE_MULTICAST 0x00000002
#define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
#define NDIS_PACKET_TYPE_BROADCAST 0x00000008
#define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
#define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
#define NDIS_PACKET_TYPE_SMT 0x00000040
#define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
#define NDIS_PACKET_TYPE_GROUP 0x00001000
#define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000
#define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000
#define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000
#define NDIS_PACKET_TYPE_NO_LOCAL 0x00010000
#define NDIS_RING_SIGNAL_LOSS 0x00008000
#define NDIS_RING_HARD_ERROR 0x00004000
#define NDIS_RING_SOFT_ERROR 0x00002000
#define NDIS_RING_TRANSMIT_BEACON 0x00001000
#define NDIS_RING_LOBE_WIRE_FAULT 0x00000800
#define NDIS_RING_AUTO_REMOVAL_ERROR 0x00000400
#define NDIS_RING_REMOVE_RECEIVED 0x00000200
#define NDIS_RING_COUNTER_OVERFLOW 0x00000100
#define NDIS_RING_SINGLE_STATION 0x00000080
#define NDIS_RING_RING_RECOVERY 0x00000040
#define NDIS_PROT_OPTION_ESTIMATED_LENGTH 0x00000001
#define NDIS_PROT_OPTION_NO_LOOPBACK 0x00000002
#define NDIS_PROT_OPTION_NO_RSVD_ON_RCVPKT 0x00000004
#define NDIS_PROT_OPTION_SEND_RESTRICTED 0x00000008
#define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
#define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
#define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
#define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
#define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
#define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
#define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
#define NDIS_MAC_OPTION_SUPPORTS_MAC_ADDRESS_OVERWRITE 0x00000080
#define NDIS_MAC_OPTION_RECEIVE_AT_DPC 0x00000100
#define NDIS_MAC_OPTION_8021Q_VLAN 0x00000200
#define NDIS_MAC_OPTION_RESERVED 0x80000000
#define NDIS_MEDIA_CAP_TRANSMIT 0x00000001
#define NDIS_MEDIA_CAP_RECEIVE 0x00000002
#define NDIS_CO_MAC_OPTION_DYNAMIC_LINK_SPEED 0x00000001
  typedef struct _NDIS_GUID {
    GUID Guid;
    __extension__ union {
      NDIS_OID Oid;
      NDIS_STATUS Status;
    };
    ULONG Size;
    ULONG Flags;
  } NDIS_GUID, *PNDIS_GUID;
  typedef struct _NDIS_IRDA_PACKET_INFO {
    ULONG ExtraBOFs;
    ULONG MinTurnAroundTime;
  } NDIS_IRDA_PACKET_INFO, *PNDIS_IRDA_PACKET_INFO;
#define NDIS_MAKE_NET_LUID(PNLUID,IFTYPE,NLUIDIDX) { (PNLUID)->Info.IfType = IFTYPE; (PNLUID)->Info.NetLuidIndex = NLUIDIDX; (PNLUID)->Info.Reserved = 0; }
#define MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED 32
#define NDIS_IF_MAX_STRING_SIZE IF_MAX_STRING_SIZE
#define NDIS_MAX_PHYS_ADDRESS_LENGTH IF_MAX_PHYS_ADDRESS_LENGTH
#define NDIS_LINK_STATE_XMIT_LINK_SPEED_AUTO_NEGOTIATED 0x00000001
#define NDIS_LINK_STATE_RCV_LINK_SPEED_AUTO_NEGOTIATED 0x00000002
#define NDIS_LINK_STATE_DUPLEX_AUTO_NEGOTIATED 0x00000004
#define NDIS_LINK_STATE_PAUSE_FUNCTIONS_AUTO_NEGOTIATED 0x00000008
#define NDIS_LINK_STATE_REVISION_1 1
#define NDIS_LINK_PARAMETERS_REVISION_1 1
#define NDIS_OPER_STATE_REVISION_1 1
#define NDIS_IP_OPER_STATUS_INFO_REVISION_1 1
#define NDIS_IP_OPER_STATE_REVISION_1 1
#define NDIS_SIZEOF_LINK_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_LINK_STATE, AutoNegotiationFlags)
#define NDIS_SIZEOF_LINK_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_LINK_PARAMETERS, AutoNegotiationFlags)
#define NDIS_SIZEOF_OPER_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_OPER_STATE, OperationalStatusFlags)
#define NDIS_SIZEOF_IP_OPER_STATUS_INFO_REVISION_1 FIELD_OFFSET (NDIS_IP_OPER_STATUS_INFO, IpOperationalStatus) + MAXIMUM_IP_OPER_STATUS_ADDRESS_FAMILIES_SUPPORTED *sizeof (NDIS_IP_OPER_STATUS)
#define NDIS_SIZEOF_IP_OPER_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_IP_OPER_STATE, IpOperationalStatus)
  typedef IF_COUNTED_STRING NDIS_IF_COUNTED_STRING, *PNDIS_IF_COUNTED_STRING;
  typedef IF_PHYSICAL_ADDRESS NDIS_IF_PHYSICAL_ADDRESS, *PNDIS_IF_PHYSICAL_ADDRESS;
  typedef NET_IF_MEDIA_CONNECT_STATE NDIS_MEDIA_CONNECT_STATE, *PNDIS_MEDIA_CONNECT_STATE;
  typedef NET_IF_MEDIA_DUPLEX_STATE NDIS_MEDIA_DUPLEX_STATE, *PNDIS_MEDIA_DUPLEX_STATE;
  typedef enum _NDIS_SUPPORTED_PAUSE_FUNCTIONS {
    NdisPauseFunctionsUnsupported,
    NdisPauseFunctionsSendOnly,
    NdisPauseFunctionsReceiveOnly,
    NdisPauseFunctionsSendAndReceive,
    NdisPauseFunctionsUnknown
  } NDIS_SUPPORTED_PAUSE_FUNCTIONS, *PNDIS_SUPPORTED_PAUSE_FUNCTIONS;
  typedef struct _NDIS_LINK_STATE {
    NDIS_OBJECT_HEADER Header;
    NDIS_MEDIA_CONNECT_STATE MediaConnectState;
    NDIS_MEDIA_DUPLEX_STATE MediaDuplexState;
    ULONG64 XmitLinkSpeed;
    ULONG64 RcvLinkSpeed;
    NDIS_SUPPORTED_PAUSE_FUNCTIONS PauseFunctions;
    ULONG AutoNegotiationFlags;
  } NDIS_LINK_STATE, *PNDIS_LINK_STATE;
  typedef struct _NDIS_LINK_PARAMETERS {
    NDIS_OBJECT_HEADER Header;
    NDIS_MEDIA_DUPLEX_STATE MediaDuplexState;
    ULONG64 XmitLinkSpeed;
    ULONG64 RcvLinkSpeed;
    NDIS_SUPPORTED_PAUSE_FUNCTIONS PauseFunctions;
    ULONG AutoNegotiationFlags;
  } NDIS_LINK_PARAMETERS, *PNDIS_LINK_PARAMETERS;
  typedef struct _NDIS_OPER_STATE {
    NDIS_OBJECT_HEADER Header;
    NET_IF_OPER_STATUS OperationalStatus;
    ULONG OperationalStatusFlags;
  } NDIS_OPER_STATE, *PNDIS_OPER_STATE;
  typedef struct _NDIS_IP_OPER_STATUS {
    ULONG AddressFamily;
    NET_IF_OPER_STATUS OperationalStatus;
    ULONG OperationalStatusFlags;
  } NDIS_IP_OPER_STATUS, *PNDIS_IP_OPER_STATUS;
  typedef struct _NDIS_IP_OPER_STATUS_INFO {
    NDIS_OBJECT_HEADER Header;
    ULONG Flags;
    ULONG NumberofAddressFamiliesReturned;
    NDIS_IP_OPER_STATUS IpOperationalStatus[32];
  } NDIS_IP_OPER_STATUS_INFO, *PNDIS_IP_OPER_STATUS_INFO;
  typedef struct _NDIS_IP_OPER_STATE {
    NDIS_OBJECT_HEADER Header;
    ULONG Flags;
    NDIS_IP_OPER_STATUS IpOperationalStatus;
  } NDIS_IP_OPER_STATE, *PNDIS_IP_OPER_STATE;
#define NDIS_OFFLOAD_PARAMETERS_NO_CHANGE 0
#define NDIS_OFFLOAD_PARAMETERS_TX_RX_DISABLED 1
#define NDIS_OFFLOAD_PARAMETERS_TX_ENABLED_RX_DISABLED 2
#define NDIS_OFFLOAD_PARAMETERS_RX_ENABLED_TX_DISABLED 3
#define NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED 4
#define NDIS_OFFLOAD_PARAMETERS_LSOV1_DISABLED 1
#define NDIS_OFFLOAD_PARAMETERS_LSOV1_ENABLED 2
#define NDIS_OFFLOAD_PARAMETERS_IPSECV1_DISABLED 1
#define NDIS_OFFLOAD_PARAMETERS_IPSECV1_AH_ENABLED 2
#define NDIS_OFFLOAD_PARAMETERS_IPSECV1_ESP_ENABLED 3
#define NDIS_OFFLOAD_PARAMETERS_IPSECV1_AH_AND_ESP_ENABLED 4
#define NDIS_OFFLOAD_PARAMETERS_LSOV2_DISABLED 1
#define NDIS_OFFLOAD_PARAMETERS_LSOV2_ENABLED 2
#define NDIS_OFFLOAD_PARAMETERS_CONNECTION_OFFLOAD_DISABLED 1
#define NDIS_OFFLOAD_PARAMETERS_CONNECTION_OFFLOAD_ENABLED 2
#define NDIS_OFFLOAD_PARAMETERS_REVISION_1 1
  typedef struct _NDIS_OFFLOAD_PARAMETERS {
    NDIS_OBJECT_HEADER Header;
    UCHAR IPv4Checksum;
    UCHAR TCPIPv4Checksum;
    UCHAR UDPIPv4Checksum;
    UCHAR TCPIPv6Checksum;
    UCHAR UDPIPv6Checksum;
    UCHAR LsoV1;
    UCHAR IPsecV1;
    UCHAR LsoV2IPv4;
    UCHAR LsoV2IPv6;
    UCHAR TcpConnectionIPv4;
    UCHAR TcpConnectionIPv6;
    ULONG Flags;
  } NDIS_OFFLOAD_PARAMETERS, *PNDIS_OFFLOAD_PARAMETERS;
#define NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD_PARAMETERS, Flags)
#define NDIS_OFFLOAD_NOT_SUPPORTED 0
#define NDIS_OFFLOAD_SUPPORTED 1
#define NDIS_OFFLOAD_SET_NO_CHANGE 0
#define NDIS_OFFLOAD_SET_ON 1
#define NDIS_OFFLOAD_SET_OFF 2
#define NDIS_ENCAPSULATION_NOT_SUPPORTED 0x00000000
#define NDIS_ENCAPSULATION_NULL 0x00000001
#define NDIS_ENCAPSULATION_IEEE_802_3 0x00000002
#define NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q 0x00000004
#define NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB 0x00000008
#define NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED 0x00000010
  typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_V1 {
    struct {
      ULONG Encapsulation;
      ULONG MaxOffLoadSize;
      ULONG MinSegmentCount;
      ULONG TcpOptions:2;
      ULONG IpOptions:2;
    } IPv4;
  } NDIS_TCP_LARGE_SEND_OFFLOAD_V1, *PNDIS_TCP_LARGE_SEND_OFFLOAD_V1;
  typedef struct _NDIS_TCP_IP_CHECKSUM_OFFLOAD {
    struct {
      ULONG Encapsulation;
      ULONG IpOptionsSupported:2;
      ULONG TcpOptionsSupported:2;
      ULONG TcpChecksum:2;
      ULONG UdpChecksum:2;
      ULONG IpChecksum:2;
    } IPv4Transmit;
    struct {
      ULONG Encapsulation;
      ULONG IpOptionsSupported:2;
      ULONG TcpOptionsSupported:2;
      ULONG TcpChecksum:2;
      ULONG UdpChecksum:2;
      ULONG IpChecksum:2;
    } IPv4Receive;
    struct {
      ULONG Encapsulation;
      ULONG IpExtensionHeadersSupported:2;
      ULONG TcpOptionsSupported:2;
      ULONG TcpChecksum:2;
      ULONG UdpChecksum:2;
    } IPv6Transmit;
    struct {
      ULONG Encapsulation;
      ULONG IpExtensionHeadersSupported:2;
      ULONG TcpOptionsSupported:2;
      ULONG TcpChecksum:2;
      ULONG UdpChecksum:2;
    } IPv6Receive;
  } NDIS_TCP_IP_CHECKSUM_OFFLOAD, *PNDIS_TCP_IP_CHECKSUM_OFFLOAD;
  typedef struct _NDIS_IPSEC_OFFLOAD_V1 {
    struct {
      ULONG Encapsulation;
      ULONG AhEspCombined;
      ULONG TransportTunnelCombined;
      ULONG IPv4Options;
      ULONG Flags;
    } Supported;
    struct {
      ULONG Md5 : 2;
      ULONG Sha_1 : 2;
      ULONG Transport : 2;
      ULONG Tunnel : 2;
      ULONG Send : 2;
      ULONG Receive : 2;
    } IPv4AH;
    struct {
      ULONG Des : 2;
      ULONG Reserved : 2;
      ULONG TripleDes : 2;
      ULONG NullEsp : 2;
      ULONG Transport : 2;
      ULONG Tunnel : 2;
      ULONG Send : 2;
      ULONG Receive : 2;
    } IPv4ESP;
  } NDIS_IPSEC_OFFLOAD_V1, *PNDIS_IPSEC_OFFLOAD_V1;
  typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_V2 {
    struct {
      ULONG Encapsulation;
      ULONG MaxOffLoadSize;
      ULONG MinSegmentCount;
    }IPv4;
    struct {
      ULONG Encapsulation;
      ULONG MaxOffLoadSize;
      ULONG MinSegmentCount;
      ULONG IpExtensionHeadersSupported:2;
      ULONG TcpOptionsSupported:2;
    } IPv6;
  } NDIS_TCP_LARGE_SEND_OFFLOAD_V2, *PNDIS_TCP_LARGE_SEND_OFFLOAD_V2;
#define NDIS_OFFLOAD_FLAGS_GROUP_CHECKSUM_CAPABILITIES 0x1
#define NDIS_MAXIMUM_PORTS 0x1000000
#define NDIS_DEFAULT_PORT_NUMBER ((NDIS_PORT_NUMBER) 0)
#define NDIS_WMI_DEFAULT_METHOD_ID 1
#define NDIS_WMI_OBJECT_TYPE_SET 0x01
#define NDIS_WMI_OBJECT_TYPE_METHOD 0x02
#define NDIS_WMI_OBJECT_TYPE_EVENT 0x03
#define NDIS_WMI_OBJECT_TYPE_ENUM_ADAPTER 0x04
#define NDIS_WMI_OBJECT_TYPE_OUTPUT_INFO 0x05
#define NDIS_DEVICE_TYPE_ENDPOINT 0x00000001
#define NDIS_OFFLOAD_REVISION_1 1
#define NDIS_TCP_CONNECTION_OFFLOAD_REVISION_1 1
#define NDIS_PORT_AUTHENTICATION_PARAMETERS_REVISION_1 1
#define NDIS_WMI_METHOD_HEADER_REVISION_1 1
#define NDIS_WMI_SET_HEADER_REVISION_1 1
#define NDIS_WMI_EVENT_HEADER_REVISION_1 1
#define NDIS_WMI_ENUM_ADAPTER_REVISION_1 1
#define NDIS_SIZEOF_NDIS_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_OFFLOAD, Flags)
#define NDIS_SIZEOF_NDIS_WMI_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_OFFLOAD, Flags)
#define NDIS_SIZEOF_TCP_CONNECTION_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_TCP_CONNECTION_OFFLOAD, Flags)
#define NDIS_SIZEOF_WMI_TCP_CONNECTION_OFFLOAD_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_TCP_CONNECTION_OFFLOAD, Flags)
#define NDIS_SIZEOF_PORT_AUTHENTICATION_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_AUTHENTICATION_PARAMETERS, RcvAuthorizationState)
#define NDIS_SIZEOF_WMI_METHOD_HEADER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_METHOD_HEADER, Padding)
#define NDIS_SIZEOF_WMI_SET_HEADER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_SET_HEADER, Padding)
#define NDIS_SIZEOF_WMI_EVENT_HEADER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_EVENT_HEADER, Padding)
#define NDIS_SIZEOF_WMI_ENUM_ADAPTER_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_WMI_ENUM_ADAPTER, DeviceName)
  typedef struct _NDIS_OFFLOAD {
    NDIS_OBJECT_HEADER Header;
    NDIS_TCP_IP_CHECKSUM_OFFLOAD Checksum;
    NDIS_TCP_LARGE_SEND_OFFLOAD_V1 LsoV1;
    NDIS_IPSEC_OFFLOAD_V1 IPsecV1;
    NDIS_TCP_LARGE_SEND_OFFLOAD_V2 LsoV2;
    ULONG Flags;
  } NDIS_OFFLOAD, *PNDIS_OFFLOAD;
  typedef struct _NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1 {
    struct {
      ULONG Encapsulation;
      ULONG MaxOffLoadSize;
      ULONG MinSegmentCount;
      ULONG TcpOptions;
      ULONG IpOptions;
    } IPv4;
  } NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1, *PNDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1;
  typedef struct _NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD {
    struct {
      ULONG Encapsulation;
      ULONG IpOptionsSupported;
      ULONG TcpOptionsSupported;
      ULONG TcpChecksum;
      ULONG UdpChecksum;
      ULONG IpChecksum;
    } IPv4Transmit;
    struct {
      ULONG Encapsulation;
      ULONG IpOptionsSupported;
      ULONG TcpOptionsSupported;
      ULONG TcpChecksum;
      ULONG UdpChecksum;
      ULONG IpChecksum;
    } IPv4Receive;
    struct {
      ULONG Encapsulation;
      ULONG IpExtensionHeadersSupported;
      ULONG TcpOptionsSupported;
      ULONG TcpChecksum;
      ULONG UdpChecksum;
    } IPv6Transmit;
    struct {
      ULONG Encapsulation;
      ULONG IpExtensionHeadersSupported;
      ULONG TcpOptionsSupported;
      ULONG TcpChecksum;
      ULONG UdpChecksum;
    } IPv6Receive;
  } NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD, *PNDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD;
  typedef struct _NDIS_WMI_IPSEC_OFFLOAD_V1 {
    struct {
      ULONG Encapsulation;
      ULONG AhEspCombined;
      ULONG TransportTunnelCombined;
      ULONG IPv4Options;
      ULONG Flags;
    } Supported;
    struct {
      ULONG Md5;
      ULONG Sha_1;
      ULONG Transport;
      ULONG Tunnel;
      ULONG Send;
      ULONG Receive;
    } IPv4AH;
    struct {
      ULONG Des;
      ULONG Reserved;
      ULONG TripleDes;
      ULONG NullEsp;
      ULONG Transport;
      ULONG Tunnel;
      ULONG Send;
      ULONG Receive;
    } IPv4ESP;
  } NDIS_WMI_IPSEC_OFFLOAD_V1, *PNDIS_WMI_IPSEC_OFFLOAD_V1;
  typedef struct _NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2 {
    struct {
      ULONG Encapsulation;
      ULONG MaxOffLoadSize;
      ULONG MinSegmentCount;
    } IPv4;
    struct {
      ULONG Encapsulation;
      ULONG MaxOffLoadSize;
      ULONG MinSegmentCount;
      ULONG IpExtensionHeadersSupported;
      ULONG TcpOptionsSupported;
    } IPv6;
  } NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2, *PNDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2;
  typedef struct _NDIS_WMI_OFFLOAD {
    NDIS_OBJECT_HEADER Header;
    NDIS_WMI_TCP_IP_CHECKSUM_OFFLOAD Checksum;
    NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V1 LsoV1;
    NDIS_WMI_IPSEC_OFFLOAD_V1 IPsecV1;
    NDIS_WMI_TCP_LARGE_SEND_OFFLOAD_V2 LsoV2;
    ULONG Flags;
  } NDIS_WMI_OFFLOAD, *PNDIS_WMI_OFFLOAD;
  typedef struct _NDIS_TCP_CONNECTION_OFFLOAD {
    NDIS_OBJECT_HEADER Header;
    ULONG Encapsulation;
    ULONG SupportIPv4:2;
    ULONG SupportIPv6:2;
    ULONG SupportIPv6ExtensionHeaders:2;
    ULONG SupportSack:2;
    ULONG TcpConnectionOffloadCapacity;
    ULONG Flags;
  } NDIS_TCP_CONNECTION_OFFLOAD, *PNDIS_TCP_CONNECTION_OFFLOAD;
  typedef struct _NDIS_WMI_TCP_CONNECTION_OFFLOAD {
    NDIS_OBJECT_HEADER Header;
    ULONG Encapsulation;
    ULONG SupportIPv4;
    ULONG SupportIPv6;
    ULONG SupportIPv6ExtensionHeaders;
    ULONG SupportSack;
    ULONG TcpConnectionOffloadCapacity;
    ULONG Flags;
  } NDIS_WMI_TCP_CONNECTION_OFFLOAD, *PNDIS_WMI_TCP_CONNECTION_OFFLOAD;
  typedef ULONG NDIS_PORT_NUMBER, *PNDIS_PORT_NUMBER;
  typedef enum _NDIS_PORT_TYPE {
    NdisPortTypeUndefined,
    NdisPortTypeBridge,
    NdisPortTypeRasConnection,
    NdisPortType8021xSupplicant,
    NdisPortTypeMax,
  } NDIS_PORT_TYPE, *PNDIS_PORT_TYPE;
  typedef enum _NDIS_PORT_AUTHORIZATION_STATE {
    NdisPortAuthorizationUnknown,
    NdisPortAuthorized,
    NdisPortUnauthorized,
    NdisPortReauthorizing
  } NDIS_PORT_AUTHORIZATION_STATE, *PNDIS_PORT_AUTHORIZATION_STATE;
  typedef enum _NDIS_PORT_CONTROL_STATE {
    NdisPortControlStateUnknown,
    NdisPortControlStateControlled,
    NdisPortControlStateUncontrolled
  } NDIS_PORT_CONTROL_STATE, *PNDIS_PORT_CONTROL_STATE;
  typedef NDIS_PORT_CONTROL_STATE NDIS_PORT_CONTROLL_STATE;
  typedef PNDIS_PORT_CONTROL_STATE PNDIS_PORT_CONTROLL_STATE;
  typedef struct _NDIS_PORT_AUTHENTICATION_PARAMETERS {
    NDIS_OBJECT_HEADER Header;
    NDIS_PORT_CONTROL_STATE SendControlState;
    NDIS_PORT_CONTROL_STATE RcvControlState;
    NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState;
    NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState;
  } NDIS_PORT_AUTHENTICATION_PARAMETERS, *PNDIS_PORT_AUTHENTICATION_PARAMETERS;
  typedef enum _NDIS_NETWORK_CHANGE_TYPE {
    NdisPossibleNetworkChange = 1,
    NdisDefinitelyNetworkChange,
    NdisNetworkChangeFromMediaConnect,
    NdisNetworkChangeMax
  } NDIS_NETWORK_CHANGE_TYPE, *PNDIS_NETWORK_CHANGE_TYPE;
  typedef struct _NDIS_WMI_METHOD_HEADER {
    NDIS_OBJECT_HEADER Header;
    NDIS_PORT_NUMBER PortNumber;
    NET_LUID NetLuid;
    ULONG64 RequestId;
    ULONG Timeout;
    UCHAR Padding[4];
  } NDIS_WMI_METHOD_HEADER, *PNDIS_WMI_METHOD_HEADER;
  typedef struct _NDIS_WMI_SET_HEADER {
    NDIS_OBJECT_HEADER Header;
    NDIS_PORT_NUMBER PortNumber;
    NET_LUID NetLuid;
    ULONG64 RequestId;
    ULONG Timeout;
    UCHAR Padding[4];
  } NDIS_WMI_SET_HEADER, *PNDIS_WMI_SET_HEADER;
  typedef struct _NDIS_WMI_EVENT_HEADER {
    NDIS_OBJECT_HEADER Header;
    NET_IFINDEX IfIndex;
    NET_LUID NetLuid;
    ULONG64 RequestId;
    NDIS_PORT_NUMBER PortNumber;
    ULONG DeviceNameLength;
    ULONG DeviceNameOffset;
    UCHAR Padding[4];
  } NDIS_WMI_EVENT_HEADER, *PNDIS_WMI_EVENT_HEADER;
  typedef struct _NDIS_WMI_ENUM_ADAPTER {
    NDIS_OBJECT_HEADER Header;
    NET_IFINDEX IfIndex;
    NET_LUID NetLuid;
    USHORT DeviceNameLength;
    CHAR DeviceName[1];
  } NDIS_WMI_ENUM_ADAPTER, *PNDIS_WMI_ENUM_ADAPTER;
#define NDIS_WMI_OUTPUT_INFO_REVISION_1 1
  typedef struct NDIS_WMI_OUTPUT_INFO {
    NDIS_OBJECT_HEADER Header;
    ULONG Flags;
    UCHAR SupportedRevision;
    ULONG DataOffset;
  } NDIS_WMI_OUTPUT_INFO, *PNDIS_WMI_OUTPUT_INFO;
#define NDIS_RSS_CAPS_MESSAGE_SIGNALED_INTERRUPTS 0x01000000
#define NDIS_RSS_CAPS_CLASSIFICATION_AT_ISR 0x02000000
#define NDIS_RSS_CAPS_CLASSIFICATION_AT_DPC 0x04000000
#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV4 0x00000100
#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6 0x00000200
#define NDIS_RSS_CAPS_HASH_TYPE_TCP_IPV6_EX 0x00000400
#define NdisHashFunctionToeplitz 0x00000001
#define NdisHashFunctionReserved1 0x00000002
#define NdisHashFunctionReserved2 0x00000004
#define NdisHashFunctionReserved3 0x00000008
#define NDIS_HASH_FUNCTION_MASK 0x000000ff
#define NDIS_HASH_TYPE_MASK 0x00ffff00
#define NDIS_RSS_HASH_FUNC_FROM_HASH_INFO(HINFO) ((HINFO) & (NDIS_HASH_FUNCTION_MASK))
#define NDIS_RSS_HASH_TYPE_FROM_HASH_INFO(HINFO) ((HINFO) & (NDIS_HASH_TYPE_MASK))
#define NDIS_RSS_HASH_INFO_FROM_TYPE_AND_FUNC(HTYPE,HFCT) ((HTYPE) | (HFCT))
#define NDIS_HASH_IPV4 0x00000100
#define NDIS_HASH_TCP_IPV4 0x00000200
#define NDIS_HASH_IPV6 0x00000400
#define NDIS_HASH_IPV6_EX 0x00000800
#define NDIS_HASH_TCP_IPV6 0x00001000
#define NDIS_HASH_TCP_IPV6_EX 0x00002000
#define NDIS_RSS_PARAM_FLAG_BASE_CPU_UNCHANGED 0x0001
#define NDIS_RSS_PARAM_FLAG_HASH_INFO_UNCHANGED 0x0002
#define NDIS_RSS_PARAM_FLAG_ITABLE_UNCHANGED 0x0004
#define NDIS_RSS_PARAM_FLAG_HASH_KEY_UNCHANGED 0x0008
#define NDIS_RSS_PARAM_FLAG_DISABLE_RSS 0x0010
#define NDIS_RSS_INDIRECTION_TABLE_SIZE_REVISION_1 128
#define NDIS_RSS_HASH_SECRET_KEY_SIZE_REVISION_1 40
#define NDIS_RSS_INDIRECTION_TABLE_MAX_SIZE_REVISION_1 128
#define NDIS_RSS_HASH_SECRET_KEY_MAX_SIZE_REVISION_1 40
#define NDIS_RECEIVE_HASH_FLAG_ENABLE_HASH 0x00000001
#define NDIS_RECEIVE_HASH_FLAG_HASH_INFO_UNCHANGED 0x00000002
#define NDIS_RECEIVE_HASH_FLAG_HASH_KEY_UNCHANGED 0x00000004
#define NDIS_PORT_CHAR_USE_DEFAULT_AUTH_SETTINGS 0x00000001
#define NDIS_RECEIVE_SCALE_CAPABILITIES_REVISION_1 1
#define NDIS_RECEIVE_HASH_PARAMETERS_REVISION_1 1
#define NDIS_PORT_STATE_REVISION_1 1
#define NDIS_PORT_CHARACTERISTICS_REVISION_1 1
#define NDIS_PORT_ARRAY_REVISION_1 1
#define NDIS_RECEIVE_SCALE_PARAMETERS_REVISION_1 1
#define NDIS_SIZEOF_RECEIVE_SCALE_CAPABILITIES_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_SCALE_CAPABILITIES, NumberOfReceiveQueues)
#define NDIS_SIZEOF_RECEIVE_SCALE_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_SCALE_PARAMETERS, HashSecretKeyOffset)
#define NDIS_SIZEOF_RECEIVE_HASH_PARAMETERS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_RECEIVE_HASH_PARAMETERS, HashSecretKeyOffset)
#define NDIS_SIZEOF_PORT_STATE_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_STATE, Flags)
#define NDIS_SIZEOF_PORT_CHARACTERISTICS_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_CHARACTERISTICS, RcvAuthorizationState)
#define NDIS_SIZEOF_PORT_ARRAY_REVISION_1 RTL_SIZEOF_THROUGH_FIELD (NDIS_PORT_ARRAY, Ports)
  typedef struct _NDIS_RECEIVE_SCALE_CAPABILITIES {
    NDIS_OBJECT_HEADER Header;
    ULONG CapabilitiesFlags;
    ULONG NumberOfInterruptMessages;
    ULONG NumberOfReceiveQueues;
  } NDIS_RECEIVE_SCALE_CAPABILITIES, *PNDIS_RECEIVE_SCALE_CAPABILITIES;
  typedef struct _NDIS_RECEIVE_SCALE_PARAMETERS {
    NDIS_OBJECT_HEADER Header;
    USHORT Flags;
    USHORT BaseCpuNumber;
    ULONG HashInformation;
    USHORT IndirectionTableSize;
    ULONG IndirectionTableOffset;
    USHORT HashSecretKeySize;
    ULONG HashSecretKeyOffset;
  } NDIS_RECEIVE_SCALE_PARAMETERS, *PNDIS_RECEIVE_SCALE_PARAMETERS;
  typedef struct _NDIS_RECEIVE_HASH_PARAMETERS {
    NDIS_OBJECT_HEADER Header;
    ULONG Flags;
    ULONG HashInformation;
    USHORT HashSecretKeySize;
    ULONG HashSecretKeyOffset;
  } NDIS_RECEIVE_HASH_PARAMETERS, *PNDIS_RECEIVE_HASH_PARAMETERS;
  typedef enum _NDIS_PROCESSOR_VENDOR {
    NdisProcessorVendorUnknown,
    NdisProcessorVendorGenuinIntel,
    NdisProcessorVendorGenuineIntel = NdisProcessorVendorGenuinIntel,
    NdisProcessorVendorAuthenticAMD
  } NDIS_PROCESSOR_VENDOR, *PNDIS_PROCESSOR_VENDOR;
  typedef struct _NDIS_PORT_STATE {
    NDIS_OBJECT_HEADER Header;
    NDIS_MEDIA_CONNECT_STATE MediaConnectState;
    ULONG64 XmitLinkSpeed;
    ULONG64 RcvLinkSpeed;
    NET_IF_DIRECTION_TYPE Direction;
    NDIS_PORT_CONTROL_STATE SendControlState;
    NDIS_PORT_CONTROL_STATE RcvControlState;
    NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState;
    NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState;
    ULONG Flags;
  } NDIS_PORT_STATE, *PNDIS_PORT_STATE;
  typedef struct _NDIS_PORT_CHARACTERISTICS {
    NDIS_OBJECT_HEADER Header;
    NDIS_PORT_NUMBER PortNumber;
    ULONG Flags;
    NDIS_PORT_TYPE Type;
    NDIS_MEDIA_CONNECT_STATE MediaConnectState;
    ULONG64 XmitLinkSpeed;
    ULONG64 RcvLinkSpeed;
    NET_IF_DIRECTION_TYPE Direction;
    NDIS_PORT_CONTROL_STATE SendControlState;
    NDIS_PORT_CONTROL_STATE RcvControlState;
    NDIS_PORT_AUTHORIZATION_STATE SendAuthorizationState;
    NDIS_PORT_AUTHORIZATION_STATE RcvAuthorizationState;
  } NDIS_PORT_CHARACTERISTICS, *PNDIS_PORT_CHARACTERISTICS;
  typedef struct _NDIS_PORT NDIS_PORT, *PNDIS_PORT;
  struct _NDIS_PORT {
    PNDIS_PORT Next;
    PVOID NdisReserved;
    PVOID MiniportReserved;
    PVOID ProtocolReserved;
    NDIS_PORT_CHARACTERISTICS PortCharacteristics;
  };
  typedef struct _NDIS_PORT_ARRAY {
    NDIS_OBJECT_HEADER Header;
    ULONG NumberOfPorts;
    ULONG OffsetFirstPort;
    ULONG ElementSize;
    NDIS_PORT_CHARACTERISTICS Ports[1];
  } NDIS_PORT_ARRAY, *PNDIS_PORT_ARRAY;
#define MIB_INVALID_TEREDO_PORT_NUMBER 0
  typedef enum _MIB_IF_TABLE_LEVEL {
    MibIfTableNormal,
    MibIfTableRaw
  } MIB_IF_TABLE_LEVEL, *PMIB_IF_TABLE_LEVEL;
  typedef struct _MIB_IF_ROW2 {
    NET_LUID InterfaceLuid;
    NET_IFINDEX InterfaceIndex;
    GUID InterfaceGuid;
    WCHAR Alias[256 + 1];
    WCHAR Description[256 + 1];
    ULONG PhysicalAddressLength;
    UCHAR PhysicalAddress[32];
    UCHAR PermanentPhysicalAddress[32];
    ULONG Mtu;
    IFTYPE Type;
    TUNNEL_TYPE TunnelType;
    NDIS_MEDIUM MediaType;
    NDIS_PHYSICAL_MEDIUM PhysicalMediumType;
    NET_IF_ACCESS_TYPE AccessType;
    NET_IF_DIRECTION_TYPE DirectionType;
    struct {
      BOOLEAN HardwareInterface : 1;
      BOOLEAN FilterInterface : 1;
      BOOLEAN ConnectorPresent : 1;
      BOOLEAN NotAuthenticated : 1;
      BOOLEAN NotMediaConnected : 1;
      BOOLEAN Paused : 1;
      BOOLEAN LowPower : 1;
      BOOLEAN EndPointInterface : 1;
    } InterfaceAndOperStatusFlags;
    IF_OPER_STATUS OperStatus;
    NET_IF_ADMIN_STATUS AdminStatus;
    NET_IF_MEDIA_CONNECT_STATE MediaConnectState;
    NET_IF_NETWORK_GUID NetworkGuid;
    NET_IF_CONNECTION_TYPE ConnectionType;
    ULONG64 TransmitLinkSpeed;
    ULONG64 ReceiveLinkSpeed;
    ULONG64 InOctets;
    ULONG64 InUcastPkts;
    ULONG64 InNUcastPkts;
    ULONG64 InDiscards;
    ULONG64 InErrors;
    ULONG64 InUnknownProtos;
    ULONG64 InUcastOctets;
    ULONG64 InMulticastOctets;
    ULONG64 InBroadcastOctets;
    ULONG64 OutOctets;
    ULONG64 OutUcastPkts;
    ULONG64 OutNUcastPkts;
    ULONG64 OutDiscards;
    ULONG64 OutErrors;
    ULONG64 OutUcastOctets;
    ULONG64 OutMulticastOctets;
    ULONG64 OutBroadcastOctets;
    ULONG64 OutQLen;
  } MIB_IF_ROW2,*PMIB_IF_ROW2;
  typedef struct _MIB_IF_TABLE2 {
    ULONG NumEntries;
    MIB_IF_ROW2 Table[1];
  } MIB_IF_TABLE2, *PMIB_IF_TABLE2;
  typedef struct _MIB_IPINTERFACE_ROW {
    ADDRESS_FAMILY Family;
    NET_LUID InterfaceLuid;
    NET_IFINDEX InterfaceIndex;
    ULONG MaxReassemblySize;
    ULONG64 InterfaceIdentifier;
    ULONG MinRouterAdvertisementInterval;
    ULONG MaxRouterAdvertisementInterval;
    BOOLEAN AdvertisingEnabled;
    BOOLEAN ForwardingEnabled;
    BOOLEAN WeakHostSend;
    BOOLEAN WeakHostReceive;
    BOOLEAN UseAutomaticMetric;
    BOOLEAN UseNeighborUnreachabilityDetection;
    BOOLEAN ManagedAddressConfigurationSupported;
    BOOLEAN OtherStatefulConfigurationSupported;
    BOOLEAN AdvertiseDefaultRoute;
    NL_ROUTER_DISCOVERY_BEHAVIOR RouterDiscoveryBehavior;
    ULONG DadTransmits;
    ULONG BaseReachableTime;
    ULONG RetransmitTime;
    ULONG PathMtuDiscoveryTimeout;
    NL_LINK_LOCAL_ADDRESS_BEHAVIOR LinkLocalAddressBehavior;
    ULONG LinkLocalAddressTimeout;
    ULONG ZoneIndices[ScopeLevelCount];
    ULONG SitePrefixLength;
    ULONG Metric;
    ULONG NlMtu;
    BOOLEAN Connected;
    BOOLEAN SupportsWakeUpPatterns;
    BOOLEAN SupportsNeighborDiscovery;
    BOOLEAN SupportsRouterDiscovery;
    ULONG ReachableTime;
    NL_INTERFACE_OFFLOAD_ROD TransmitOffload;
    NL_INTERFACE_OFFLOAD_ROD ReceiveOffload;
    BOOLEAN DisableDefaultRoutes;
  } MIB_IPINTERFACE_ROW,*PMIB_IPINTERFACE_ROW;
  typedef struct _MIB_IPINTERFACE_TABLE {
    ULONG NumEntries;
    MIB_IPINTERFACE_ROW Table[1];
  } MIB_IPINTERFACE_TABLE,*PMIB_IPINTERFACE_TABLE;
  typedef struct _MIB_IFSTACK_ROW {
    NET_IFINDEX HigherLayerInterfaceIndex;
    NET_IFINDEX LowerLayerInterfaceIndex;
  } MIB_IFSTACK_ROW,*PMIB_IFSTACK_ROW;
  typedef struct _MIB_INVERTEDIFSTACK_ROW {
    NET_IFINDEX LowerLayerInterfaceIndex;
    NET_IFINDEX HigherLayerInterfaceIndex;
  } MIB_INVERTEDIFSTACK_ROW,*PMIB_INVERTEDIFSTACK_ROW;
  typedef struct _MIB_IFSTACK_TABLE {
    ULONG NumEntries;
    MIB_IFSTACK_ROW Table[1];
  } MIB_IFSTACK_TABLE,*PMIB_IFSTACK_TABLE;
  typedef struct _MIB_INVERTEDIFSTACK_TABLE {
    ULONG NumEntries;
    MIB_INVERTEDIFSTACK_ROW Table[1];
  } MIB_INVERTEDIFSTACK_TABLE,*PMIB_INVERTEDIFSTACK_TABLE;
  typedef struct _MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES {
    NL_BANDWIDTH_INFORMATION InboundBandwidthInformation;
    NL_BANDWIDTH_INFORMATION OutboundBandwidthInformation;
  } MIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES, *PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES;
  typedef struct _MIB_UNICASTIPADDRESS_ROW {
    SOCKADDR_INET Address;
    NET_LUID InterfaceLuid;
    NET_IFINDEX InterfaceIndex;
    NL_PREFIX_ORIGIN PrefixOrigin;
    NL_SUFFIX_ORIGIN SuffixOrigin;
    ULONG ValidLifetime;
    ULONG PreferredLifetime;
    UINT8 OnLinkPrefixLength;
    BOOLEAN SkipAsSource;
    NL_DAD_STATE DadState;
    SCOPE_ID ScopeId;
    LARGE_INTEGER CreationTimeStamp;
  } MIB_UNICASTIPADDRESS_ROW,*PMIB_UNICASTIPADDRESS_ROW;
  typedef struct _MIB_UNICASTIPADDRESS_TABLE {
    ULONG NumEntries;
    MIB_UNICASTIPADDRESS_ROW Table[1];
  } MIB_UNICASTIPADDRESS_TABLE,*PMIB_UNICASTIPADDRESS_TABLE;
  typedef struct _MIB_ANYCASTIPADDRESS_ROW {
    SOCKADDR_INET Address;
    NET_LUID InterfaceLuid;
    NET_IFINDEX InterfaceIndex;
    SCOPE_ID ScopeId;
  } MIB_ANYCASTIPADDRESS_ROW,*PMIB_ANYCASTIPADDRESS_ROW;
  typedef struct _MIB_ANYCASTIPADDRESS_TABLE {
    ULONG NumEntries;
    MIB_ANYCASTIPADDRESS_ROW Table[1];
  } MIB_ANYCASTIPADDRESS_TABLE,*PMIB_ANYCASTIPADDRESS_TABLE;
  typedef struct _MIB_MULTICASTIPADDRESS_ROW {
    SOCKADDR_INET Address;
    NET_IFINDEX InterfaceIndex;
    NET_LUID InterfaceLuid;
    SCOPE_ID ScopeId;
  } MIB_MULTICASTIPADDRESS_ROW,*PMIB_MULTICASTIPADDRESS_ROW;
  typedef struct _MIB_MULTICASTIPADDRESS_TABLE {
    ULONG NumEntries;
    MIB_MULTICASTIPADDRESS_ROW Table[1];
  } MIB_MULTICASTIPADDRESS_TABLE,*PMIB_MULTICASTIPADDRESS_TABLE;
  typedef struct _IP_ADDRESS_PREFIX {
    SOCKADDR_INET Prefix;
    UINT8 PrefixLength;
  } IP_ADDRESS_PREFIX,*PIP_ADDRESS_PREFIX;
  typedef struct _MIB_IPFORWARD_ROW2 {
    NET_LUID InterfaceLuid;
    NET_IFINDEX InterfaceIndex;
    IP_ADDRESS_PREFIX DestinationPrefix;
    SOCKADDR_INET NextHop;
    UCHAR SitePrefixLength;
    ULONG ValidLifetime;
    ULONG PreferredLifetime;
    ULONG Metric;
    NL_ROUTE_PROTOCOL Protocol;
    BOOLEAN Loopback;
    BOOLEAN AutoconfigureAddress;
    BOOLEAN Publish;
    BOOLEAN Immortal;
    ULONG Age;
    NL_ROUTE_ORIGIN Origin;
  } MIB_IPFORWARD_ROW2,*PMIB_IPFORWARD_ROW2;
  typedef struct _MIB_IPFORWARD_TABLE2 {
    ULONG NumEntries;
    MIB_IPFORWARD_ROW2 Table[1];
  } MIB_IPFORWARD_TABLE2,*PMIB_IPFORWARD_TABLE2;
  typedef struct _MIB_IPPATH_ROW {
    SOCKADDR_INET Source;
    SOCKADDR_INET Destination;
    NET_LUID InterfaceLuid;
    NET_IFINDEX InterfaceIndex;
    SOCKADDR_INET CurrentNextHop;
    ULONG PathMtu;
    ULONG RttMean;
    ULONG RttDeviation;
    __extension__ union {
      ULONG LastReachable;
      ULONG LastUnreachable;
    };
    BOOLEAN IsReachable;
    ULONG64 LinkTransmitSpeed;
    ULONG64 LinkReceiveSpeed;
  } MIB_IPPATH_ROW,*PMIB_IPPATH_ROW;
  typedef struct _MIB_IPPATH_TABLE {
    ULONG NumEntries;
    MIB_IPPATH_ROW Table[1];
  } MIB_IPPATH_TABLE,*PMIB_IPPATH_TABLE;
  typedef struct _MIB_IPNET_ROW2 {
    SOCKADDR_INET Address;
    NET_IFINDEX InterfaceIndex;
    NET_LUID InterfaceLuid;
    UCHAR PhysicalAddress[32];
    ULONG PhysicalAddressLength;
    NL_NEIGHBOR_STATE State;
    __extension__ union {
      __extension__ struct {
 BOOLEAN IsRouter : 1;
 BOOLEAN IsUnreachable : 1;
      };
      UCHAR Flags;
    };
    union {
      ULONG LastReachable;
      ULONG LastUnreachable;
    } ReachabilityTime;
  } MIB_IPNET_ROW2, *PMIB_IPNET_ROW2;
  typedef struct _MIB_IPNET_TABLE2 {
    ULONG NumEntries;
    MIB_IPNET_ROW2 Table[1];
  } MIB_IPNET_TABLE2, *PMIB_IPNET_TABLE2;
  typedef void (__attribute__((__stdcall__)) *PIPINTERFACE_CHANGE_CALLBACK) (PVOID CallerContext, PMIB_IPINTERFACE_ROW Row, MIB_NOTIFICATION_TYPE NotificationType);
  typedef void (__attribute__((__stdcall__)) *PUNICAST_IPADDRESS_CHANGE_CALLBACK) (PVOID CallerContext, PMIB_UNICASTIPADDRESS_ROW Row, MIB_NOTIFICATION_TYPE NotificationType);
  typedef void (__attribute__((__stdcall__)) *PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK) (PVOID CallerContext, PMIB_UNICASTIPADDRESS_TABLE AddressTable);
  typedef void (__attribute__((__stdcall__)) *PTEREDO_PORT_CHANGE_CALLBACK) (PVOID CallerContext, USHORT Port, MIB_NOTIFICATION_TYPE NotificationType);
  typedef void (__attribute__((__stdcall__)) *PIPFORWARD_CHANGE_CALLBACK) (PVOID CallerContext, PMIB_IPFORWARD_ROW2 Row, MIB_NOTIFICATION_TYPE NotificationType);
  DWORD __attribute__((__stdcall__)) GetIfEntry2 (PMIB_IF_ROW2 Row);
  DWORD __attribute__((__stdcall__)) GetIfTable2 (PMIB_IF_TABLE2 *Table);
  DWORD __attribute__((__stdcall__)) GetIfTable2Ex (MIB_IF_TABLE_LEVEL Level, PMIB_IF_TABLE2 *Table);
  DWORD __attribute__((__stdcall__)) GetIfStackTable (PMIB_IFSTACK_TABLE *Table);
  DWORD __attribute__((__stdcall__)) GetInvertedIfStackTable (PMIB_INVERTEDIFSTACK_TABLE *Table);
  DWORD __attribute__((__stdcall__)) GetIpInterfaceEntry (PMIB_IPINTERFACE_ROW Row);
  DWORD __attribute__((__stdcall__)) GetIpInterfaceTable (ADDRESS_FAMILY Family, PMIB_IPINTERFACE_TABLE *Table);
  void __attribute__((__stdcall__)) InitializeIpInterfaceEntry (PMIB_IPINTERFACE_ROW Row);
  DWORD __attribute__((__stdcall__)) NotifyIpInterfaceChange (ADDRESS_FAMILY Family, PIPINTERFACE_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle);
  DWORD __attribute__((__stdcall__)) SetIpInterfaceEntry (PMIB_IPINTERFACE_ROW Row);
  DWORD __attribute__((__stdcall__)) GetIpNetworkConnectionBandwidthEstimates (NET_IFINDEX InterfaceIndex, ADDRESS_FAMILY AddressFamily, PMIB_IP_NETWORK_CONNECTION_BANDWIDTH_ESTIMATES BandwidthEstimates);
  DWORD __attribute__((__stdcall__)) CreateUnicastIpAddressEntry (const MIB_UNICASTIPADDRESS_ROW *Row);
  DWORD __attribute__((__stdcall__)) DeleteUnicastIpAddressEntry (const MIB_UNICASTIPADDRESS_ROW *Row);
  DWORD __attribute__((__stdcall__)) GetUnicastIpAddressEntry (PMIB_UNICASTIPADDRESS_ROW Row);
  DWORD __attribute__((__stdcall__)) GetUnicastIpAddressTable (ADDRESS_FAMILY Family, PMIB_UNICASTIPADDRESS_TABLE *Table);
  void __attribute__((__stdcall__)) InitializeUnicastIpAddressEntry (PMIB_UNICASTIPADDRESS_ROW Row);
  DWORD __attribute__((__stdcall__)) NotifyUnicastIpAddressChange (ADDRESS_FAMILY Family, PUNICAST_IPADDRESS_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle);
  DWORD __attribute__((__stdcall__)) CreateAnycastIpAddressEntry (const MIB_ANYCASTIPADDRESS_ROW *Row);
  DWORD __attribute__((__stdcall__)) DeleteAnycastIpAddressEntry (const MIB_ANYCASTIPADDRESS_ROW *Row);
  DWORD __attribute__((__stdcall__)) GetAnycastIpAddressEntry (PMIB_ANYCASTIPADDRESS_ROW Row);
  DWORD __attribute__((__stdcall__)) GetAnycastIpAddressTable (ADDRESS_FAMILY Family, PMIB_ANYCASTIPADDRESS_TABLE *Table);
  DWORD __attribute__((__stdcall__)) NotifyStableUnicastIpAddressTable (ADDRESS_FAMILY Family, PMIB_UNICASTIPADDRESS_TABLE *Table, PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK CallerCallback, PVOID CallerContext, HANDLE *NotificationHandle);
  DWORD __attribute__((__stdcall__)) SetUnicastIpAddressEntry (const MIB_UNICASTIPADDRESS_ROW *Row);
  DWORD __attribute__((__stdcall__)) GetMulticastIpAddressEntry (PMIB_MULTICASTIPADDRESS_ROW Row);
  DWORD __attribute__((__stdcall__)) GetMulticastIpAddressTable (ADDRESS_FAMILY Family, PMIB_MULTICASTIPADDRESS_TABLE *Table);
  DWORD __attribute__((__stdcall__)) CreateIpForwardEntry2 (const MIB_IPFORWARD_ROW2 *Row);
  DWORD __attribute__((__stdcall__)) DeleteIpForwardEntry2 (const MIB_IPFORWARD_ROW2 *Row);
  DWORD __attribute__((__stdcall__)) GetBestRoute2 (NET_LUID *InterfaceLuid, NET_IFINDEX InterfaceIndex, const SOCKADDR_INET *SourceAddress, const SOCKADDR_INET *DestinationAddress, ULONG AddressSortOptions, PMIB_IPFORWARD_ROW2 BestRoute, SOCKADDR_INET *BestSourceAddress);
  DWORD __attribute__((__stdcall__)) GetIpForwardEntry2 (PMIB_IPFORWARD_ROW2 Row);
  DWORD __attribute__((__stdcall__)) GetIpForwardTable2 (ADDRESS_FAMILY Family, PMIB_IPFORWARD_TABLE2 *Table);
  void __attribute__((__stdcall__)) InitializeIpForwardEntry (PMIB_IPFORWARD_ROW2 Row);
  DWORD __attribute__((__stdcall__)) NotifyRouteChange2 (ADDRESS_FAMILY AddressFamily, PIPFORWARD_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle);
  DWORD __attribute__((__stdcall__)) SetIpForwardEntry2 (const MIB_IPFORWARD_ROW2 *Route);
  DWORD __attribute__((__stdcall__)) FlushIpPathTable (ADDRESS_FAMILY Family);
  DWORD __attribute__((__stdcall__)) GetIpPathEntry (PMIB_IPPATH_ROW Row);
  DWORD __attribute__((__stdcall__)) GetIpPathTable (ADDRESS_FAMILY Family, PMIB_IPPATH_TABLE *Table);
  DWORD __attribute__((__stdcall__)) CreateIpNetEntry2 (const MIB_IPNET_ROW2 *Row);
  DWORD __attribute__((__stdcall__)) DeleteIpNetEntry2 (const MIB_IPNET_ROW2 *Row);
  DWORD __attribute__((__stdcall__)) FlushIpNetTable2 (ADDRESS_FAMILY Family, NET_IFINDEX InterfaceIndex);
  DWORD __attribute__((__stdcall__)) GetIpNetEntry2 (PMIB_IPNET_ROW2 Row);
  DWORD __attribute__((__stdcall__)) GetIpNetTable2 (ADDRESS_FAMILY Family, PMIB_IPNET_TABLE2 *Table);
  DWORD __attribute__((__stdcall__)) ResolveIpNetEntry2 (PMIB_IPNET_ROW2 Row, const SOCKADDR_INET *SourceAddress);
  DWORD __attribute__((__stdcall__)) SetIpNetEntry2 (PMIB_IPNET_ROW2 Row);
  DWORD __attribute__((__stdcall__)) NotifyTeredoPortChange (PTEREDO_PORT_CHANGE_CALLBACK Callback, PVOID CallerContext, BOOLEAN InitialNotification, HANDLE *NotificationHandle);
  DWORD __attribute__((__stdcall__)) GetTeredoPort (USHORT *Port);
  DWORD __attribute__((__stdcall__)) CancelMibChangeNotify2 (HANDLE NotificationHandle);
  void __attribute__((__stdcall__)) FreeMibTable (PVOID Memory);
  DWORD __attribute__((__stdcall__)) CreateSortedAddressPairs (const PSOCKADDR_IN6 SourceAddressList, ULONG SourceAddressCount, const PSOCKADDR_IN6 DestinationAddressList, ULONG DestinationAddressCount, ULONG AddressSortOptions, PSOCKADDR_IN6_PAIR *SortedAddressPairList, ULONG *SortedAddressPairCount);
  DWORD __attribute__((__stdcall__)) ConvertInterfaceNameToLuidA (const CHAR *InterfaceName, NET_LUID *InterfaceLuid);
  DWORD __attribute__((__stdcall__)) ConvertInterfaceNameToLuidW (const WCHAR *InterfaceName, NET_LUID *InterfaceLuid);
  DWORD __attribute__((__stdcall__)) ConvertInterfaceLuidToNameA (const NET_LUID *InterfaceLuid, PSTR InterfaceName, SIZE_T Length);
  DWORD __attribute__((__stdcall__)) ConvertInterfaceLuidToNameW (const NET_LUID *InterfaceLuid, PWSTR InterfaceName, SIZE_T Length);
  DWORD __attribute__((__stdcall__)) ConvertInterfaceLuidToIndex (const NET_LUID *InterfaceLuid, PNET_IFINDEX InterfaceIndex);
  DWORD __attribute__((__stdcall__)) ConvertInterfaceIndexToLuid (NET_IFINDEX InterfaceIndex, PNET_LUID InterfaceLuid);
  DWORD __attribute__((__stdcall__)) ConvertInterfaceLuidToAlias (const NET_LUID *InterfaceLuid, PWSTR InterfaceAlias, SIZE_T Length);
  DWORD __attribute__((__stdcall__)) ConvertInterfaceAliasToLuid (const WCHAR *InterfaceAlias, PNET_LUID InterfaceLuid);
  DWORD __attribute__((__stdcall__)) ConvertInterfaceLuidToGuid (const NET_LUID *InterfaceLuid, GUID *InterfaceGuid);
  DWORD __attribute__((__stdcall__)) ConvertInterfaceGuidToLuid (const GUID *InterfaceGuid, PNET_LUID InterfaceLuid);
  NET_IFINDEX __attribute__((__stdcall__)) if_nametoindex (PCSTR InterfaceName);
  PCHAR __attribute__((__stdcall__)) if_indextoname (NET_IFINDEX InterfaceIndex, PCHAR InterfaceName);
  NET_IF_COMPARTMENT_ID __attribute__((__stdcall__)) GetCurrentThreadCompartmentId (void);
  DWORD __attribute__((__stdcall__)) SetCurrentThreadCompartmentId (NET_IF_COMPARTMENT_ID CompartmentId);
  NET_IF_COMPARTMENT_ID __attribute__((__stdcall__)) GetSessionCompartmentId (ULONG SessionId);
  DWORD __attribute__((__stdcall__)) SetSessionCompartmentId (ULONG SessionId, NET_IF_COMPARTMENT_ID CompartmentId);
  DWORD __attribute__((__stdcall__)) GetNetworkInformation (const NET_IF_NETWORK_GUID *NetworkGuid, PNET_IF_COMPARTMENT_ID CompartmentId, PULONG SiteId, PWCHAR NetworkName, ULONG Length);
  DWORD __attribute__((__stdcall__)) SetNetworkInformation (const NET_IF_NETWORK_GUID *NetworkGuid, NET_IF_COMPARTMENT_ID CompartmentId, const WCHAR *NetworkName);
  DWORD __attribute__((__stdcall__)) ConvertLengthToIpv4Mask (ULONG MaskLength, PULONG Mask);
  DWORD __attribute__((__stdcall__)) ConvertIpv4MaskToLength (ULONG Mask, PUINT8 MaskLength);
#undef try
#undef except
#undef finally
#undef leave
#define _INC_DIRECT 
#pragma pack(push,_CRT_PACKING)
#define _DISKFREE_T_DEFINED 
  struct _diskfree_t {
    unsigned total_clusters;
    unsigned avail_clusters;
    unsigned sectors_per_cluster;
    unsigned bytes_per_sector;
  };
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _getcwd(char *_DstBuf,int _SizeInBytes);
  __attribute__ ((__dllimport__)) char *__attribute__((__cdecl__)) _getdcwd(int _Drive,char *_DstBuf,int _SizeInBytes);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _chdir(const char *_Path);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _mkdir(const char *_Path);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _rmdir(const char *_Path);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _chdrive(int _Drive);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _getdrive(void);
  __attribute__ ((__dllimport__)) unsigned long __attribute__((__cdecl__)) _getdrives(void);
#define _GETDISKFREE_DEFINED 
  __attribute__ ((__dllimport__)) unsigned __attribute__((__cdecl__)) _getdiskfree(unsigned _Drive,struct _diskfree_t *_DiskFree);
#define _WDIRECT_DEFINED 
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wgetcwd(wchar_t *_DstBuf,int _SizeInWords);
  __attribute__ ((__dllimport__)) wchar_t *__attribute__((__cdecl__)) _wgetdcwd(int _Drive,wchar_t *_DstBuf,int _SizeInWords);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wchdir(const wchar_t *_Path);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wmkdir(const wchar_t *_Path);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wrmdir(const wchar_t *_Path);
#define diskfree_t _diskfree_t
  char *__attribute__((__cdecl__)) getcwd(char *_DstBuf,int _SizeInBytes) ;
  int __attribute__((__cdecl__)) chdir(const char *_Path) ;
  int __attribute__((__cdecl__)) mkdir(const char *_Path) ;
  int __attribute__((__cdecl__)) rmdir(const char *_Path) ;
#pragma pack(pop)
#define _INC_SIGNAL 
#define WIN_PTHREADS_SIGNAL_H 
#define pthread_sigmask(H,S1,S2) 0
#define _SIG_ATOMIC_T_DEFINED 
  typedef int sig_atomic_t;
#define NSIG 23
#define SIGINT 2
#define SIGILL 4
#define SIGABRT_COMPAT 6
#define SIGFPE 8
#define SIGSEGV 11
#define SIGTERM 15
#define SIGBREAK 21
#define SIGABRT 22
#define SIGABRT2 22
  typedef void (*__p_sig_fn_t)(int);
#define SIG_DFL (__p_sig_fn_t)0
#define SIG_IGN (__p_sig_fn_t)1
#define SIG_GET (__p_sig_fn_t)2
#define SIG_SGE (__p_sig_fn_t)3
#define SIG_ACK (__p_sig_fn_t)4
#define SIG_ERR (__p_sig_fn_t)-1
  extern void **__attribute__((__cdecl__)) __pxcptinfoptrs(void);
#define _pxcptinfoptrs (*__pxcptinfoptrs())
  __p_sig_fn_t __attribute__((__cdecl__)) signal(int _SigNum,__p_sig_fn_t _Func);
  int __attribute__((__cdecl__)) raise(int _SigNum);
#define _INC_UTIME 
#pragma pack(push,_CRT_PACKING)
#define _UTIMBUF_DEFINED 
  struct _utimbuf {
    time_t actime;
    time_t modtime;
  };
  struct __utimbuf32 {
    __time32_t actime;
    __time32_t modtime;
  };
  struct __utimbuf64 {
    __time64_t actime;
    __time64_t modtime;
  };
  struct utimbuf {
    time_t actime;
    time_t modtime;
  };
  struct utimbuf32 {
    __time32_t actime;
    __time32_t modtime;
  };
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _utime32(const char *_Filename,struct __utimbuf32 *_Time);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _futime32(int _FileDes,struct __utimbuf32 *_Time);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wutime32(const wchar_t *_Filename,struct __utimbuf32 *_Time);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _utime64(const char *_Filename,struct __utimbuf64 *_Time);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _futime64(int _FileDes,struct __utimbuf64 *_Time);
  __attribute__ ((__dllimport__)) int __attribute__((__cdecl__)) _wutime64(const wchar_t *_Filename,struct __utimbuf64 *_Time);
int __attribute__((__cdecl__)) _utime(const char *,struct _utimbuf *);
int __attribute__((__cdecl__)) _futime(int,struct _utimbuf *);
int __attribute__((__cdecl__)) _wutime(const wchar_t *,struct _utimbuf *);
extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) _utime(const char *_Filename,struct _utimbuf *_Utimbuf) {
  return _utime64(_Filename,(struct __utimbuf64 *)_Utimbuf);
}
extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) _futime(int _Desc,struct _utimbuf *_Utimbuf) {
  return _futime64(_Desc,(struct __utimbuf64 *)_Utimbuf);
}
extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) _wutime(const wchar_t *_Filename,struct _utimbuf *_Utimbuf) {
  return _wutime64(_Filename,(struct __utimbuf64 *)_Utimbuf);
}
  int __attribute__((__cdecl__)) utime(const char *, struct utimbuf *);
extern inline __attribute__((__gnu_inline__)) int __attribute__((__cdecl__)) utime(const char *_Filename,struct utimbuf *_Utimbuf) {
  return _utime64(_Filename,(struct __utimbuf64 *)_Utimbuf);
}
#pragma pack(pop)
#define rb_w32_iswinnt() TRUE
#define rb_w32_iswin95() FALSE
#define WNOHANG -1
#define O_SHARE_DELETE 0x20000000
typedef int clockid_t;
#define CLOCK_REALTIME 0
#define CLOCK_MONOTONIC 1
#undef utime
#undef lseek
#undef stat
#undef fstat
#define utime(_p,_t) rb_w32_utime(_p, _t)
#undef HAVE_UTIMES
#define HAVE_UTIMES 1
#define utimes(_p,_t) rb_w32_utimes(_p, _t)
#undef HAVE_UTIMENSAT
#define HAVE_UTIMENSAT 1
#define AT_FDCWD -100
#define utimensat(_d,_p,_t,_f) rb_w32_utimensat(_d, _p, _t, _f)
#define lseek(_f,_o,_w) _lseeki64(_f, _o, _w)
#define pipe(p) rb_w32_pipe(p)
#define open rb_w32_open
#define close(h) rb_w32_close(h)
#define fclose(f) rb_w32_fclose(f)
#define read(f,b,s) rb_w32_read(f, b, s)
#define write(f,b,s) rb_w32_write(f, b, s)
#define getpid() rb_w32_getpid()
#define getppid() rb_w32_getppid()
#define sleep(x) rb_w32_Sleep((x)*1000)
#define Sleep(msec) (void)rb_w32_Sleep(msec)
#undef execv
#define execv(path,argv) rb_w32_aspawn(P_OVERLAY,path,argv)
#undef isatty
#define isatty(h) rb_w32_isatty(h)
#undef mkdir
#define mkdir(p,m) rb_w32_mkdir(p, m)
#undef rmdir
#define rmdir(p) rb_w32_rmdir(p)
#undef unlink
#define unlink(p) rb_w32_unlink(p)
struct stati128 {
  _dev_t st_dev;
  unsigned long long st_ino;
  long long st_inohigh;
  unsigned short st_mode;
  short st_nlink;
  short st_uid;
  short st_gid;
  _dev_t st_rdev;
  long long st_size;
  __time64_t st_atime;
  long st_atimensec;
  __time64_t st_mtime;
  long st_mtimensec;
  __time64_t st_ctime;
  long st_ctimensec;
};
#define off_t __int64
#define stat stati128
#undef SIZEOF_STRUCT_STAT_ST_INO
#define SIZEOF_STRUCT_STAT_ST_INO sizeof(unsigned __int64)
#define HAVE_STRUCT_STAT_ST_INOHIGH 
#define HAVE_STRUCT_STAT_ST_ATIMENSEC 
#define HAVE_STRUCT_STAT_ST_MTIMENSEC 
#define HAVE_STRUCT_STAT_ST_CTIMENSEC 
#define fstat(fd,st) rb_w32_fstati128(fd,st)
#define stati128(path,st) rb_w32_stati128(path,st)
#define lstat(path,st) rb_w32_lstati128(path,st)
#define access(path,mode) rb_w32_access(path,mode)
#define strcasecmp _stricmp
#define strncasecmp _strnicmp
#define fsync _commit
struct timezone;
#undef isascii
#define isascii __isascii
struct iovec {
    void *iov_base;
    size_t iov_len;
};
struct msghdr {
    void *msg_name;
    int msg_namelen;
    struct iovec *msg_iov;
    int msg_iovlen;
    void *msg_control;
    int msg_controllen;
    int msg_flags;
};
struct ifaddrs {
    struct ifaddrs *ifa_next;
    char *ifa_name;
    u_int ifa_flags;
    struct sockaddr *ifa_addr;
    struct sockaddr *ifa_netmask;
    struct sockaddr *ifa_broadaddr;
    struct sockaddr *ifa_dstaddr;
    void *ifa_data;
};
#define IFNAMSIZ IF_NAMESIZE
#define IFF_POINTOPOINT IFF_POINTTOPOINT
extern void rb_w32_sysinit(int *, char ***);
extern DWORD rb_w32_osid(void);
extern pid_t rb_w32_pipe_exec(const char *, const char *, int, int *, int *);
extern int flock(int fd, int oper);
extern int rb_w32_io_cancelable_p(int);
extern int rb_w32_is_socket(int);
extern int __attribute__((__stdcall__)) rb_w32_accept(int, struct sockaddr *, int *);
extern int __attribute__((__stdcall__)) rb_w32_bind(int, const struct sockaddr *, int);
extern int __attribute__((__stdcall__)) rb_w32_connect(int, const struct sockaddr *, int);
extern void rb_w32_fdset(int, fd_set*);
extern void rb_w32_fdclr(int, fd_set*);
extern int rb_w32_fdisset(int, fd_set*);
extern int __attribute__((__stdcall__)) rb_w32_select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
extern int __attribute__((__stdcall__)) rb_w32_getpeername(int, struct sockaddr *, int *);
extern int __attribute__((__stdcall__)) rb_w32_getsockname(int, struct sockaddr *, int *);
extern int __attribute__((__stdcall__)) rb_w32_getsockopt(int, int, int, char *, int *);
extern int __attribute__((__stdcall__)) rb_w32_ioctlsocket(int, long, u_long *);
extern int __attribute__((__stdcall__)) rb_w32_listen(int, int);
extern int __attribute__((__stdcall__)) rb_w32_recv(int, char *, int, int);
extern int __attribute__((__stdcall__)) rb_w32_recvfrom(int, char *, int, int, struct sockaddr *, int *);
extern int __attribute__((__stdcall__)) rb_w32_send(int, const char *, int, int);
extern int __attribute__((__stdcall__)) rb_w32_sendto(int, const char *, int, int, const struct sockaddr *, int);
extern int recvmsg(int, struct msghdr *, int);
extern int sendmsg(int, const struct msghdr *, int);
extern int __attribute__((__stdcall__)) rb_w32_setsockopt(int, int, int, const char *, int);
extern int __attribute__((__stdcall__)) rb_w32_shutdown(int, int);
extern int __attribute__((__stdcall__)) rb_w32_socket(int, int, int);
extern SOCKET rb_w32_get_osfhandle(int);
extern struct hostent *__attribute__((__stdcall__)) rb_w32_gethostbyaddr(const char *, int, int);
extern struct hostent *__attribute__((__stdcall__)) rb_w32_gethostbyname(const char *);
extern int __attribute__((__stdcall__)) rb_w32_gethostname(char *, int);
extern struct protoent *__attribute__((__stdcall__)) rb_w32_getprotobyname(const char *);
extern struct protoent *__attribute__((__stdcall__)) rb_w32_getprotobynumber(int);
extern struct servent *__attribute__((__stdcall__)) rb_w32_getservbyname(const char *, const char *);
extern struct servent *__attribute__((__stdcall__)) rb_w32_getservbyport(int, const char *);
extern int socketpair(int, int, int, int *);
extern int getifaddrs(struct ifaddrs **);
extern void freeifaddrs(struct ifaddrs *);
extern char * rb_w32_getcwd(char *, int);
extern char * rb_w32_ugetenv(const char *);
extern char * rb_w32_getenv(const char *);
extern int rb_w32_rename(const char *, const char *);
extern int rb_w32_urename(const char *, const char *);
extern char **rb_w32_get_environ(void);
extern void rb_w32_free_environ(char **);
extern int rb_w32_map_errno(DWORD);
extern const char *__attribute__((__stdcall__)) rb_w32_inet_ntop(int,const void *,char *,size_t);
extern int __attribute__((__stdcall__)) rb_w32_inet_pton(int,const char *,void *);
extern DWORD rb_w32_osver(void);
extern int chown(const char *, int, int);
extern int rb_w32_uchown(const char *, int, int);
extern int link(const char *, const char *);
extern int rb_w32_ulink(const char *, const char *);
extern ssize_t readlink(const char *, char *, size_t);
extern ssize_t rb_w32_ureadlink(const char *, char *, size_t);
extern ssize_t rb_w32_wreadlink(const WCHAR *, WCHAR *, size_t);
extern int symlink(const char *src, const char *link);
extern int rb_w32_usymlink(const char *src, const char *link);
extern int gettimeofday(struct timeval *, struct timezone *);
extern int clock_gettime(clockid_t, struct timespec *);
extern int clock_getres(clockid_t, struct timespec *);
extern pid_t waitpid (pid_t, int *, int);
extern pid_t rb_w32_spawn(int, const char *, const char*);
extern pid_t rb_w32_aspawn(int, const char *, char *const *);
extern pid_t rb_w32_aspawn_flags(int, const char *, char *const *, DWORD);
extern pid_t rb_w32_uspawn(int, const char *, const char*);
extern pid_t rb_w32_uaspawn(int, const char *, char *const *);
extern pid_t rb_w32_uaspawn_flags(int, const char *, char *const *, DWORD);
extern int kill(int, int);
extern int fcntl(int, int, ...);
extern int rb_w32_set_nonblock(int);
extern pid_t rb_w32_getpid(void);
extern pid_t rb_w32_getppid(void);
extern int rb_w32_isatty(int);
extern int rb_w32_uchdir(const char *);
extern int rb_w32_mkdir(const char *, int);
extern int rb_w32_umkdir(const char *, int);
extern int rb_w32_rmdir(const char *);
extern int rb_w32_urmdir(const char *);
extern int rb_w32_unlink(const char *);
extern int rb_w32_uunlink(const char *);
extern int rb_w32_uchmod(const char *, int);
extern int rb_w32_stati128(const char *, struct stati128 *);
extern int rb_w32_ustati128(const char *, struct stati128 *);
extern int rb_w32_lstati128(const char *, struct stati128 *);
extern int rb_w32_ulstati128(const char *, struct stati128 *);
extern int rb_w32_access(const char *, int);
extern int rb_w32_uaccess(const char *, int);
extern char rb_w32_fd_is_text(int);
extern int rb_w32_fstati128(int, struct stati128 *);
extern int rb_w32_dup2(int, int);
#define _FLOAT_H___ 
#undef FLT_RADIX
#define FLT_RADIX __FLT_RADIX__
#undef FLT_MANT_DIG
#undef DBL_MANT_DIG
#undef LDBL_MANT_DIG
#define FLT_MANT_DIG __FLT_MANT_DIG__
#define DBL_MANT_DIG __DBL_MANT_DIG__
#define LDBL_MANT_DIG __LDBL_MANT_DIG__
#undef FLT_DIG
#undef DBL_DIG
#undef LDBL_DIG
#define FLT_DIG __FLT_DIG__
#define DBL_DIG __DBL_DIG__
#define LDBL_DIG __LDBL_DIG__
#undef FLT_MIN_EXP
#undef DBL_MIN_EXP
#undef LDBL_MIN_EXP
#define FLT_MIN_EXP __FLT_MIN_EXP__
#define DBL_MIN_EXP __DBL_MIN_EXP__
#define LDBL_MIN_EXP __LDBL_MIN_EXP__
#undef FLT_MIN_10_EXP
#undef DBL_MIN_10_EXP
#undef LDBL_MIN_10_EXP
#define FLT_MIN_10_EXP __FLT_MIN_10_EXP__
#define DBL_MIN_10_EXP __DBL_MIN_10_EXP__
#define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__
#undef FLT_MAX_EXP
#undef DBL_MAX_EXP
#undef LDBL_MAX_EXP
#define FLT_MAX_EXP __FLT_MAX_EXP__
#define DBL_MAX_EXP __DBL_MAX_EXP__
#define LDBL_MAX_EXP __LDBL_MAX_EXP__
#undef FLT_MAX_10_EXP
#undef DBL_MAX_10_EXP
#undef LDBL_MAX_10_EXP
#define FLT_MAX_10_EXP __FLT_MAX_10_EXP__
#define DBL_MAX_10_EXP __DBL_MAX_10_EXP__
#define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__
#undef FLT_MAX
#undef DBL_MAX
#undef LDBL_MAX
#define FLT_MAX __FLT_MAX__
#define DBL_MAX __DBL_MAX__
#define LDBL_MAX __LDBL_MAX__
#undef FLT_EPSILON
#undef DBL_EPSILON
#undef LDBL_EPSILON
#define FLT_EPSILON __FLT_EPSILON__
#define DBL_EPSILON __DBL_EPSILON__
#define LDBL_EPSILON __LDBL_EPSILON__
#undef FLT_MIN
#undef DBL_MIN
#undef LDBL_MIN
#define FLT_MIN __FLT_MIN__
#define DBL_MIN __DBL_MIN__
#define LDBL_MIN __LDBL_MIN__
#undef FLT_ROUNDS
#define FLT_ROUNDS 1
#undef FLT_EVAL_METHOD
#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
#undef DECIMAL_DIG
#define DECIMAL_DIG __DECIMAL_DIG__
#undef FLT_DECIMAL_DIG
#undef DBL_DECIMAL_DIG
#undef LDBL_DECIMAL_DIG
#define FLT_DECIMAL_DIG __FLT_DECIMAL_DIG__
#define DBL_DECIMAL_DIG __DBL_DECIMAL_DIG__
#define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__
#undef FLT_HAS_SUBNORM
#undef DBL_HAS_SUBNORM
#undef LDBL_HAS_SUBNORM
#define FLT_HAS_SUBNORM __FLT_HAS_DENORM__
#define DBL_HAS_SUBNORM __DBL_HAS_DENORM__
#define LDBL_HAS_SUBNORM __LDBL_HAS_DENORM__
#undef FLT_TRUE_MIN
#undef DBL_TRUE_MIN
#undef LDBL_TRUE_MIN
#define FLT_TRUE_MIN __FLT_DENORM_MIN__
#define DBL_TRUE_MIN __DBL_DENORM_MIN__
#define LDBL_TRUE_MIN __LDBL_DENORM_MIN__
#define _MINGW_FLOAT_H_ 
#define _MCW_DN 0x03000000
#define _MCW_EM 0x0008001F
#define _MCW_IC 0x00040000
#define _MCW_RC 0x00000300
#define _MCW_PC 0x00030000
#undef FLT_MANT_DIG
#undef DBL_MANT_DIG
#undef LDBL_MANT_DIG
#define FLT_MANT_DIG __FLT_MANT_DIG__
#define DBL_MANT_DIG __DBL_MANT_DIG__
#define LDBL_MANT_DIG __LDBL_MANT_DIG__
#undef FLT_EVAL_METHOD
#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
#define _DN_SAVE 0x00000000
#define _DN_FLUSH 0x01000000
#define _EM_INVALID 0x00000010
#define _EM_DENORMAL 0x00080000
#define _EM_ZERODIVIDE 0x00000008
#define _EM_OVERFLOW 0x00000004
#define _EM_UNDERFLOW 0x00000002
#define _EM_INEXACT 0x00000001
#define _IC_AFFINE 0x00040000
#define _IC_PROJECTIVE 0x00000000
#define _RC_CHOP 0x00000300
#define _RC_UP 0x00000200
#define _RC_DOWN 0x00000100
#define _RC_NEAR 0x00000000
#define _PC_24 0x00020000
#define _PC_53 0x00010000
#define _PC_64 0x00000000
#define _SW_UNEMULATED 0x0040
#define _SW_SQRTNEG 0x0080
#define _SW_STACKOVERFLOW 0x0200
#define _SW_STACKUNDERFLOW 0x0400
#define _FPE_INVALID 0x81
#define _FPE_DENORMAL 0x82
#define _FPE_ZERODIVIDE 0x83
#define _FPE_OVERFLOW 0x84
#define _FPE_UNDERFLOW 0x85
#define _FPE_INEXACT 0x86
#define _FPE_UNEMULATED 0x87
#define _FPE_SQRTNEG 0x88
#define _FPE_STACKOVERFLOW 0x8a
#define _FPE_STACKUNDERFLOW 0x8b
#define _FPE_EXPLICITGEN 0x8c
#define CW_DEFAULT _CW_DEFAULT
#define MCW_PC _MCW_PC
#define PC_24 _PC_24
#define PC_53 _PC_53
#define PC_64 _PC_64
#define _CW_DEFAULT (_RC_NEAR+_PC_53+_EM_INVALID+_EM_ZERODIVIDE+_EM_OVERFLOW+_EM_UNDERFLOW+_EM_INEXACT+_EM_DENORMAL)
__attribute__ ((__dllimport__)) unsigned int __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _controlfp (unsigned int _NewValue, unsigned int _Mask) ;
__attribute__((dllimport)) errno_t __attribute__((__cdecl__)) _controlfp_s(unsigned int *_CurrentState, unsigned int _NewValue, unsigned int _Mask);
__attribute__ ((__dllimport__)) unsigned int __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _control87 (unsigned int _NewValue, unsigned int _Mask);
__attribute__ ((__dllimport__)) unsigned int __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _clearfp (void);
__attribute__ ((__dllimport__)) unsigned int __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _statusfp (void);
#define _clear87 _clearfp
#define _status87 _statusfp
void __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) _fpreset (void);
void __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) fpreset (void);
__attribute__ ((__dllimport__)) int * __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) __fpecode(void);
#define _fpecode (*(__fpecode()))
__attribute__((dllimport)) extern int finite(double);
#define S_IFLNK 0xa000
#define SUFFIX 
extern int rb_w32_ftruncate(int fd, long long length);
extern int rb_w32_truncate(const char *path, long long length);
extern int rb_w32_utruncate(const char *path, long long length);
#undef HAVE_FTRUNCATE
#define HAVE_FTRUNCATE 1
#define ftruncate ftruncate64
#undef HAVE_TRUNCATE
#define HAVE_TRUNCATE 1
#define truncate truncate64
extern int ioctl (int, int, ...);
extern int getuid (void);
extern int geteuid (void);
extern int getgid (void);
extern int getegid (void);
extern int setuid (int);
extern int setgid (int);
extern char *rb_w32_strerror(int);
#define strerror(e) rb_w32_strerror(e)
#define PIPE_BUF 1024
#define LOCK_SH 1
#define LOCK_EX 2
#define LOCK_NB 4
#define LOCK_UN 8
#define SIGKILL 9
#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
#define EPFNOSUPPORT WSAEPFNOSUPPORT
#define ESHUTDOWN WSAESHUTDOWN
#define ETOOMANYREFS WSAETOOMANYREFS
#define EHOSTDOWN WSAEHOSTDOWN
#define EPROCLIM WSAEPROCLIM
#define EUSERS WSAEUSERS
#define EDQUOT WSAEDQUOT
#define ESTALE WSAESTALE
#define EREMOTE WSAEREMOTE
#define F_DUPFD 0
#define F_GETFD 1
#define F_SETFD 2
#define F_SETFL 4
#define F_DUPFD_CLOEXEC 67
#define FD_CLOEXEC 1
#define O_NONBLOCK 1
#undef FD_SET
#define FD_SET(fd,set) do { unsigned int i; SOCKET s = _get_osfhandle(fd); for (i = 0; i < (set)->fd_count; i++) { if ((set)->fd_array[i] == s) { break; } } if (i == (set)->fd_count) { if ((set)->fd_count < FD_SETSIZE) { (set)->fd_array[i] = s; (set)->fd_count++; } }} while(0)
#undef FD_CLR
#define FD_CLR(f,s) rb_w32_fdclr(f, s)
#undef FD_ISSET
#define FD_ISSET(f,s) rb_w32_fdisset(f, s)
#undef inet_ntop
#define inet_ntop(f,a,n,l) rb_w32_inet_ntop(f,a,n,l)
#undef inet_pton
#define inet_pton(f,s,d) rb_w32_inet_pton(f,s,d)
#undef accept
#define accept(s,a,l) rb_w32_accept(s, a, l)
#undef bind
#define bind(s,a,l) rb_w32_bind(s, a, l)
#undef connect
#define connect(s,a,l) rb_w32_connect(s, a, l)
#undef select
#define select(n,r,w,e,t) rb_w32_select(n, r, w, e, t)
#undef getpeername
#define getpeername(s,a,l) rb_w32_getpeername(s, a, l)
#undef getsockname
#define getsockname(s,a,l) rb_w32_getsockname(s, a, l)
#undef getsockopt
#define getsockopt(s,v,n,o,l) rb_w32_getsockopt(s, v, n, o, l)
#undef ioctlsocket
#define ioctlsocket(s,c,a) rb_w32_ioctlsocket(s, c, a)
#undef listen
#define listen(s,b) rb_w32_listen(s, b)
#undef recv
#define recv(s,b,l,f) rb_w32_recv(s, b, l, f)
#undef recvfrom
#define recvfrom(s,b,l,f,fr,frl) rb_w32_recvfrom(s, b, l, f, fr, frl)
#undef send
#define send(s,b,l,f) rb_w32_send(s, b, l, f)
#undef sendto
#define sendto(s,b,l,f,t,tl) rb_w32_sendto(s, b, l, f, t, tl)
#undef setsockopt
#define setsockopt(s,v,n,o,l) rb_w32_setsockopt(s, v, n, o, l)
#undef shutdown
#define shutdown(s,h) rb_w32_shutdown(s, h)
#undef socket
#define socket(s,t,p) rb_w32_socket(s, t, p)
#undef gethostbyaddr
#define gethostbyaddr(a,l,t) rb_w32_gethostbyaddr(a, l, t)
#undef gethostbyname
#define gethostbyname(n) rb_w32_gethostbyname(n)
#undef gethostname
#define gethostname(n,l) rb_w32_gethostname(n, l)
#undef getprotobyname
#define getprotobyname(n) rb_w32_getprotobyname(n)
#undef getprotobynumber
#define getprotobynumber(n) rb_w32_getprotobynumber(n)
#undef getservbyname
#define getservbyname(n,p) rb_w32_getservbyname(n, p)
#undef getservbyport
#define getservbyport(p,pr) rb_w32_getservbyport(p, pr)
#undef get_osfhandle
#define get_osfhandle(h) rb_w32_get_osfhandle(h)
#undef getcwd
#define getcwd(b,s) rb_w32_getcwd(b, s)
#undef getenv
#define getenv(n) rb_w32_getenv(n)
#undef rename
#define rename(o,n) rb_w32_rename(o, n)
#undef times
#define times(t) rb_w32_times(t)
#undef dup2
#define dup2(o,n) rb_w32_dup2(o, n)
struct tms {
 long tms_utime;
 long tms_stime;
 long tms_cutime;
 long tms_cstime;
};
int rb_w32_times(struct tms *);
struct tm *gmtime_r(const time_t *, struct tm *);
struct tm *localtime_r(const time_t *, struct tm *);
int rb_w32_sleep(unsigned long msec);
int rb_w32_open(const char *, int, ...);
int rb_w32_uopen(const char *, int, ...);
int rb_w32_wopen(const WCHAR *, int, ...);
int rb_w32_close(int);
int rb_w32_fclose(FILE*);
int rb_w32_pipe(int[2]);
ssize_t rb_w32_read(int, void *, size_t);
ssize_t rb_w32_write(int, const void *, size_t);
int rb_w32_utime(const char *, const struct utimbuf *);
int rb_w32_uutime(const char *, const struct utimbuf *);
int rb_w32_utimes(const char *, const struct timeval *);
int rb_w32_uutimes(const char *, const struct timeval *);
int rb_w32_utimensat(int , const char *, const struct timespec *, int );
int rb_w32_uutimensat(int , const char *, const struct timespec *, int );
long rb_w32_write_console(uintptr_t, int);
int __attribute__((__stdcall__)) rb_w32_Sleep(unsigned long msec);
int rb_w32_wait_events_blocking(HANDLE *events, int num, DWORD timeout);
int rb_w32_time_subtract(struct timeval *rest, const struct timeval *wait);
int rb_w32_wrap_io_handle(HANDLE, int);
int rb_w32_unwrap_io_handle(int);
WCHAR *rb_w32_mbstr_to_wstr(UINT, const char *, int, long *);
char *rb_w32_wstr_to_mbstr(UINT, const WCHAR *, int, long *);
typedef uintptr_t (*asynchronous_func_t)(uintptr_t self, int argc, uintptr_t* argv);
uintptr_t rb_w32_asynchronize(asynchronous_func_t func, uintptr_t self, int argc, uintptr_t* argv, uintptr_t intrval);

#pragma GCC visibility pop

double rb_w32_pow(double x, double y);
#define pow rb_w32_pow
#undef RUBY_EXTERN
#define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED
#define MJIT_SYMBOL_EXPORT_BEGIN RUBY_SYMBOL_EXPORT_BEGIN
#define MJIT_SYMBOL_EXPORT_END RUBY_SYMBOL_EXPORT_END
#define RUBY_EXTERN extern
#define EXTERN _Pragma("message \"EXTERN is deprecated, use RUBY_EXTERN instead\""); RUBY_EXTERN
#define RUBY_MBCHAR_MAXSIZE INT_MAX
#define FLUSH_REGISTER_WINDOWS ((void)0)
#define PATH_SEP ";"
#define PATH_SEP_CHAR PATH_SEP[0]
#define PATH_ENV "PATH"
#define ENV_IGNORECASE 
#define CASEFOLD_FILESYSTEM 1
#define RUBY_ALIAS_FUNCTION(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args)
#define UNALIGNED_WORD_ACCESS 1
#define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
#define NORETURN_STYLE_NEW 1

#pragma GCC visibility pop

#undef RUBY_EXTERN
#define RUBY_EXTERN extern __declspec(dllimport)
#define ASSUME(x) (RB_LIKELY(!!(x)) ? (void)0 : UNREACHABLE)
#define UNREACHABLE_RETURN(val) UNREACHABLE
#define RUBY_MACRO_SELECT(base,n) TOKEN_PASTE(base, n)

#pragma GCC visibility push(default)

typedef unsigned long VALUE;
typedef unsigned long ID;
#define SIGNED_VALUE long
#define SIZEOF_VALUE SIZEOF_LONG
#define PRI_VALUE_PREFIX "l"
typedef char ruby_check_sizeof_int[4 == sizeof(int) ? 1 : -1];
typedef char ruby_check_sizeof_long[4 == sizeof(long) ? 1 : -1];
typedef char ruby_check_sizeof_long_long[8 == sizeof(long long) ? 1 : -1];
typedef char ruby_check_sizeof_voidp[4 == sizeof(void*) ? 1 : -1];
#define PRI_INT_PREFIX ""
#define PRI_LONG_PREFIX "l"
#define PRI_SHORT_PREFIX "h"
#define PRI_64_PREFIX PRI_LL_PREFIX
#define RUBY_PRI_VALUE_MARK "\v"
#define PRIdVALUE PRI_VALUE_PREFIX"d"
#define PRIoVALUE PRI_VALUE_PREFIX"o"
#define PRIuVALUE PRI_VALUE_PREFIX"u"
#define PRIxVALUE PRI_VALUE_PREFIX"x"
#define PRIXVALUE PRI_VALUE_PREFIX"X"
#define PRIsVALUE PRI_VALUE_PREFIX"i" RUBY_PRI_VALUE_MARK
#define PRIdPTRDIFF PRI_PTRDIFF_PREFIX"d"
#define PRIiPTRDIFF PRI_PTRDIFF_PREFIX"i"
#define PRIoPTRDIFF PRI_PTRDIFF_PREFIX"o"
#define PRIuPTRDIFF PRI_PTRDIFF_PREFIX"u"
#define PRIxPTRDIFF PRI_PTRDIFF_PREFIX"x"
#define PRIXPTRDIFF PRI_PTRDIFF_PREFIX"X"
#define PRIdSIZE PRI_SIZE_PREFIX"d"
#define PRIiSIZE PRI_SIZE_PREFIX"i"
#define PRIoSIZE PRI_SIZE_PREFIX"o"
#define PRIuSIZE PRI_SIZE_PREFIX"u"
#define PRIxSIZE PRI_SIZE_PREFIX"x"
#define PRIXSIZE PRI_SIZE_PREFIX"X"
#define RUBY_FIXNUM_MAX (LONG_MAX>>1)
#define RUBY_FIXNUM_MIN RSHIFT((long)LONG_MIN,1)
#define FIXNUM_MAX RUBY_FIXNUM_MAX
#define FIXNUM_MIN RUBY_FIXNUM_MIN
#define RB_INT2FIX(i) (((VALUE)(i))<<1 | RUBY_FIXNUM_FLAG)
#define INT2FIX(i) RB_INT2FIX(i)
#define RB_LONG2FIX(i) RB_INT2FIX(i)
#define LONG2FIX(i) RB_INT2FIX(i)
#define rb_fix_new(v) RB_INT2FIX(v)
VALUE rb_int2inum(intptr_t);
#define rb_int_new(v) rb_int2inum(v)
VALUE rb_uint2inum(uintptr_t);
#define rb_uint_new(v) rb_uint2inum(v)
VALUE rb_ll2inum(long long);
#define LL2NUM(v) rb_ll2inum(v)
VALUE rb_ull2inum(unsigned long long);
#define ULL2NUM(v) rb_ull2inum(v)
#define SIZET2NUM(v) ULONG2NUM(v)
#define SSIZET2NUM(v) LONG2NUM(v)
#define rb_long2int(n) ((int)(n))
#define RB_FIX2LONG(x) ((long)RSHIFT((SIGNED_VALUE)(x),1))
static inline long
rb_fix2long(VALUE x)
{
    return ((long)(((long)(x))>>(int)(1)));
}
#define RB_FIX2ULONG(x) ((unsigned long)RB_FIX2LONG(x))
static inline unsigned long
rb_fix2ulong(VALUE x)
{
    return ((unsigned long)((long)(((long)(x))>>(int)(1))));
}
#define RB_FIXNUM_P(f) (((int)(SIGNED_VALUE)(f))&RUBY_FIXNUM_FLAG)
#define RB_POSFIXABLE(f) ((f) < RUBY_FIXNUM_MAX+1)
#define RB_NEGFIXABLE(f) ((f) >= RUBY_FIXNUM_MIN)
#define RB_FIXABLE(f) (RB_POSFIXABLE(f) && RB_NEGFIXABLE(f))
#define FIX2LONG(x) RB_FIX2LONG(x)
#define FIX2ULONG(x) RB_FIX2ULONG(x)
#define FIXNUM_P(f) RB_FIXNUM_P(f)
#define POSFIXABLE(f) RB_POSFIXABLE(f)
#define NEGFIXABLE(f) RB_NEGFIXABLE(f)
#define FIXABLE(f) RB_FIXABLE(f)
#define RB_IMMEDIATE_P(x) ((VALUE)(x) & RUBY_IMMEDIATE_MASK)
#define IMMEDIATE_P(x) RB_IMMEDIATE_P(x)
ID rb_sym2id(VALUE);
VALUE rb_id2sym(ID);
#define RB_STATIC_SYM_P(x) (((VALUE)(x)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)
#define RB_DYNAMIC_SYM_P(x) (!RB_SPECIAL_CONST_P(x) && RB_BUILTIN_TYPE(x) == (RUBY_T_SYMBOL))
#define RB_SYMBOL_P(x) (RB_STATIC_SYM_P(x)||RB_DYNAMIC_SYM_P(x))
#define RB_ID2SYM(x) (rb_id2sym(x))
#define RB_SYM2ID(x) (rb_sym2id(x))
#define STATIC_SYM_P(x) RB_STATIC_SYM_P(x)
#define DYNAMIC_SYM_P(x) RB_DYNAMIC_SYM_P(x)
#define SYMBOL_P(x) RB_SYMBOL_P(x)
#define ID2SYM(x) RB_ID2SYM(x)
#define SYM2ID(x) RB_SYM2ID(x)
#define USE_FLONUM 0
#define RB_FLONUM_P(x) 0
#define FLONUM_P(x) RB_FLONUM_P(x)
#define USE_SYMBOL_AS_METHOD_NAME 1
enum ruby_special_consts {
    RUBY_Qfalse = 0,
    RUBY_Qtrue = 2,
    RUBY_Qnil = 4,
    RUBY_Qundef = 6,
    RUBY_IMMEDIATE_MASK = 0x03,
    RUBY_FIXNUM_FLAG = 0x01,
    RUBY_FLONUM_MASK = 0x00,
    RUBY_FLONUM_FLAG = 0x02,
    RUBY_SYMBOL_FLAG = 0x0e,
    RUBY_SPECIAL_SHIFT = 8
};
#define RUBY_Qfalse ((VALUE)RUBY_Qfalse)
#define RUBY_Qtrue ((VALUE)RUBY_Qtrue)
#define RUBY_Qnil ((VALUE)RUBY_Qnil)
#define RUBY_Qundef ((VALUE)RUBY_Qundef)
#define Qfalse RUBY_Qfalse
#define Qtrue RUBY_Qtrue
#define Qnil RUBY_Qnil
#define Qundef RUBY_Qundef
#define IMMEDIATE_MASK RUBY_IMMEDIATE_MASK
#define FIXNUM_FLAG RUBY_FIXNUM_FLAG
#define SYMBOL_FLAG RUBY_SYMBOL_FLAG
#define RB_TEST(v) !(((VALUE)(v) & (VALUE)~RUBY_Qnil) == 0)
#define RB_NIL_P(v) !((VALUE)(v) != RUBY_Qnil)
#define RTEST(v) RB_TEST(v)
#define NIL_P(v) RB_NIL_P(v)
#define CLASS_OF(v) rb_class_of((VALUE)(v))
enum ruby_value_type {
    RUBY_T_NONE = 0x00,
    RUBY_T_OBJECT = 0x01,
    RUBY_T_CLASS = 0x02,
    RUBY_T_MODULE = 0x03,
    RUBY_T_FLOAT = 0x04,
    RUBY_T_STRING = 0x05,
    RUBY_T_REGEXP = 0x06,
    RUBY_T_ARRAY = 0x07,
    RUBY_T_HASH = 0x08,
    RUBY_T_STRUCT = 0x09,
    RUBY_T_BIGNUM = 0x0a,
    RUBY_T_FILE = 0x0b,
    RUBY_T_DATA = 0x0c,
    RUBY_T_MATCH = 0x0d,
    RUBY_T_COMPLEX = 0x0e,
    RUBY_T_RATIONAL = 0x0f,
    RUBY_T_NIL = 0x11,
    RUBY_T_TRUE = 0x12,
    RUBY_T_FALSE = 0x13,
    RUBY_T_SYMBOL = 0x14,
    RUBY_T_FIXNUM = 0x15,
    RUBY_T_UNDEF = 0x16,
    RUBY_T_IMEMO = 0x1a,
    RUBY_T_NODE = 0x1b,
    RUBY_T_ICLASS = 0x1c,
    RUBY_T_ZOMBIE = 0x1d,
    RUBY_T_MASK = 0x1f
};
#define T_NONE RUBY_T_NONE
#define T_NIL RUBY_T_NIL
#define T_OBJECT RUBY_T_OBJECT
#define T_CLASS RUBY_T_CLASS
#define T_ICLASS RUBY_T_ICLASS
#define T_MODULE RUBY_T_MODULE
#define T_FLOAT RUBY_T_FLOAT
#define T_STRING RUBY_T_STRING
#define T_REGEXP RUBY_T_REGEXP
#define T_ARRAY RUBY_T_ARRAY
#define T_HASH RUBY_T_HASH
#define T_STRUCT RUBY_T_STRUCT
#define T_BIGNUM RUBY_T_BIGNUM
#define T_FILE RUBY_T_FILE
#define T_FIXNUM RUBY_T_FIXNUM
#define T_TRUE RUBY_T_TRUE
#define T_FALSE RUBY_T_FALSE
#define T_DATA RUBY_T_DATA
#define T_MATCH RUBY_T_MATCH
#define T_SYMBOL RUBY_T_SYMBOL
#define T_RATIONAL RUBY_T_RATIONAL
#define T_COMPLEX RUBY_T_COMPLEX
#define T_IMEMO RUBY_T_IMEMO
#define T_UNDEF RUBY_T_UNDEF
#define T_NODE RUBY_T_NODE
#define T_ZOMBIE RUBY_T_ZOMBIE
#define T_MASK RUBY_T_MASK
#define RB_BUILTIN_TYPE(x) (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK)
#define BUILTIN_TYPE(x) RB_BUILTIN_TYPE(x)
static inline int rb_type(VALUE obj);
#define TYPE(x) rb_type((VALUE)(x))
#define RB_FLOAT_TYPE_P(obj) ( RB_FLONUM_P(obj) || (!RB_SPECIAL_CONST_P(obj) && RB_BUILTIN_TYPE(obj) == RUBY_T_FLOAT))
#define RB_TYPE_P(obj,type) ( ((type) == RUBY_T_FIXNUM) ? RB_FIXNUM_P(obj) : ((type) == RUBY_T_TRUE) ? ((obj) == RUBY_Qtrue) : ((type) == RUBY_T_FALSE) ? ((obj) == RUBY_Qfalse) : ((type) == RUBY_T_NIL) ? ((obj) == RUBY_Qnil) : ((type) == RUBY_T_UNDEF) ? ((obj) == RUBY_Qundef) : ((type) == RUBY_T_SYMBOL) ? RB_SYMBOL_P(obj) : ((type) == RUBY_T_FLOAT) ? RB_FLOAT_TYPE_P(obj) : (!RB_SPECIAL_CONST_P(obj) && RB_BUILTIN_TYPE(obj) == (type)))
#define RB_GC_GUARD(v) (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(v); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }))
#define RB_UNUSED_VAR(x) x __attribute__ ((unused))
void rb_check_type(VALUE,int);
#define Check_Type(v,t) rb_check_type((VALUE)(v),(t))
VALUE rb_str_to_str(VALUE);
VALUE rb_string_value(volatile VALUE*);
char *rb_string_value_ptr(volatile VALUE*);
char *rb_string_value_cstr(volatile VALUE*);
#define StringValue(v) rb_string_value(&(v))
#define StringValuePtr(v) rb_string_value_ptr(&(v))
#define StringValueCStr(v) rb_string_value_cstr(&(v))
void rb_check_safe_obj(VALUE);
#define SafeStringValue(v) do { StringValue(v); rb_check_safe_obj(v);} while (0)
void rb_check_safe_str(VALUE) __attribute__((error("rb_check_safe_str() and Check_SafeStr() are obsolete; use SafeStringValue() instead")));
#define Check_SafeStr(v) rb_check_safe_str((VALUE)(v))
VALUE rb_str_export(VALUE);
#define ExportStringValue(v) do { SafeStringValue(v); (v) = rb_str_export(v);} while (0)
VALUE rb_str_export_locale(VALUE);
VALUE rb_get_path(VALUE);
#define FilePathValue(v) (RB_GC_GUARD(v) = rb_get_path(v))
VALUE rb_get_path_no_checksafe(VALUE);
#define FilePathStringValue(v) ((v) = rb_get_path_no_checksafe(v))
#define RUBY_SAFE_LEVEL_MAX 1
void rb_secure(int);
int rb_safe_level(void);
void rb_set_safe_level(int);
int ruby_safe_level_2_error(void) __attribute__((error("$SAFE=2 to 4 are obsolete")));
int ruby_safe_level_2_warning(void) __attribute__((const,warning("$SAFE=2 to 4 are obsolete")));
#define ruby_safe_level_2_warning() ruby_safe_level_2_error()
#define RUBY_SAFE_LEVEL_INVALID_P(level) __extension__( __builtin_choose_expr( __builtin_constant_p(level), ((level) < 0 || RUBY_SAFE_LEVEL_MAX < (level)), 0))
#define RUBY_SAFE_LEVEL_CHECK(level,type) __extension__(__builtin_choose_expr(RUBY_SAFE_LEVEL_INVALID_P(level), ruby_safe_level_2_ ##type(), (level)))
#define rb_secure(level) rb_secure(RUBY_SAFE_LEVEL_CHECK(level, warning))
#define rb_set_safe_level(level) rb_set_safe_level(RUBY_SAFE_LEVEL_CHECK(level, error))
void rb_set_safe_level_force(int);
void rb_secure_update(VALUE);
__attribute__ ((__noreturn__)) void rb_insecure_operation(void);
VALUE rb_errinfo(void);
void rb_set_errinfo(VALUE);
long rb_num2long(VALUE);
unsigned long rb_num2ulong(VALUE);
static inline long
rb_num2long_inline(VALUE x)
{
    if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
 return ((long)(((long)(x))>>(int)(1)));
    else
 return rb_num2long(x);
}
#define RB_NUM2LONG(x) rb_num2long_inline(x)
#define NUM2LONG(x) RB_NUM2LONG(x)
static inline unsigned long
rb_num2ulong_inline(VALUE x)
{
    if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
 return ((unsigned long)((long)(((long)(x))>>(int)(1))));
    else
 return rb_num2ulong(x);
}
#define RB_NUM2ULONG(x) rb_num2ulong_inline(x)
#define NUM2ULONG(x) RB_NUM2ULONG(x)
#define RB_NUM2INT(x) ((int)RB_NUM2LONG(x))
#define RB_NUM2UINT(x) ((unsigned int)RB_NUM2ULONG(x))
#define RB_FIX2INT(x) ((int)RB_FIX2LONG(x))
#define RB_FIX2UINT(x) ((unsigned int)RB_FIX2ULONG(x))
#define NUM2INT(x) RB_NUM2INT(x)
#define NUM2UINT(x) RB_NUM2UINT(x)
#define FIX2INT(x) RB_FIX2INT(x)
#define FIX2UINT(x) RB_FIX2UINT(x)
short rb_num2short(VALUE);
unsigned short rb_num2ushort(VALUE);
short rb_fix2short(VALUE);
unsigned short rb_fix2ushort(VALUE);
#define RB_FIX2SHORT(x) (rb_fix2short((VALUE)(x)))
#define FIX2SHORT(x) RB_FIX2SHORT(x)
static inline short
rb_num2short_inline(VALUE x)
{
    if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
 return rb_fix2short(x);
    else
 return rb_num2short(x);
}
#define RB_NUM2SHORT(x) rb_num2short_inline(x)
#define RB_NUM2USHORT(x) rb_num2ushort(x)
#define NUM2SHORT(x) RB_NUM2SHORT(x)
#define NUM2USHORT(x) RB_NUM2USHORT(x)
long long rb_num2ll(VALUE);
unsigned long long rb_num2ull(VALUE);
static inline long long
rb_num2ll_inline(VALUE x)
{
    if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
 return ((long)(((long)(x))>>(int)(1)));
    else
 return rb_num2ll(x);
}
#define RB_NUM2LL(x) rb_num2ll_inline(x)
#define RB_NUM2ULL(x) rb_num2ull(x)
#define NUM2LL(x) RB_NUM2LL(x)
#define NUM2ULL(x) RB_NUM2ULL(x)
#define NUM2SIZET(x) NUM2ULONG(x)
#define NUM2SSIZET(x) NUM2LONG(x)
double rb_num2dbl(VALUE);
#define NUM2DBL(x) rb_num2dbl((VALUE)(x))
VALUE rb_uint2big(uintptr_t);
VALUE rb_int2big(intptr_t);
VALUE rb_newobj(void);
VALUE rb_newobj_of(VALUE, VALUE);
VALUE rb_obj_setup(VALUE obj, VALUE klass, VALUE type);
#define RB_NEWOBJ(obj,type) type *(obj) = (type*)rb_newobj()
#define RB_NEWOBJ_OF(obj,type,klass,flags) type *(obj) = (type*)rb_newobj_of(klass, flags)
#define NEWOBJ(obj,type) RB_NEWOBJ(obj,type)
#define NEWOBJ_OF(obj,type,klass,flags) RB_NEWOBJ_OF(obj,type,klass,flags)
#define OBJSETUP(obj,c,t) rb_obj_setup(obj, c, t)
#define CLONESETUP(clone,obj) rb_clone_setup(clone,obj)
#define DUPSETUP(dup,obj) rb_dup_setup(dup,obj)
#define USE_RGENGC 1
#define USE_RINCGC 1
#define RGENGC_WB_PROTECTED_ARRAY 1
#define RGENGC_WB_PROTECTED_HASH 1
#define RGENGC_WB_PROTECTED_STRUCT 1
#define RGENGC_WB_PROTECTED_STRING 1
#define RGENGC_WB_PROTECTED_OBJECT 1
#define RGENGC_WB_PROTECTED_REGEXP 1
#define RGENGC_WB_PROTECTED_CLASS 1
#define RGENGC_WB_PROTECTED_FLOAT 1
#define RGENGC_WB_PROTECTED_COMPLEX 1
#define RGENGC_WB_PROTECTED_RATIONAL 1
#define RGENGC_WB_PROTECTED_BIGNUM 1
#define RGENGC_WB_PROTECTED_NODE_CREF 1
__extension__
enum ruby_fl_type {
    RUBY_FL_WB_PROTECTED = (1<<5),
    RUBY_FL_PROMOTED0 = (1<<5),
    RUBY_FL_PROMOTED1 = (1<<6),
    RUBY_FL_PROMOTED = RUBY_FL_PROMOTED0|RUBY_FL_PROMOTED1,
    RUBY_FL_FINALIZE = (1<<7),
    RUBY_FL_TAINT = (1<<8),
    RUBY_FL_UNTRUSTED = RUBY_FL_TAINT,
    RUBY_FL_EXIVAR = (1<<10),
    RUBY_FL_FREEZE = (1<<11),
    RUBY_FL_USHIFT = 12,
#define RUBY_FL_USER_N(n) RUBY_FL_USER ##n = (1<<(RUBY_FL_USHIFT+n))
    RUBY_FL_USER0 = (1<<(RUBY_FL_USHIFT+0)),
    RUBY_FL_USER1 = (1<<(RUBY_FL_USHIFT+1)),
    RUBY_FL_USER2 = (1<<(RUBY_FL_USHIFT+2)),
    RUBY_FL_USER3 = (1<<(RUBY_FL_USHIFT+3)),
    RUBY_FL_USER4 = (1<<(RUBY_FL_USHIFT+4)),
    RUBY_FL_USER5 = (1<<(RUBY_FL_USHIFT+5)),
    RUBY_FL_USER6 = (1<<(RUBY_FL_USHIFT+6)),
    RUBY_FL_USER7 = (1<<(RUBY_FL_USHIFT+7)),
    RUBY_FL_USER8 = (1<<(RUBY_FL_USHIFT+8)),
    RUBY_FL_USER9 = (1<<(RUBY_FL_USHIFT+9)),
    RUBY_FL_USER10 = (1<<(RUBY_FL_USHIFT+10)),
    RUBY_FL_USER11 = (1<<(RUBY_FL_USHIFT+11)),
    RUBY_FL_USER12 = (1<<(RUBY_FL_USHIFT+12)),
    RUBY_FL_USER13 = (1<<(RUBY_FL_USHIFT+13)),
    RUBY_FL_USER14 = (1<<(RUBY_FL_USHIFT+14)),
    RUBY_FL_USER15 = (1<<(RUBY_FL_USHIFT+15)),
    RUBY_FL_USER16 = (1<<(RUBY_FL_USHIFT+16)),
    RUBY_FL_USER17 = (1<<(RUBY_FL_USHIFT+17)),
    RUBY_FL_USER18 = (1<<(RUBY_FL_USHIFT+18)),
    RUBY_FL_USER19 = (1<<(RUBY_FL_USHIFT+19)),
    RUBY_ELTS_SHARED = RUBY_FL_USER2,
    RUBY_FL_DUPPED = (RUBY_T_MASK|RUBY_FL_EXIVAR|RUBY_FL_TAINT),
    RUBY_FL_SINGLETON = RUBY_FL_USER0
};
struct __attribute__((aligned(4))) RBasic {
    VALUE flags;
    const VALUE klass;
};
VALUE rb_obj_hide(VALUE obj);
VALUE rb_obj_reveal(VALUE obj, VALUE klass);
#define RB_OBJ_WB_UNPROTECT_FOR(type,obj) __extension__( __builtin_choose_expr( RGENGC_WB_PROTECTED_ ##type, OBJ_WB_UNPROTECT((VALUE)(obj)), ((VALUE)(obj))))
#define RBASIC_CLASS(obj) (RBASIC(obj)->klass)
#define ROBJECT_EMBED_LEN_MAX ROBJECT_EMBED_LEN_MAX
#define ROBJECT_EMBED ROBJECT_EMBED
enum ruby_robject_flags {
    ROBJECT_EMBED_LEN_MAX = 3,
    ROBJECT_EMBED = RUBY_FL_USER1,
    ROBJECT_ENUM_END
};
struct RObject {
    struct RBasic basic;
    union {
 struct {
     uint32_t numiv;
     VALUE *ivptr;
            void *iv_index_tbl;
 } heap;
 VALUE ary[ROBJECT_EMBED_LEN_MAX];
    } as;
};
#define ROBJECT_NUMIV(o) ((RBASIC(o)->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ROBJECT(o)->as.heap.numiv)
#define ROBJECT_IVPTR(o) ((RBASIC(o)->flags & ROBJECT_EMBED) ? ROBJECT(o)->as.ary : ROBJECT(o)->as.heap.ivptr)
#define ROBJECT_IV_INDEX_TBL(o) ((RBASIC(o)->flags & ROBJECT_EMBED) ? RCLASS_IV_INDEX_TBL(rb_obj_class(o)) : ROBJECT(o)->as.heap.iv_index_tbl)
#define RCLASS_SUPER(c) rb_class_get_superclass(c)
#define RMODULE_IV_TBL(m) RCLASS_IV_TBL(m)
#define RMODULE_CONST_TBL(m) RCLASS_CONST_TBL(m)
#define RMODULE_M_TBL(m) RCLASS_M_TBL(m)
#define RMODULE_SUPER(m) RCLASS_SUPER(m)
#define RMODULE_IS_OVERLAID RMODULE_IS_OVERLAID
#define RMODULE_IS_REFINEMENT RMODULE_IS_REFINEMENT
#define RMODULE_INCLUDED_INTO_REFINEMENT RMODULE_INCLUDED_INTO_REFINEMENT
enum ruby_rmodule_flags {
    RMODULE_IS_OVERLAID = RUBY_FL_USER2,
    RMODULE_IS_REFINEMENT = RUBY_FL_USER3,
    RMODULE_INCLUDED_INTO_REFINEMENT = RUBY_FL_USER4,
    RMODULE_ENUM_END
};
__attribute__ ((__pure__)) double rb_float_value(VALUE);
VALUE rb_float_new(double);
VALUE rb_float_new_in_heap(double);
#define RFLOAT_VALUE(v) rb_float_value(v)
#define DBL2NUM(dbl) rb_float_new(dbl)
#define RUBY_ELTS_SHARED RUBY_ELTS_SHARED
#define ELTS_SHARED RUBY_ELTS_SHARED
#define RSTRING_NOEMBED RSTRING_NOEMBED
#define RSTRING_EMBED_LEN_MASK RSTRING_EMBED_LEN_MASK
#define RSTRING_EMBED_LEN_SHIFT RSTRING_EMBED_LEN_SHIFT
#define RSTRING_EMBED_LEN_MAX RSTRING_EMBED_LEN_MAX
#define RSTRING_FSTR RSTRING_FSTR
enum ruby_rstring_flags {
    RSTRING_NOEMBED = RUBY_FL_USER1,
    RSTRING_EMBED_LEN_MASK = (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|
         RUBY_FL_USER5|RUBY_FL_USER6),
    RSTRING_EMBED_LEN_SHIFT = (RUBY_FL_USHIFT+2),
    RSTRING_EMBED_LEN_MAX = (int)((sizeof(VALUE)*3)/sizeof(char)-1),
    RSTRING_FSTR = RUBY_FL_USER17,
    RSTRING_ENUM_END
};
struct RString {
    struct RBasic basic;
    union {
 struct {
     long len;
     char *ptr;
     union {
  long capa;
  VALUE shared;
     } aux;
 } heap;
 char ary[RSTRING_EMBED_LEN_MAX + 1];
    } as;
};
#define RSTRING_EMBED_LEN(str) (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT))
#define RSTRING_LEN(str) (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? RSTRING_EMBED_LEN(str) : RSTRING(str)->as.heap.len)
#define RSTRING_PTR(str) (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? RSTRING(str)->as.ary : RSTRING(str)->as.heap.ptr)
#define RSTRING_END(str) (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? (RSTRING(str)->as.ary + RSTRING_EMBED_LEN(str)) : (RSTRING(str)->as.heap.ptr + RSTRING(str)->as.heap.len))
#define RSTRING_LENINT(str) rb_long2int(RSTRING_LEN(str))
#define RSTRING_GETMEM(str,ptrvar,lenvar) (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? ((ptrvar) = RSTRING(str)->as.ary, (lenvar) = RSTRING_EMBED_LEN(str)) : ((ptrvar) = RSTRING(str)->as.heap.ptr, (lenvar) = RSTRING(str)->as.heap.len))
#define USE_TRANSIENT_HEAP 1
enum ruby_rarray_flags {
    RARRAY_EMBED_LEN_MAX = 3,
    RARRAY_EMBED_FLAG = RUBY_FL_USER1,
    RARRAY_EMBED_LEN_MASK = (RUBY_FL_USER4|RUBY_FL_USER3),
    RARRAY_EMBED_LEN_SHIFT = (RUBY_FL_USHIFT+3),
    RARRAY_TRANSIENT_FLAG = RUBY_FL_USER13,
#define RARRAY_TRANSIENT_FLAG RARRAY_TRANSIENT_FLAG
    RARRAY_ENUM_END
};
#define RARRAY_EMBED_FLAG (VALUE)RARRAY_EMBED_FLAG
#define RARRAY_EMBED_LEN_MASK (VALUE)RARRAY_EMBED_LEN_MASK
#define RARRAY_EMBED_LEN_MAX RARRAY_EMBED_LEN_MAX
#define RARRAY_EMBED_LEN_SHIFT RARRAY_EMBED_LEN_SHIFT
struct RArray {
    struct RBasic basic;
    union {
 struct {
     long len;
     union {
  long capa;
  VALUE shared;
     } aux;
     const VALUE *ptr;
 } heap;
 const VALUE ary[RARRAY_EMBED_LEN_MAX];
    } as;
};
#define RARRAY_EMBED_LEN(a) (long)((RBASIC(a)->flags >> RARRAY_EMBED_LEN_SHIFT) & (RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT))
#define RARRAY_LEN(a) rb_array_len(a)
#define RARRAY_LENINT(ary) rb_long2int(RARRAY_LEN(ary))
#define RARRAY_CONST_PTR(a) rb_array_const_ptr(a)
#define RARRAY_CONST_PTR_TRANSIENT(a) rb_array_const_ptr_transient(a)
#define RARRAY_TRANSIENT_P(ary) FL_TEST_RAW((ary), RARRAY_TRANSIENT_FLAG)
#define RARRAY_PTR_USE_START_TRANSIENT(a) rb_array_ptr_use_start(a, 1)
#define RARRAY_PTR_USE_END_TRANSIENT(a) rb_array_ptr_use_end(a, 1)
#define RARRAY_PTR_USE_TRANSIENT(ary,ptr_name,expr) do { const VALUE _ary = (ary); VALUE *ptr_name = (VALUE *)RARRAY_PTR_USE_START_TRANSIENT(_ary); expr; RARRAY_PTR_USE_END_TRANSIENT(_ary); } while (0)
#define RARRAY_PTR_USE_START(a) rb_array_ptr_use_start(a, 0)
#define RARRAY_PTR_USE_END(a) rb_array_ptr_use_end(a, 0)
#define RARRAY_PTR_USE(ary,ptr_name,expr) do { const VALUE _ary = (ary); VALUE *ptr_name = (VALUE *)RARRAY_PTR_USE_START(_ary); expr; RARRAY_PTR_USE_END(_ary); } while (0)
#define RARRAY_AREF(a,i) (RARRAY_CONST_PTR_TRANSIENT(a)[i])
#define RARRAY_ASET(a,i,v) do { const VALUE _ary = (a); const VALUE _v = (v); VALUE *ptr = (VALUE *)RARRAY_PTR_USE_START_TRANSIENT(_ary); RB_OBJ_WRITE(_ary, &ptr[i], _v); RARRAY_PTR_USE_END_TRANSIENT(_ary); } while (0)
#define RARRAY_PTR(a) ((VALUE *)RARRAY_CONST_PTR(RB_OBJ_WB_UNPROTECT_FOR(ARRAY, a)))
struct RRegexp {
    struct RBasic basic;
    struct re_pattern_buffer *ptr;
    const VALUE src;
    unsigned long usecnt;
};
#define RREGEXP_PTR(r) (RREGEXP(r)->ptr)
#define RREGEXP_SRC(r) (RREGEXP(r)->src)
#define RREGEXP_SRC_PTR(r) RSTRING_PTR(RREGEXP(r)->src)
#define RREGEXP_SRC_LEN(r) RSTRING_LEN(RREGEXP(r)->src)
#define RREGEXP_SRC_END(r) RSTRING_END(RREGEXP(r)->src)
size_t rb_hash_size_num(VALUE hash);
#define RHASH_TBL(h) rb_hash_tbl(h, __FILE__, __LINE__)
#define RHASH_ITER_LEV(h) rb_hash_iter_lev(h)
#define RHASH_IFNONE(h) rb_hash_ifnone(h)
#define RHASH_SIZE(h) rb_hash_size_num(h)
#define RHASH_EMPTY_P(h) (RHASH_SIZE(h) == 0)
#define RHASH_SET_IFNONE(h,ifnone) rb_hash_set_ifnone((VALUE)h, ifnone)
struct RFile {
    struct RBasic basic;
    struct rb_io_t *fptr;
};
struct RData {
    struct RBasic basic;
    void (*dmark)(void*);
    void (*dfree)(void*);
    void *data;
};
typedef struct rb_data_type_struct rb_data_type_t;
struct rb_data_type_struct {
    const char *wrap_struct_name;
    struct {
 void (*dmark)(void*);
 void (*dfree)(void*);
 size_t (*dsize)(const void *);
 void *reserved[2];
    } function;
    const rb_data_type_t *parent;
    void *data;
    VALUE flags;
};
#define HAVE_TYPE_RB_DATA_TYPE_T 1
#define HAVE_RB_DATA_TYPE_T_FUNCTION 1
#define HAVE_RB_DATA_TYPE_T_PARENT 1
struct RTypedData {
    struct RBasic basic;
    const rb_data_type_t *type;
    VALUE typed_flag;
    void *data;
};
#define DATA_PTR(dta) (RDATA(dta)->data)
#define RTYPEDDATA_P(v) (RTYPEDDATA(v)->typed_flag == 1)
#define RTYPEDDATA_TYPE(v) (RTYPEDDATA(v)->type)
#define RTYPEDDATA_DATA(v) (RTYPEDDATA(v)->data)
typedef void (*RUBY_DATA_FUNC)(void*);
#define RUBY_UNTYPED_DATA_WARNING 1
VALUE rb_data_object_wrap(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
VALUE rb_data_object_zalloc(VALUE,size_t,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
VALUE rb_data_typed_object_wrap(VALUE klass, void *datap, const rb_data_type_t *);
VALUE rb_data_typed_object_zalloc(VALUE klass, size_t size, const rb_data_type_t *type);
int rb_typeddata_inherited_p(const rb_data_type_t *child, const rb_data_type_t *parent);
int rb_typeddata_is_kind_of(VALUE, const rb_data_type_t *);
void *rb_check_typeddata(VALUE, const rb_data_type_t *);
#define Check_TypedStruct(v,t) rb_check_typeddata((VALUE)(v),(t))
#define RUBY_DEFAULT_FREE ((RUBY_DATA_FUNC)-1)
#define RUBY_NEVER_FREE ((RUBY_DATA_FUNC)0)
#define RUBY_TYPED_DEFAULT_FREE RUBY_DEFAULT_FREE
#define RUBY_TYPED_NEVER_FREE RUBY_NEVER_FREE
#define RUBY_TYPED_FREE_IMMEDIATELY 1
#define RUBY_TYPED_WB_PROTECTED RUBY_FL_WB_PROTECTED
#define RUBY_TYPED_PROMOTED1 RUBY_FL_PROMOTED1
#define Data_Wrap_Struct(klass,mark,free,sval) rb_data_object_wrap((klass),(sval),(RUBY_DATA_FUNC)(mark),(RUBY_DATA_FUNC)(free))
#define Data_Make_Struct0(result,klass,type,size,mark,free,sval) VALUE result = rb_data_object_zalloc((klass), (size), (RUBY_DATA_FUNC)(mark), (RUBY_DATA_FUNC)(free)); (void)((sval) = (type *)DATA_PTR(result));
#define Data_Make_Struct(klass,type,mark,free,sval) RB_GNUC_EXTENSION_BLOCK( Data_Make_Struct0(data_struct_obj, klass, type, sizeof(type), mark, free, sval); data_struct_obj )
#define TypedData_Wrap_Struct(klass,data_type,sval) rb_data_typed_object_wrap((klass),(sval),(data_type))
#define TypedData_Make_Struct0(result,klass,type,size,data_type,sval) VALUE result = rb_data_typed_object_zalloc(klass, size, data_type); (void)((sval) = (type *)DATA_PTR(result));
#define TypedData_Make_Struct(klass,type,data_type,sval) RB_GNUC_EXTENSION_BLOCK( TypedData_Make_Struct0(data_struct_obj, klass, type, sizeof(type), data_type, sval); data_struct_obj )
#define Data_Get_Struct(obj,type,sval) ((sval) = (type*)rb_data_object_get(obj))
#define TypedData_Get_Struct(obj,type,data_type,sval) ((sval) = (type*)rb_check_typeddata((obj), (data_type)))
#define RSTRUCT_LEN(st) NUM2LONG(rb_struct_size(st))
#define RSTRUCT_PTR(st) rb_struct_ptr(st)
#define RSTRUCT_SET(st,idx,v) rb_struct_aset(st, INT2NUM(idx), (v))
#define RSTRUCT_GET(st,idx) rb_struct_aref(st, INT2NUM(idx))
int rb_big_sign(VALUE);
#define RBIGNUM_SIGN(b) (rb_big_sign(b))
#define RBIGNUM_POSITIVE_P(b) (RBIGNUM_SIGN(b)!=0)
#define RBIGNUM_NEGATIVE_P(b) (RBIGNUM_SIGN(b)==0)
#define R_CAST(st) (struct st*)
#define RBASIC(obj) (R_CAST(RBasic)(obj))
#define ROBJECT(obj) (R_CAST(RObject)(obj))
#define RCLASS(obj) (R_CAST(RClass)(obj))
#define RMODULE(obj) RCLASS(obj)
#define RSTRING(obj) (R_CAST(RString)(obj))
#define RREGEXP(obj) (R_CAST(RRegexp)(obj))
#define RARRAY(obj) (R_CAST(RArray)(obj))
#define RDATA(obj) (R_CAST(RData)(obj))
#define RTYPEDDATA(obj) (R_CAST(RTypedData)(obj))
#define RFILE(obj) (R_CAST(RFile)(obj))
#define FL_SINGLETON ((VALUE)RUBY_FL_SINGLETON)
#define FL_WB_PROTECTED ((VALUE)RUBY_FL_WB_PROTECTED)
#define FL_PROMOTED0 ((VALUE)RUBY_FL_PROMOTED0)
#define FL_PROMOTED1 ((VALUE)RUBY_FL_PROMOTED1)
#define FL_FINALIZE ((VALUE)RUBY_FL_FINALIZE)
#define FL_TAINT ((VALUE)RUBY_FL_TAINT)
#define FL_UNTRUSTED ((VALUE)RUBY_FL_UNTRUSTED)
#define FL_EXIVAR ((VALUE)RUBY_FL_EXIVAR)
#define FL_FREEZE ((VALUE)RUBY_FL_FREEZE)
#define FL_USHIFT ((VALUE)RUBY_FL_USHIFT)
#define FL_USER0 ((VALUE)RUBY_FL_USER0)
#define FL_USER1 ((VALUE)RUBY_FL_USER1)
#define FL_USER2 ((VALUE)RUBY_FL_USER2)
#define FL_USER3 ((VALUE)RUBY_FL_USER3)
#define FL_USER4 ((VALUE)RUBY_FL_USER4)
#define FL_USER5 ((VALUE)RUBY_FL_USER5)
#define FL_USER6 ((VALUE)RUBY_FL_USER6)
#define FL_USER7 ((VALUE)RUBY_FL_USER7)
#define FL_USER8 ((VALUE)RUBY_FL_USER8)
#define FL_USER9 ((VALUE)RUBY_FL_USER9)
#define FL_USER10 ((VALUE)RUBY_FL_USER10)
#define FL_USER11 ((VALUE)RUBY_FL_USER11)
#define FL_USER12 ((VALUE)RUBY_FL_USER12)
#define FL_USER13 ((VALUE)RUBY_FL_USER13)
#define FL_USER14 ((VALUE)RUBY_FL_USER14)
#define FL_USER15 ((VALUE)RUBY_FL_USER15)
#define FL_USER16 ((VALUE)RUBY_FL_USER16)
#define FL_USER17 ((VALUE)RUBY_FL_USER17)
#define FL_USER18 ((VALUE)RUBY_FL_USER18)
#define FL_USER19 ((VALUE)RUBY_FL_USER19)
#define RB_SPECIAL_CONST_P(x) (RB_IMMEDIATE_P(x) || !RB_TEST(x))
#define SPECIAL_CONST_P(x) RB_SPECIAL_CONST_P(x)
#define RB_FL_ABLE(x) (!RB_SPECIAL_CONST_P(x) && RB_BUILTIN_TYPE(x) != RUBY_T_NODE)
#define RB_FL_TEST_RAW(x,f) (RBASIC(x)->flags&(f))
#define RB_FL_TEST(x,f) (RB_FL_ABLE(x)?RB_FL_TEST_RAW((x),(f)):0)
#define RB_FL_ANY_RAW(x,f) RB_FL_TEST_RAW((x),(f))
#define RB_FL_ANY(x,f) RB_FL_TEST((x),(f))
#define RB_FL_ALL_RAW(x,f) (RB_FL_TEST_RAW((x),(f)) == (f))
#define RB_FL_ALL(x,f) (RB_FL_TEST((x),(f)) == (f))
#define RB_FL_SET_RAW(x,f) (void)(RBASIC(x)->flags |= (f))
#define RB_FL_SET(x,f) (RB_FL_ABLE(x) ? RB_FL_SET_RAW(x, f) : (void)0)
#define RB_FL_UNSET_RAW(x,f) (void)(RBASIC(x)->flags &= ~(VALUE)(f))
#define RB_FL_UNSET(x,f) (RB_FL_ABLE(x) ? RB_FL_UNSET_RAW(x, f) : (void)0)
#define RB_FL_REVERSE_RAW(x,f) (void)(RBASIC(x)->flags ^= (f))
#define RB_FL_REVERSE(x,f) (RB_FL_ABLE(x) ? RB_FL_REVERSE_RAW(x, f) : (void)0)
#define RB_OBJ_TAINTABLE(x) (RB_FL_ABLE(x) && RB_BUILTIN_TYPE(x) != RUBY_T_BIGNUM && RB_BUILTIN_TYPE(x) != RUBY_T_FLOAT)
#define RB_OBJ_TAINTED_RAW(x) RB_FL_TEST_RAW(x, RUBY_FL_TAINT)
#define RB_OBJ_TAINTED(x) (!!RB_FL_TEST((x), RUBY_FL_TAINT))
#define RB_OBJ_TAINT_RAW(x) RB_FL_SET_RAW(x, RUBY_FL_TAINT)
#define RB_OBJ_TAINT(x) (RB_OBJ_TAINTABLE(x) ? RB_OBJ_TAINT_RAW(x) : (void)0)
#define RB_OBJ_UNTRUSTED(x) RB_OBJ_TAINTED(x)
#define RB_OBJ_UNTRUST(x) RB_OBJ_TAINT(x)
#define RB_OBJ_INFECT_RAW(x,s) RB_FL_SET_RAW(x, RB_OBJ_TAINTED_RAW(s))
#define RB_OBJ_INFECT(x,s) ( (RB_OBJ_TAINTABLE(x) && RB_FL_ABLE(s)) ? RB_OBJ_INFECT_RAW(x, s) : (void)0)
#define RB_OBJ_FROZEN_RAW(x) (RBASIC(x)->flags&RUBY_FL_FREEZE)
#define RB_OBJ_FROZEN(x) (!RB_FL_ABLE(x) || RB_OBJ_FROZEN_RAW(x))
#define RB_OBJ_FREEZE_RAW(x) (void)(RBASIC(x)->flags |= RUBY_FL_FREEZE)
#define RB_OBJ_FREEZE(x) rb_obj_freeze_inline((VALUE)x)
#define FL_ABLE(x) RB_FL_ABLE(x)
#define FL_TEST_RAW(x,f) RB_FL_TEST_RAW(x,f)
#define FL_TEST(x,f) RB_FL_TEST(x,f)
#define FL_ANY_RAW(x,f) RB_FL_ANY_RAW(x,f)
#define FL_ANY(x,f) RB_FL_ANY(x,f)
#define FL_ALL_RAW(x,f) RB_FL_ALL_RAW(x,f)
#define FL_ALL(x,f) RB_FL_ALL(x,f)
#define FL_SET_RAW(x,f) RB_FL_SET_RAW(x,f)
#define FL_SET(x,f) RB_FL_SET(x,f)
#define FL_UNSET_RAW(x,f) RB_FL_UNSET_RAW(x,f)
#define FL_UNSET(x,f) RB_FL_UNSET(x,f)
#define FL_REVERSE_RAW(x,f) RB_FL_REVERSE_RAW(x,f)
#define FL_REVERSE(x,f) RB_FL_REVERSE(x,f)
#define OBJ_TAINTABLE(x) RB_OBJ_TAINTABLE(x)
#define OBJ_TAINTED_RAW(x) RB_OBJ_TAINTED_RAW(x)
#define OBJ_TAINTED(x) RB_OBJ_TAINTED(x)
#define OBJ_TAINT_RAW(x) RB_OBJ_TAINT_RAW(x)
#define OBJ_TAINT(x) RB_OBJ_TAINT(x)
#define OBJ_UNTRUSTED(x) RB_OBJ_UNTRUSTED(x)
#define OBJ_UNTRUST(x) RB_OBJ_UNTRUST(x)
#define OBJ_INFECT_RAW(x,s) RB_OBJ_INFECT_RAW(x,s)
#define OBJ_INFECT(x,s) RB_OBJ_INFECT(x,s)
#define OBJ_FROZEN_RAW(x) RB_OBJ_FROZEN_RAW(x)
#define OBJ_FROZEN(x) RB_OBJ_FROZEN(x)
#define OBJ_FREEZE_RAW(x) RB_OBJ_FREEZE_RAW(x)
#define OBJ_FREEZE(x) RB_OBJ_FREEZE(x)
void rb_freeze_singleton_class(VALUE klass);
static inline void
rb_obj_freeze_inline(VALUE x)
{
    if ((!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) != RUBY_T_NODE)) {
 (void)(((struct RBasic*)(x))->flags |= RUBY_FL_FREEZE);
 if ((((struct RBasic*)(x))->klass) && !(((struct RBasic*)(x))->flags & RUBY_FL_SINGLETON)) {
     rb_freeze_singleton_class(x);
 }
    }
}
#define RUBY_UNTYPED_DATA_FUNC(func) func __attribute__((warning("untyped Data is unsafe; use TypedData instead")))
static inline VALUE rb_data_object_wrap_warning(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC) __attribute__((warning("untyped Data is unsafe; use TypedData instead")));
static inline void *rb_data_object_get_warning(VALUE) __attribute__((warning("untyped Data is unsafe; use TypedData instead")));
static inline VALUE
rb_data_object_wrap_warning(VALUE klass, void *ptr, RUBY_DATA_FUNC mark, RUBY_DATA_FUNC free)
{
    return rb_data_object_wrap(klass, ptr, mark, free);
}
#define rb_data_object_wrap_warning(klass,ptr,mark,free) __extension__( __builtin_choose_expr( __builtin_constant_p(klass) && !(klass), rb_data_object_wrap(klass, ptr, mark, free), rb_data_object_wrap_warning(klass, ptr, mark, free)))
static inline void *
rb_data_object_get(VALUE obj)
{
    rb_check_type((VALUE)(obj),(RUBY_T_DATA));
    return ((struct RData *)obj)->data;
}
static inline void *
rb_data_object_get_warning(VALUE obj)
{
    return rb_data_object_get(obj);
}
static inline VALUE
rb_data_object_make(VALUE klass, RUBY_DATA_FUNC mark_func, RUBY_DATA_FUNC free_func, void **datap, size_t size)
{
    VALUE result = rb_data_object_zalloc((klass), (size), (RUBY_DATA_FUNC)(mark_func), (RUBY_DATA_FUNC)(free_func)); (void)((*datap) = (void *)(((struct RData*)(result))->data));;
    return result;
}
static inline VALUE
rb_data_typed_object_make(VALUE klass, const rb_data_type_t *type, void **datap, size_t size)
{
    VALUE result = rb_data_typed_object_zalloc(klass, size, type); (void)((*datap) = (void *)(((struct RData*)(result))->data));;
    return result;
}
__attribute__ ((__deprecated__("by ""rb_data_object_wrap"))) static inline VALUE rb_data_object_alloc(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
static inline VALUE
rb_data_object_alloc(VALUE klass, void *data, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree)
{
    return rb_data_object_wrap(klass, data, dmark, dfree);
}
__attribute__ ((__deprecated__("by ""rb_data_typed_object_wrap"))) static inline VALUE rb_data_typed_object_alloc(VALUE,void*,const rb_data_type_t*);
static inline VALUE
rb_data_typed_object_alloc(VALUE klass, void *datap, const rb_data_type_t *type)
{
    return rb_data_typed_object_wrap(klass, datap, type);
}
#define rb_data_object_wrap_0 rb_data_object_wrap
#define rb_data_object_wrap_1 rb_data_object_wrap_warning
#define rb_data_object_wrap RUBY_MACRO_SELECT(rb_data_object_wrap_, RUBY_UNTYPED_DATA_WARNING)
#define rb_data_object_get_0 rb_data_object_get
#define rb_data_object_get_1 rb_data_object_get_warning
#define rb_data_object_get RUBY_MACRO_SELECT(rb_data_object_get_, RUBY_UNTYPED_DATA_WARNING)
#define rb_data_object_make_0 rb_data_object_make
#define rb_data_object_make_1 rb_data_object_make_warning
#define rb_data_object_make RUBY_MACRO_SELECT(rb_data_object_make_, RUBY_UNTYPED_DATA_WARNING)
#define RB_OBJ_PROMOTED_RAW(x) RB_FL_ALL_RAW(x, RUBY_FL_PROMOTED)
#define RB_OBJ_PROMOTED(x) (RB_SPECIAL_CONST_P(x) ? 0 : RB_OBJ_PROMOTED_RAW(x))
#define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__)
void rb_gc_writebarrier(VALUE a, VALUE b);
void rb_gc_writebarrier_unprotect(VALUE obj);
#define OBJ_PROMOTED_RAW(x) RB_OBJ_PROMOTED_RAW(x)
#define OBJ_PROMOTED(x) RB_OBJ_PROMOTED(x)
#define OBJ_WB_UNPROTECT(x) RB_OBJ_WB_UNPROTECT(x)
#define RB_OBJ_WRITE(a,slot,b) rb_obj_write((VALUE)(a), (VALUE *)(slot), (VALUE)(b), __FILE__, __LINE__)
#define RB_OBJ_WRITTEN(a,oldv,b) rb_obj_written((VALUE)(a), (VALUE)(oldv), (VALUE)(b), __FILE__, __LINE__)
#define USE_RGENGC_LOGGING_WB_UNPROTECT 0
static inline VALUE
rb_obj_wb_unprotect(VALUE x, const char *filename __attribute__ ((unused)), int line __attribute__ ((unused)))
{
    rb_gc_writebarrier_unprotect(x);
    return x;
}
static inline VALUE
rb_obj_written(VALUE a, VALUE oldv __attribute__ ((unused)), VALUE b, const char *filename __attribute__ ((unused)), int line __attribute__ ((unused)))
{
    if (!(((VALUE)(b) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(b) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 rb_gc_writebarrier(a, b);
    }
    return a;
}
static inline VALUE
rb_obj_write(VALUE a, VALUE *slot, VALUE b, const char *filename __attribute__ ((unused)), int line __attribute__ ((unused)))
{
    *slot = b;
    rb_obj_written(a, ((VALUE)RUBY_Qundef) , b, filename, line);
    return a;
}
#define RUBY_INTEGER_UNIFICATION 1
#define RB_INTEGER_TYPE_P(obj) rb_integer_type_p(obj)
static inline int
rb_integer_type_p(VALUE obj)
{
    return ((((int)(long)(obj))&RUBY_FIXNUM_FLAG) ||
     (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) &&
      (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_BIGNUM));
}
static inline VALUE
rb_int2num_inline(int v)
{
    if ((((v) < (0x7fffffffL>>1)+1) && ((v) >= (((long)(-0x7fffffffL - 1L))>>(int)(1)))))
 return (((VALUE)(v))<<1 | RUBY_FIXNUM_FLAG);
    else
 return rb_int2big(v);
}
#define RB_INT2NUM(x) rb_int2num_inline(x)
static inline VALUE
rb_uint2num_inline(unsigned int v)
{
    if (((v) < (0x7fffffffL>>1)+1))
 return (((VALUE)(v))<<1 | RUBY_FIXNUM_FLAG);
    else
 return rb_uint2big(v);
}
#define RB_UINT2NUM(x) rb_uint2num_inline(x)
#define INT2NUM(x) RB_INT2NUM(x)
#define UINT2NUM(x) RB_UINT2NUM(x)
static inline VALUE
rb_long2num_inline(long v)
{
    if ((((v) < (0x7fffffffL>>1)+1) && ((v) >= (((long)(-0x7fffffffL - 1L))>>(int)(1)))))
 return (((VALUE)(v))<<1 | RUBY_FIXNUM_FLAG);
    else
 return rb_int2big(v);
}
#define RB_LONG2NUM(x) rb_long2num_inline(x)
static inline VALUE
rb_ulong2num_inline(unsigned long v)
{
    if (((v) < (0x7fffffffL>>1)+1))
 return (((VALUE)(v))<<1 | RUBY_FIXNUM_FLAG);
    else
 return rb_uint2big(v);
}
#define RB_ULONG2NUM(x) rb_ulong2num_inline(x)
static inline char
rb_num2char_inline(VALUE x)
{
    if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(x))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((x) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((x) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((x) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((x) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(x)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && ((!(((struct RBasic*)(x))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(x))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(x))->as.heap.len)>=1))
 return (!(((struct RBasic*)(x))->flags & RSTRING_NOEMBED) ? ((struct RString*)(x))->as.ary : ((struct RString*)(x))->as.heap.ptr)[0];
    else
 return (char)(((int)rb_num2long_inline(x)) & 0xff);
}
#define RB_NUM2CHR(x) rb_num2char_inline(x)
#define RB_CHR2FIX(x) RB_INT2FIX((long)((x)&0xff))
#define LONG2NUM(x) RB_LONG2NUM(x)
#define ULONG2NUM(x) RB_ULONG2NUM(x)
#define USHORT2NUM(x) RB_INT2FIX(x)
#define NUM2CHR(x) RB_NUM2CHR(x)
#define CHR2FIX(x) RB_CHR2FIX(x)
#define RB_ST2FIX(h) RB_LONG2FIX((long)(h))
#define ST2FIX(h) RB_ST2FIX(h)
#define RB_ALLOC_N(type,n) ((type*)ruby_xmalloc2((size_t)(n),sizeof(type)))
#define RB_ALLOC(type) ((type*)ruby_xmalloc(sizeof(type)))
#define RB_ZALLOC_N(type,n) ((type*)ruby_xcalloc((size_t)(n),sizeof(type)))
#define RB_ZALLOC(type) (RB_ZALLOC_N(type,1))
#define RB_REALLOC_N(var,type,n) ((var)=(type*)ruby_xrealloc2((char*)(var),(size_t)(n),sizeof(type)))
#define ALLOC_N(type,n) RB_ALLOC_N(type,n)
#define ALLOC(type) RB_ALLOC(type)
#define ZALLOC_N(type,n) RB_ZALLOC_N(type,n)
#define ZALLOC(type) RB_ZALLOC(type)
#define REALLOC_N(var,type,n) RB_REALLOC_N(var,type,n)
#define ALLOCA_N(type,n) (type*)__builtin_alloca_with_align((sizeof(type)*(n)), RUBY_ALIGNOF(type) * CHAR_BIT)
void *rb_alloc_tmp_buffer(volatile VALUE *store, long len) __attribute__ ((alloc_size (2)));
void *rb_alloc_tmp_buffer_with_count(volatile VALUE *store, size_t len,size_t count) __attribute__ ((alloc_size (2,3)));
void rb_free_tmp_buffer(volatile VALUE *store);
__attribute__ ((__noreturn__)) void ruby_malloc_size_overflow(size_t, size_t);
#define DSIZE_T unsigned LONG_LONG
static inline int
rb_mul_size_overflow(size_t a, size_t b, size_t max, size_t *c)
{
    __extension__
    unsigned long long c2 = (unsigned long long)a * (unsigned long long)b;
    if (c2 > max) return 1;
    *c = (size_t)c2;
    return 0;
}
static inline void *
rb_alloc_tmp_buffer2(volatile VALUE *store, long count, size_t elsize)
{
    size_t cnt = (size_t)count;
    if (elsize == sizeof(VALUE)) {
 if ((__builtin_expect(!!(cnt > 0x7fffffffL / sizeof(VALUE)), 0))) {
     ruby_malloc_size_overflow(cnt, elsize);
 }
    }
    else {
 size_t size, max = 0x7fffffffL - sizeof(VALUE) + 1;
 if ((__builtin_expect(!!(rb_mul_size_overflow(cnt, elsize, max, &size)), 0))) {
     ruby_malloc_size_overflow(cnt, elsize);
 }
 cnt = (size + sizeof(VALUE) - 1) / sizeof(VALUE);
    }
    return rb_alloc_tmp_buffer_with_count(store, cnt * sizeof(VALUE), cnt);
}
#define RUBY_ALLOCV_LIMIT 1024
#define RB_ALLOCV(v,n) ((n) < RUBY_ALLOCV_LIMIT ? ((v) = 0, alloca(n)) : rb_alloc_tmp_buffer(&(v), (n)))
#define RB_ALLOCV_N(type,v,n) ((type*)(((size_t)(n) < RUBY_ALLOCV_LIMIT / sizeof(type)) ? ((v) = 0, alloca((size_t)(n) * sizeof(type))) : rb_alloc_tmp_buffer2(&(v), (long)(n), sizeof(type))))
#define RB_ALLOCV_END(v) rb_free_tmp_buffer(&(v))
#define ALLOCV(v,n) RB_ALLOCV(v, n)
#define ALLOCV_N(type,v,n) RB_ALLOCV_N(type, v, n)
#define ALLOCV_END(v) RB_ALLOCV_END(v)
#define MEMZERO(p,type,n) memset((p), 0, sizeof(type)*(size_t)(n))
#define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(size_t)(n))
#define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), sizeof(type)*(size_t)(n))
#define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), sizeof(type)*(size_t)(n))
void rb_obj_infect(VALUE victim, VALUE carrier);
typedef int ruby_glob_func(const char*,VALUE, void*);
void rb_glob(const char*,void(*)(const char*,VALUE,void*),VALUE);
int ruby_glob(const char*,int,ruby_glob_func*,VALUE);
int ruby_brace_glob(const char*,int,ruby_glob_func*,VALUE);
VALUE rb_define_class(const char*,VALUE);
VALUE rb_define_module(const char*);
VALUE rb_define_class_under(VALUE, const char*, VALUE);
VALUE rb_define_module_under(VALUE, const char*);
void rb_include_module(VALUE,VALUE);
void rb_extend_object(VALUE,VALUE);
void rb_prepend_module(VALUE,VALUE);
struct rb_global_variable;
typedef VALUE rb_gvar_getter_t(ID id, void *data, struct rb_global_variable *gvar);
typedef void rb_gvar_setter_t(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
typedef void rb_gvar_marker_t(VALUE *var);
VALUE rb_gvar_undef_getter(ID id, void *data, struct rb_global_variable *gvar);
void rb_gvar_undef_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
void rb_gvar_undef_marker(VALUE *var);
VALUE rb_gvar_val_getter(ID id, void *data, struct rb_global_variable *gvar);
void rb_gvar_val_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
void rb_gvar_val_marker(VALUE *var);
VALUE rb_gvar_var_getter(ID id, void *data, struct rb_global_variable *gvar);
void rb_gvar_var_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
void rb_gvar_var_marker(VALUE *var);
__attribute__ ((__noreturn__)) void rb_gvar_readonly_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
void rb_define_variable(const char*,VALUE*);
void rb_define_virtual_variable(const char*,VALUE(*)(),void(*)());
void rb_define_hooked_variable(const char*,VALUE*,VALUE(*)(),void(*)());
void rb_define_readonly_variable(const char*,const VALUE*);
void rb_define_const(VALUE,const char*,VALUE);
void rb_define_global_const(const char*,VALUE);
#define RUBY_METHOD_FUNC(func) ((VALUE (*)(ANYARGS))(func))
void rb_define_method(VALUE,const char*,VALUE(*)(),int);
void rb_define_module_function(VALUE,const char*,VALUE(*)(),int);
void rb_define_global_function(const char*,VALUE(*)(),int);
void rb_undef_method(VALUE,const char*);
void rb_define_alias(VALUE,const char*,const char*);
void rb_define_attr(VALUE,const char*,int,int);
void rb_global_variable(VALUE*);
void rb_gc_register_mark_object(VALUE);
void rb_gc_register_address(VALUE*);
void rb_gc_unregister_address(VALUE*);
ID rb_intern(const char*);
ID rb_intern2(const char*, long);
ID rb_intern_str(VALUE str);
const char *rb_id2name(ID);
ID rb_check_id(volatile VALUE *);
ID rb_to_id(VALUE);
VALUE rb_id2str(ID);
VALUE rb_sym2str(VALUE);
VALUE rb_to_symbol(VALUE name);
VALUE rb_check_symbol(volatile VALUE *namep);
#define RUBY_CONST_ID_CACHE(result,str) { static ID rb_intern_id_cache; if (!rb_intern_id_cache) rb_intern_id_cache = rb_intern2((str), (long)strlen(str)); result rb_intern_id_cache; }
#define RUBY_CONST_ID(var,str) do RUBY_CONST_ID_CACHE((var) =, (str)) while (0)
#define CONST_ID_CACHE(result,str) RUBY_CONST_ID_CACHE(result, str)
#define CONST_ID(var,str) RUBY_CONST_ID(var, str)
#define rb_intern(str) (__builtin_constant_p(str) ? __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : rb_intern(str))
#define rb_intern_const(str) (__builtin_constant_p(str) ? __extension__ (rb_intern2((str), (long)strlen(str))) : (rb_intern)(str))
#define rb_varargs_argc_check_runtime(argc,vargc) (((argc) <= (vargc)) ? (argc) : (rb_fatal("argc(%d) exceeds actual arguments(%d)", argc, vargc), 0))
#define rb_varargs_argc_valid_p(argc,vargc) ((argc) == 0 ? (vargc) <= 1 : (argc) == (vargc))
__attribute__ ((__error__ (" argument length doesn't match"))) int rb_varargs_bad_length(int,int);
#define rb_varargs_argc_check(argc,vargc) __builtin_choose_expr(__builtin_constant_p(argc), (rb_varargs_argc_valid_p(argc, vargc) ? (argc) : rb_varargs_bad_length(argc, vargc)), rb_varargs_argc_check_runtime(argc, vargc))
const char *rb_class2name(VALUE);
const char *rb_obj_classname(VALUE);
void rb_p(VALUE);
VALUE rb_eval_string(const char*);
VALUE rb_eval_string_protect(const char*, int*);
VALUE rb_eval_string_wrap(const char*, int*);
VALUE rb_funcall(VALUE, ID, int, ...);
VALUE rb_funcallv(VALUE, ID, int, const VALUE*);
VALUE rb_funcallv_public(VALUE, ID, int, const VALUE*);
#define rb_funcall2 rb_funcallv
#define rb_funcall3 rb_funcallv_public
VALUE rb_funcall_passing_block(VALUE, ID, int, const VALUE*);
VALUE rb_funcall_with_block(VALUE, ID, int, const VALUE*, VALUE);
int rb_scan_args(int, const VALUE*, const char*, ...);
VALUE rb_call_super(int, const VALUE*);
VALUE rb_current_receiver(void);
int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *);
VALUE rb_extract_keywords(VALUE *orighash);
#define HAVE_RB_SCAN_ARGS_OPTIONAL_HASH 1
VALUE rb_gv_set(const char*, VALUE);
VALUE rb_gv_get(const char*);
VALUE rb_iv_get(VALUE, const char*);
VALUE rb_iv_set(VALUE, const char*, VALUE);
VALUE rb_equal(VALUE,VALUE);
VALUE *rb_ruby_verbose_ptr(void);
VALUE *rb_ruby_debug_ptr(void);
#define ruby_verbose (*rb_ruby_verbose_ptr())
#define ruby_debug (*rb_ruby_debug_ptr())
enum rb_io_wait_readwrite {RB_IO_WAIT_READABLE, RB_IO_WAIT_WRITABLE};
#define RB_IO_WAIT_READABLE RB_IO_WAIT_READABLE
#define RB_IO_WAIT_WRITABLE RB_IO_WAIT_WRITABLE
__attribute__ ((__noreturn__)) void rb_raise(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
__attribute__ ((__noreturn__)) void rb_fatal(const char*, ...) __attribute__((format(printf, 1, 2)));
__attribute__((cold)) __attribute__ ((__noreturn__)) void rb_bug(const char*, ...) __attribute__((format(printf, 1, 2)));
__attribute__ ((__noreturn__)) void rb_bug_errno(const char*, int);
__attribute__ ((__noreturn__)) void rb_sys_fail(const char*);
__attribute__ ((__noreturn__)) void rb_sys_fail_str(VALUE);
__attribute__ ((__noreturn__)) void rb_mod_sys_fail(VALUE, const char*);
__attribute__ ((__noreturn__)) void rb_mod_sys_fail_str(VALUE, VALUE);
__attribute__ ((__noreturn__)) void rb_readwrite_sys_fail(enum rb_io_wait_readwrite, const char*);
__attribute__ ((__noreturn__)) void rb_iter_break(void);
__attribute__ ((__noreturn__)) void rb_iter_break_value(VALUE);
__attribute__ ((__noreturn__)) void rb_exit(int);
__attribute__ ((__noreturn__)) void rb_notimplement(void);
VALUE rb_syserr_new(int, const char *);
VALUE rb_syserr_new_str(int n, VALUE arg);
__attribute__ ((__noreturn__)) void rb_syserr_fail(int, const char*);
__attribute__ ((__noreturn__)) void rb_syserr_fail_str(int, VALUE);
__attribute__ ((__noreturn__)) void rb_mod_syserr_fail(VALUE, int, const char*);
__attribute__ ((__noreturn__)) void rb_mod_syserr_fail_str(VALUE, int, VALUE);
__attribute__ ((__noreturn__)) void rb_readwrite_syserr_fail(enum rb_io_wait_readwrite, int, const char*);
void rb_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
void rb_compile_warning(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
void rb_sys_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
__attribute__((cold)) void rb_warn(const char*, ...) __attribute__((format(printf, 1, 2)));
void rb_compile_warn(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
#define RUBY_BLOCK_CALL_FUNC_TAKES_BLOCKARG 1
#define RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg,callback_arg) VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg
typedef VALUE rb_block_call_func(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg);
typedef VALUE (*rb_block_call_func_t)();
VALUE rb_each(VALUE);
VALUE rb_yield(VALUE);
VALUE rb_yield_values(int n, ...);
VALUE rb_yield_values2(int n, const VALUE *argv);
VALUE rb_yield_splat(VALUE);
VALUE rb_yield_block(VALUE, VALUE, int, const VALUE *, VALUE);
int rb_block_given_p(void);
void rb_need_block(void);
VALUE rb_iterate(VALUE(*)(VALUE),VALUE,VALUE(*)(),VALUE);
VALUE rb_block_call(VALUE,ID,int,const VALUE*,rb_block_call_func_t,VALUE);
VALUE rb_rescue(VALUE(*)(),VALUE,VALUE(*)(),VALUE);
VALUE rb_rescue2(VALUE(*)(),VALUE,VALUE(*)(),VALUE,...);
VALUE rb_ensure(VALUE(*)(),VALUE,VALUE(*)(),VALUE);
VALUE rb_catch(const char*,VALUE(*)(),VALUE);
VALUE rb_catch_obj(VALUE,VALUE(*)(),VALUE);
__attribute__ ((__noreturn__)) void rb_throw(const char*,VALUE);
__attribute__ ((__noreturn__)) void rb_throw_obj(VALUE,VALUE);
VALUE rb_require(const char*);
extern __attribute__((dllimport)) VALUE rb_mKernel;
extern __attribute__((dllimport)) VALUE rb_mComparable;
extern __attribute__((dllimport)) VALUE rb_mEnumerable;
extern __attribute__((dllimport)) VALUE rb_mErrno;
extern __attribute__((dllimport)) VALUE rb_mFileTest;
extern __attribute__((dllimport)) VALUE rb_mGC;
extern __attribute__((dllimport)) VALUE rb_mMath;
extern __attribute__((dllimport)) VALUE rb_mProcess;
extern __attribute__((dllimport)) VALUE rb_mWaitReadable;
extern __attribute__((dllimport)) VALUE rb_mWaitWritable;
extern __attribute__((dllimport)) VALUE rb_cBasicObject;
extern __attribute__((dllimport)) VALUE rb_cObject;
extern __attribute__((dllimport)) VALUE rb_cArray;
extern __attribute__((dllimport)) VALUE rb_cBinding;
extern __attribute__((dllimport)) VALUE rb_cClass;
extern __attribute__((dllimport)) VALUE rb_cCont;
extern __attribute__((dllimport)) VALUE rb_cData;
extern __attribute__((dllimport)) VALUE rb_cDir;
extern __attribute__((dllimport)) VALUE rb_cEncoding;
extern __attribute__((dllimport)) VALUE rb_cEnumerator;
extern __attribute__((dllimport)) VALUE rb_cFalseClass;
extern __attribute__((dllimport)) VALUE rb_cFile;
extern __attribute__((dllimport)) VALUE rb_cComplex;
extern __attribute__((dllimport)) VALUE rb_cFloat;
extern __attribute__((dllimport)) VALUE rb_cHash;
extern __attribute__((dllimport)) VALUE rb_cIO;
extern __attribute__((dllimport)) VALUE rb_cInteger;
extern __attribute__((dllimport)) VALUE rb_cMatch;
extern __attribute__((dllimport)) VALUE rb_cMethod;
extern __attribute__((dllimport)) VALUE rb_cModule;
extern __attribute__((dllimport)) VALUE rb_cNameErrorMesg;
extern __attribute__((dllimport)) VALUE rb_cNilClass;
extern __attribute__((dllimport)) VALUE rb_cNumeric;
extern __attribute__((dllimport)) VALUE rb_cProc;
extern __attribute__((dllimport)) VALUE rb_cRandom;
extern __attribute__((dllimport)) VALUE rb_cRange;
extern __attribute__((dllimport)) VALUE rb_cRational;
extern __attribute__((dllimport)) VALUE rb_cRegexp;
extern __attribute__((dllimport)) VALUE rb_cStat;
extern __attribute__((dllimport)) VALUE rb_cString;
extern __attribute__((dllimport)) VALUE rb_cStruct;
extern __attribute__((dllimport)) VALUE rb_cSymbol;
extern __attribute__((dllimport)) VALUE rb_cThread;
extern __attribute__((dllimport)) VALUE rb_cTime;
extern __attribute__((dllimport)) VALUE rb_cTrueClass;
extern __attribute__((dllimport)) VALUE rb_cUnboundMethod;
extern __attribute__((dllimport)) VALUE rb_eException;
extern __attribute__((dllimport)) VALUE rb_eStandardError;
extern __attribute__((dllimport)) VALUE rb_eSystemExit;
extern __attribute__((dllimport)) VALUE rb_eInterrupt;
extern __attribute__((dllimport)) VALUE rb_eSignal;
extern __attribute__((dllimport)) VALUE rb_eFatal;
extern __attribute__((dllimport)) VALUE rb_eArgError;
extern __attribute__((dllimport)) VALUE rb_eEOFError;
extern __attribute__((dllimport)) VALUE rb_eIndexError;
extern __attribute__((dllimport)) VALUE rb_eStopIteration;
extern __attribute__((dllimport)) VALUE rb_eKeyError;
extern __attribute__((dllimport)) VALUE rb_eRangeError;
extern __attribute__((dllimport)) VALUE rb_eIOError;
extern __attribute__((dllimport)) VALUE rb_eRuntimeError;
extern __attribute__((dllimport)) VALUE rb_eFrozenError;
extern __attribute__((dllimport)) VALUE rb_eSecurityError;
extern __attribute__((dllimport)) VALUE rb_eSystemCallError;
extern __attribute__((dllimport)) VALUE rb_eThreadError;
extern __attribute__((dllimport)) VALUE rb_eTypeError;
extern __attribute__((dllimport)) VALUE rb_eZeroDivError;
extern __attribute__((dllimport)) VALUE rb_eNotImpError;
extern __attribute__((dllimport)) VALUE rb_eNoMemError;
extern __attribute__((dllimport)) VALUE rb_eNoMethodError;
extern __attribute__((dllimport)) VALUE rb_eFloatDomainError;
extern __attribute__((dllimport)) VALUE rb_eLocalJumpError;
extern __attribute__((dllimport)) VALUE rb_eSysStackError;
extern __attribute__((dllimport)) VALUE rb_eRegexpError;
extern __attribute__((dllimport)) VALUE rb_eEncodingError;
extern __attribute__((dllimport)) VALUE rb_eEncCompatError;
extern __attribute__((dllimport)) VALUE rb_eScriptError;
extern __attribute__((dllimport)) VALUE rb_eNameError;
extern __attribute__((dllimport)) VALUE rb_eSyntaxError;
extern __attribute__((dllimport)) VALUE rb_eLoadError;
extern __attribute__((dllimport)) VALUE rb_eMathDomainError;
extern __attribute__((dllimport)) VALUE rb_stdin, rb_stdout, rb_stderr;
static inline VALUE
rb_class_of(VALUE obj)
{
    if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
 if ((((int)(long)(obj))&RUBY_FIXNUM_FLAG)) return rb_cInteger;
 if (0) return rb_cFloat;
 if (obj == ((VALUE)RUBY_Qtrue)) return rb_cTrueClass;
 if ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)) return rb_cSymbol;
    }
    else if (!!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
 if (obj == ((VALUE)RUBY_Qnil)) return rb_cNilClass;
 if (obj == ((VALUE)RUBY_Qfalse)) return rb_cFalseClass;
    }
    return ((struct RBasic*)(obj))->klass;
}
static inline int
rb_type(VALUE obj)
{
    if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
 if ((((int)(long)(obj))&RUBY_FIXNUM_FLAG)) return RUBY_T_FIXNUM;
        if (0) return RUBY_T_FLOAT;
        if (obj == ((VALUE)RUBY_Qtrue)) return RUBY_T_TRUE;
 if ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)) return RUBY_T_SYMBOL;
 if (obj == ((VALUE)RUBY_Qundef)) return RUBY_T_UNDEF;
    }
    else if (!!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
 if (obj == ((VALUE)RUBY_Qnil)) return RUBY_T_NIL;
 if (obj == ((VALUE)RUBY_Qfalse)) return RUBY_T_FALSE;
    }
    return (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK);
}
#define rb_type_p(obj,type) __extension__ (__builtin_constant_p(type) ? RB_TYPE_P((obj), (type)) : rb_type(obj) == (type))
#define rb_special_const_p(obj) __extension__ ({ VALUE special_const_obj = (obj); (int)(RB_SPECIAL_CONST_P(special_const_obj) ? RUBY_Qtrue : RUBY_Qfalse); })
#define RUBY_INTERN_H 1
#define RUBY_ST_H 1

#pragma GCC visibility push(default)

typedef unsigned long st_data_t;
#define ST_DATA_T_DEFINED 
typedef struct st_table st_table;
typedef st_data_t st_index_t;
#define MAX_ST_INDEX_VAL (~(st_index_t) 0)
typedef int st_compare_func(st_data_t, st_data_t);
typedef st_index_t st_hash_func(st_data_t);
typedef char st_check_for_sizeof_st_index_t[4 == (int)sizeof(st_index_t) ? 1 : -1];
#define SIZEOF_ST_INDEX_T SIZEOF_VOIDP
struct st_hash_type {
    int (*compare)( );
    st_index_t (*hash)( );
};
#define ST_INDEX_BITS (SIZEOF_ST_INDEX_T * CHAR_BIT)
#define ST_DATA_COMPATIBLE_P(type) __builtin_choose_expr(__builtin_types_compatible_p(type, st_data_t), 1, 0)
typedef struct st_table_entry st_table_entry;
struct st_table_entry;
struct st_table {
    unsigned char entry_power, bin_power, size_ind;
    unsigned int rebuilds_num;
    const struct st_hash_type *type;
    st_index_t num_entries;
    st_index_t *bins;
    st_index_t entries_start, entries_bound;
    st_table_entry *entries;
};
#define st_is_member(table,key) st_lookup((table),(key),(st_data_t *)0)
enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK};
st_table *st_init_table(const struct st_hash_type *);
st_table *st_init_table_with_size(const struct st_hash_type *, st_index_t);
st_table *st_init_numtable(void);
st_table *st_init_numtable_with_size(st_index_t);
st_table *st_init_strtable(void);
st_table *st_init_strtable_with_size(st_index_t);
st_table *st_init_strcasetable(void);
st_table *st_init_strcasetable_with_size(st_index_t);
int st_delete(st_table *, st_data_t *, st_data_t *);
int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t);
int st_shift(st_table *, st_data_t *, st_data_t *);
int st_insert(st_table *, st_data_t, st_data_t);
int st_insert2(st_table *, st_data_t, st_data_t, st_data_t (*)(st_data_t));
int st_lookup(st_table *, st_data_t, st_data_t *);
int st_get_key(st_table *, st_data_t, st_data_t *);
typedef int st_update_callback_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing);
int st_update(st_table *table, st_data_t key, st_update_callback_func *func, st_data_t arg);
int st_foreach(st_table *, int (*)(), st_data_t);
int st_foreach_check(st_table *, int (*)(), st_data_t, st_data_t);
st_index_t st_keys(st_table *table, st_data_t *keys, st_index_t size);
st_index_t st_keys_check(st_table *table, st_data_t *keys, st_index_t size, st_data_t never);
st_index_t st_values(st_table *table, st_data_t *values, st_index_t size);
st_index_t st_values_check(st_table *table, st_data_t *values, st_index_t size, st_data_t never);
void st_add_direct(st_table *, st_data_t, st_data_t);
void st_free_table(st_table *);
void st_cleanup_safe(st_table *, st_data_t);
void st_clear(st_table *);
st_table *st_copy(st_table *);
__attribute__ ((__const__)) int st_numcmp(st_data_t, st_data_t);
__attribute__ ((__const__)) st_index_t st_numhash(st_data_t);
__attribute__ ((__pure__)) int st_locale_insensitive_strcasecmp(const char *s1, const char *s2);
__attribute__ ((__pure__)) int st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n);
#define st_strcasecmp st_locale_insensitive_strcasecmp
#define st_strncasecmp st_locale_insensitive_strncasecmp
__attribute__ ((__pure__)) size_t st_memsize(const st_table *);
__attribute__ ((__pure__)) st_index_t st_hash(const void *ptr, size_t len, st_index_t h);
__attribute__ ((__const__)) st_index_t st_hash_uint32(st_index_t h, uint32_t i);
__attribute__ ((__const__)) st_index_t st_hash_uint(st_index_t h, st_index_t i);
__attribute__ ((__const__)) st_index_t st_hash_end(st_index_t h);
__attribute__ ((__const__)) st_index_t st_hash_start(st_index_t h);
#define st_hash_start(h) ((st_index_t)(h))
void rb_hash_bulk_insert_into_st_table(long, const VALUE *, VALUE);

#pragma GCC visibility pop

#define MJIT_STATIC static

#pragma GCC visibility push(default)

#define UNLIMITED_ARGUMENTS (-1)
void rb_mem_clear(register VALUE*, register long);
VALUE rb_assoc_new(VALUE, VALUE);
VALUE rb_check_array_type(VALUE);
VALUE rb_ary_new(void);
VALUE rb_ary_new_capa(long capa);
VALUE rb_ary_new_from_args(long n, ...);
VALUE rb_ary_new_from_values(long n, const VALUE *elts);
VALUE rb_ary_tmp_new(long);
void rb_ary_free(VALUE);
void rb_ary_modify(VALUE);
VALUE rb_ary_freeze(VALUE);
VALUE rb_ary_shared_with_p(VALUE, VALUE);
VALUE rb_ary_aref(int, const VALUE*, VALUE);
VALUE rb_ary_subseq(VALUE, long, long);
void rb_ary_store(VALUE, long, VALUE);
VALUE rb_ary_dup(VALUE);
VALUE rb_ary_resurrect(VALUE ary);
VALUE rb_ary_to_ary(VALUE);
VALUE rb_ary_to_s(VALUE);
VALUE rb_ary_cat(VALUE, const VALUE *, long);
VALUE rb_ary_push(VALUE, VALUE);
VALUE rb_ary_pop(VALUE);
VALUE rb_ary_shift(VALUE);
VALUE rb_ary_unshift(VALUE, VALUE);
VALUE rb_ary_entry(VALUE, long);
VALUE rb_ary_each(VALUE);
VALUE rb_ary_join(VALUE, VALUE);
VALUE rb_ary_reverse(VALUE);
VALUE rb_ary_rotate(VALUE, long);
VALUE rb_ary_sort(VALUE);
VALUE rb_ary_sort_bang(VALUE);
VALUE rb_ary_delete(VALUE, VALUE);
VALUE rb_ary_delete_at(VALUE, long);
VALUE rb_ary_clear(VALUE);
VALUE rb_ary_plus(VALUE, VALUE);
VALUE rb_ary_concat(VALUE, VALUE);
VALUE rb_ary_assoc(VALUE, VALUE);
VALUE rb_ary_rassoc(VALUE, VALUE);
VALUE rb_ary_includes(VALUE, VALUE);
VALUE rb_ary_cmp(VALUE, VALUE);
VALUE rb_ary_replace(VALUE copy, VALUE orig);
VALUE rb_get_values_at(VALUE, long, int, const VALUE*, VALUE(*)(VALUE,long));
VALUE rb_ary_resize(VALUE ary, long len);
#define rb_ary_new2 rb_ary_new_capa
#define rb_ary_new3 rb_ary_new_from_args
#define rb_ary_new4 rb_ary_new_from_values
VALUE rb_big_new(size_t, int);
int rb_bigzero_p(VALUE x);
VALUE rb_big_clone(VALUE);
void rb_big_2comp(VALUE);
VALUE rb_big_norm(VALUE);
void rb_big_resize(VALUE big, size_t len);
VALUE rb_cstr_to_inum(const char*, int, int);
VALUE rb_str_to_inum(VALUE, int, int);
VALUE rb_cstr2inum(const char*, int);
VALUE rb_str2inum(VALUE, int);
VALUE rb_big2str(VALUE, int);
long rb_big2long(VALUE);
#define rb_big2int(x) rb_big2long(x)
unsigned long rb_big2ulong(VALUE);
#define rb_big2uint(x) rb_big2ulong(x)
long long rb_big2ll(VALUE);
unsigned long long rb_big2ull(VALUE);
void rb_big_pack(VALUE val, unsigned long *buf, long num_longs);
VALUE rb_big_unpack(unsigned long *buf, long num_longs);
int rb_uv_to_utf8(char[6],unsigned long);
VALUE rb_dbl2big(double);
double rb_big2dbl(VALUE);
VALUE rb_big_cmp(VALUE, VALUE);
VALUE rb_big_eq(VALUE, VALUE);
VALUE rb_big_eql(VALUE, VALUE);
VALUE rb_big_plus(VALUE, VALUE);
VALUE rb_big_minus(VALUE, VALUE);
VALUE rb_big_mul(VALUE, VALUE);
VALUE rb_big_div(VALUE, VALUE);
VALUE rb_big_idiv(VALUE, VALUE);
VALUE rb_big_modulo(VALUE, VALUE);
VALUE rb_big_divmod(VALUE, VALUE);
VALUE rb_big_pow(VALUE, VALUE);
VALUE rb_big_and(VALUE, VALUE);
VALUE rb_big_or(VALUE, VALUE);
VALUE rb_big_xor(VALUE, VALUE);
VALUE rb_big_lshift(VALUE, VALUE);
VALUE rb_big_rshift(VALUE, VALUE);
#define INTEGER_PACK_MSWORD_FIRST 0x01
#define INTEGER_PACK_LSWORD_FIRST 0x02
#define INTEGER_PACK_MSBYTE_FIRST 0x10
#define INTEGER_PACK_LSBYTE_FIRST 0x20
#define INTEGER_PACK_NATIVE_BYTE_ORDER 0x40
#define INTEGER_PACK_2COMP 0x80
#define INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION 0x400
#define INTEGER_PACK_FORCE_BIGNUM 0x100
#define INTEGER_PACK_NEGATIVE 0x200
#define INTEGER_PACK_LITTLE_ENDIAN (INTEGER_PACK_LSWORD_FIRST | INTEGER_PACK_LSBYTE_FIRST)
#define INTEGER_PACK_BIG_ENDIAN (INTEGER_PACK_MSWORD_FIRST | INTEGER_PACK_MSBYTE_FIRST)
int rb_integer_pack(VALUE val, void *words, size_t numwords, size_t wordsize, size_t nails, int flags);
VALUE rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t nails, int flags);
size_t rb_absint_size(VALUE val, int *nlz_bits_ret);
size_t rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret);
int rb_absint_singlebit_p(VALUE val);
VALUE rb_rational_raw(VALUE, VALUE);
#define rb_rational_raw1(x) rb_rational_raw((x), INT2FIX(1))
#define rb_rational_raw2(x,y) rb_rational_raw((x), (y))
VALUE rb_rational_new(VALUE, VALUE);
#define rb_rational_new1(x) rb_rational_new((x), INT2FIX(1))
#define rb_rational_new2(x,y) rb_rational_new((x), (y))
VALUE rb_Rational(VALUE, VALUE);
#define rb_Rational1(x) rb_Rational((x), INT2FIX(1))
#define rb_Rational2(x,y) rb_Rational((x), (y))
VALUE rb_rational_num(VALUE rat);
VALUE rb_rational_den(VALUE rat);
VALUE rb_flt_rationalize_with_prec(VALUE, VALUE);
VALUE rb_flt_rationalize(VALUE);
VALUE rb_complex_raw(VALUE, VALUE);
#define rb_complex_raw1(x) rb_complex_raw((x), INT2FIX(0))
#define rb_complex_raw2(x,y) rb_complex_raw((x), (y))
VALUE rb_complex_new(VALUE, VALUE);
#define rb_complex_new1(x) rb_complex_new((x), INT2FIX(0))
#define rb_complex_new2(x,y) rb_complex_new((x), (y))
VALUE rb_complex_new_polar(VALUE abs, VALUE arg);
__attribute__ ((__deprecated__("by ""rb_complex_new_polar"))) VALUE rb_complex_polar(VALUE abs, VALUE arg);
VALUE rb_complex_real(VALUE z);
VALUE rb_complex_imag(VALUE z);
VALUE rb_complex_plus(VALUE x, VALUE y);
VALUE rb_complex_minus(VALUE x, VALUE y);
VALUE rb_complex_mul(VALUE x, VALUE y);
VALUE rb_complex_div(VALUE x, VALUE y);
VALUE rb_complex_uminus(VALUE z);
VALUE rb_complex_conjugate(VALUE z);
VALUE rb_complex_abs(VALUE z);
VALUE rb_complex_arg(VALUE z);
VALUE rb_complex_pow(VALUE base, VALUE exp);
VALUE rb_dbl_complex_new(double real, double imag);
#define rb_complex_add rb_complex_plus
#define rb_complex_sub rb_complex_minus
#define rb_complex_nagate rb_complex_uminus
VALUE rb_Complex(VALUE, VALUE);
#define rb_Complex1(x) rb_Complex((x), INT2FIX(0))
#define rb_Complex2(x,y) rb_Complex((x), (y))
VALUE rb_class_new(VALUE);
VALUE rb_mod_init_copy(VALUE, VALUE);
VALUE rb_singleton_class_clone(VALUE);
void rb_singleton_class_attached(VALUE,VALUE);
void rb_check_inheritable(VALUE);
VALUE rb_define_class_id(ID, VALUE);
VALUE rb_define_class_id_under(VALUE, ID, VALUE);
VALUE rb_module_new(void);
VALUE rb_define_module_id(ID);
VALUE rb_define_module_id_under(VALUE, ID);
VALUE rb_mod_included_modules(VALUE);
VALUE rb_mod_include_p(VALUE, VALUE);
VALUE rb_mod_ancestors(VALUE);
VALUE rb_class_instance_methods(int, const VALUE*, VALUE);
VALUE rb_class_public_instance_methods(int, const VALUE*, VALUE);
VALUE rb_class_protected_instance_methods(int, const VALUE*, VALUE);
VALUE rb_class_private_instance_methods(int, const VALUE*, VALUE);
VALUE rb_obj_singleton_methods(int, const VALUE*, VALUE);
void rb_define_method_id(VALUE, ID, VALUE (*)(), int);
void rb_undef(VALUE, ID);
void rb_define_protected_method(VALUE, const char*, VALUE (*)(), int);
void rb_define_private_method(VALUE, const char*, VALUE (*)(), int);
void rb_define_singleton_method(VALUE, const char*, VALUE(*)(), int);
VALUE rb_singleton_class(VALUE);
int rb_cmpint(VALUE, VALUE, VALUE);
__attribute__ ((__noreturn__)) void rb_cmperr(VALUE, VALUE);
VALUE rb_fiber_new(VALUE (*)(), VALUE);
VALUE rb_fiber_resume(VALUE fib, int argc, const VALUE *argv);
VALUE rb_fiber_yield(int argc, const VALUE *argv);
VALUE rb_fiber_current(void);
VALUE rb_fiber_alive_p(VALUE);
VALUE rb_enum_values_pack(int, const VALUE*);
VALUE rb_enumeratorize(VALUE, VALUE, int, const VALUE *);
typedef VALUE rb_enumerator_size_func(VALUE, VALUE, VALUE);
VALUE rb_enumeratorize_with_size(VALUE, VALUE, int, const VALUE *, rb_enumerator_size_func *);
#define SIZED_ENUMERATOR(obj,argc,argv,size_fn) rb_enumeratorize_with_size((obj), ID2SYM(rb_frame_this_func()), (argc), (argv), (size_fn))
#define RETURN_SIZED_ENUMERATOR(obj,argc,argv,size_fn) do { if (!rb_block_given_p()) return SIZED_ENUMERATOR(obj, argc, argv, size_fn); } while (0)
#define RETURN_ENUMERATOR(obj,argc,argv) RETURN_SIZED_ENUMERATOR(obj, argc, argv, 0)
typedef struct {
    VALUE begin;
    VALUE end;
    VALUE step;
    int exclude_end;
} rb_arithmetic_sequence_components_t;
int rb_arithmetic_sequence_extract(VALUE, rb_arithmetic_sequence_components_t *);
VALUE rb_exc_new(VALUE, const char*, long);
VALUE rb_exc_new_cstr(VALUE, const char*);
VALUE rb_exc_new_str(VALUE, VALUE);
#define rb_exc_new2 rb_exc_new_cstr
#define rb_exc_new3 rb_exc_new_str
__attribute__ ((__noreturn__)) void rb_loaderror(const char*, ...) __attribute__((format(printf, 1, 2)));
__attribute__ ((__noreturn__)) void rb_loaderror_with_path(VALUE path, const char*, ...) __attribute__((format(printf, 2, 3)));
__attribute__ ((__noreturn__)) void rb_name_error(ID, const char*, ...) __attribute__((format(printf, 2, 3)));
__attribute__ ((__noreturn__)) void rb_name_error_str(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
__attribute__ ((__noreturn__)) void rb_invalid_str(const char*, const char*);
__attribute__ ((__noreturn__)) void rb_error_frozen(const char*);
__attribute__ ((__noreturn__)) void rb_error_frozen_object(VALUE);
void rb_error_untrusted(VALUE);
void rb_check_frozen(VALUE);
void rb_check_trusted(VALUE);
#define rb_check_frozen_internal(obj) do { VALUE frozen_obj = (obj); if (RB_UNLIKELY(RB_OBJ_FROZEN(frozen_obj))) { rb_error_frozen_object(frozen_obj); } } while (0)
#define rb_check_trusted_internal(obj) ((void) 0)
#define rb_check_frozen(obj) __extension__({rb_check_frozen_internal(obj);})
#define rb_check_trusted(obj) __extension__({rb_check_trusted_internal(obj);})
void rb_check_copyable(VALUE obj, VALUE orig);
#define RB_OBJ_INIT_COPY(obj,orig) ((obj) != (orig) && (rb_obj_init_copy((obj), (orig)), 1))
#define OBJ_INIT_COPY(obj,orig) RB_OBJ_INIT_COPY(obj, orig)
int rb_sourceline(void);
const char *rb_sourcefile(void);
VALUE rb_check_funcall(VALUE, ID, int, const VALUE*);
__attribute__ ((__noreturn__)) static void rb_error_arity(int, int, int);
static inline int
rb_check_arity(int argc, int min, int max)
{
    if ((argc < min) || (max != (-1) && argc > max))
 rb_error_arity(argc, min, max);
    return argc;
}
#define rb_check_arity rb_check_arity
typedef struct {
    int capa;
    fd_set *fdset;
} rb_fdset_t;
void rb_fd_init(rb_fdset_t *);
void rb_fd_term(rb_fdset_t *);
#define rb_fd_zero(f) ((f)->fdset->fd_count = 0)
void rb_fd_set(int, rb_fdset_t *);
#define rb_fd_clr(n,f) rb_w32_fdclr((n), (f)->fdset)
#define rb_fd_isset(n,f) rb_w32_fdisset((n), (f)->fdset)
#define rb_fd_copy(d,s,n) rb_w32_fd_copy((d), (s), (n))
void rb_w32_fd_copy(rb_fdset_t *, const fd_set *, int);
#define rb_fd_dup(d,s) rb_w32_fd_dup((d), (s))
void rb_w32_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src);
static inline int
rb_fd_select(int n, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout)
{
    return rb_w32_select(n,
                         rfds ? rfds->fdset : ((void *)0),
                         wfds ? wfds->fdset : ((void *)0),
                         efds ? efds->fdset : ((void *)0),
                         timeout);
}
#define rb_fd_resize(n,f) ((void)(f))
#define rb_fd_ptr(f) ((f)->fdset)
#define rb_fd_max(f) ((f)->fdset->fd_count)
__attribute__ ((__noreturn__)) void rb_exc_raise(VALUE);
__attribute__ ((__noreturn__)) void rb_exc_fatal(VALUE);
__attribute__ ((__noreturn__)) VALUE rb_f_exit(int, const VALUE*);
__attribute__ ((__noreturn__)) VALUE rb_f_abort(int, const VALUE*);
void rb_remove_method(VALUE, const char*);
void rb_remove_method_id(VALUE, ID);
#define HAVE_RB_DEFINE_ALLOC_FUNC 1
typedef VALUE (*rb_alloc_func_t)(VALUE);
void rb_define_alloc_func(VALUE, rb_alloc_func_t);
void rb_undef_alloc_func(VALUE);
rb_alloc_func_t rb_get_alloc_func(VALUE);
void rb_clear_constant_cache(void);
void rb_clear_method_cache_by_class(VALUE);
void rb_alias(VALUE, ID, ID);
void rb_attr(VALUE,ID,int,int,int);
int rb_method_boundp(VALUE, ID, int);
int rb_method_basic_definition_p(VALUE, ID);
VALUE rb_eval_cmd(VALUE, VALUE, int);
int rb_obj_respond_to(VALUE, ID, int);
int rb_respond_to(VALUE, ID);
__attribute__ ((__noreturn__)) VALUE rb_f_notimplement(int argc, const VALUE *argv, VALUE obj);
__attribute__ ((__noreturn__)) void rb_interrupt(void);
VALUE rb_apply(VALUE, ID, VALUE);
void rb_backtrace(void);
ID rb_frame_this_func(void);
VALUE rb_obj_instance_eval(int, const VALUE*, VALUE);
VALUE rb_obj_instance_exec(int, const VALUE*, VALUE);
VALUE rb_mod_module_eval(int, const VALUE*, VALUE);
VALUE rb_mod_module_exec(int, const VALUE*, VALUE);
void rb_load(VALUE, int);
void rb_load_protect(VALUE, int, int*);
__attribute__ ((__noreturn__)) void rb_jump_tag(int);
int rb_provided(const char*);
int rb_feature_provided(const char *, const char **);
void rb_provide(const char*);
VALUE rb_f_require(VALUE, VALUE);
VALUE rb_require_safe(VALUE, int);
void rb_obj_call_init(VALUE, int, const VALUE*);
VALUE rb_class_new_instance(int, const VALUE*, VALUE);
VALUE rb_block_proc(void);
VALUE rb_block_lambda(void);
VALUE rb_proc_new(VALUE (*)( ), VALUE);
VALUE rb_obj_is_proc(VALUE);
VALUE rb_proc_call(VALUE, VALUE);
VALUE rb_proc_call_with_block(VALUE, int argc, const VALUE *argv, VALUE);
int rb_proc_arity(VALUE);
VALUE rb_proc_lambda_p(VALUE);
VALUE rb_binding_new(void);
VALUE rb_obj_method(VALUE, VALUE);
VALUE rb_obj_is_method(VALUE);
VALUE rb_method_call(int, const VALUE*, VALUE);
VALUE rb_method_call_with_block(int, const VALUE *, VALUE, VALUE);
int rb_mod_method_arity(VALUE, ID);
int rb_obj_method_arity(VALUE, ID);
VALUE rb_protect(VALUE (*)(VALUE), VALUE, int*);
void rb_set_end_proc(void (*)(VALUE), VALUE);
void rb_exec_end_proc(void);
void rb_thread_schedule(void);
void rb_thread_wait_fd(int);
int rb_thread_fd_writable(int);
void rb_thread_fd_close(int);
int rb_thread_alone(void);
void rb_thread_sleep(int);
void rb_thread_sleep_forever(void);
void rb_thread_sleep_deadly(void);
VALUE rb_thread_stop(void);
VALUE rb_thread_wakeup(VALUE);
VALUE rb_thread_wakeup_alive(VALUE);
VALUE rb_thread_run(VALUE);
VALUE rb_thread_kill(VALUE);
VALUE rb_thread_create(VALUE (*)(), void*);
int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
void rb_thread_wait_for(struct timeval);
VALUE rb_thread_current(void);
VALUE rb_thread_main(void);
VALUE rb_thread_local_aref(VALUE, ID);
VALUE rb_thread_local_aset(VALUE, ID, VALUE);
void rb_thread_atfork(void);
void rb_thread_atfork_before_exec(void);
VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE);
VALUE rb_exec_recursive_paired(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE,VALUE);
VALUE rb_exec_recursive_outer(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE);
VALUE rb_exec_recursive_paired_outer(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE,VALUE);
VALUE rb_dir_getwd(void);
VALUE rb_file_s_expand_path(int, const VALUE *);
VALUE rb_file_expand_path(VALUE, VALUE);
VALUE rb_file_s_absolute_path(int, const VALUE *);
VALUE rb_file_absolute_path(VALUE, VALUE);
VALUE rb_file_dirname(VALUE fname);
int rb_find_file_ext_safe(VALUE*, const char* const*, int);
VALUE rb_find_file_safe(VALUE, int);
int rb_find_file_ext(VALUE*, const char* const*);
VALUE rb_find_file(VALUE);
VALUE rb_file_directory_p(VALUE,VALUE);
VALUE rb_str_encode_ospath(VALUE);
int rb_is_absolute_path(const char *);
__attribute__((cold)) __attribute__ ((__noreturn__)) void rb_memerror(void);
__attribute__ ((__pure__)) int rb_during_gc(void);
void rb_gc_mark_locations(const VALUE*, const VALUE*);
void rb_mark_tbl(struct st_table*);
void rb_mark_set(struct st_table*);
void rb_mark_hash(struct st_table*);
void rb_gc_mark_maybe(VALUE);
void rb_gc_mark(VALUE);
void rb_gc_force_recycle(VALUE);
void rb_gc(void);
void rb_gc_copy_finalizer(VALUE,VALUE);
void rb_gc_finalize_deferred(void);
void rb_gc_call_finalizer_at_exit(void);
VALUE rb_gc_enable(void);
VALUE rb_gc_disable(void);
VALUE rb_gc_start(void);
VALUE rb_define_finalizer(VALUE, VALUE);
VALUE rb_undefine_finalizer(VALUE);
size_t rb_gc_count(void);
size_t rb_gc_stat(VALUE);
VALUE rb_gc_latest_gc_info(VALUE);
void rb_gc_adjust_memory_usage(ssize_t);
void st_foreach_safe(struct st_table *, int (*)(), st_data_t);
VALUE rb_check_hash_type(VALUE);
void rb_hash_foreach(VALUE, int (*)(), VALUE);
VALUE rb_hash(VALUE);
VALUE rb_hash_new(void);
VALUE rb_hash_dup(VALUE);
VALUE rb_hash_freeze(VALUE);
VALUE rb_hash_aref(VALUE, VALUE);
VALUE rb_hash_lookup(VALUE, VALUE);
VALUE rb_hash_lookup2(VALUE, VALUE, VALUE);
VALUE rb_hash_fetch(VALUE, VALUE);
VALUE rb_hash_aset(VALUE, VALUE, VALUE);
VALUE rb_hash_clear(VALUE);
VALUE rb_hash_delete_if(VALUE);
VALUE rb_hash_delete(VALUE,VALUE);
VALUE rb_hash_set_ifnone(VALUE hash, VALUE ifnone);
typedef VALUE rb_hash_update_func(VALUE newkey, VALUE oldkey, VALUE value);
VALUE rb_hash_update_by(VALUE hash1, VALUE hash2, rb_hash_update_func *func);
struct st_table *rb_hash_tbl(VALUE, const char *file, int line);
int rb_path_check(const char*);
int rb_env_path_tainted(void);
VALUE rb_env_clear(void);
VALUE rb_hash_size(VALUE);
void rb_hash_free(VALUE);
#define rb_defout rb_stdout
extern __attribute__((dllimport)) VALUE rb_fs;
extern __attribute__((dllimport)) VALUE rb_output_fs;
extern __attribute__((dllimport)) VALUE rb_rs;
extern __attribute__((dllimport)) VALUE rb_default_rs;
extern __attribute__((dllimport)) VALUE rb_output_rs;
VALUE rb_io_write(VALUE, VALUE);
VALUE rb_io_gets(VALUE);
VALUE rb_io_getbyte(VALUE);
VALUE rb_io_ungetc(VALUE, VALUE);
VALUE rb_io_ungetbyte(VALUE, VALUE);
VALUE rb_io_close(VALUE);
VALUE rb_io_flush(VALUE);
VALUE rb_io_eof(VALUE);
VALUE rb_io_binmode(VALUE);
VALUE rb_io_ascii8bit_binmode(VALUE);
VALUE rb_io_addstr(VALUE, VALUE);
VALUE rb_io_printf(int, const VALUE*, VALUE);
VALUE rb_io_print(int, const VALUE*, VALUE);
VALUE rb_io_puts(int, const VALUE*, VALUE);
VALUE rb_io_fdopen(int, int, const char*);
VALUE rb_io_get_io(VALUE);
VALUE rb_file_open(const char*, const char*);
VALUE rb_file_open_str(VALUE, const char*);
VALUE rb_gets(void);
void rb_write_error(const char*);
void rb_write_error2(const char*, long);
void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds);
int rb_pipe(int *pipes);
int rb_reserved_fd_p(int fd);
int rb_cloexec_open(const char *pathname, int flags, mode_t mode);
int rb_cloexec_dup(int oldfd);
int rb_cloexec_dup2(int oldfd, int newfd);
int rb_cloexec_pipe(int fildes[2]);
int rb_cloexec_fcntl_dupfd(int fd, int minfd);
#define RB_RESERVED_FD_P(fd) rb_reserved_fd_p(fd)
void rb_update_max_fd(int fd);
void rb_fd_fix_cloexec(int fd);
VALUE rb_marshal_dump(VALUE, VALUE);
VALUE rb_marshal_load(VALUE);
void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE));
__attribute__ ((__noreturn__)) void rb_num_zerodiv(void);
#define RB_NUM_COERCE_FUNCS_NEED_OPID 1
VALUE rb_num_coerce_bin(VALUE, VALUE, ID);
VALUE rb_num_coerce_cmp(VALUE, VALUE, ID);
VALUE rb_num_coerce_relop(VALUE, VALUE, ID);
VALUE rb_num_coerce_bit(VALUE, VALUE, ID);
VALUE rb_num2fix(VALUE);
VALUE rb_fix2str(VALUE, int);
__attribute__ ((__const__)) VALUE rb_dbl_cmp(double, double);
int rb_eql(VALUE, VALUE);
VALUE rb_any_to_s(VALUE);
VALUE rb_inspect(VALUE);
VALUE rb_obj_is_instance_of(VALUE, VALUE);
VALUE rb_obj_is_kind_of(VALUE, VALUE);
VALUE rb_obj_alloc(VALUE);
VALUE rb_obj_clone(VALUE);
VALUE rb_obj_dup(VALUE);
VALUE rb_obj_init_copy(VALUE,VALUE);
VALUE rb_obj_taint(VALUE);
__attribute__ ((__pure__)) VALUE rb_obj_tainted(VALUE);
VALUE rb_obj_untaint(VALUE);
VALUE rb_obj_untrust(VALUE);
__attribute__ ((__pure__)) VALUE rb_obj_untrusted(VALUE);
VALUE rb_obj_trust(VALUE);
VALUE rb_obj_freeze(VALUE);
__attribute__ ((__pure__)) VALUE rb_obj_frozen_p(VALUE);
VALUE rb_obj_id(VALUE);
VALUE rb_obj_class(VALUE);
__attribute__ ((__pure__)) VALUE rb_class_real(VALUE);
__attribute__ ((__pure__)) VALUE rb_class_inherited_p(VALUE, VALUE);
VALUE rb_class_superclass(VALUE);
VALUE rb_class_get_superclass(VALUE);
VALUE rb_convert_type(VALUE,int,const char*,const char*);
VALUE rb_check_convert_type(VALUE,int,const char*,const char*);
VALUE rb_check_to_integer(VALUE, const char *);
VALUE rb_check_to_float(VALUE);
VALUE rb_to_int(VALUE);
VALUE rb_check_to_int(VALUE);
VALUE rb_Integer(VALUE);
VALUE rb_to_float(VALUE);
VALUE rb_Float(VALUE);
VALUE rb_String(VALUE);
VALUE rb_Array(VALUE);
VALUE rb_Hash(VALUE);
double rb_cstr_to_dbl(const char*, int);
double rb_str_to_dbl(VALUE, int);
ID rb_id_attrset(ID);
__attribute__ ((__const__)) int rb_is_const_id(ID);
__attribute__ ((__const__)) int rb_is_global_id(ID);
__attribute__ ((__const__)) int rb_is_instance_id(ID);
__attribute__ ((__const__)) int rb_is_attrset_id(ID);
__attribute__ ((__const__)) int rb_is_class_id(ID);
__attribute__ ((__const__)) int rb_is_local_id(ID);
__attribute__ ((__const__)) int rb_is_junk_id(ID);
int rb_symname_p(const char*);
int rb_sym_interned_p(VALUE);
VALUE rb_backref_get(void);
void rb_backref_set(VALUE);
VALUE rb_lastline_get(void);
void rb_lastline_set(VALUE);
void rb_last_status_set(int status, pid_t pid);
VALUE rb_last_status_get(void);
int rb_proc_exec(const char*);
__attribute__ ((__noreturn__)) VALUE rb_f_exec(int, const VALUE*);
pid_t rb_waitpid(pid_t pid, int *status, int flags);
void rb_syswait(pid_t pid);
pid_t rb_spawn(int, const VALUE*);
pid_t rb_spawn_err(int, const VALUE*, char*, size_t);
VALUE rb_proc_times(VALUE);
VALUE rb_detach_process(pid_t pid);
VALUE rb_range_new(VALUE, VALUE, int);
VALUE rb_range_beg_len(VALUE, long*, long*, long, int);
int rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp);
unsigned int rb_genrand_int32(void);
double rb_genrand_real(void);
void rb_reset_random_seed(void);
VALUE rb_random_bytes(VALUE rnd, long n);
VALUE rb_random_int(VALUE rnd, VALUE max);
unsigned int rb_random_int32(VALUE rnd);
double rb_random_real(VALUE rnd);
unsigned long rb_random_ulong_limited(VALUE rnd, unsigned long limit);
unsigned long rb_genrand_ulong_limited(unsigned long i);
#define rb_memcmp memcmp
int rb_memcicmp(const void*,const void*,long);
void rb_match_busy(VALUE);
VALUE rb_reg_nth_defined(int, VALUE);
VALUE rb_reg_nth_match(int, VALUE);
int rb_reg_backref_number(VALUE match, VALUE backref);
VALUE rb_reg_last_match(VALUE);
VALUE rb_reg_match_pre(VALUE);
VALUE rb_reg_match_post(VALUE);
VALUE rb_reg_match_last(VALUE);
#define HAVE_RB_REG_NEW_STR 1
VALUE rb_reg_new_str(VALUE, int);
VALUE rb_reg_new(const char *, long, int);
VALUE rb_reg_alloc(void);
VALUE rb_reg_init_str(VALUE re, VALUE s, int options);
VALUE rb_reg_match(VALUE, VALUE);
VALUE rb_reg_match2(VALUE);
int rb_reg_options(VALUE);
#define rb_argv rb_get_argv()
extern __attribute__((dllimport)) VALUE rb_argv0;
VALUE rb_get_argv(void);
void *rb_load_file(const char*);
void *rb_load_file_str(VALUE);
VALUE rb_f_kill(int, const VALUE*);
void rb_trap_exit(void);
void rb_trap_exec(void);
const char *ruby_signal_name(int);
void ruby_default_signal(int);
VALUE rb_f_sprintf(int, const VALUE*);
VALUE rb_sprintf(const char*, ...) __attribute__((format(printf, 1, 2)));
VALUE rb_vsprintf(const char*, va_list);
VALUE rb_str_catf(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
VALUE rb_str_vcatf(VALUE, const char*, va_list);
VALUE rb_str_format(int, const VALUE *, VALUE);
VALUE rb_str_new(const char*, long);
VALUE rb_str_new_cstr(const char*);
VALUE rb_str_new_shared(VALUE);
VALUE rb_str_new_frozen(VALUE);
VALUE rb_str_new_with_class(VALUE, const char*, long);
VALUE rb_tainted_str_new_cstr(const char*);
VALUE rb_tainted_str_new(const char*, long);
VALUE rb_external_str_new(const char*, long);
VALUE rb_external_str_new_cstr(const char*);
VALUE rb_locale_str_new(const char*, long);
VALUE rb_locale_str_new_cstr(const char*);
VALUE rb_filesystem_str_new(const char*, long);
VALUE rb_filesystem_str_new_cstr(const char*);
VALUE rb_str_buf_new(long);
VALUE rb_str_buf_new_cstr(const char*);
VALUE rb_str_buf_new2(const char*);
VALUE rb_str_tmp_new(long);
VALUE rb_usascii_str_new(const char*, long);
VALUE rb_usascii_str_new_cstr(const char*);
VALUE rb_utf8_str_new(const char*, long);
VALUE rb_utf8_str_new_cstr(const char*);
VALUE rb_str_new_static(const char *, long);
VALUE rb_usascii_str_new_static(const char *, long);
VALUE rb_utf8_str_new_static(const char *, long);
void rb_str_free(VALUE);
void rb_str_shared_replace(VALUE, VALUE);
VALUE rb_str_buf_append(VALUE, VALUE);
VALUE rb_str_buf_cat(VALUE, const char*, long);
VALUE rb_str_buf_cat2(VALUE, const char*);
VALUE rb_str_buf_cat_ascii(VALUE, const char*);
VALUE rb_obj_as_string(VALUE);
VALUE rb_check_string_type(VALUE);
void rb_must_asciicompat(VALUE);
VALUE rb_str_dup(VALUE);
VALUE rb_str_resurrect(VALUE str);
VALUE rb_str_locktmp(VALUE);
VALUE rb_str_unlocktmp(VALUE);
VALUE rb_str_dup_frozen(VALUE);
#define rb_str_dup_frozen rb_str_new_frozen
VALUE rb_str_plus(VALUE, VALUE);
VALUE rb_str_times(VALUE, VALUE);
long rb_str_sublen(VALUE, long);
VALUE rb_str_substr(VALUE, long, long);
VALUE rb_str_subseq(VALUE, long, long);
char *rb_str_subpos(VALUE, long, long*);
void rb_str_modify(VALUE);
void rb_str_modify_expand(VALUE, long);
VALUE rb_str_freeze(VALUE);
void rb_str_set_len(VALUE, long);
VALUE rb_str_resize(VALUE, long);
VALUE rb_str_cat(VALUE, const char*, long);
VALUE rb_str_cat_cstr(VALUE, const char*);
VALUE rb_str_cat2(VALUE, const char*);
VALUE rb_str_append(VALUE, VALUE);
VALUE rb_str_concat(VALUE, VALUE);
st_index_t rb_memhash(const void *ptr, long len);
st_index_t rb_hash_start(st_index_t);
st_index_t rb_hash_uint32(st_index_t, uint32_t);
st_index_t rb_hash_uint(st_index_t, st_index_t);
st_index_t rb_hash_end(st_index_t);
#define rb_hash_uint32(h,i) st_hash_uint32((h), (i))
#define rb_hash_uint(h,i) st_hash_uint((h), (i))
#define rb_hash_end(h) st_hash_end(h)
st_index_t rb_str_hash(VALUE);
int rb_str_hash_cmp(VALUE,VALUE);
int rb_str_comparable(VALUE, VALUE);
int rb_str_cmp(VALUE, VALUE);
VALUE rb_str_equal(VALUE str1, VALUE str2);
VALUE rb_str_drop_bytes(VALUE, long);
void rb_str_update(VALUE, long, long, VALUE);
VALUE rb_str_replace(VALUE, VALUE);
VALUE rb_str_inspect(VALUE);
VALUE rb_str_dump(VALUE);
VALUE rb_str_split(VALUE, const char*);
void rb_str_setter(VALUE, ID, VALUE*);
VALUE rb_str_intern(VALUE);
VALUE rb_sym_to_s(VALUE);
long rb_str_strlen(VALUE);
VALUE rb_str_length(VALUE);
long rb_str_offset(VALUE, long);
__attribute__ ((__pure__)) size_t rb_str_capacity(VALUE);
VALUE rb_str_ellipsize(VALUE, long);
VALUE rb_str_scrub(VALUE, VALUE);
VALUE rb_sym_all_symbols(void);
#define rb_str_new(str,len) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str) && __builtin_constant_p(len)) ? rb_str_new_static((str), (len)) : rb_str_new((str), (len)) )
#define rb_str_new_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_str_new_static((str), (long)strlen(str)) : rb_str_new_cstr(str) )
#define rb_usascii_str_new(str,len) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str) && __builtin_constant_p(len)) ? rb_usascii_str_new_static((str), (len)) : rb_usascii_str_new((str), (len)) )
#define rb_utf8_str_new(str,len) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str) && __builtin_constant_p(len)) ? rb_utf8_str_new_static((str), (len)) : rb_utf8_str_new((str), (len)) )
#define rb_tainted_str_new_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_tainted_str_new((str), (long)strlen(str)) : rb_tainted_str_new_cstr(str) )
#define rb_usascii_str_new_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_usascii_str_new_static((str), (long)strlen(str)) : rb_usascii_str_new_cstr(str) )
#define rb_utf8_str_new_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_utf8_str_new_static((str), (long)strlen(str)) : rb_utf8_str_new_cstr(str) )
#define rb_external_str_new_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_external_str_new((str), (long)strlen(str)) : rb_external_str_new_cstr(str) )
#define rb_locale_str_new_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_locale_str_new((str), (long)strlen(str)) : rb_locale_str_new_cstr(str) )
#define rb_str_buf_new_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_str_buf_cat(rb_str_buf_new((long)strlen(str)), (str), (long)strlen(str)) : rb_str_buf_new_cstr(str) )
#define rb_str_cat_cstr(str,ptr) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(ptr)) ? rb_str_cat((str), (ptr), (long)strlen(ptr)) : rb_str_cat_cstr((str), (ptr)) )
#define rb_exc_new_cstr(klass,ptr) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(ptr)) ? rb_exc_new((klass), (ptr), (long)strlen(ptr)) : rb_exc_new_cstr((klass), (ptr)) )
#define rb_str_new2 rb_str_new_cstr
#define rb_str_new3 rb_str_new_shared
#define rb_str_new4 rb_str_new_frozen
#define rb_str_new5 rb_str_new_with_class
#define rb_tainted_str_new2 rb_tainted_str_new_cstr
#define rb_str_buf_new2 rb_str_buf_new_cstr
#define rb_usascii_str_new2 rb_usascii_str_new_cstr
#define rb_str_buf_cat rb_str_cat
#define rb_str_buf_cat2 rb_str_cat_cstr
#define rb_str_cat2 rb_str_cat_cstr
#define rb_strlen_lit(str) (sizeof(str "") - 1)
#define rb_str_new_lit(str) rb_str_new_static((str), rb_strlen_lit(str))
#define rb_usascii_str_new_lit(str) rb_usascii_str_new_static((str), rb_strlen_lit(str))
#define rb_utf8_str_new_lit(str) rb_utf8_str_new_static((str), rb_strlen_lit(str))
#define rb_enc_str_new_lit(str,enc) rb_enc_str_new_static((str), rb_strlen_lit(str), (enc))
#define rb_str_new_literal(str) rb_str_new_lit(str)
#define rb_usascii_str_new_literal(str) rb_usascii_str_new_lit(str)
#define rb_utf8_str_new_literal(str) rb_utf8_str_new_lit(str)
#define rb_enc_str_new_literal(str,enc) rb_enc_str_new_lit(str, enc)
VALUE rb_struct_new(VALUE, ...);
VALUE rb_struct_define(const char*, ...);
VALUE rb_struct_define_under(VALUE, const char*, ...);
VALUE rb_struct_alloc(VALUE, VALUE);
VALUE rb_struct_initialize(VALUE, VALUE);
VALUE rb_struct_aref(VALUE, VALUE);
VALUE rb_struct_aset(VALUE, VALUE, VALUE);
VALUE rb_struct_getmember(VALUE, ID);
VALUE rb_struct_s_members(VALUE);
VALUE rb_struct_members(VALUE);
VALUE rb_struct_size(VALUE s);
VALUE rb_struct_alloc_noinit(VALUE);
VALUE rb_struct_define_without_accessor(const char *, VALUE, rb_alloc_func_t, ...);
VALUE rb_struct_define_without_accessor_under(VALUE outer, const char *class_name, VALUE super, rb_alloc_func_t alloc, ...);
typedef void rb_unblock_function_t(void *);
typedef VALUE rb_blocking_function_t(void *);
void rb_thread_check_ints(void);
int rb_thread_interrupted(VALUE thval);
#define RUBY_UBF_IO ((rb_unblock_function_t *)-1)
#define RUBY_UBF_PROCESS ((rb_unblock_function_t *)-1)
VALUE rb_mutex_new(void);
VALUE rb_mutex_locked_p(VALUE mutex);
VALUE rb_mutex_trylock(VALUE mutex);
VALUE rb_mutex_lock(VALUE mutex);
VALUE rb_mutex_unlock(VALUE mutex);
VALUE rb_mutex_sleep(VALUE self, VALUE timeout);
VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg);
void rb_timespec_now(struct timespec *);
VALUE rb_time_new(time_t, long);
VALUE rb_time_nano_new(time_t, long);
VALUE rb_time_timespec_new(const struct timespec *, int);
VALUE rb_time_num_new(VALUE, VALUE);
struct timeval rb_time_interval(VALUE num);
struct timeval rb_time_timeval(VALUE time);
struct timespec rb_time_timespec(VALUE time);
VALUE rb_time_utc_offset(VALUE time);
VALUE rb_mod_name(VALUE);
VALUE rb_class_path(VALUE);
VALUE rb_class_path_cached(VALUE);
void rb_set_class_path(VALUE, VALUE, const char*);
void rb_set_class_path_string(VALUE, VALUE, VALUE);
VALUE rb_path_to_class(VALUE);
VALUE rb_path2class(const char*);
void rb_name_class(VALUE, ID);
VALUE rb_class_name(VALUE);
VALUE rb_autoload_load(VALUE, ID);
VALUE rb_autoload_p(VALUE, ID);
VALUE rb_f_trace_var(int, const VALUE*);
VALUE rb_f_untrace_var(int, const VALUE*);
VALUE rb_f_global_variables(void);
void rb_alias_variable(ID, ID);
void rb_copy_generic_ivar(VALUE,VALUE);
void rb_free_generic_ivar(VALUE);
VALUE rb_ivar_get(VALUE, ID);
VALUE rb_ivar_set(VALUE, ID, VALUE);
VALUE rb_ivar_defined(VALUE, ID);
void rb_ivar_foreach(VALUE, int (*)(), st_data_t);
st_index_t rb_ivar_count(VALUE);
VALUE rb_attr_get(VALUE, ID);
VALUE rb_obj_instance_variables(VALUE);
VALUE rb_obj_remove_instance_variable(VALUE, VALUE);
void *rb_mod_const_at(VALUE, void*);
void *rb_mod_const_of(VALUE, void*);
VALUE rb_const_list(void*);
VALUE rb_mod_constants(int, const VALUE *, VALUE);
VALUE rb_mod_remove_const(VALUE, VALUE);
int rb_const_defined(VALUE, ID);
int rb_const_defined_at(VALUE, ID);
int rb_const_defined_from(VALUE, ID);
VALUE rb_const_get(VALUE, ID);
VALUE rb_const_get_at(VALUE, ID);
VALUE rb_const_get_from(VALUE, ID);
void rb_const_set(VALUE, ID, VALUE);
VALUE rb_const_remove(VALUE, ID);
VALUE rb_cvar_defined(VALUE, ID);
void rb_cvar_set(VALUE, ID, VALUE);
VALUE rb_cvar_get(VALUE, ID);
void rb_cv_set(VALUE, const char*, VALUE);
VALUE rb_cv_get(VALUE, const char*);
void rb_define_class_variable(VALUE, const char*, VALUE);
VALUE rb_mod_class_variables(int, const VALUE*, VALUE);
VALUE rb_mod_remove_cvar(VALUE, VALUE);
ID rb_frame_callee(void);
int rb_frame_method_id_and_class(ID *idp, VALUE *klassp);
VALUE rb_str_succ(VALUE);
VALUE rb_time_succ(VALUE);
VALUE rb_make_backtrace(void);
VALUE rb_make_exception(int, const VALUE*);

#pragma GCC visibility pop

static inline void
rb_clone_setup(VALUE clone, VALUE obj)
{
    rb_obj_setup(clone, rb_singleton_class_clone(obj),
                 ((struct RBasic*)(obj))->flags & ~(((VALUE)RUBY_FL_PROMOTED0)|((VALUE)RUBY_FL_PROMOTED1)|((VALUE)RUBY_FL_FINALIZE)));
    rb_singleton_class_attached((((struct RBasic*)(clone))->klass), clone);
    if (((!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((obj)))->flags&((RUBY_FL_EXIVAR))):0)) rb_copy_generic_ivar(clone, obj);
}
static inline void
rb_dup_setup(VALUE dup, VALUE obj)
{
    rb_obj_setup(dup, rb_obj_class(obj), (((struct RBasic*)(obj))->flags&(RUBY_FL_DUPPED)));
    if (((!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((obj)))->flags&((RUBY_FL_EXIVAR))):0)) rb_copy_generic_ivar(dup, obj);
}
static inline long
rb_array_len(VALUE a)
{
    return (((struct RBasic*)(a))->flags & (VALUE)RARRAY_EMBED_FLAG) ?
 (long)((((struct RBasic*)(a))->flags >> RARRAY_EMBED_LEN_SHIFT) & ((VALUE)RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT)) : ((struct RArray*)(a))->as.heap.len;
}
#define FIX_CONST_VALUE_PTR(x) (x)
static inline const VALUE *
rb_array_const_ptr_transient(VALUE a)
{
    return ((((struct RBasic*)(a))->flags & (VALUE)RARRAY_EMBED_FLAG) ? ((struct RArray*)(a))->as.ary : ((struct RArray*)(a))->as.heap.ptr);
}
static inline const VALUE *
rb_array_const_ptr(VALUE a)
{
    void rb_ary_detransient(VALUE a);
    if ((((struct RBasic*)((a)))->flags&(RARRAY_TRANSIENT_FLAG))) {
        rb_ary_detransient(a);
    }
    return rb_array_const_ptr_transient(a);
}
static inline VALUE *
rb_array_ptr_use_start(VALUE a, int allow_transient)
{
    VALUE *rb_ary_ptr_use_start(VALUE ary);
    if (!allow_transient) {
        if ((((struct RBasic*)((a)))->flags&(RARRAY_TRANSIENT_FLAG))) {
            void rb_ary_detransient(VALUE a);
            rb_ary_detransient(a);
        }
    }
    return rb_ary_ptr_use_start(a);
}
static inline void
rb_array_ptr_use_end(VALUE a, int allow_transient)
{
    void rb_ary_ptr_use_end(VALUE a);
    rb_ary_ptr_use_end(a);
}
#define RUBY_VM 1
#define HAVE_NATIVETHREAD 
int ruby_native_thread_p(void);
#define RUBY_EVENT_NONE 0x0000
#define RUBY_EVENT_LINE 0x0001
#define RUBY_EVENT_CLASS 0x0002
#define RUBY_EVENT_END 0x0004
#define RUBY_EVENT_CALL 0x0008
#define RUBY_EVENT_RETURN 0x0010
#define RUBY_EVENT_C_CALL 0x0020
#define RUBY_EVENT_C_RETURN 0x0040
#define RUBY_EVENT_RAISE 0x0080
#define RUBY_EVENT_ALL 0x00ff
#define RUBY_EVENT_B_CALL 0x0100
#define RUBY_EVENT_B_RETURN 0x0200
#define RUBY_EVENT_THREAD_BEGIN 0x0400
#define RUBY_EVENT_THREAD_END 0x0800
#define RUBY_EVENT_FIBER_SWITCH 0x1000
#define RUBY_EVENT_SCRIPT_COMPILED 0x2000
#define RUBY_EVENT_TRACEPOINT_ALL 0xffff
#define RUBY_EVENT_RESERVED_FOR_INTERNAL_USE 0x030000
#define RUBY_INTERNAL_EVENT_SWITCH 0x040000
#define RUBY_EVENT_SWITCH 0x040000
#define RUBY_INTERNAL_EVENT_NEWOBJ 0x100000
#define RUBY_INTERNAL_EVENT_FREEOBJ 0x200000
#define RUBY_INTERNAL_EVENT_GC_START 0x400000
#define RUBY_INTERNAL_EVENT_GC_END_MARK 0x800000
#define RUBY_INTERNAL_EVENT_GC_END_SWEEP 0x1000000
#define RUBY_INTERNAL_EVENT_GC_ENTER 0x2000000
#define RUBY_INTERNAL_EVENT_GC_EXIT 0x4000000
#define RUBY_INTERNAL_EVENT_OBJSPACE_MASK 0x7f00000
#define RUBY_INTERNAL_EVENT_MASK 0xffff0000
typedef uint32_t rb_event_flag_t;
typedef void (*rb_event_hook_func_t)(rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass);
#define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1
void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data);
int rb_remove_event_hook(rb_event_hook_func_t func);
static inline int rb_isascii(int c){ return '\0' <= c && c <= '\x7f'; }
static inline int rb_isupper(int c){ return 'A' <= c && c <= 'Z'; }
static inline int rb_islower(int c){ return 'a' <= c && c <= 'z'; }
static inline int rb_isalpha(int c){ return rb_isupper(c) || rb_islower(c); }
static inline int rb_isdigit(int c){ return '0' <= c && c <= '9'; }
static inline int rb_isalnum(int c){ return rb_isalpha(c) || rb_isdigit(c); }
static inline int rb_isxdigit(int c){ return rb_isdigit(c) || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f'); }
static inline int rb_isblank(int c){ return c == ' ' || c == '\t'; }
static inline int rb_isspace(int c){ return c == ' ' || ('\t' <= c && c <= '\r'); }
static inline int rb_iscntrl(int c){ return ('\0' <= c && c < ' ') || c == '\x7f'; }
static inline int rb_isprint(int c){ return ' ' <= c && c <= '\x7e'; }
static inline int rb_ispunct(int c){ return !rb_isalnum(c); }
static inline int rb_isgraph(int c){ return '!' <= c && c <= '\x7e'; }
static inline int rb_tolower(int c) { return rb_isupper(c) ? (c|0x20) : c; }
static inline int rb_toupper(int c) { return rb_islower(c) ? (c&0x5f) : c; }
#define ISASCII(c) rb_isascii(c)
#define ISPRINT(c) rb_isprint(c)
#define ISGRAPH(c) rb_isgraph(c)
#define ISSPACE(c) rb_isspace(c)
#define ISUPPER(c) rb_isupper(c)
#define ISLOWER(c) rb_islower(c)
#define ISALNUM(c) rb_isalnum(c)
#define ISALPHA(c) rb_isalpha(c)
#define ISDIGIT(c) rb_isdigit(c)
#define ISXDIGIT(c) rb_isxdigit(c)
#define TOUPPER(c) rb_toupper(c)
#define TOLOWER(c) rb_tolower(c)
int st_locale_insensitive_strcasecmp(const char *s1, const char *s2);
int st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n);
#define STRCASECMP(s1,s2) (st_locale_insensitive_strcasecmp((s1), (s2)))
#define STRNCASECMP(s1,s2,n) (st_locale_insensitive_strncasecmp((s1), (s2), (n)))
unsigned long ruby_strtoul(const char *str, char **endptr, int base);
#define STRTOUL(str,endptr,base) (ruby_strtoul((str), (endptr), (base)))
#define InitVM(ext) {void InitVM_ ##ext(void);InitVM_ ##ext();}
int ruby_snprintf(char *str, size_t n, char const *fmt, ...) __attribute__((format(printf, 3, 4)));
int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
#define rb_scan_args(argc,argvp,fmt,...) __builtin_choose_expr(__builtin_constant_p(fmt), rb_scan_args0(argc,argvp,fmt, (sizeof((VALUE*[]){__VA_ARGS__})/sizeof(VALUE*)), ((VALUE*[]){__VA_ARGS__})), rb_scan_args(argc,argvp,fmt,__VA_ARGS__))
__attribute__ ((__error__ ("bad scan arg format"))) int rb_scan_args_bad_format(const char*);
__attribute__ ((__error__ ("variable argument length doesn't match"))) int rb_scan_args_length_mismatch(const char*,int);
#define rb_scan_args_isdigit(c) ((unsigned char)((c)-'0')<10)
#define rb_scan_args_count_end(fmt,ofs,varc,vari) ((vari)/(!fmt[ofs] || rb_scan_args_bad_format(fmt)))
#define rb_scan_args_count_block(fmt,ofs,varc,vari) (fmt[ofs]!='&' ? rb_scan_args_count_end(fmt, ofs, varc, vari) : rb_scan_args_count_end(fmt, ofs+1, varc, vari+1))
#define rb_scan_args_count_hash(fmt,ofs,varc,vari) (fmt[ofs]!=':' ? rb_scan_args_count_block(fmt, ofs, varc, vari) : rb_scan_args_count_block(fmt, ofs+1, varc, vari+1))
#define rb_scan_args_count_trail(fmt,ofs,varc,vari) (!rb_scan_args_isdigit(fmt[ofs]) ? rb_scan_args_count_hash(fmt, ofs, varc, vari) : rb_scan_args_count_hash(fmt, ofs+1, varc, vari+(fmt[ofs]-'0')))
#define rb_scan_args_count_var(fmt,ofs,varc,vari) (fmt[ofs]!='*' ? rb_scan_args_count_trail(fmt, ofs, varc, vari) : rb_scan_args_count_trail(fmt, ofs+1, varc, vari+1))
#define rb_scan_args_count_opt(fmt,ofs,varc,vari) (!rb_scan_args_isdigit(fmt[1]) ? rb_scan_args_count_var(fmt, ofs, varc, vari) : rb_scan_args_count_var(fmt, ofs+1, varc, vari+fmt[ofs]-'0'))
#define rb_scan_args_count(fmt,varc) (!rb_scan_args_isdigit(fmt[0]) ? rb_scan_args_count_var(fmt, 0, varc, 0) : rb_scan_args_count_opt(fmt, 1, varc, fmt[0]-'0'))
#define rb_scan_args_verify_count(fmt,varc) ((varc)/(rb_scan_args_count(fmt, varc) == (varc) || rb_scan_args_length_mismatch(fmt, varc)))
#define rb_scan_args_verify(fmt,varc) (void)__extension__ ({ int verify; _Pragma("GCC diagnostic push"); _Pragma("GCC diagnostic ignored \"-Warray-bounds\""); verify = rb_scan_args_verify_count(fmt, varc); _Pragma("GCC diagnostic pop"); verify; })
__attribute__ ((__always_inline__)) static int rb_scan_args_lead_p(const char *fmt);
static inline int
rb_scan_args_lead_p(const char *fmt)
{
    return ((unsigned char)((fmt[0])-'0')<10);
}
__attribute__ ((__always_inline__)) static int rb_scan_args_n_lead(const char *fmt);
static inline int
rb_scan_args_n_lead(const char *fmt)
{
    return (rb_scan_args_lead_p(fmt) ? fmt[0]-'0' : 0);
}
__attribute__ ((__always_inline__)) static int rb_scan_args_opt_p(const char *fmt);
static inline int
rb_scan_args_opt_p(const char *fmt)
{
    return (rb_scan_args_lead_p(fmt) && ((unsigned char)((fmt[1])-'0')<10));
}
__attribute__ ((__always_inline__)) static int rb_scan_args_n_opt(const char *fmt);
static inline int
rb_scan_args_n_opt(const char *fmt)
{
    return (rb_scan_args_opt_p(fmt) ? fmt[1]-'0' : 0);
}
__attribute__ ((__always_inline__)) static int rb_scan_args_var_idx(const char *fmt);
static inline int
rb_scan_args_var_idx(const char *fmt)
{
    return (!rb_scan_args_lead_p(fmt) ? 0 : !((unsigned char)((fmt[1])-'0')<10) ? 1 : 2);
}
__attribute__ ((__always_inline__)) static int rb_scan_args_f_var(const char *fmt);
static inline int
rb_scan_args_f_var(const char *fmt)
{
    return (fmt[rb_scan_args_var_idx(fmt)]=='*');
}
__attribute__ ((__always_inline__)) static int rb_scan_args_trail_idx(const char *fmt);
static inline int
rb_scan_args_trail_idx(const char *fmt)
{
    const int idx = rb_scan_args_var_idx(fmt);
    return idx+(fmt[idx]=='*');
}
__attribute__ ((__always_inline__)) static int rb_scan_args_n_trail(const char *fmt);
static inline int
rb_scan_args_n_trail(const char *fmt)
{
    const int idx = rb_scan_args_trail_idx(fmt);
    return (((unsigned char)((fmt[idx])-'0')<10) ? fmt[idx]-'0' : 0);
}
__attribute__ ((__always_inline__)) static int rb_scan_args_hash_idx(const char *fmt);
static inline int
rb_scan_args_hash_idx(const char *fmt)
{
    const int idx = rb_scan_args_trail_idx(fmt);
    return idx+((unsigned char)((fmt[idx])-'0')<10);
}
__attribute__ ((__always_inline__)) static int rb_scan_args_f_hash(const char *fmt);
static inline int
rb_scan_args_f_hash(const char *fmt)
{
    return (fmt[rb_scan_args_hash_idx(fmt)]==':');
}
__attribute__ ((__always_inline__)) static int rb_scan_args_block_idx(const char *fmt);
static inline int
rb_scan_args_block_idx(const char *fmt)
{
    const int idx = rb_scan_args_hash_idx(fmt);
    return idx+(fmt[idx]==':');
}
__attribute__ ((__always_inline__)) static int rb_scan_args_f_block(const char *fmt);
static inline int
rb_scan_args_f_block(const char *fmt)
{
    return (fmt[rb_scan_args_block_idx(fmt)]=='&');
}
#define rb_scan_args0(argc,argv,fmt,varc,vars) rb_scan_args_set(argc, argv, rb_scan_args_n_lead(fmt), rb_scan_args_n_opt(fmt), rb_scan_args_n_trail(fmt), rb_scan_args_f_var(fmt), rb_scan_args_f_hash(fmt), rb_scan_args_f_block(fmt), (rb_scan_args_verify(fmt, varc), vars), (char *)fmt, varc)
__attribute__ ((__always_inline__)) static int rb_scan_args_set(int argc, const VALUE *argv, int n_lead, int n_opt, int n_trail, int f_var, int f_hash, int f_block, VALUE *vars[], char *fmt, int varc);
inline int
rb_scan_args_set(int argc, const VALUE *argv,
   int n_lead, int n_opt, int n_trail,
   int f_var, int f_hash, int f_block,
   VALUE *vars[], char *fmt __attribute__ ((unused)), int varc __attribute__ ((unused)))
{
    int i, argi = 0, vari = 0, last_idx = -1;
    VALUE *var, hash = ((VALUE)RUBY_Qnil), last_hash = 0;
    const int n_mand = n_lead + n_trail;
    if (f_hash && n_mand < argc) {
 VALUE last = argv[argc - 1];
 if (!((VALUE)(last) != ((VALUE)RUBY_Qnil))) {
     if (!f_var && n_mand + n_opt < argc)
  argc--;
 }
 else {
     hash = rb_check_hash_type(last);
     if (!!((VALUE)(hash) != ((VALUE)RUBY_Qnil))) {
  VALUE opts = rb_extract_keywords(&hash);
  if (!(last_hash = hash)) argc--;
  else last_idx = argc - 1;
  hash = opts ? opts : ((VALUE)RUBY_Qnil);
     }
 }
    }
    rb_check_arity(argc, n_mand, f_var ? (-1) : n_mand + n_opt);
    for (i = n_lead; i-- > 0; ) {
 var = vars[vari++];
 if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
 argi++;
    }
    for (i = n_opt; i-- > 0; ) {
 var = vars[vari++];
 if (argi < argc - n_trail) {
     if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
     argi++;
 }
 else {
     if (var) *var = ((VALUE)RUBY_Qnil);
 }
    }
    if (f_var) {
 int n_var = argc - argi - n_trail;
 var = vars[vari++];
 if (0 < n_var) {
     if (var) {
  int f_last = (last_idx + 1 == argc - n_trail);
  *var = rb_ary_new_from_values(n_var-f_last, &argv[argi]);
  if (f_last) rb_ary_push(*var, last_hash);
     }
     argi += n_var;
 }
 else {
     if (var) *var = rb_ary_new();
 }
    }
    for (i = n_trail; i-- > 0; ) {
 var = vars[vari++];
 if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
 argi++;
    }
    if (f_hash) {
 var = vars[vari++];
 if (var) *var = hash;
    }
    if (f_block) {
 var = vars[vari++];
 if (rb_block_given_p()) {
     *var = rb_block_proc();
 }
 else {
     *var = ((VALUE)RUBY_Qnil);
 }
    }
    return argc;
}
#define rb_yield_values(argc,...) __extension__({ const int rb_yield_values_argc = (argc); const VALUE rb_yield_values_args[] = {__VA_ARGS__}; const int rb_yield_values_nargs = (int)(sizeof(rb_yield_values_args) / sizeof(VALUE)); rb_yield_values2( rb_varargs_argc_check(rb_yield_values_argc, rb_yield_values_nargs), rb_yield_values_nargs ? rb_yield_values_args : NULL); })
#define rb_funcall(recv,mid,argc,...) __extension__({ const int rb_funcall_argc = (argc); const VALUE rb_funcall_args[] = {__VA_ARGS__}; const int rb_funcall_nargs = (int)(sizeof(rb_funcall_args) / sizeof(VALUE)); rb_funcallv(recv, mid, rb_varargs_argc_check(rb_funcall_argc, rb_funcall_nargs), rb_funcall_nargs ? rb_funcall_args : NULL); })
#define RUBY_SUBST_H 1
#undef snprintf
#undef vsnprintf
#define snprintf ruby_snprintf
#define vsnprintf ruby_vsnprintf
void ruby_sysinit(int *argc, char ***argv);
void ruby_init(void);
void* ruby_options(int argc, char** argv);
int ruby_executable_node(void *n, int *status);
int ruby_run_node(void *n);
void ruby_show_version(void);
void ruby_show_copyright(void);
#define RUBY_INIT_STACK VALUE variable_in_this_stack_frame; ruby_init_stack(&variable_in_this_stack_frame);
void ruby_init_stack(volatile VALUE*);
#define Init_stack(addr) ruby_init_stack(addr)
int ruby_setup(void);
int ruby_cleanup(volatile int);
void ruby_finalize(void);
__attribute__ ((__noreturn__)) void ruby_stop(int);
void ruby_set_stack_size(size_t);
int ruby_stack_check(void);
size_t ruby_stack_length(VALUE**);
int ruby_exec_node(void *n);
void ruby_script(const char* name);
void ruby_set_script_name(VALUE name);
void ruby_prog_init(void);
void ruby_set_argv(int, char**);
void *ruby_process_options(int, char**);
void ruby_init_loadpath(void);
void ruby_incpush(const char*);
void ruby_sig_finalize(void);

#pragma GCC visibility pop

#define _STDBOOL_H 
#define bool _Bool
#define true 1
#define false 0
#define __bool_true_false_are_defined 1
#define HALF_LONG_MSB ((SIGNED_VALUE)1<<((SIZEOF_LONG*CHAR_BIT-1)/2))
#define LIKELY(x) RB_LIKELY(x)
#define UNLIKELY(x) RB_UNLIKELY(x)
#define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) NO_SANITIZE("address", NOINLINE(x))
#undef NO_SANITIZE
#define NO_SANITIZE(x,y) COMPILER_WARNING_PUSH; COMPILER_WARNING_IGNORED(-Wattributes); __attribute__((__no_sanitize__(x))) y; COMPILER_WARNING_POP
#define VALGRIND_MAKE_MEM_DEFINED(p,n) 0
#define VALGRIND_MAKE_MEM_UNDEFINED(p,n) 0
#define numberof(array) ((int)(sizeof(array) / sizeof((array)[0])))
#define __has_feature(x) 0
#define __has_extension __has_feature
#define ACCESS_ONCE(type,x) (*((volatile type *)&(x)))
#define STATIC_ASSERT(name,expr) _Static_assert(expr, #name ": " #expr)
#define SIGNED_INTEGER_TYPE_P(int_type) (0 > ((int_type)0)-1)
#define SIGNED_INTEGER_MAX(sint_type) (sint_type) ((((sint_type)1) << (sizeof(sint_type) * CHAR_BIT - 2)) | ((((sint_type)1) << (sizeof(sint_type) * CHAR_BIT - 2)) - 1))
#define SIGNED_INTEGER_MIN(sint_type) (-SIGNED_INTEGER_MAX(sint_type)-1)
#define UNSIGNED_INTEGER_MAX(uint_type) (~(uint_type)0)
#define TIMET_MAX SIGNED_INTEGER_MAX(time_t)
#define TIMET_MIN SIGNED_INTEGER_MIN(time_t)
#define TIMET_MAX_PLUS_ONE (2*(double)(TIMET_MAX/2+1))
#define MUL_OVERFLOW_P(a,b) __builtin_mul_overflow_p((a), (b), (__typeof__(a * b))0)
#define MUL_OVERFLOW_SIGNED_INTEGER_P(a,b,min,max) ( (a) == 0 ? 0 : (a) == -1 ? (b) < -(max) : (a) > 0 ? ((b) > 0 ? (max) / (a) < (b) : (min) / (a) > (b)) : ((b) > 0 ? (min) / (a) < (b) : (max) / (a) > (b)))
#define MUL_OVERFLOW_FIXNUM_P(a,b) RB_GNUC_EXTENSION_BLOCK( struct { long fixnum : SIZEOF_LONG * CHAR_BIT - 1; } c; __builtin_mul_overflow_p((a), (b), c.fixnum); )
#define MUL_OVERFLOW_LONG_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
#define MUL_OVERFLOW_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
#define MUL_OVERFLOW_INT_P(a,b) MUL_OVERFLOW_P(a, b)
#define swap16(x) __builtin_bswap16(x)
#define swap32(x) __builtin_bswap32(x)
#define swap64(x) __builtin_bswap64(x)
static inline unsigned int
nlz_int(unsigned int x)
{
    if (x == 0) return 4 * 8;
    return (unsigned int)__builtin_clz(x);
}
static inline unsigned int
nlz_long(unsigned long x)
{
    if (x == 0) return 4 * 8;
    return (unsigned int)__builtin_clzl(x);
}
static inline unsigned int
nlz_long_long(unsigned long long x)
{
    if (x == 0) return 8 * 8;
    return (unsigned int)__builtin_clzll(x);
}
static inline unsigned int
nlz_intptr(uintptr_t x)
{
    return nlz_int(x);
}
static inline unsigned int
rb_popcount32(uint32_t x)
{
    return (unsigned int)__builtin_popcount(x);
}
static inline int
rb_popcount64(uint64_t x)
{
    return __builtin_popcountll(x);
}
static inline int
rb_popcount_intptr(uintptr_t x)
{
    return rb_popcount32(x);
}
static inline int
ntz_int32(uint32_t x)
{
    return __builtin_ctz(x);
}
static inline int
ntz_int64(uint64_t x)
{
    return __builtin_ctzll(x);
}
static inline int
ntz_intptr(uintptr_t x)
{
    return ntz_int32(x);
}
#define DLONG LONG_LONG
#define DL2NUM(x) LL2NUM(x)
static inline long
rb_overflowed_fix_to_int(long x)
{
    return (long)((unsigned long)(x >> 1) ^ (1LU << (4 * 8 - 1)));
}
static inline VALUE
rb_fix_plus_fix(VALUE x, VALUE y)
{
    long lz;
    if (__builtin_add_overflow((long)x, (long)y-1, &lz)) {
 return rb_int2big(rb_overflowed_fix_to_int(lz));
    }
    else {
 return (VALUE)lz;
    }
}
static inline VALUE
rb_fix_minus_fix(VALUE x, VALUE y)
{
    long lz;
    if (__builtin_sub_overflow((long)x, (long)y-1, &lz)) {
 return rb_int2big(rb_overflowed_fix_to_int(lz));
    }
    else {
 return (VALUE)lz;
    }
}
static inline VALUE
rb_fix_mul_fix(VALUE x, VALUE y)
{
    long lx = ((long)(((long)(x))>>(int)(1)));
    long ly = ((long)(((long)(y))>>(int)(1)));
    return rb_ll2inum((long long)lx * (long long)ly);
}
static inline void
rb_fix_divmod_fix(VALUE a, VALUE b, VALUE *divp, VALUE *modp)
{
    long x = ((long)(((long)(a))>>(int)(1)));
    long y = ((long)(((long)(b))>>(int)(1)));
    long div, mod;
    if (x == (((long)(-0x7fffffffL - 1L))>>(int)(1)) && y == -1) {
 if (divp) *divp = rb_long2num_inline(-(((long)(-0x7fffffffL - 1L))>>(int)(1)));
 if (modp) *modp = (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
 return;
    }
    div = x / y;
    mod = x % y;
    if (y > 0 ? mod < 0 : mod > 0) {
 mod += y;
 div -= 1;
    }
    if (divp) *divp = (((VALUE)(div))<<1 | RUBY_FIXNUM_FLAG);
    if (modp) *modp = (((VALUE)(mod))<<1 | RUBY_FIXNUM_FLAG);
}
static inline VALUE
rb_fix_div_fix(VALUE x, VALUE y)
{
    VALUE div;
    rb_fix_divmod_fix(x, y, &div, ((void *)0));
    return div;
}
static inline VALUE
rb_fix_mod_fix(VALUE x, VALUE y)
{
    VALUE mod;
    rb_fix_divmod_fix(x, y, ((void *)0), &mod);
    return mod;
}
#define bit_length(x) (unsigned int) (sizeof(x) <= SIZEOF_INT ? SIZEOF_INT * CHAR_BIT - nlz_int((unsigned int)(x)) : sizeof(x) <= SIZEOF_LONG ? SIZEOF_LONG * CHAR_BIT - nlz_long((unsigned long)(x)) : SIZEOF_LONG_LONG * CHAR_BIT - nlz_long_long((unsigned LONG_LONG)(x)))
#define BDIGIT unsigned int
#define SIZEOF_BDIGIT SIZEOF_INT
#define BDIGIT_DBL unsigned LONG_LONG
#define BDIGIT_DBL_SIGNED LONG_LONG
#define PRI_BDIGIT_PREFIX ""
#define PRI_BDIGIT_DBL_PREFIX PRI_LL_PREFIX
#define SIZEOF_ACTUAL_BDIGIT SIZEOF_BDIGIT
#define PRIdBDIGIT PRI_BDIGIT_PREFIX"d"
#define PRIiBDIGIT PRI_BDIGIT_PREFIX"i"
#define PRIoBDIGIT PRI_BDIGIT_PREFIX"o"
#define PRIuBDIGIT PRI_BDIGIT_PREFIX"u"
#define PRIxBDIGIT PRI_BDIGIT_PREFIX"x"
#define PRIXBDIGIT PRI_BDIGIT_PREFIX"X"
#define PRIdBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"d"
#define PRIiBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"i"
#define PRIoBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"o"
#define PRIuBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"u"
#define PRIxBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"x"
#define PRIXBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"X"
#define BIGNUM_EMBED_LEN_NUMBITS 3
#define BIGNUM_EMBED_LEN_MAX (SIZEOF_VALUE*3/SIZEOF_ACTUAL_BDIGIT)
struct RBignum {
    struct RBasic basic;
    union {
        struct {
            size_t len;
            unsigned int *digits;
        } heap;
        unsigned int ary[(4*3/4)];
    } as;
};
#define BIGNUM_SIGN_BIT ((VALUE)FL_USER1)
#define BIGNUM_SIGN(b) ((RBASIC(b)->flags & BIGNUM_SIGN_BIT) != 0)
#define BIGNUM_SET_SIGN(b,sign) ((sign) ? (RBASIC(b)->flags |= BIGNUM_SIGN_BIT) : (RBASIC(b)->flags &= ~BIGNUM_SIGN_BIT))
#define BIGNUM_POSITIVE_P(b) BIGNUM_SIGN(b)
#define BIGNUM_NEGATIVE_P(b) (!BIGNUM_SIGN(b))
#define BIGNUM_NEGATE(b) (RBASIC(b)->flags ^= BIGNUM_SIGN_BIT)
#define BIGNUM_EMBED_FLAG ((VALUE)FL_USER2)
#define BIGNUM_EMBED_LEN_MASK (~(~(VALUE)0U << BIGNUM_EMBED_LEN_NUMBITS) << BIGNUM_EMBED_LEN_SHIFT)
#define BIGNUM_EMBED_LEN_SHIFT (FL_USHIFT+3)
#define BIGNUM_LEN(b) ((RBASIC(b)->flags & BIGNUM_EMBED_FLAG) ? (size_t)((RBASIC(b)->flags >> BIGNUM_EMBED_LEN_SHIFT) & (BIGNUM_EMBED_LEN_MASK >> BIGNUM_EMBED_LEN_SHIFT)) : RBIGNUM(b)->as.heap.len)
#define BIGNUM_DIGITS(b) ((RBASIC(b)->flags & BIGNUM_EMBED_FLAG) ? RBIGNUM(b)->as.ary : RBIGNUM(b)->as.heap.digits)
#define BIGNUM_LENINT(b) rb_long2int(BIGNUM_LEN(b))
#define RBIGNUM(obj) (R_CAST(RBignum)(obj))
struct RRational {
    struct RBasic basic;
    const VALUE num;
    const VALUE den;
};
#define RRATIONAL(obj) (R_CAST(RRational)(obj))
#define RRATIONAL_SET_NUM(rat,n) RB_OBJ_WRITE((rat), &((struct RRational *)(rat))->num,(n))
#define RRATIONAL_SET_DEN(rat,d) RB_OBJ_WRITE((rat), &((struct RRational *)(rat))->den,(d))
struct RFloat {
    struct RBasic basic;
    double float_value;
};
#define RFLOAT(obj) (R_CAST(RFloat)(obj))
struct RComplex {
    struct RBasic basic;
    const VALUE real;
    const VALUE imag;
};
#define RCOMPLEX(obj) (R_CAST(RComplex)(obj))
#define RCOMPLEX_SET_REAL(cmp,r) RB_OBJ_WRITE((cmp), &((struct RComplex *)(cmp))->real,(r))
#define RCOMPLEX_SET_IMAG(cmp,i) RB_OBJ_WRITE((cmp), &((struct RComplex *)(cmp))->imag,(i))
enum ruby_rhash_flags {
    RHASH_ST_TABLE_FLAG = ((VALUE)RUBY_FL_USER3),
    RHASH_AR_TABLE_MAX_SIZE = 8,
    RHASH_AR_TABLE_SIZE_MASK = (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)|((VALUE)RUBY_FL_USER7)),
    RHASH_AR_TABLE_SIZE_SHIFT = (((VALUE)RUBY_FL_USHIFT)+4),
    RHASH_AR_TABLE_BOUND_MASK = (((VALUE)RUBY_FL_USER8)|((VALUE)RUBY_FL_USER9)|((VALUE)RUBY_FL_USER10)|((VALUE)RUBY_FL_USER11)),
    RHASH_AR_TABLE_BOUND_SHIFT = (((VALUE)RUBY_FL_USHIFT)+8),
    RHASH_ENUM_END
};
#define HASH_PROC_DEFAULT FL_USER2
#define RHASH_AR_TABLE_SIZE_RAW(h) ((unsigned int)((RBASIC(h)->flags & RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT))
int rb_hash_ar_table_p(VALUE hash);
struct ar_table_struct *rb_hash_ar_table(VALUE hash);
st_table *rb_hash_st_table(VALUE hash);
void rb_hash_st_table_set(VALUE hash, st_table *st);
#define RHASH_AR_TABLE_P(hash) (!FL_TEST_RAW((hash), RHASH_ST_TABLE_FLAG))
#define RHASH_AR_TABLE(hash) (RHASH(hash)->as.ar)
#define RHASH_ST_TABLE(hash) (RHASH(hash)->as.st)
#define RHASH(obj) (R_CAST(RHash)(obj))
#define RHASH_ST_SIZE(h) (RHASH_ST_TABLE(h)->num_entries)
#define RHASH_ST_TABLE_P(h) (!RHASH_AR_TABLE_P(h))
#define RHASH_ST_CLEAR(h) (FL_UNSET_RAW(h, RHASH_ST_TABLE_FLAG), RHASH(h)->as.ar = NULL)
#define RHASH_AR_TABLE_SIZE_MASK (VALUE)RHASH_AR_TABLE_SIZE_MASK
#define RHASH_AR_TABLE_SIZE_SHIFT RHASH_AR_TABLE_SIZE_SHIFT
#define RHASH_AR_TABLE_BOUND_MASK (VALUE)RHASH_AR_TABLE_BOUND_MASK
#define RHASH_AR_TABLE_BOUND_SHIFT RHASH_AR_TABLE_BOUND_SHIFT
#define RHASH_TRANSIENT_FLAG FL_USER14
#define RHASH_TRANSIENT_P(hash) FL_TEST_RAW((hash), RHASH_TRANSIENT_FLAG)
#define RHASH_SET_TRANSIENT_FLAG(h) FL_SET_RAW(h, RHASH_TRANSIENT_FLAG)
#define RHASH_UNSET_TRANSIENT_FLAG(h) FL_UNSET_RAW(h, RHASH_TRANSIENT_FLAG)
#define RHASH_AR_TABLE_MAX_SIZE 8
#define RHASH_AR_TABLE_MAX_BOUND RHASH_AR_TABLE_MAX_SIZE
typedef struct ar_table_entry {
    VALUE hash;
    VALUE key;
    VALUE record;
} ar_table_entry;
typedef struct ar_table_struct {
    ar_table_entry entries[8];
} ar_table;
struct RHash {
    struct RBasic basic;
    union {
        st_table *st;
        ar_table *ar;
    } as;
    int iter_lev;
    const VALUE ifnone;
};
#undef RHASH_ITER_LEV
#undef RHASH_IFNONE
#undef RHASH_SIZE
#define RHASH_ITER_LEV(h) (RHASH(h)->iter_lev)
#define RHASH_IFNONE(h) (RHASH(h)->ifnone)
#define RHASH_SIZE(h) (RHASH_AR_TABLE_P(h) ? RHASH_AR_TABLE_SIZE_RAW(h) : RHASH_ST_SIZE(h))
extern void ruby_init_setproctitle(int argc, char *argv[]);
#define RSTRUCT_EMBED_LEN_MAX RSTRUCT_EMBED_LEN_MAX
#define RSTRUCT_EMBED_LEN_MASK RSTRUCT_EMBED_LEN_MASK
#define RSTRUCT_EMBED_LEN_SHIFT RSTRUCT_EMBED_LEN_SHIFT
enum {
    RSTRUCT_EMBED_LEN_MAX = 3,
    RSTRUCT_EMBED_LEN_MASK = (RUBY_FL_USER2|RUBY_FL_USER1),
    RSTRUCT_EMBED_LEN_SHIFT = (RUBY_FL_USHIFT+1),
    RSTRUCT_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER3),
    RSTRUCT_ENUM_END
};
#define RSTRUCT_TRANSIENT_P(st) FL_TEST_RAW((obj), RSTRUCT_TRANSIENT_FLAG)
#define RSTRUCT_TRANSIENT_SET(st) FL_SET_RAW((st), RSTRUCT_TRANSIENT_FLAG)
#define RSTRUCT_TRANSIENT_UNSET(st) FL_UNSET_RAW((st), RSTRUCT_TRANSIENT_FLAG)
struct RStruct {
    struct RBasic basic;
    union {
 struct {
     long len;
     const VALUE *ptr;
 } heap;
 const VALUE ary[RSTRUCT_EMBED_LEN_MAX];
    } as;
};
#undef RSTRUCT_LEN
#undef RSTRUCT_PTR
#undef RSTRUCT_SET
#undef RSTRUCT_GET
#define RSTRUCT_EMBED_LEN(st) (long)((RBASIC(st)->flags >> RSTRUCT_EMBED_LEN_SHIFT) & (RSTRUCT_EMBED_LEN_MASK >> RSTRUCT_EMBED_LEN_SHIFT))
#define RSTRUCT_LEN(st) rb_struct_len(st)
#define RSTRUCT_LENINT(st) rb_long2int(RSTRUCT_LEN(st))
#define RSTRUCT_CONST_PTR(st) rb_struct_const_ptr(st)
#define RSTRUCT_PTR(st) ((VALUE *)RSTRUCT_CONST_PTR(RB_OBJ_WB_UNPROTECT_FOR(STRUCT, st)))
#define RSTRUCT_SET(st,idx,v) RB_OBJ_WRITE(st, &RSTRUCT_CONST_PTR(st)[idx], (v))
#define RSTRUCT_GET(st,idx) (RSTRUCT_CONST_PTR(st)[idx])
#define RSTRUCT(obj) (R_CAST(RStruct)(obj))
static inline long
rb_struct_len(VALUE st)
{
    return (((struct RBasic*)(st))->flags & RSTRUCT_EMBED_LEN_MASK) ?
 (long)((((struct RBasic*)(st))->flags >> RSTRUCT_EMBED_LEN_SHIFT) & (RSTRUCT_EMBED_LEN_MASK >> RSTRUCT_EMBED_LEN_SHIFT)) : ((struct RStruct*)(st))->as.heap.len;
}
static inline const VALUE *
rb_struct_const_ptr(VALUE st)
{
    return ((((struct RBasic*)(st))->flags & RSTRUCT_EMBED_LEN_MASK) ? ((struct RStruct*)(st))->as.ary : ((struct RStruct*)(st))->as.heap.ptr);
}
static inline const VALUE *
rb_struct_const_heap_ptr(VALUE st)
{
    return ((struct RStruct*)(st))->as.heap.ptr;
}
struct rb_deprecated_classext_struct {
    char conflict[sizeof(VALUE) * 3];
};
struct rb_subclass_entry;
typedef struct rb_subclass_entry rb_subclass_entry_t;
struct rb_subclass_entry {
    VALUE klass;
    rb_subclass_entry_t *next;
};
typedef unsigned long long rb_serial_t;
#define SERIALT2NUM ULL2NUM
#define PRI_SERIALT_PREFIX PRI_LL_PREFIX
struct rb_classext_struct {
    struct st_table *iv_index_tbl;
    struct st_table *iv_tbl;
    struct rb_id_table *const_tbl;
    struct rb_id_table *callable_m_tbl;
    rb_subclass_entry_t *subclasses;
    rb_subclass_entry_t **parent_subclasses;
    rb_subclass_entry_t **module_subclasses;
    rb_serial_t class_serial;
    const VALUE origin_;
    VALUE refined_class;
    rb_alloc_func_t allocator;
};
typedef struct rb_classext_struct rb_classext_t;
#undef RClass
struct RClass {
    struct RBasic basic;
    VALUE super;
    rb_classext_t *ptr;
    struct rb_id_table *m_tbl;
};
void rb_class_subclass_add(VALUE super, VALUE klass);
void rb_class_remove_from_super_subclasses(VALUE);
int rb_singleton_class_internal_p(VALUE sklass);
#define RCLASS_EXT(c) (RCLASS(c)->ptr)
#define RCLASS_IV_TBL(c) (RCLASS_EXT(c)->iv_tbl)
#define RCLASS_CONST_TBL(c) (RCLASS_EXT(c)->const_tbl)
#define RCLASS_M_TBL(c) (RCLASS(c)->m_tbl)
#define RCLASS_CALLABLE_M_TBL(c) (RCLASS_EXT(c)->callable_m_tbl)
#define RCLASS_IV_INDEX_TBL(c) (RCLASS_EXT(c)->iv_index_tbl)
#define RCLASS_ORIGIN(c) (RCLASS_EXT(c)->origin_)
#define RCLASS_REFINED_CLASS(c) (RCLASS_EXT(c)->refined_class)
#define RCLASS_SERIAL(c) (RCLASS_EXT(c)->class_serial)
#define RICLASS_IS_ORIGIN FL_USER5
static inline void
RCLASS_SET_ORIGIN(VALUE klass, VALUE origin)
{
    rb_obj_write((VALUE)(klass), (VALUE *)(&((((struct RClass*)(klass))->ptr)->origin_)), (VALUE)(origin), "../ruby-2.6.9/internal.h", 1006);
    if (klass != origin) ((!(((VALUE)(origin) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(origin) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(origin))->flags & RUBY_T_MASK) != RUBY_T_NODE) ? (void)(((struct RBasic*)(origin))->flags |= (((VALUE)RUBY_FL_USER5))) : (void)0);
}
#undef RCLASS_SUPER
static inline VALUE
RCLASS_SUPER(VALUE klass)
{
    return ((struct RClass*)(klass))->super;
}
static inline VALUE
RCLASS_SET_SUPER(VALUE klass, VALUE super)
{
    if (super) {
 rb_class_remove_from_super_subclasses(klass);
 rb_class_subclass_add(super, klass);
    }
    rb_obj_write((VALUE)(klass), (VALUE *)(&((struct RClass*)(klass))->super), (VALUE)(super), "../ruby-2.6.9/internal.h", 1024);
    return super;
}
#define IMEMO_DEBUG 0
struct RIMemo {
    VALUE flags;
    VALUE v0;
    VALUE v1;
    VALUE v2;
    VALUE v3;
};
enum imemo_type {
    imemo_env = 0,
    imemo_cref = 1,
    imemo_svar = 2,
    imemo_throw_data = 3,
    imemo_ifunc = 4,
    imemo_memo = 5,
    imemo_ment = 6,
    imemo_iseq = 7,
    imemo_tmpbuf = 8,
    imemo_ast = 9,
    imemo_parser_strterm = 10
};
#define IMEMO_MASK 0x0f
static inline enum imemo_type
imemo_type(VALUE imemo)
{
    return (((struct RBasic*)(imemo))->flags >> ((VALUE)RUBY_FL_USHIFT)) & 0x0f;
}
static inline int
imemo_type_p(VALUE imemo, enum imemo_type imemo_type)
{
    if ((__builtin_expect(!!(!(((VALUE)(imemo) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(imemo) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))), 1))) {
 const VALUE mask = (0x0f << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_MASK;
 const VALUE expected_type = (imemo_type << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_IMEMO;
 return expected_type == (((struct RBasic*)(imemo))->flags & mask);
    }
    else {
 return 0;
    }
}
#define IMEMO_FL_USHIFT (FL_USHIFT + 4)
#define IMEMO_FL_USER0 FL_USER4
#define IMEMO_FL_USER1 FL_USER5
#define IMEMO_FL_USER2 FL_USER6
#define IMEMO_FL_USER3 FL_USER7
#define IMEMO_FL_USER4 FL_USER8
struct vm_svar {
    VALUE flags;
    const VALUE cref_or_me;
    const VALUE lastline;
    const VALUE backref;
    const VALUE others;
};
#define THROW_DATA_CONSUMED IMEMO_FL_USER0
struct vm_throw_data {
    VALUE flags;
    VALUE reserved;
    const VALUE throw_obj;
    const struct rb_control_frame_struct *catch_frame;
    VALUE throw_state;
};
#define THROW_DATA_P(err) RB_TYPE_P((VALUE)(err), T_IMEMO)
struct vm_ifunc_argc {
    signed int min: (4 * 8) / 2;
    signed int max: (4 * 8) / 2;
};
struct vm_ifunc {
    VALUE flags;
    VALUE reserved;
    VALUE (*func)();
    const void *data;
    struct vm_ifunc_argc argc;
};
#define IFUNC_NEW(a,b,c) ((struct vm_ifunc *)rb_imemo_new(imemo_ifunc, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
struct vm_ifunc *rb_vm_ifunc_new(VALUE (*func)(), const void *data, int min_argc, int max_argc);
static inline struct vm_ifunc *
rb_vm_ifunc_proc_new(VALUE (*func)(), const void *data)
{
    return rb_vm_ifunc_new(func, data, 0, (-1));
}
typedef struct rb_imemo_tmpbuf_struct {
    VALUE flags;
    VALUE reserved;
    VALUE *ptr;
    struct rb_imemo_tmpbuf_struct *next;
    size_t cnt;
} rb_imemo_tmpbuf_t;
VALUE rb_imemo_tmpbuf_auto_free_pointer(void *buf);
VALUE rb_imemo_tmpbuf_auto_free_maybe_mark_buffer(void *buf, size_t cnt);
rb_imemo_tmpbuf_t *rb_imemo_tmpbuf_parser_heap(void *buf, rb_imemo_tmpbuf_t *old_heap, size_t cnt);
#define RB_IMEMO_TMPBUF_PTR(v) ((void *)(((const struct rb_imemo_tmpbuf_struct *)(v))->ptr))
static inline VALUE
rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str)
{
    const void *src;
    void *dst;
    size_t len;
    do { rb_string_value(&(str)); rb_check_safe_obj(str);} while (0);
    len = (!(((struct RBasic*)(str))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(str))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(str))->as.heap.len);
    src = (!(((struct RBasic*)(str))->flags & RSTRING_NOEMBED) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr);
    dst = ruby_xmalloc(len);
    memcpy(dst, src, len);
    return rb_imemo_tmpbuf_auto_free_pointer(dst);
}
void rb_strterm_mark(VALUE obj);
struct MEMO {
    VALUE flags;
    VALUE reserved;
    const VALUE v1;
    const VALUE v2;
    union {
 long cnt;
 long state;
 const VALUE value;
 VALUE (*func)();
    } u3;
};
#define MEMO_V1_SET(m,v) RB_OBJ_WRITE((m), &(m)->v1, (v))
#define MEMO_V2_SET(m,v) RB_OBJ_WRITE((m), &(m)->v2, (v))
#define MEMO_CAST(m) ((struct MEMO *)m)
#define MEMO_NEW(a,b,c) ((struct MEMO *)rb_imemo_new(imemo_memo, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
#define roomof(x,y) (((x) + (y) - 1) / (y))
#define type_roomof(x,y) roomof(sizeof(x), sizeof(y))
#define MEMO_FOR(type,value) ((type *)RARRAY_PTR(value))
#define NEW_MEMO_FOR(type,value) ((value) = rb_ary_tmp_new_fill(type_roomof(type, VALUE)), MEMO_FOR(type, value))
#define NEW_PARTIAL_MEMO_FOR(type,value,member) ((value) = rb_ary_tmp_new_fill(type_roomof(type, VALUE)), rb_ary_set_len((value), offsetof(type, member) / sizeof(VALUE)), MEMO_FOR(type, value))
#define STRING_P(s) (RB_TYPE_P((s), T_STRING) && CLASS_OF(s) == rb_cString)
#define rb_cFixnum rb_cInteger
#define rb_cBignum rb_cInteger
enum {
    cmp_opt_Fixnum,
    cmp_opt_String,
    cmp_opt_Float,
    cmp_optimizable_count
};
struct cmp_opt_data {
    unsigned int opt_methods;
    unsigned int opt_inited;
};
#define NEW_CMP_OPT_MEMO(type,value) NEW_PARTIAL_MEMO_FOR(type, value, cmp_opt)
#define CMP_OPTIMIZABLE_BIT(type) (1U << TOKEN_PASTE(cmp_opt_,type))
#define CMP_OPTIMIZABLE(data,type) (((data).opt_inited & CMP_OPTIMIZABLE_BIT(type)) ? ((data).opt_methods & CMP_OPTIMIZABLE_BIT(type)) : (((data).opt_inited |= CMP_OPTIMIZABLE_BIT(type)), rb_method_basic_definition_p(TOKEN_PASTE(rb_c,type), id_cmp) && ((data).opt_methods |= CMP_OPTIMIZABLE_BIT(type))))
#define OPTIMIZED_CMP(a,b,data) ((FIXNUM_P(a) && FIXNUM_P(b) && CMP_OPTIMIZABLE(data, Fixnum)) ? (((long)a > (long)b) ? 1 : ((long)a < (long)b) ? -1 : 0) : (STRING_P(a) && STRING_P(b) && CMP_OPTIMIZABLE(data, String)) ? rb_str_cmp(a, b) : (RB_FLOAT_TYPE_P(a) && RB_FLOAT_TYPE_P(b) && CMP_OPTIMIZABLE(data, Float)) ? rb_float_cmp(a, b) : rb_cmpint(rb_funcallv(a, id_cmp, 1, &b), a, b))
struct rb_global_entry {
    struct rb_global_variable *var;
    ID id;
};
struct rb_global_entry *rb_global_entry(ID);
VALUE rb_gvar_get(struct rb_global_entry *);
VALUE rb_gvar_set(struct rb_global_entry *, VALUE);
VALUE rb_gvar_defined(struct rb_global_entry *);
#define ARRAY_DEBUG 0
#define RARRAY_PTR_IN_USE_FLAG FL_USER14
#define ARY_PTR_USING_P(ary) FL_TEST_RAW((ary), RARRAY_PTR_IN_USE_FLAG)
#define RARY_TRANSIENT_SET(ary) FL_SET_RAW((ary), RARRAY_TRANSIENT_FLAG);
#define RARY_TRANSIENT_UNSET(ary) FL_UNSET_RAW((ary), RARRAY_TRANSIENT_FLAG);
VALUE rb_ary_last(int, const VALUE *, VALUE);
void rb_ary_set_len(VALUE, long);
void rb_ary_delete_same(VALUE, VALUE);
VALUE rb_ary_tmp_new_fill(long capa);
VALUE rb_ary_at(VALUE, VALUE);
VALUE rb_ary_aref1(VALUE ary, VALUE i);
VALUE rb_ary_aref2(VALUE ary, VALUE b, VALUE e);
size_t rb_ary_memsize(VALUE);
VALUE rb_to_array_type(VALUE obj);
VALUE rb_check_to_array(VALUE ary);
VALUE rb_ary_tmp_new_from_values(VALUE, long, const VALUE *);
VALUE rb_ary_behead(VALUE, long);
#define rb_ary_new_from_args(n,...) __extension__ ({ const VALUE args_to_new_ary[] = {__VA_ARGS__}; if (__builtin_constant_p(n)) { STATIC_ASSERT(rb_ary_new_from_args, numberof(args_to_new_ary) == (n)); } rb_ary_new_from_values(numberof(args_to_new_ary), args_to_new_ary); })
static inline VALUE
rb_ary_entry_internal(VALUE ary, long offset)
{
    long len = rb_array_len(ary);
    const VALUE *ptr = rb_array_const_ptr_transient(ary);
    if (len == 0) return ((VALUE)RUBY_Qnil);
    if (offset < 0) {
        offset += len;
        if (offset < 0) return ((VALUE)RUBY_Qnil);
    }
    else if (len <= offset) {
        return ((VALUE)RUBY_Qnil);
    }
    return ptr[offset];
}
extern const char ruby_digitmap[];
double rb_big_fdiv_double(VALUE x, VALUE y);
VALUE rb_big_uminus(VALUE x);
VALUE rb_big_hash(VALUE);
VALUE rb_big_odd_p(VALUE);
VALUE rb_big_even_p(VALUE);
size_t rb_big_size(VALUE);
VALUE rb_integer_float_cmp(VALUE x, VALUE y);
VALUE rb_integer_float_eq(VALUE x, VALUE y);
VALUE rb_cstr_parse_inum(const char *str, ssize_t len, char **endp, int base);
VALUE rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception);
VALUE rb_big_comp(VALUE x);
VALUE rb_big_aref(VALUE x, VALUE y);
VALUE rb_big_abs(VALUE x);
VALUE rb_big_size_m(VALUE big);
VALUE rb_big_bit_length(VALUE big);
VALUE rb_big_remainder(VALUE x, VALUE y);
VALUE rb_big_gt(VALUE x, VALUE y);
VALUE rb_big_ge(VALUE x, VALUE y);
VALUE rb_big_lt(VALUE x, VALUE y);
VALUE rb_big_le(VALUE x, VALUE y);
VALUE rb_int_powm(int const argc, VALUE * const argv, VALUE const num);
VALUE rb_class_boot(VALUE);
VALUE rb_class_inherited(VALUE, VALUE);
VALUE rb_make_metaclass(VALUE, VALUE);
VALUE rb_include_class_new(VALUE, VALUE);
void rb_class_foreach_subclass(VALUE klass, void (*f)(VALUE, VALUE), VALUE);
void rb_class_detach_subclasses(VALUE);
void rb_class_detach_module_subclasses(VALUE);
void rb_class_remove_from_module_subclasses(VALUE);
VALUE rb_obj_methods(int argc, const VALUE *argv, VALUE obj);
VALUE rb_obj_protected_methods(int argc, const VALUE *argv, VALUE obj);
VALUE rb_obj_private_methods(int argc, const VALUE *argv, VALUE obj);
VALUE rb_obj_public_methods(int argc, const VALUE *argv, VALUE obj);
VALUE rb_special_singleton_class(VALUE);
VALUE rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach);
VALUE rb_singleton_class_get(VALUE obj);
void Init_class_hierarchy(void);
int rb_class_has_methods(VALUE c);
void rb_undef_methods_from(VALUE klass, VALUE super);
VALUE rb_invcmp(VALUE, VALUE);
struct rb_block;
int rb_dvar_defined(ID, const struct rb_block *);
int rb_local_defined(ID, const struct rb_block *);
const char * rb_insns_name(int i);
VALUE rb_insns_name_array(void);
int rb_vm_insn_addr2insn(const void *);
VALUE rb_dbl_complex_new_polar_pi(double abs, double ang);
struct rb_thread_struct;
struct rb_fiber_struct;
VALUE rb_obj_is_fiber(VALUE);
void rb_fiber_reset_root_local_storage(struct rb_thread_struct *);
void ruby_register_rollback_func_for_ensure(VALUE (*ensure_func)(), VALUE (*rollback_func)());
void rb_fiber_init_mjit_cont(struct rb_fiber_struct *fiber);
void ruby_debug_printf(const char*, ...) __attribute__((format(printf, 1, 2)));
VALUE rb_dir_getwd_ospath(void);
void Init_enc(void);
void Init_ext(void);
ID rb_id_encoding(void);
int rb_encdb_replicate(const char *alias, const char *orig);
int rb_encdb_alias(const char *alias, const char *orig);
int rb_encdb_dummy(const char *name);
void rb_encdb_declare(const char *name);
void rb_enc_set_base(const char *name, const char *orig);
int rb_enc_set_dummy(int index);
void rb_encdb_set_unicode(int index);
__attribute__ ((__pure__)) int rb_data_is_encoding(VALUE obj);
extern VALUE rb_cArithSeq;
VALUE rb_f_send(int argc, VALUE *argv, VALUE recv);
VALUE rb_nmin_run(VALUE obj, VALUE num, int by, int rev, int ary);
extern VALUE rb_eEAGAIN;
extern VALUE rb_eEWOULDBLOCK;
extern VALUE rb_eEINPROGRESS;
void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args);
VALUE rb_check_backtrace(VALUE);
__attribute__ ((__noreturn__)) void rb_async_bug_errno(const char *,int);
const char *rb_builtin_type_name(int t);
const char *rb_builtin_class_name(VALUE x);
void rb_sys_warn(const char *fmt, ...) __attribute__((format(printf, 1, 2)));
void rb_syserr_warn(int err, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
void rb_sys_warning(const char *fmt, ...) __attribute__((format(printf, 1, 2)));
void rb_syserr_warning(int err, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
#define rb_raise_cstr(etype,mesg) rb_exc_raise(rb_exc_new_str(etype, rb_str_new_cstr(mesg)))
#define rb_raise_static(etype,mesg) rb_exc_raise(rb_exc_new_str(etype, rb_str_new_static(mesg, rb_strlen_lit(mesg))))
VALUE rb_name_err_new(VALUE mesg, VALUE recv, VALUE method);
#define rb_name_err_raise_str(mesg,recv,name) rb_exc_raise(rb_name_err_new(mesg, recv, name))
#define rb_name_err_raise(mesg,recv,name) rb_name_err_raise_str(rb_fstring_cstr(mesg), (recv), (name))
VALUE rb_nomethod_err_new(VALUE mesg, VALUE recv, VALUE method, VALUE args, int priv);
VALUE rb_key_err_new(VALUE mesg, VALUE recv, VALUE name);
#define rb_key_err_raise(mesg,recv,name) rb_exc_raise(rb_key_err_new(mesg, recv, name))
__attribute__ ((__noreturn__)) void ruby_deprecated_internal_feature(const char *);
#define DEPRECATED_INTERNAL_FEATURE(func) (ruby_deprecated_internal_feature(func), UNREACHABLE)
VALUE rb_warning_warn(VALUE mod, VALUE str);
VALUE rb_warning_string(const char *fmt, ...) __attribute__((format(printf, 1, 2)));
VALUE rb_refinement_module_get_refined_class(VALUE module);
extern ID ruby_static_id_signo, ruby_static_id_status;
void rb_class_modify_check(VALUE);
#define id_signo ruby_static_id_signo
#define id_status ruby_static_id_status
VALUE rb_get_backtrace(VALUE info);
void rb_call_end_proc(VALUE data);
void rb_mark_end_proc(void);
extern const char ruby_null_device[];
VALUE rb_home_dir_of(VALUE user, VALUE result);
VALUE rb_default_home_dir(VALUE result);
VALUE rb_realpath_internal(VALUE basedir, VALUE path, int strict);
VALUE rb_check_realpath(VALUE basedir, VALUE path);
void rb_file_const(const char*, VALUE);
int rb_file_load_ok(const char *);
VALUE rb_file_expand_path_fast(VALUE, VALUE);
VALUE rb_file_expand_path_internal(VALUE, VALUE, int, int, VALUE);
VALUE rb_get_path_check_to_string(VALUE, int);
VALUE rb_get_path_check_convert(VALUE, VALUE, int);
VALUE rb_get_path_check(VALUE, int);
void Init_File(void);
int ruby_is_fd_loadable(int fd);
#pragma GCC visibility push(default)
__attribute__ ((__noreturn__)) void rb_sys_fail_path_in(const char *func_name, VALUE path);
__attribute__ ((__noreturn__)) void rb_syserr_fail_path_in(const char *func_name, int err, VALUE path);
#pragma GCC visibility pop
#define rb_sys_fail_path(path) rb_sys_fail_path_in(RUBY_FUNCTION_NAME_STRING, path)
#define rb_syserr_fail_path(err,path) rb_syserr_fail_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path))
extern VALUE *ruby_initial_gc_stress_ptr;
extern int ruby_disable_gc;
void Init_heap(void);
void *ruby_mimmalloc(size_t size);
void ruby_mimfree(void *ptr);
void rb_objspace_set_event_hook(const rb_event_flag_t event);
void rb_gc_writebarrier_remember(VALUE obj);
void ruby_gc_set_params(int safe_level);
void rb_copy_wb_protected_attribute(VALUE dest, VALUE obj);
#define ruby_sized_xrealloc(ptr,new_size,old_size) ruby_xrealloc(ptr, new_size)
#define ruby_sized_xrealloc2(ptr,new_count,element_size,old_count) ruby_xrealloc(ptr, new_count, element_size)
#define ruby_sized_xfree(ptr,size) ruby_xfree(ptr)
#define SIZED_REALLOC_N(var,type,n,old_n) REALLOC_N(var, type, n)
#undef NEWOBJF_OF
#undef RB_NEWOBJ_OF
#define RB_NEWOBJ_OF(obj,type,klass,flags) type *(obj) = (type*)(((flags) & FL_WB_PROTECTED) ? rb_wb_protected_newobj_of(klass, (flags) & ~FL_WB_PROTECTED) : rb_wb_unprotected_newobj_of(klass, flags))
#define NEWOBJ_OF(obj,type,klass,flags) RB_NEWOBJ_OF(obj,type,klass,flags)
void *rb_aligned_malloc(size_t, size_t);
void rb_aligned_free(void *);
struct st_table *rb_hash_tbl_raw(VALUE hash);
#define RHASH_TBL_RAW(h) rb_hash_tbl_raw(h)
VALUE rb_hash_new_with_size(st_index_t size);

#pragma GCC visibility push(default)

VALUE rb_hash_new_compare_by_id(void);

#pragma GCC visibility pop

VALUE rb_hash_has_key(VALUE hash, VALUE key);
VALUE rb_hash_default_value(VALUE hash, VALUE key);
VALUE rb_hash_set_default_proc(VALUE hash, VALUE proc);
long rb_objid_hash(st_index_t index);
long rb_dbl_long_hash(double d);
st_table *rb_init_identtable(void);
st_table *rb_init_identtable_with_size(st_index_t size);
VALUE rb_hash_compare_by_id_p(VALUE hash);
VALUE rb_to_hash_type(VALUE obj);
VALUE rb_hash_key_str(VALUE);
VALUE rb_hash_keys(VALUE hash);
VALUE rb_hash_values(VALUE hash);
VALUE rb_hash_rehash(VALUE hash);
VALUE rb_hash_resurrect(VALUE hash);
int rb_hash_add_new_element(VALUE hash, VALUE key, VALUE val);
VALUE rb_hash_set_pair(VALUE hash, VALUE pair);
void rb_hash_bulk_insert(long, const VALUE *, VALUE);
int rb_hash_stlike_lookup(VALUE hash, st_data_t key, st_data_t *pval);
int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval);
int rb_hash_stlike_foreach(VALUE hash, int (*func)(), st_data_t arg);
int rb_hash_stlike_update(VALUE hash, st_data_t key, st_update_callback_func func, st_data_t arg);
void rb_call_inits(void);
const char *ruby_get_inplace_mode(void);
void ruby_set_inplace_mode(const char *);
ssize_t rb_io_bufread(VALUE io, void *buf, size_t size);
void rb_stdio_set_default_encoding(void);
VALUE rb_io_flush_raw(VALUE, int);
int rb_stderr_tty_p(void);
void rb_io_fptr_finalize_internal(void *ptr);
#define rb_io_fptr_finalize rb_io_fptr_finalize_internal
VALUE rb_get_load_path(void);
VALUE rb_get_expanded_load_path(void);
int rb_require_internal(VALUE fname, int safe);
__attribute__ ((__noreturn__)) void rb_load_fail(VALUE, const char*);
extern const char ruby_exec_prefix[];
extern const char ruby_initial_load_paths[];
int Init_enc_set_filesystem_encoding(void);
VALUE rb_math_atan2(VALUE, VALUE);
VALUE rb_math_cos(VALUE);
VALUE rb_math_cosh(VALUE);
VALUE rb_math_exp(VALUE);
VALUE rb_math_hypot(VALUE, VALUE);
VALUE rb_math_log(int argc, const VALUE *argv);
VALUE rb_math_sin(VALUE);
VALUE rb_math_sinh(VALUE);
VALUE rb_math_sqrt(VALUE);
extern int mjit_enabled;
VALUE mjit_pause(int wait_p);
VALUE mjit_resume(void);
void mjit_finish(int close_handle_p);
void Init_newline(void);
#define FIXNUM_POSITIVE_P(num) ((SIGNED_VALUE)(num) > (SIGNED_VALUE)INT2FIX(0))
#define FIXNUM_NEGATIVE_P(num) ((SIGNED_VALUE)(num) < 0)
#define FIXNUM_ZERO_P(num) ((num) == INT2FIX(0))
#define INT_NEGATIVE_P(x) (FIXNUM_P(x) ? FIXNUM_NEGATIVE_P(x) : BIGNUM_NEGATIVE_P(x))
#define ROUND_DEFAULT RUBY_NUM_ROUND_HALF_UP
enum ruby_num_rounding_mode {
    RUBY_NUM_ROUND_HALF_UP,
    RUBY_NUM_ROUND_HALF_EVEN,
    RUBY_NUM_ROUND_HALF_DOWN,
    RUBY_NUM_ROUND_DEFAULT = RUBY_NUM_ROUND_HALF_UP
};
#define ROUND_TO(mode,even,up,down) ((mode) == RUBY_NUM_ROUND_HALF_EVEN ? even : (mode) == RUBY_NUM_ROUND_HALF_UP ? up : down)
#define ROUND_FUNC(mode,name) ROUND_TO(mode, name ##_half_even, name ##_half_up, name ##_half_down)
#define ROUND_CALL(mode,name,args) ROUND_TO(mode, name ##_half_even args, name ##_half_up args, name ##_half_down args)
int rb_num_to_uint(VALUE val, unsigned int *ret);
VALUE ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl);
double ruby_float_step_size(double beg, double end, double unit, int excl);
int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endless);
double ruby_float_mod(double x, double y);
int rb_num_negative_p(VALUE);
VALUE rb_int_succ(VALUE num);
VALUE rb_int_pred(VALUE num);
VALUE rb_int_uminus(VALUE num);
VALUE rb_float_uminus(VALUE num);
VALUE rb_int_plus(VALUE x, VALUE y);
VALUE rb_float_plus(VALUE x, VALUE y);
VALUE rb_int_minus(VALUE x, VALUE y);
VALUE rb_float_minus(VALUE x, VALUE y);
VALUE rb_int_mul(VALUE x, VALUE y);
VALUE rb_float_mul(VALUE x, VALUE y);
VALUE rb_int_idiv(VALUE x, VALUE y);
VALUE rb_float_div(VALUE x, VALUE y);
VALUE rb_int_modulo(VALUE x, VALUE y);
VALUE rb_int_round(VALUE num, int ndigits, enum ruby_num_rounding_mode mode);
VALUE rb_int2str(VALUE num, int base);
VALUE rb_dbl_hash(double d);
VALUE rb_fix_plus(VALUE x, VALUE y);
VALUE rb_int_gt(VALUE x, VALUE y);
int rb_float_cmp(VALUE x, VALUE y);
VALUE rb_float_gt(VALUE x, VALUE y);
VALUE rb_int_ge(VALUE x, VALUE y);
enum ruby_num_rounding_mode rb_num_get_rounding_option(VALUE opts);
double rb_int_fdiv_double(VALUE x, VALUE y);
VALUE rb_int_pow(VALUE x, VALUE y);
VALUE rb_float_pow(VALUE x, VALUE y);
VALUE rb_int_cmp(VALUE x, VALUE y);
VALUE rb_int_equal(VALUE x, VALUE y);
VALUE rb_int_divmod(VALUE x, VALUE y);
VALUE rb_int_and(VALUE x, VALUE y);
VALUE rb_int_lshift(VALUE x, VALUE y);
VALUE rb_int_div(VALUE x, VALUE y);
VALUE rb_int_abs(VALUE num);
VALUE rb_int_odd_p(VALUE num);
int rb_int_positive_p(VALUE num);
int rb_int_negative_p(VALUE num);
VALUE rb_num_pow(VALUE x, VALUE y);
VALUE rb_float_floor(VALUE x, int ndigits);
static inline VALUE
rb_num_compare_with_zero(VALUE num, ID mid)
{
    VALUE zero = (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
    VALUE r = rb_check_funcall(num, mid, 1, &zero);
    if (r == ((VALUE)RUBY_Qundef)) {
 rb_cmperr(num, zero);
    }
    return r;
}
static inline int
rb_num_positive_int_p(VALUE num)
{
    const ID mid = '>';
    if ((((int)(long)(num))&RUBY_FIXNUM_FLAG)) {
 if (rb_method_basic_definition_p(rb_cInteger, mid))
     return ((long)(num) > (long)(((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG));
    }
    else if (( ((RUBY_T_BIGNUM) == RUBY_T_FIXNUM) ? (((int)(long)(num))&RUBY_FIXNUM_FLAG) : ((RUBY_T_BIGNUM) == RUBY_T_TRUE) ? ((num) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_BIGNUM) == RUBY_T_FALSE) ? ((num) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_BIGNUM) == RUBY_T_NIL) ? ((num) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_BIGNUM) == RUBY_T_UNDEF) ? ((num) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_BIGNUM) == RUBY_T_SYMBOL) ? ((((VALUE)(num)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_BIGNUM) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_BIGNUM)))) {
 if (rb_method_basic_definition_p(rb_cInteger, mid))
     return ((((struct RBasic*)(num))->flags & ((VALUE)((VALUE)RUBY_FL_USER1))) != 0);
    }
    return !(((VALUE)(rb_num_compare_with_zero(num, mid)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0);
}
static inline int
rb_num_negative_int_p(VALUE num)
{
    const ID mid = '<';
    if ((((int)(long)(num))&RUBY_FIXNUM_FLAG)) {
 if (rb_method_basic_definition_p(rb_cInteger, mid))
     return ((long)(num) < 0);
    }
    else if (( ((RUBY_T_BIGNUM) == RUBY_T_FIXNUM) ? (((int)(long)(num))&RUBY_FIXNUM_FLAG) : ((RUBY_T_BIGNUM) == RUBY_T_TRUE) ? ((num) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_BIGNUM) == RUBY_T_FALSE) ? ((num) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_BIGNUM) == RUBY_T_NIL) ? ((num) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_BIGNUM) == RUBY_T_UNDEF) ? ((num) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_BIGNUM) == RUBY_T_SYMBOL) ? ((((VALUE)(num)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_BIGNUM) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_BIGNUM)))) {
 if (rb_method_basic_definition_p(rb_cInteger, mid))
     return (!((((struct RBasic*)(num))->flags & ((VALUE)((VALUE)RUBY_FL_USER1))) != 0));
    }
    return !(((VALUE)(rb_num_compare_with_zero(num, mid)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0);
}
VALUE rb_float_abs(VALUE flt);
VALUE rb_float_equal(VALUE x, VALUE y);
VALUE rb_float_eql(VALUE x, VALUE y);
VALUE rb_flo_div_flo(VALUE x, VALUE y);
static inline double
rb_float_flonum_value(VALUE v)
{
    return 0.0;
}
static inline double
rb_float_noflonum_value(VALUE v)
{
    return ((struct RFloat *)v)->float_value;
}
static inline double
rb_float_value_inline(VALUE v)
{
    if (0) {
 return rb_float_flonum_value(v);
    }
    return rb_float_noflonum_value(v);
}
static inline VALUE
rb_float_new_inline(double d)
{
    return rb_float_new_in_heap(d);
}
#define rb_float_value(v) rb_float_value_inline(v)
#define rb_float_new(d) rb_float_new_inline(d)
void rb_obj_copy_ivar(VALUE dest, VALUE obj);
__attribute__ ((__const__)) VALUE rb_obj_equal(VALUE obj1, VALUE obj2);
__attribute__ ((__const__)) VALUE rb_obj_not(VALUE obj);
VALUE rb_class_search_ancestor(VALUE klass, VALUE super);
__attribute__ ((__noreturn__)) void rb_undefined_alloc(VALUE klass);
double rb_num_to_dbl(VALUE val);
VALUE rb_obj_dig(int argc, VALUE *argv, VALUE self, VALUE notfound);
VALUE rb_immutable_obj_clone(int, VALUE *, VALUE);
VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2);
VALUE rb_convert_type_with_id(VALUE,int,const char*,ID);
VALUE rb_check_convert_type_with_id(VALUE,int,const char*,ID);
struct RBasicRaw {
    VALUE flags;
    VALUE klass;
};
#define RBASIC_CLEAR_CLASS(obj) memset(&(((struct RBasicRaw *)((VALUE)(obj)))->klass), 0, sizeof(VALUE))
#define RBASIC_SET_CLASS_RAW(obj,cls) memcpy(&((struct RBasicRaw *)((VALUE)(obj)))->klass, &(cls), sizeof(VALUE))
#define RBASIC_SET_CLASS(obj,cls) do { VALUE _obj_ = (obj); RB_OBJ_WRITE(_obj_, &((struct RBasicRaw *)(_obj_))->klass, cls); } while (0)
#define USE_SYMBOL_GC 1
VALUE rb_parser_get_yydebug(VALUE);
VALUE rb_parser_set_yydebug(VALUE, VALUE);

#pragma GCC visibility push(default)

VALUE rb_parser_set_context(VALUE, const struct rb_block *, int);

#pragma GCC visibility pop

void *rb_parser_load_file(VALUE parser, VALUE name);
int rb_is_const_name(VALUE name);
int rb_is_class_name(VALUE name);
int rb_is_global_name(VALUE name);
int rb_is_instance_name(VALUE name);
int rb_is_attrset_name(VALUE name);
int rb_is_local_name(VALUE name);
int rb_is_method_name(VALUE name);
int rb_is_junk_name(VALUE name);
__attribute__ ((__pure__)) int rb_is_const_sym(VALUE sym);
__attribute__ ((__pure__)) int rb_is_class_sym(VALUE sym);
__attribute__ ((__pure__)) int rb_is_global_sym(VALUE sym);
__attribute__ ((__pure__)) int rb_is_instance_sym(VALUE sym);
__attribute__ ((__pure__)) int rb_is_attrset_sym(VALUE sym);
__attribute__ ((__pure__)) int rb_is_local_sym(VALUE sym);
__attribute__ ((__pure__)) int rb_is_method_sym(VALUE sym);
__attribute__ ((__pure__)) int rb_is_junk_sym(VALUE sym);
ID rb_make_internal_id(void);
void rb_gc_free_dsymbol(VALUE);
ID rb_id_attrget(ID id);
VALUE rb_proc_location(VALUE self);
st_index_t rb_hash_proc(st_index_t hash, VALUE proc);
int rb_block_arity(void);
int rb_block_min_max_arity(int *max);
VALUE rb_func_proc_new(rb_block_call_func_t func, VALUE val);
VALUE rb_func_lambda_new(rb_block_call_func_t func, VALUE val, int min_argc, int max_argc);
VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info);
#define RB_MAX_GROUPS (65536)
struct waitpid_state;
struct rb_execarg {
    union {
        struct {
            VALUE shell_script;
        } sh;
        struct {
            VALUE command_name;
            VALUE command_abspath;
            VALUE argv_str;
            VALUE argv_buf;
        } cmd;
    } invoke;
    VALUE redirect_fds;
    VALUE envp_str;
    VALUE envp_buf;
    VALUE dup2_tmpbuf;
    unsigned use_shell : 1;
    unsigned pgroup_given : 1;
    unsigned umask_given : 1;
    unsigned unsetenv_others_given : 1;
    unsigned unsetenv_others_do : 1;
    unsigned close_others_given : 1;
    unsigned close_others_do : 1;
    unsigned chdir_given : 1;
    unsigned new_pgroup_given : 1;
    unsigned new_pgroup_flag : 1;
    unsigned uid_given : 1;
    unsigned gid_given : 1;
    unsigned exception : 1;
    struct waitpid_state *waitpid_state;
    pid_t pgroup_pgid;
    VALUE rlimit_limits;
    mode_t umask_mask;
    int uid;
    int gid;
    int close_others_maxhint;
    VALUE fd_dup2;
    VALUE fd_close;
    VALUE fd_open;
    VALUE fd_dup2_child;
    VALUE env_modification;
    VALUE path_env;
    VALUE chdir_dir;
};
#define ARGVSTR2ARGV(argv_str) ((char **)RB_IMEMO_TMPBUF_PTR(argv_str) + 1)
static inline size_t
ARGVSTR2ARGC(VALUE argv_str)
{
    size_t i = 0;
    char *const *p = ((char **)((void *)(((const struct rb_imemo_tmpbuf_struct *)(argv_str))->ptr)) + 1);
    while (p[i++])
        ;
    return i - 1;
}
pid_t rb_fork_ruby(int *status);
void rb_last_status_clear(void);
#define RANGE_BEG(r) (RSTRUCT(r)->as.ary[0])
#define RANGE_END(r) (RSTRUCT(r)->as.ary[1])
#define RANGE_EXCL(r) (RSTRUCT(r)->as.ary[2])
VALUE rb_rational_canonicalize(VALUE x);
VALUE rb_rational_uminus(VALUE self);
VALUE rb_rational_plus(VALUE self, VALUE other);
VALUE rb_rational_minus(VALUE self, VALUE other);
VALUE rb_rational_mul(VALUE self, VALUE other);
VALUE rb_rational_div(VALUE self, VALUE other);
VALUE rb_lcm(VALUE x, VALUE y);
VALUE rb_rational_reciprocal(VALUE x);
VALUE rb_cstr_to_rat(const char *, int);
VALUE rb_rational_abs(VALUE self);
VALUE rb_rational_cmp(VALUE self, VALUE other);
VALUE rb_rational_pow(VALUE self, VALUE other);
VALUE rb_rational_floor(VALUE self, int ndigits);
VALUE rb_numeric_quo(VALUE x, VALUE y);
VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
VALUE rb_reg_check_preprocess(VALUE);
long rb_reg_search0(VALUE, VALUE, long, int, int);
VALUE rb_reg_match_p(VALUE re, VALUE str, long pos);
_Bool rb_reg_start_with_p(VALUE re, VALUE str);
void rb_backref_set_string(VALUE string, long pos, long len);
void rb_match_unbusy(VALUE);
int rb_match_count(VALUE match);
int rb_match_nth_defined(int nth, VALUE match);
VALUE rb_reg_new_ary(VALUE ary, int options);
extern int ruby_enable_coredump;
int rb_get_next_signal(void);
VALUE rb_fstring(VALUE);
VALUE rb_fstring_new(const char *ptr, long len);
#define rb_fstring_lit(str) rb_fstring_new((str), rb_strlen_lit(str))
#define rb_fstring_literal(str) rb_fstring_lit(str)
VALUE rb_fstring_cstr(const char *str);
#define rb_fstring_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_fstring_new((str), (long)strlen(str)) : rb_fstring_cstr(str) )
int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p);
int rb_str_symname_p(VALUE);
VALUE rb_str_quote_unprintable(VALUE);
VALUE rb_id_quote_unprintable(ID);
#define QUOTE(str) rb_str_quote_unprintable(str)
#define QUOTE_ID(id) rb_id_quote_unprintable(id)
char *rb_str_fill_terminator(VALUE str, const int termlen);
void rb_str_change_terminator_length(VALUE str, const int oldtermlen, const int termlen);
VALUE rb_str_locktmp_ensure(VALUE str, VALUE (*func)(VALUE), VALUE arg);
VALUE rb_str_tmp_frozen_acquire(VALUE str);
void rb_str_tmp_frozen_release(VALUE str, VALUE tmp);
VALUE rb_str_chomp_string(VALUE str, VALUE chomp);
#define STR_NOEMBED FL_USER1
#define STR_SHARED FL_USER2
#define STR_EMBED_P(str) (!FL_TEST_RAW((str), STR_NOEMBED))
#define STR_SHARED_P(s) FL_ALL_RAW((s), STR_NOEMBED|ELTS_SHARED)
#define is_ascii_string(str) (rb_enc_str_coderange(str) == ENC_CODERANGE_7BIT)
#define is_broken_string(str) (rb_enc_str_coderange(str) == ENC_CODERANGE_BROKEN)
size_t rb_str_memsize(VALUE);
VALUE rb_sym_proc_call(ID mid, int argc, const VALUE *argv, VALUE passed_proc);
VALUE rb_sym_to_proc(VALUE sym);
char *rb_str_to_cstr(VALUE str);
VALUE rb_str_eql(VALUE str1, VALUE str2);
VALUE rb_obj_as_string_result(VALUE str, VALUE obj);
VALUE rb_sym_intern_ascii(const char *ptr, long len);
VALUE rb_sym_intern_ascii_cstr(const char *ptr);
#define rb_sym_intern_ascii_cstr(ptr) __extension__ ( { (__builtin_constant_p(ptr)) ? rb_sym_intern_ascii((ptr), (long)strlen(ptr)) : rb_sym_intern_ascii_cstr(ptr); })
VALUE rb_to_symbol_type(VALUE obj);
VALUE rb_struct_init_copy(VALUE copy, VALUE s);
VALUE rb_struct_lookup(VALUE s, VALUE idx);
VALUE rb_struct_s_keyword_init(VALUE klass);
struct timeval rb_time_timeval(VALUE);
#define COVERAGE_INDEX_LINES 0
#define COVERAGE_INDEX_BRANCHES 1
#define COVERAGE_TARGET_LINES 1
#define COVERAGE_TARGET_BRANCHES 2
#define COVERAGE_TARGET_METHODS 4
#define COVERAGE_TARGET_ONESHOT_LINES 8
VALUE rb_obj_is_mutex(VALUE obj);
VALUE rb_suppress_tracing(VALUE (*func)(VALUE), VALUE arg);
void rb_thread_execute_interrupts(VALUE th);
void rb_clear_trace_func(void);
VALUE rb_get_coverages(void);
int rb_get_coverage_mode(void);
VALUE rb_default_coverage(int);
VALUE rb_thread_shield_new(void);
VALUE rb_thread_shield_wait(VALUE self);
VALUE rb_thread_shield_release(VALUE self);
VALUE rb_thread_shield_destroy(VALUE self);
int rb_thread_to_be_killed(VALUE thread);
void rb_mutex_allow_trap(VALUE self, int val);
VALUE rb_uninterruptible(VALUE (*b_proc)(), VALUE data);
VALUE rb_mutex_owned_p(VALUE self);
extern VALUE rb_cEncodingConverter;
char *ruby_dtoa(double d_, int mode, int ndigits, int *decpt, int *sign, char **rve);
char *ruby_hdtoa(double d, const char *xdigs, int ndigits, int *decpt, int *sign, char **rve);
#define ROBJECT_TRANSIENT_FLAG FL_USER13
#define ROBJ_TRANSIENT_P(obj) FL_TEST_RAW((obj), ROBJECT_TRANSIENT_FLAG)
#define ROBJ_TRANSIENT_SET(obj) FL_SET_RAW((obj), ROBJECT_TRANSIENT_FLAG)
#define ROBJ_TRANSIENT_UNSET(obj) FL_UNSET_RAW((obj), ROBJECT_TRANSIENT_FLAG)
void rb_gc_mark_global_tbl(void);
size_t rb_generic_ivar_memsize(VALUE);
VALUE rb_search_class_path(VALUE);
VALUE rb_attr_delete(VALUE, ID);
VALUE rb_ivar_lookup(VALUE obj, ID id, VALUE undef);
void rb_autoload_str(VALUE mod, ID id, VALUE file);
void rb_deprecate_constant(VALUE mod, const char *name);
__attribute__ ((__noreturn__)) VALUE rb_mod_const_missing(VALUE,VALUE);
rb_gvar_getter_t *rb_gvar_getter_function_of(const struct rb_global_entry *);
rb_gvar_setter_t *rb_gvar_setter_function_of(const struct rb_global_entry *);
_Bool rb_gvar_is_traced(const struct rb_global_entry *);
rb_serial_t rb_next_class_serial(void);
VALUE rb_obj_is_thread(VALUE obj);
void rb_vm_mark(void *ptr);
void Init_BareVM(void);
void Init_vm_objects(void);
__attribute__ ((__pure__)) VALUE rb_vm_top_self(void);
void rb_thread_recycle_stack_release(VALUE *);
VALUE *rb_thread_recycle_stack(size_t);
void rb_vm_change_state(void);
void rb_vm_inc_const_missing_count(void);
const void **rb_vm_get_insns_address_table(void);
VALUE rb_source_location(int *pline);
const char *rb_source_location_cstr(int *pline);
static void rb_vm_pop_cfunc_frame(void);
int rb_vm_add_root_module(ID id, VALUE module);
void rb_vm_check_redefinition_by_prepend(VALUE klass);
VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements);
static VALUE ruby_vm_special_exception_copy(VALUE);
__attribute__ ((__pure__)) st_table *rb_vm_fstring_table(void);
void rb_print_backtrace(void);
void Init_vm_eval(void);
VALUE rb_current_realfilepath(void);
VALUE rb_check_block_call(VALUE, ID, int, const VALUE *, rb_block_call_func_t, VALUE);
typedef void rb_check_funcall_hook(int, VALUE, ID, int, const VALUE *, VALUE);
VALUE rb_check_funcall_with_hook(VALUE recv, ID mid, int argc, const VALUE *argv,
     rb_check_funcall_hook *hook, VALUE arg);
const char *rb_type_str(enum ruby_value_type type);
VALUE rb_check_funcall_default(VALUE, ID, int, const VALUE *, VALUE);
VALUE rb_yield_1(VALUE val);
VALUE rb_yield_force_blockarg(VALUE values);
VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv,
       rb_block_call_func_t bl_proc, int min_argc, int max_argc,
       VALUE data2);
VALUE rb_equal_opt(VALUE obj1, VALUE obj2);
VALUE rb_eql_opt(VALUE obj1, VALUE obj2);
void Init_vm_stack_canary(void);
void Init_eval_method(void);
int rb_method_defined_by(VALUE obj, ID mid, VALUE (*cfunc)());
void Init_prelude(void);
void Init_vm_backtrace(void);
VALUE rb_vm_thread_backtrace(int argc, const VALUE *argv, VALUE thval);
VALUE rb_vm_thread_backtrace_locations(int argc, const VALUE *argv, VALUE thval);
VALUE rb_make_backtrace(void);
void rb_backtrace_print_as_bugreport(void);
int rb_backtrace_p(VALUE obj);
VALUE rb_backtrace_to_str_ary(VALUE obj);
VALUE rb_backtrace_to_location_ary(VALUE obj);
void rb_backtrace_each(VALUE (*iter)(VALUE recv, VALUE str), VALUE output);

#pragma GCC visibility push(default)

const char *rb_objspace_data_type_name(VALUE obj);
VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd);
void rb_ary_detransient(VALUE a);
VALUE *rb_ary_ptr_use_start(VALUE ary);
void rb_ary_ptr_use_end(VALUE ary);
VALUE rb_big_mul_normal(VALUE x, VALUE y);
VALUE rb_big_mul_balance(VALUE x, VALUE y);
VALUE rb_big_mul_karatsuba(VALUE x, VALUE y);
VALUE rb_big_mul_toom3(VALUE x, VALUE y);
VALUE rb_big_sq_fast(VALUE x);
VALUE rb_big_divrem_normal(VALUE x, VALUE y);
VALUE rb_big2str_poweroftwo(VALUE x, int base);
VALUE rb_big2str_generic(VALUE x, int base);
VALUE rb_str2big_poweroftwo(VALUE arg, int base, int badcheck);
VALUE rb_str2big_normal(VALUE arg, int base, int badcheck);
VALUE rb_str2big_karatsuba(VALUE arg, int base, int badcheck);
VALUE rb_big_mul_gmp(VALUE x, VALUE y);
VALUE rb_big_divrem_gmp(VALUE x, VALUE y);
VALUE rb_big2str_gmp(VALUE x, int base);
VALUE rb_str2big_gmp(VALUE arg, int base, int badcheck);
enum rb_int_parse_flags {
    RB_INT_PARSE_SIGN = 0x01,
    RB_INT_PARSE_UNDERSCORE = 0x02,
    RB_INT_PARSE_PREFIX = 0x04,
    RB_INT_PARSE_ALL = 0x07,
    RB_INT_PARSE_DEFAULT = 0x07
};
VALUE rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits, int base, int flags);
VALUE rb_arith_seq_new(VALUE obj, VALUE meth, int argc, VALUE const *argv,
                       rb_enumerator_size_func *size_fn,
                       VALUE beg, VALUE end, VALUE step, int excl);
int rb_bug_reporter_add(void (*func)(FILE *, void *), void *data);
__attribute__ ((__noreturn__)) void rb_unexpected_type(VALUE,int);
#undef Check_Type
#define Check_Type(v,t) (!RB_TYPE_P((VALUE)(v), (t)) || ((t) == RUBY_T_DATA && RTYPEDDATA_P(v)) ? rb_unexpected_type((VALUE)(v), (t)) : (void)0)
static inline int
rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type)
{
    return ( ((RUBY_T_DATA) == RUBY_T_FIXNUM) ? (((int)(long)(obj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_DATA) == RUBY_T_TRUE) ? ((obj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_DATA) == RUBY_T_FALSE) ? ((obj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_DATA) == RUBY_T_NIL) ? ((obj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_DATA) == RUBY_T_UNDEF) ? ((obj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_DATA) == RUBY_T_SYMBOL) ? ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_DATA) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_DATA))) && (((struct RTypedData*)(obj))->typed_flag == 1) && ((((struct RTypedData*)(obj))->type) == data_type);
}
#define rb_typeddata_is_instance_of rb_typeddata_is_instance_of_inline
VALUE rb_hash_delete_entry(VALUE hash, VALUE key);
VALUE rb_ident_hash_new(void);
void rb_maygvl_fd_fix_cloexec(int fd);
int rb_gc_for_fd(int err);
void rb_write_error_str(VALUE mesg);
VALUE rb_int_positive_pow(long x, unsigned long y);
int rb_exec_async_signal_safe(const struct rb_execarg *e, char *errmsg, size_t errmsg_buflen);
pid_t rb_fork_async_signal_safe(int *status, int (*chfunc)(void*, char *, size_t), void *charg, VALUE fds, char *errmsg, size_t errmsg_buflen);
VALUE rb_execarg_new(int argc, const VALUE *argv, int accept_shell, int allow_exc_opt);
struct rb_execarg *rb_execarg_get(VALUE execarg_obj);
int rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val);
void rb_execarg_parent_start(VALUE execarg_obj);
void rb_execarg_parent_end(VALUE execarg_obj);
int rb_execarg_run_options(const struct rb_execarg *e, struct rb_execarg *s, char* errmsg, size_t errmsg_buflen);
VALUE rb_execarg_extract_options(VALUE execarg_obj, VALUE opthash);
void rb_execarg_setenv(VALUE execarg_obj, VALUE env);
VALUE rb_gcd(VALUE x, VALUE y);
VALUE rb_gcd_normal(VALUE self, VALUE other);
VALUE rb_gcd_gmp(VALUE x, VALUE y);
int rb_grantpt(int fd);
VALUE rb_str_upto_each(VALUE, VALUE, int, int (*each)(VALUE, VALUE), VALUE);
VALUE rb_str_upto_endless_each(VALUE, int (*each)(VALUE, VALUE), VALUE);
int ruby_thread_has_gvl_p(void);
void ruby_reset_leap_second_info(void);
extern const signed char ruby_digit36_to_number_table[];
extern const char ruby_hexdigits[];
extern unsigned long ruby_scan_digits(const char *str, ssize_t len, int base, size_t *retlen, int *overflow);
void rb_mark_generic_ivar(VALUE);
VALUE rb_const_missing(VALUE klass, VALUE name);
int rb_class_ivar_set(VALUE klass, ID vid, VALUE value);
st_table *rb_st_copy(VALUE obj, struct st_table *orig_tbl);
VALUE rb_wb_protected_newobj_of(VALUE, VALUE);
VALUE rb_wb_unprotected_newobj_of(VALUE, VALUE);
size_t rb_obj_memsize_of(VALUE);
void rb_gc_verify_internal_consistency(void);
#define RB_OBJ_GC_FLAGS_MAX 5
size_t rb_obj_gc_flags(VALUE, ID[], size_t);
void rb_gc_mark_values(long n, const VALUE *values);
VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0);
int ruby_fill_random_bytes(void *, size_t, int);

#pragma GCC visibility pop

#define RUBY_DTRACE_CREATE_HOOK(name,arg) RUBY_DTRACE_HOOK(name ##_CREATE, arg)
#define RUBY_DTRACE_HOOK(name,arg) do { if (UNLIKELY(RUBY_DTRACE_ ##name ##_ENABLED())) { int dtrace_line; const char *dtrace_file = rb_source_location_cstr(&dtrace_line); if (!dtrace_file) dtrace_file = ""; RUBY_DTRACE_ ##name(arg, dtrace_file, dtrace_line); } } while (0)
#define RB_OBJ_BUILTIN_TYPE(obj) rb_obj_builtin_type(obj)
#define OBJ_BUILTIN_TYPE(obj) RB_OBJ_BUILTIN_TYPE(obj)
#define rb_obj_builtin_type(obj) __extension__({ VALUE arg_obj = (obj); RB_SPECIAL_CONST_P(arg_obj) ? -1 : RB_BUILTIN_TYPE(arg_obj); })
#define FLEX_ARY_LEN 
#define BITFIELD(type,name,size) type name : size
#define COMPILER_WARNING_PUSH _Pragma("GCC diagnostic push")
#define COMPILER_WARNING_POP _Pragma("GCC diagnostic pop")
#define COMPILER_WARNING_SPECIFIER(kind,msg) GCC diagnostic kind #msg
#define COMPILER_WARNING_ERROR(flag) COMPILER_WARNING_PRAGMA(COMPILER_WARNING_SPECIFIER(error, flag))
#define COMPILER_WARNING_IGNORED(flag) COMPILER_WARNING_PRAGMA(COMPILER_WARNING_SPECIFIER(ignored, flag))
#define COMPILER_WARNING_PRAGMA(str) COMPILER_WARNING_PRAGMA_(str)
#define COMPILER_WARNING_PRAGMA_(str) _Pragma(#str)
#define RUBY_VM_H 1

#pragma GCC visibility push(default)

typedef struct rb_vm_struct ruby_vm_t;
int ruby_vm_destruct(ruby_vm_t *vm);
void ruby_vm_at_exit(void(*func)(ruby_vm_t *));

#pragma GCC visibility pop

#define vm_exec rb_vm_exec
#define RUBY_GC_H 1
#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("movl\t%%esp, %0" : "=r" (*(p)))
#define RUBY_MARK_FREE_DEBUG 0
#define RUBY_MARK_ENTER(msg) 
#define RUBY_MARK_LEAVE(msg) 
#define RUBY_FREE_ENTER(msg) 
#define RUBY_FREE_LEAVE(msg) 
#define RUBY_GC_INFO if(0)printf
#define RUBY_MARK_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark(markobj);} } while (0)
#define RUBY_FREE_UNLESS_NULL(ptr) if(ptr){ruby_xfree(ptr);(ptr)=NULL;}
#define STACK_UPPER(x,a,b) (b)
#define STACK_GROW_DIR_DETECTION 
#define STACK_DIR_UPPER(a,b) STACK_UPPER(0, (a), (b))
#define IS_STACK_DIR_UPPER() STACK_DIR_UPPER(1,0)
const char *rb_obj_info(VALUE obj);
const char *rb_raw_obj_info(char *buff, const int buff_size, VALUE obj);
void rb_obj_info_dump(VALUE obj);
struct rb_thread_struct;

#pragma GCC visibility push(default)

size_t rb_objspace_data_type_memsize(VALUE obj);
void rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), void *data);
void rb_objspace_reachable_objects_from_root(void (func)(const char *category, VALUE, void *), void *data);
int rb_objspace_markable_object_p(VALUE obj);
int rb_objspace_internal_object_p(VALUE obj);
int rb_objspace_marked_object_p(VALUE obj);
int rb_objspace_garbage_object_p(VALUE obj);
void rb_objspace_each_objects(
    int (*callback)(void *start, void *end, size_t stride, void *data),
    void *data);
void rb_objspace_each_objects_without_setup(
    int (*callback)(void *, void *, size_t, void *),
    void *data);

#pragma GCC visibility pop

#define RUBY_VM_CORE_H 
#define VM_CHECK_MODE 0
#define VMDEBUG 0
#define RUBY_ASSERT_H 
__attribute__ ((__noreturn__)) void rb_assert_failure(const char *, int, const char *, const char *);
#define RUBY_ASSERT_FAIL(expr) rb_assert_failure(__FILE__, __LINE__, RUBY_FUNCTION_NAME_STRING, expr)
#define RUBY_ASSERT_MESG(expr,mesg) ((expr) ? (void)0 : RUBY_ASSERT_FAIL(mesg))
#define RUBY_ASSERT_MESG_WHEN(cond,expr,mesg) __builtin_choose_expr( __builtin_constant_p(cond), __builtin_choose_expr(cond, RUBY_ASSERT_MESG(expr, mesg), (void)0), RUBY_ASSERT_MESG(!(cond) || (expr), mesg))
#define RUBY_ASSERT(expr) RUBY_ASSERT_MESG_WHEN(!RUBY_NDEBUG+0, expr, #expr)
#define RUBY_ASSERT_WHEN(cond,expr) RUBY_ASSERT_MESG_WHEN(cond, expr, #expr)
#undef assert
#define assert RUBY_ASSERT
#define RUBY_NDEBUG 0
#define VM_ASSERT(expr) ((void)0)
#define VM_UNREACHABLE(func) UNREACHABLE
#define RUBY_VM_THREAD_MODEL 2
#define VM_INSN_INFO_TABLE_IMPL 2
#define RUBY_NODE_H 1
enum node_type {
    NODE_SCOPE,
    NODE_BLOCK,
    NODE_IF,
    NODE_UNLESS,
    NODE_CASE,
    NODE_CASE2,
    NODE_WHEN,
    NODE_WHILE,
    NODE_UNTIL,
    NODE_ITER,
    NODE_FOR,
    NODE_FOR_MASGN,
    NODE_BREAK,
    NODE_NEXT,
    NODE_REDO,
    NODE_RETRY,
    NODE_BEGIN,
    NODE_RESCUE,
    NODE_RESBODY,
    NODE_ENSURE,
    NODE_AND,
    NODE_OR,
    NODE_MASGN,
    NODE_LASGN,
    NODE_DASGN,
    NODE_DASGN_CURR,
    NODE_GASGN,
    NODE_IASGN,
    NODE_CDECL,
    NODE_CVASGN,
    NODE_OP_ASGN1,
    NODE_OP_ASGN2,
    NODE_OP_ASGN_AND,
    NODE_OP_ASGN_OR,
    NODE_OP_CDECL,
    NODE_CALL,
    NODE_OPCALL,
    NODE_FCALL,
    NODE_VCALL,
    NODE_QCALL,
    NODE_SUPER,
    NODE_ZSUPER,
    NODE_ARRAY,
    NODE_ZARRAY,
    NODE_VALUES,
    NODE_HASH,
    NODE_RETURN,
    NODE_YIELD,
    NODE_LVAR,
    NODE_DVAR,
    NODE_GVAR,
    NODE_IVAR,
    NODE_CONST,
    NODE_CVAR,
    NODE_NTH_REF,
    NODE_BACK_REF,
    NODE_MATCH,
    NODE_MATCH2,
    NODE_MATCH3,
    NODE_LIT,
    NODE_STR,
    NODE_DSTR,
    NODE_XSTR,
    NODE_DXSTR,
    NODE_EVSTR,
    NODE_DREGX,
    NODE_ONCE,
    NODE_ARGS,
    NODE_ARGS_AUX,
    NODE_OPT_ARG,
    NODE_KW_ARG,
    NODE_POSTARG,
    NODE_ARGSCAT,
    NODE_ARGSPUSH,
    NODE_SPLAT,
    NODE_BLOCK_PASS,
    NODE_DEFN,
    NODE_DEFS,
    NODE_ALIAS,
    NODE_VALIAS,
    NODE_UNDEF,
    NODE_CLASS,
    NODE_MODULE,
    NODE_SCLASS,
    NODE_COLON2,
    NODE_COLON3,
    NODE_DOT2,
    NODE_DOT3,
    NODE_FLIP2,
    NODE_FLIP3,
    NODE_SELF,
    NODE_NIL,
    NODE_TRUE,
    NODE_FALSE,
    NODE_ERRINFO,
    NODE_DEFINED,
    NODE_POSTEXE,
    NODE_DSYM,
    NODE_ATTRASGN,
    NODE_LAMBDA,
    NODE_LAST
};
typedef struct rb_code_position_struct {
    int lineno;
    int column;
} rb_code_position_t;
typedef struct rb_code_location_struct {
    rb_code_position_t beg_pos;
    rb_code_position_t end_pos;
} rb_code_location_t;
static inline rb_code_location_t code_loc_gen(rb_code_location_t *loc1, rb_code_location_t *loc2)
{
    rb_code_location_t loc;
    loc.beg_pos = loc1->beg_pos;
    loc.end_pos = loc2->end_pos;
    return loc;
}
typedef struct RNode {
    VALUE flags;
    union {
 struct RNode *node;
 ID id;
 VALUE value;
 ID *tbl;
    } u1;
    union {
 struct RNode *node;
 ID id;
 long argc;
 VALUE value;
    } u2;
    union {
 struct RNode *node;
 ID id;
 long state;
 struct rb_global_entry *entry;
 struct rb_args_info *args;
 VALUE value;
    } u3;
    rb_code_location_t nd_loc;
    int node_id;
} NODE;
#define RNODE(obj) (R_CAST(RNode)(obj))
#define NODE_FL_NEWLINE (((VALUE)1)<<7)
#define NODE_TYPESHIFT 8
#define NODE_TYPEMASK (((VALUE)0x7f)<<NODE_TYPESHIFT)
#define nd_type(n) ((int) (((n)->flags & NODE_TYPEMASK)>>NODE_TYPESHIFT))
#define nd_set_type(n,t) (n)->flags=(((n)->flags&~NODE_TYPEMASK)|((((unsigned long)(t))<<NODE_TYPESHIFT)&NODE_TYPEMASK))
#define NODE_LSHIFT (NODE_TYPESHIFT+7)
#define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)
#define nd_line(n) (int)(((SIGNED_VALUE)(n)->flags)>>NODE_LSHIFT)
#define nd_set_line(n,l) (n)->flags=(((n)->flags&~((VALUE)(-1)<<NODE_LSHIFT))|((VALUE)((l)&NODE_LMASK)<<NODE_LSHIFT))
#define nd_first_column(n) ((int)((n)->nd_loc.beg_pos.column))
#define nd_set_first_column(n,v) ((n)->nd_loc.beg_pos.column = (v))
#define nd_first_lineno(n) ((int)((n)->nd_loc.beg_pos.lineno))
#define nd_set_first_lineno(n,v) ((n)->nd_loc.beg_pos.lineno = (v))
#define nd_first_loc(n) ((n)->nd_loc.beg_pos)
#define nd_set_first_loc(n,v) (nd_first_loc(n) = (v))
#define nd_last_column(n) ((int)((n)->nd_loc.end_pos.column))
#define nd_set_last_column(n,v) ((n)->nd_loc.end_pos.column = (v))
#define nd_last_lineno(n) ((int)((n)->nd_loc.end_pos.lineno))
#define nd_set_last_lineno(n,v) ((n)->nd_loc.end_pos.lineno = (v))
#define nd_last_loc(n) ((n)->nd_loc.end_pos)
#define nd_set_last_loc(n,v) (nd_last_loc(n) = (v))
#define nd_node_id(n) ((n)->node_id)
#define nd_set_node_id(n,id) ((n)->node_id = (id))
#define nd_head u1.node
#define nd_alen u2.argc
#define nd_next u3.node
#define nd_cond u1.node
#define nd_body u2.node
#define nd_else u3.node
#define nd_resq u2.node
#define nd_ensr u3.node
#define nd_1st u1.node
#define nd_2nd u2.node
#define nd_stts u1.node
#define nd_entry u3.entry
#define nd_vid u1.id
#define nd_cflag u2.id
#define nd_cval u3.value
#define nd_oid u1.id
#define nd_tbl u1.tbl
#define nd_var u1.node
#define nd_iter u3.node
#define nd_value u2.node
#define nd_aid u3.id
#define nd_lit u1.value
#define nd_rest u1.id
#define nd_opt u1.node
#define nd_pid u1.id
#define nd_plen u2.argc
#define nd_recv u1.node
#define nd_mid u2.id
#define nd_args u3.node
#define nd_ainfo u3.args
#define nd_defn u3.node
#define nd_cpath u1.node
#define nd_super u3.node
#define nd_beg u1.node
#define nd_end u2.node
#define nd_state u3.state
#define nd_rval u2.value
#define nd_nth u2.argc
#define nd_tag u1.id
#define nd_alias u1.id
#define nd_orig u2.id
#define nd_undef u2.node
#define NEW_NODE(t,a0,a1,a2,loc) rb_node_newnode((t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2),loc)
#define NEW_DEFN(i,a,d,loc) NEW_NODE(NODE_DEFN,0,i,NEW_SCOPE(a,d,loc),loc)
#define NEW_DEFS(r,i,a,d,loc) NEW_NODE(NODE_DEFS,r,i,NEW_SCOPE(a,d,loc),loc)
#define NEW_SCOPE(a,b,loc) NEW_NODE(NODE_SCOPE,local_tbl(p),b,a,loc)
#define NEW_BLOCK(a,loc) NEW_NODE(NODE_BLOCK,a,0,0,loc)
#define NEW_IF(c,t,e,loc) NEW_NODE(NODE_IF,c,t,e,loc)
#define NEW_UNLESS(c,t,e,loc) NEW_NODE(NODE_UNLESS,c,t,e,loc)
#define NEW_CASE(h,b,loc) NEW_NODE(NODE_CASE,h,b,0,loc)
#define NEW_CASE2(b,loc) NEW_NODE(NODE_CASE2,0,b,0,loc)
#define NEW_WHEN(c,t,e,loc) NEW_NODE(NODE_WHEN,c,t,e,loc)
#define NEW_WHILE(c,b,n,loc) NEW_NODE(NODE_WHILE,c,b,n,loc)
#define NEW_UNTIL(c,b,n,loc) NEW_NODE(NODE_UNTIL,c,b,n,loc)
#define NEW_FOR(i,b,loc) NEW_NODE(NODE_FOR,0,b,i,loc)
#define NEW_FOR_MASGN(v,loc) NEW_NODE(NODE_FOR_MASGN,v,0,0,loc)
#define NEW_ITER(a,b,loc) NEW_NODE(NODE_ITER,0,NEW_SCOPE(a,b,loc),0,loc)
#define NEW_LAMBDA(a,b,loc) NEW_NODE(NODE_LAMBDA,0,NEW_SCOPE(a,b,loc),0,loc)
#define NEW_BREAK(s,loc) NEW_NODE(NODE_BREAK,s,0,0,loc)
#define NEW_NEXT(s,loc) NEW_NODE(NODE_NEXT,s,0,0,loc)
#define NEW_REDO(loc) NEW_NODE(NODE_REDO,0,0,0,loc)
#define NEW_RETRY(loc) NEW_NODE(NODE_RETRY,0,0,0,loc)
#define NEW_BEGIN(b,loc) NEW_NODE(NODE_BEGIN,0,b,0,loc)
#define NEW_RESCUE(b,res,e,loc) NEW_NODE(NODE_RESCUE,b,res,e,loc)
#define NEW_RESBODY(a,ex,n,loc) NEW_NODE(NODE_RESBODY,n,ex,a,loc)
#define NEW_ENSURE(b,en,loc) NEW_NODE(NODE_ENSURE,b,0,en,loc)
#define NEW_RETURN(s,loc) NEW_NODE(NODE_RETURN,s,0,0,loc)
#define NEW_YIELD(a,loc) NEW_NODE(NODE_YIELD,a,0,0,loc)
#define NEW_LIST(a,loc) NEW_ARRAY(a,loc)
#define NEW_ARRAY(a,loc) NEW_NODE(NODE_ARRAY,a,1,0,loc)
#define NEW_ZARRAY(loc) NEW_NODE(NODE_ZARRAY,0,0,0,loc)
#define NEW_HASH(a,loc) NEW_NODE(NODE_HASH,a,0,0,loc)
#define NEW_MASGN(l,r,loc) NEW_NODE(NODE_MASGN,l,0,r,loc)
#define NEW_GASGN(v,val,loc) NEW_NODE(NODE_GASGN,v,val,rb_global_entry(v),loc)
#define NEW_LASGN(v,val,loc) NEW_NODE(NODE_LASGN,v,val,0,loc)
#define NEW_DASGN(v,val,loc) NEW_NODE(NODE_DASGN,v,val,0,loc)
#define NEW_DASGN_CURR(v,val,loc) NEW_NODE(NODE_DASGN_CURR,v,val,0,loc)
#define NEW_IASGN(v,val,loc) NEW_NODE(NODE_IASGN,v,val,0,loc)
#define NEW_CDECL(v,val,path,loc) NEW_NODE(NODE_CDECL,v,val,path,loc)
#define NEW_CVASGN(v,val,loc) NEW_NODE(NODE_CVASGN,v,val,0,loc)
#define NEW_OP_ASGN1(p,id,a,loc) NEW_NODE(NODE_OP_ASGN1,p,id,a,loc)
#define NEW_OP_ASGN2(r,t,i,o,val,loc) NEW_NODE(NODE_OP_ASGN2,r,val,NEW_OP_ASGN22(i,o,t,loc),loc)
#define NEW_OP_ASGN22(i,o,t,loc) NEW_NODE(NODE_OP_ASGN2,i,o,t,loc)
#define NEW_OP_ASGN_OR(i,val,loc) NEW_NODE(NODE_OP_ASGN_OR,i,val,0,loc)
#define NEW_OP_ASGN_AND(i,val,loc) NEW_NODE(NODE_OP_ASGN_AND,i,val,0,loc)
#define NEW_OP_CDECL(v,op,val,loc) NEW_NODE(NODE_OP_CDECL,v,val,op,loc)
#define NEW_GVAR(v,loc) NEW_NODE(NODE_GVAR,v,0,rb_global_entry(v),loc)
#define NEW_LVAR(v,loc) NEW_NODE(NODE_LVAR,v,0,0,loc)
#define NEW_DVAR(v,loc) NEW_NODE(NODE_DVAR,v,0,0,loc)
#define NEW_IVAR(v,loc) NEW_NODE(NODE_IVAR,v,0,0,loc)
#define NEW_CONST(v,loc) NEW_NODE(NODE_CONST,v,0,0,loc)
#define NEW_CVAR(v,loc) NEW_NODE(NODE_CVAR,v,0,0,loc)
#define NEW_NTH_REF(n,loc) NEW_NODE(NODE_NTH_REF,0,n,0,loc)
#define NEW_BACK_REF(n,loc) NEW_NODE(NODE_BACK_REF,0,n,0,loc)
#define NEW_MATCH(c,loc) NEW_NODE(NODE_MATCH,c,0,0,loc)
#define NEW_MATCH2(n1,n2,loc) NEW_NODE(NODE_MATCH2,n1,n2,0,loc)
#define NEW_MATCH3(r,n2,loc) NEW_NODE(NODE_MATCH3,r,n2,0,loc)
#define NEW_LIT(l,loc) NEW_NODE(NODE_LIT,l,0,0,loc)
#define NEW_STR(s,loc) NEW_NODE(NODE_STR,s,0,0,loc)
#define NEW_DSTR(s,loc) NEW_NODE(NODE_DSTR,s,1,0,loc)
#define NEW_XSTR(s,loc) NEW_NODE(NODE_XSTR,s,0,0,loc)
#define NEW_DXSTR(s,loc) NEW_NODE(NODE_DXSTR,s,0,0,loc)
#define NEW_DSYM(s,loc) NEW_NODE(NODE_DSYM,s,0,0,loc)
#define NEW_EVSTR(n,loc) NEW_NODE(NODE_EVSTR,0,(n),0,loc)
#define NEW_CALL(r,m,a,loc) NEW_NODE(NODE_CALL,r,m,a,loc)
#define NEW_OPCALL(r,m,a,loc) NEW_NODE(NODE_OPCALL,r,m,a,loc)
#define NEW_FCALL(m,a,loc) NEW_NODE(NODE_FCALL,0,m,a,loc)
#define NEW_VCALL(m,loc) NEW_NODE(NODE_VCALL,0,m,0,loc)
#define NEW_SUPER(a,loc) NEW_NODE(NODE_SUPER,0,0,a,loc)
#define NEW_ZSUPER(loc) NEW_NODE(NODE_ZSUPER,0,0,0,loc)
#define NEW_ARGS_AUX(r,b,loc) NEW_NODE(NODE_ARGS_AUX,r,b,0,loc)
#define NEW_OPT_ARG(i,v,loc) NEW_NODE(NODE_OPT_ARG,i,v,0,loc)
#define NEW_KW_ARG(i,v,loc) NEW_NODE(NODE_KW_ARG,i,v,0,loc)
#define NEW_POSTARG(i,v,loc) NEW_NODE(NODE_POSTARG,i,v,0,loc)
#define NEW_ARGSCAT(a,b,loc) NEW_NODE(NODE_ARGSCAT,a,b,0,loc)
#define NEW_ARGSPUSH(a,b,loc) NEW_NODE(NODE_ARGSPUSH,a,b,0,loc)
#define NEW_SPLAT(a,loc) NEW_NODE(NODE_SPLAT,a,0,0,loc)
#define NEW_BLOCK_PASS(b,loc) NEW_NODE(NODE_BLOCK_PASS,0,b,0,loc)
#define NEW_ALIAS(n,o,loc) NEW_NODE(NODE_ALIAS,n,o,0,loc)
#define NEW_VALIAS(n,o,loc) NEW_NODE(NODE_VALIAS,n,o,0,loc)
#define NEW_UNDEF(i,loc) NEW_NODE(NODE_UNDEF,0,i,0,loc)
#define NEW_CLASS(n,b,s,loc) NEW_NODE(NODE_CLASS,n,NEW_SCOPE(0,b,loc),(s),loc)
#define NEW_SCLASS(r,b,loc) NEW_NODE(NODE_SCLASS,r,NEW_SCOPE(0,b,loc),0,loc)
#define NEW_MODULE(n,b,loc) NEW_NODE(NODE_MODULE,n,NEW_SCOPE(0,b,loc),0,loc)
#define NEW_COLON2(c,i,loc) NEW_NODE(NODE_COLON2,c,i,0,loc)
#define NEW_COLON3(i,loc) NEW_NODE(NODE_COLON3,0,i,0,loc)
#define NEW_DOT2(b,e,loc) NEW_NODE(NODE_DOT2,b,e,0,loc)
#define NEW_DOT3(b,e,loc) NEW_NODE(NODE_DOT3,b,e,0,loc)
#define NEW_SELF(loc) NEW_NODE(NODE_SELF,0,0,0,loc)
#define NEW_NIL(loc) NEW_NODE(NODE_NIL,0,0,0,loc)
#define NEW_TRUE(loc) NEW_NODE(NODE_TRUE,0,0,0,loc)
#define NEW_FALSE(loc) NEW_NODE(NODE_FALSE,0,0,0,loc)
#define NEW_ERRINFO(loc) NEW_NODE(NODE_ERRINFO,0,0,0,loc)
#define NEW_DEFINED(e,loc) NEW_NODE(NODE_DEFINED,e,0,0,loc)
#define NEW_PREEXE(b,loc) NEW_SCOPE(b,loc)
#define NEW_POSTEXE(b,loc) NEW_NODE(NODE_POSTEXE,0,b,0,loc)
#define NEW_ATTRASGN(r,m,a,loc) NEW_NODE(NODE_ATTRASGN,r,m,a,loc)
#define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
#define NODE_REQUIRED_KEYWORD_P(node) ((node)->nd_value == NODE_SPECIAL_REQUIRED_KEYWORD)
#define NODE_SPECIAL_NO_NAME_REST ((NODE *)-1)
#define NODE_NAMED_REST_P(node) ((node) != NODE_SPECIAL_NO_NAME_REST)

#pragma GCC visibility push(default)

typedef struct node_buffer_struct node_buffer_t;
typedef struct rb_ast_body_struct {
    const NODE *root;
    VALUE compile_option;
    int line_count;
} rb_ast_body_t;
typedef struct rb_ast_struct {
    VALUE flags;
    node_buffer_t *node_buffer;
    rb_ast_body_t body;
} rb_ast_t;
rb_ast_t *rb_ast_new(void);
void rb_ast_mark(rb_ast_t*);
void rb_ast_dispose(rb_ast_t*);
void rb_ast_free(rb_ast_t*);
void rb_ast_add_mark_object(rb_ast_t*, VALUE);
NODE *rb_ast_newnode(rb_ast_t*);
void rb_ast_delete_node(rb_ast_t*, NODE *n);
VALUE rb_parser_new(void);
VALUE rb_parser_end_seen_p(VALUE);
VALUE rb_parser_encoding(VALUE);
VALUE rb_parser_get_yydebug(VALUE);
VALUE rb_parser_set_yydebug(VALUE, VALUE);
VALUE rb_parser_dump_tree(const NODE *node, int comment);
void rb_parser_set_options(VALUE, int, int, int, int);
rb_ast_t *rb_parser_compile_cstr(VALUE, const char*, const char*, int, int);
rb_ast_t *rb_parser_compile_string(VALUE, const char*, VALUE, int);
rb_ast_t *rb_parser_compile_file(VALUE, const char*, VALUE, int);
rb_ast_t *rb_parser_compile_string_path(VALUE vparser, VALUE fname, VALUE src, int line);
rb_ast_t *rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE input, int line);
rb_ast_t *rb_parser_compile_generic(VALUE vparser, VALUE (*lex_gets)(VALUE, int), VALUE fname, VALUE input, int line);
rb_ast_t *rb_compile_cstr(const char*, const char*, int, int);
rb_ast_t *rb_compile_string(const char*, VALUE, int);
rb_ast_t *rb_compile_file(const char*, VALUE, int);
void rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2);
const struct kwtable *rb_reserved_word(const char *, unsigned int);
struct rb_args_info {
    NODE *pre_init;
    NODE *post_init;
    int pre_args_num;
    int post_args_num;
    ID first_post_arg;
    ID rest_arg;
    ID block_arg;
    NODE *kw_args;
    NODE *kw_rest_arg;
    NODE *opt_args;
};
struct parser_params;
void *rb_parser_malloc(struct parser_params *, size_t);
void *rb_parser_realloc(struct parser_params *, void *, size_t);
void *rb_parser_calloc(struct parser_params *, size_t, size_t);
void rb_parser_free(struct parser_params *, void *);
void rb_parser_printf(struct parser_params *parser, const char *fmt, ...) __attribute__((format(printf, 2, 3)));

#pragma GCC visibility pop

#define RUBY_VM_OPTS_H 
#define OPT_TAILCALL_OPTIMIZATION 0
#define OPT_PEEPHOLE_OPTIMIZATION 1
#define OPT_SPECIALISED_INSTRUCTION 1
#define OPT_INLINE_CONST_CACHE 1
#define OPT_FROZEN_STRING_LITERAL 0
#define OPT_DEBUG_FROZEN_STRING_LITERAL 0
#define OPT_THREADED_CODE 0
#define OPT_DIRECT_THREADED_CODE (OPT_THREADED_CODE == 0)
#define OPT_TOKEN_THREADED_CODE (OPT_THREADED_CODE == 1)
#define OPT_CALL_THREADED_CODE (OPT_THREADED_CODE == 2)
#define OPT_CHECKED_RUN 1
#define OPT_INLINE_METHOD_CACHE 1
#define OPT_GLOBAL_METHOD_CACHE 1
#define OPT_BLOCKINLINING 0
#define OPT_IC_FOR_IVAR 1
#define OPT_OPERANDS_UNIFICATION 1
#define OPT_INSTRUCTIONS_UNIFICATION 0
#define OPT_UNIFY_ALL_COMBINATION 0
#define OPT_STACK_CACHING 0
#define SUPPORT_JOKE 0
#define VM_COLLECT_USAGE_DETAILS 0
#define RUBY_ID_H 
enum ruby_id_types {
    RUBY_ID_STATIC_SYM = 0x01,
    RUBY_ID_LOCAL = 0x00,
    RUBY_ID_INSTANCE = (0x01<<1),
    RUBY_ID_GLOBAL = (0x03<<1),
    RUBY_ID_ATTRSET = (0x04<<1),
    RUBY_ID_CONST = (0x05<<1),
    RUBY_ID_CLASS = (0x06<<1),
    RUBY_ID_JUNK = (0x07<<1),
    RUBY_ID_INTERNAL = RUBY_ID_JUNK,
    RUBY_ID_SCOPE_SHIFT = 4,
    RUBY_ID_SCOPE_MASK = (~(~0U<<(RUBY_ID_SCOPE_SHIFT-1))<<1)
};
#define ID_STATIC_SYM RUBY_ID_STATIC_SYM
#define ID_SCOPE_SHIFT RUBY_ID_SCOPE_SHIFT
#define ID_SCOPE_MASK RUBY_ID_SCOPE_MASK
#define ID_LOCAL RUBY_ID_LOCAL
#define ID_INSTANCE RUBY_ID_INSTANCE
#define ID_GLOBAL RUBY_ID_GLOBAL
#define ID_ATTRSET RUBY_ID_ATTRSET
#define ID_CONST RUBY_ID_CONST
#define ID_CLASS RUBY_ID_CLASS
#define ID_JUNK RUBY_ID_JUNK
#define ID_INTERNAL RUBY_ID_INTERNAL
#define symIFUNC ID2SYM(idIFUNC)
#define symCFUNC ID2SYM(idCFUNC)
#define RUBY_TOKEN_DOT2 128
#define RUBY_TOKEN_DOT3 129
#define RUBY_TOKEN_UPLUS 130
#define RUBY_TOKEN_UMINUS 131
#define RUBY_TOKEN_POW 132
#define RUBY_TOKEN_CMP 133
#define RUBY_TOKEN_LSHFT 134
#define RUBY_TOKEN_RSHFT 135
#define RUBY_TOKEN_LEQ 136
#define RUBY_TOKEN_GEQ 137
#define RUBY_TOKEN_EQ 138
#define RUBY_TOKEN_EQQ 139
#define RUBY_TOKEN_NEQ 140
#define RUBY_TOKEN_MATCH 141
#define RUBY_TOKEN_NMATCH 142
#define RUBY_TOKEN_AREF 143
#define RUBY_TOKEN_ASET 144
#define RUBY_TOKEN_COLON2 145
#define RUBY_TOKEN_ANDOP 146
#define RUBY_TOKEN_OROP 147
#define RUBY_TOKEN_ANDDOT 148
#define RUBY_TOKEN(t) RUBY_TOKEN_ ##t
#define RUBY_TOKEN2ID_TYPE(tok,type) ((tok<<RUBY_ID_SCOPE_SHIFT)|type|RUBY_ID_STATIC_SYM)
#define TOKEN2LOCALID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_LOCAL)
#define TOKEN2INSTANCEID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_INSTANCE)
#define TOKEN2GLOBALID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_GLOBAL)
#define TOKEN2CONSTID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_CONST)
#define TOKEN2CLASSID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_CLASS)
#define TOKEN2ATTRSETID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_ATTRSET)
enum ruby_method_ids {
    idDot2 = 128,
    idDot3 = 129,
    idUPlus = 130,
    idUMinus = 131,
    idPow = 132,
    idCmp = 133,
    idPLUS = '+',
    idMINUS = '-',
    idMULT = '*',
    idDIV = '/',
    idMOD = '%',
    idLTLT = 134,
    idGTGT = 135,
    idLT = '<',
    idLE = 136,
    idGT = '>',
    idGE = 137,
    idEq = 138,
    idEqq = 139,
    idNeq = 140,
    idNot = '!',
    idAnd = '&',
    idOr = '|',
    idBackquote = '`',
    idEqTilde = 141,
    idNeqTilde = 142,
    idAREF = 143,
    idASET = 144,
    idCOLON2 = 145,
    idANDOP = 146,
    idOROP = 147,
    idANDDOT = 148,
    tPRESERVED_ID_BEGIN = 148,
    idNULL,
    idEmptyP,
    idEqlP,
    idRespond_to,
    idRespond_to_missing,
    idIFUNC,
    idCFUNC,
    id_core_set_method_alias,
    id_core_set_variable_alias,
    id_core_undef_method,
    id_core_define_method,
    id_core_define_singleton_method,
    id_core_set_postexe,
    id_core_hash_merge_ptr,
    id_core_hash_merge_kwd,
    id_debug_created_info,
    tPRESERVED_ID_END,
    tTOKEN_LOCAL_BEGIN = tPRESERVED_ID_END-1,
    tMax,
    tMin,
    tFreeze,
    tInspect,
    tIntern,
    tObject_id,
    tConst_missing,
    tMethodMissing,
    tMethod_added,
    tSingleton_method_added,
    tMethod_removed,
    tSingleton_method_removed,
    tMethod_undefined,
    tSingleton_method_undefined,
    tLength,
    tSize,
    tGets,
    tSucc,
    tEach,
    tProc,
    tLambda,
    tSend,
    t__send__,
    t__attached__,
    tInitialize,
    tInitialize_copy,
    tInitialize_clone,
    tInitialize_dup,
    tTo_int,
    tTo_ary,
    tTo_str,
    tTo_sym,
    tTo_hash,
    tTo_proc,
    tTo_io,
    tTo_a,
    tTo_s,
    tTo_i,
    tTo_f,
    tTo_r,
    tBt,
    tBt_locations,
    tCall,
    tMesg,
    tException,
    tNOT,
    tAND,
    tOR,
    tUScore,
    tTOKEN_LOCAL_END,
    tTOKEN_INSTANCE_BEGIN = tTOKEN_LOCAL_END-1,
    tTOKEN_INSTANCE_END,
    tTOKEN_GLOBAL_BEGIN = tTOKEN_INSTANCE_END-1,
    tLASTLINE,
    tBACKREF,
    tTOKEN_GLOBAL_END,
    tTOKEN_CONST_BEGIN = tTOKEN_GLOBAL_END-1,
    tTOKEN_CONST_END,
    tTOKEN_CLASS_BEGIN = tTOKEN_CONST_END-1,
    tTOKEN_CLASS_END,
    tTOKEN_ATTRSET_BEGIN = tTOKEN_CLASS_END-1,
    tTOKEN_ATTRSET_END,
    tNEXT_ID = tTOKEN_ATTRSET_END,
#define DEFINE_LOCALID_FROM_TOKEN(n) id ##n = TOKEN2LOCALID(t ##n)
    idMax = ((tMax<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idMin = ((tMin<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idFreeze = ((tFreeze<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idInspect = ((tInspect<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idIntern = ((tIntern<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idObject_id = ((tObject_id<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idConst_missing = ((tConst_missing<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idMethodMissing = ((tMethodMissing<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idMethod_added = ((tMethod_added<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idSingleton_method_added = ((tSingleton_method_added<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idMethod_removed = ((tMethod_removed<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idSingleton_method_removed = ((tSingleton_method_removed<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idMethod_undefined = ((tMethod_undefined<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idSingleton_method_undefined = ((tSingleton_method_undefined<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idLength = ((tLength<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idSize = ((tSize<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idGets = ((tGets<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idSucc = ((tSucc<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idEach = ((tEach<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idProc = ((tProc<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idLambda = ((tLambda<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idSend = ((tSend<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    id__send__ = ((t__send__<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    id__attached__ = ((t__attached__<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idInitialize = ((tInitialize<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idInitialize_copy = ((tInitialize_copy<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idInitialize_clone = ((tInitialize_clone<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idInitialize_dup = ((tInitialize_dup<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idTo_int = ((tTo_int<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idTo_ary = ((tTo_ary<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idTo_str = ((tTo_str<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idTo_sym = ((tTo_sym<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idTo_hash = ((tTo_hash<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idTo_proc = ((tTo_proc<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idTo_io = ((tTo_io<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idTo_a = ((tTo_a<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idTo_s = ((tTo_s<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idTo_i = ((tTo_i<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idTo_f = ((tTo_f<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idTo_r = ((tTo_r<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idBt = ((tBt<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idBt_locations = ((tBt_locations<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idCall = ((tCall<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idMesg = ((tMesg<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idException = ((tException<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idNOT = ((tNOT<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idAND = ((tAND<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idOR = ((tOR<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
    idUScore = ((tUScore<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
#define DEFINE_INSTANCEID_FROM_TOKEN(n) id ##n = TOKEN2INSTANCEID(t ##n)
#define DEFINE_GLOBALID_FROM_TOKEN(n) id ##n = TOKEN2GLOBALID(t ##n)
    idLASTLINE = ((tLASTLINE<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_GLOBAL|RUBY_ID_STATIC_SYM),
    idBACKREF = ((tBACKREF<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_GLOBAL|RUBY_ID_STATIC_SYM),
#define DEFINE_CONSTID_FROM_TOKEN(n) id ##n = TOKEN2CONSTID(t ##n)
#define DEFINE_CLASSID_FROM_TOKEN(n) id ##n = TOKEN2CLASSID(t ##n)
#define DEFINE_ATTRSETID_FROM_TOKEN(n) id ##n = TOKEN2ATTRSETID(t ##n)
    tLAST_OP_ID = tPRESERVED_ID_END-1,
    idLAST_OP_ID = tLAST_OP_ID >> RUBY_ID_SCOPE_SHIFT
};
#define RUBY_METHOD_H 1
#define END_OF_ENUMERATION(key) 
typedef enum {
    METHOD_VISI_UNDEF = 0x00,
    METHOD_VISI_PUBLIC = 0x01,
    METHOD_VISI_PRIVATE = 0x02,
    METHOD_VISI_PROTECTED = 0x03,
    METHOD_VISI_MASK = 0x03
} rb_method_visibility_t;
typedef struct rb_scope_visi_struct {
    rb_method_visibility_t method_visi : 3;
    unsigned int module_func : 1;
} rb_scope_visibility_t;
typedef struct rb_cref_struct {
    VALUE flags;
    const VALUE refinements;
    const VALUE klass;
    struct rb_cref_struct * const next;
    const rb_scope_visibility_t scope_visi;
} rb_cref_t;
typedef struct rb_method_entry_struct {
    VALUE flags;
    const VALUE defined_class;
    struct rb_method_definition_struct * const def;
    ID called_id;
    const VALUE owner;
} rb_method_entry_t;
typedef struct rb_callable_method_entry_struct {
    VALUE flags;
    const VALUE defined_class;
    struct rb_method_definition_struct * const def;
    ID called_id;
    const VALUE owner;
} rb_callable_method_entry_t;
#define METHOD_ENTRY_VISI(me) (rb_method_visibility_t)(((me)->flags & (IMEMO_FL_USER0 | IMEMO_FL_USER1)) >> (IMEMO_FL_USHIFT+0))
#define METHOD_ENTRY_BASIC(me) (int) (((me)->flags & (IMEMO_FL_USER2 )) >> (IMEMO_FL_USHIFT+2))
#define METHOD_ENTRY_COMPLEMENTED(me) ((me)->flags & IMEMO_FL_USER3)
#define METHOD_ENTRY_COMPLEMENTED_SET(me) ((me)->flags = (me)->flags | IMEMO_FL_USER3)
static inline void
METHOD_ENTRY_VISI_SET(rb_method_entry_t *me, rb_method_visibility_t visi)
{
    ((void)0);
    me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) | (visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0));
}
static inline void
METHOD_ENTRY_BASIC_SET(rb_method_entry_t *me, unsigned int basic)
{
    ((void)0);
    me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER6) )) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2));
}
static inline void
METHOD_ENTRY_FLAGS_SET(rb_method_entry_t *me, rb_method_visibility_t visi, unsigned int basic)
{
    ((void)0);
    ((void)0);
    me->flags =
      (me->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) |
 ((visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2)));
}
static inline void
METHOD_ENTRY_FLAGS_COPY(rb_method_entry_t *dst, const rb_method_entry_t *src)
{
    dst->flags =
      (dst->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) |
 (src->flags & (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)));
}
typedef enum {
    VM_METHOD_TYPE_ISEQ,
    VM_METHOD_TYPE_CFUNC,
    VM_METHOD_TYPE_ATTRSET,
    VM_METHOD_TYPE_IVAR,
    VM_METHOD_TYPE_BMETHOD,
    VM_METHOD_TYPE_ZSUPER,
    VM_METHOD_TYPE_ALIAS,
    VM_METHOD_TYPE_UNDEF,
    VM_METHOD_TYPE_NOTIMPLEMENTED,
    VM_METHOD_TYPE_OPTIMIZED,
    VM_METHOD_TYPE_MISSING,
    VM_METHOD_TYPE_REFINED,
   
} rb_method_type_t;
#define VM_METHOD_TYPE_MINIMUM_BITS 4
typedef struct rb_iseq_struct rb_iseq_t;
#define rb_iseq_t rb_iseq_t
typedef struct rb_method_iseq_struct {
    const rb_iseq_t * const iseqptr;
    rb_cref_t * const cref;
} rb_method_iseq_t;
typedef struct rb_method_cfunc_struct {
    VALUE (*func)();
    VALUE (*invoker)(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv);
    int argc;
} rb_method_cfunc_t;
typedef struct rb_method_attr_struct {
    ID id;
    const VALUE location;
} rb_method_attr_t;
typedef struct rb_method_alias_struct {
    const struct rb_method_entry_struct * const original_me;
} rb_method_alias_t;
typedef struct rb_method_refined_struct {
    const struct rb_method_entry_struct * const orig_me;
    const VALUE owner;
} rb_method_refined_t;
typedef struct rb_method_bmethod_struct {
    const VALUE proc;
    struct rb_hook_list_struct *hooks;
} rb_method_bmethod_t;
enum method_optimized_type {
    OPTIMIZED_METHOD_TYPE_SEND,
    OPTIMIZED_METHOD_TYPE_CALL,
    OPTIMIZED_METHOD_TYPE_BLOCK_CALL,
    OPTIMIZED_METHOD_TYPE__MAX
};
struct rb_method_definition_struct { rb_method_type_t type : 4; int alias_count : 28; int complemented_count : 28; union { rb_method_iseq_t iseq; rb_method_cfunc_t cfunc; rb_method_attr_t attr; rb_method_alias_t alias; rb_method_refined_t refined; rb_method_bmethod_t bmethod; enum method_optimized_type optimize_type; } body; ID original_id; } __attribute__((packed));
typedef struct rb_method_definition_struct rb_method_definition_t;
#define UNDEFINED_METHOD_ENTRY_P(me) (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)
#define UNDEFINED_REFINED_METHOD_P(def) ((def)->type == VM_METHOD_TYPE_REFINED && UNDEFINED_METHOD_ENTRY_P((def)->body.refined.orig_me))
void rb_add_method_cfunc(VALUE klass, ID mid, VALUE (*func)(), int argc, rb_method_visibility_t visi);
void rb_add_method_iseq(VALUE klass, ID mid, const rb_iseq_t *iseq, rb_cref_t *cref, rb_method_visibility_t visi);
void rb_add_refined_method_entry(VALUE refined_class, ID mid);
rb_method_entry_t *rb_add_method(VALUE klass, ID mid, rb_method_type_t type, void *option, rb_method_visibility_t visi);
rb_method_entry_t *rb_method_entry_set(VALUE klass, ID mid, const rb_method_entry_t *, rb_method_visibility_t noex);
rb_method_entry_t *rb_method_entry_create(ID called_id, VALUE klass, rb_method_visibility_t visi, const rb_method_definition_t *def);
const rb_method_entry_t *rb_method_entry_at(VALUE obj, ID id);
const rb_method_entry_t *rb_method_entry(VALUE klass, ID id);
const rb_method_entry_t *rb_method_entry_without_refinements(VALUE klass, ID id, VALUE *defined_class);
const rb_method_entry_t *rb_resolve_refined_method(VALUE refinements, const rb_method_entry_t *me);

#pragma GCC visibility push(default)

const rb_callable_method_entry_t *rb_resolve_refined_method_callable(VALUE refinements, const rb_callable_method_entry_t *me);
const rb_method_entry_t *rb_resolve_me_location(const rb_method_entry_t *, VALUE[5]);

#pragma GCC visibility pop

const rb_callable_method_entry_t *rb_callable_method_entry(VALUE klass, ID id);
const rb_callable_method_entry_t *rb_callable_method_entry_with_refinements(VALUE klass, ID id, VALUE *defined_class);
const rb_callable_method_entry_t *rb_callable_method_entry_without_refinements(VALUE klass, ID id, VALUE *defined_class);
int rb_method_entry_arity(const rb_method_entry_t *me);
int rb_method_entry_eq(const rb_method_entry_t *m1, const rb_method_entry_t *m2);
st_index_t rb_hash_method_entry(st_index_t hash, const rb_method_entry_t *me);
VALUE rb_method_entry_location(const rb_method_entry_t *me);
VALUE rb_mod_method_location(VALUE mod, ID id);
VALUE rb_obj_method_location(VALUE obj, ID id);
void rb_free_method_entry(const rb_method_entry_t *me);
void rb_sweep_method_entry(void *vm);
const rb_method_entry_t *rb_method_entry_clone(const rb_method_entry_t *me);
const rb_callable_method_entry_t *rb_method_entry_complement_defined_class(const rb_method_entry_t *src_me, ID called_id, VALUE defined_class);
void rb_method_entry_copy(rb_method_entry_t *dst, const rb_method_entry_t *src);
void rb_scope_visibility_set(rb_method_visibility_t);
VALUE rb_unnamed_parameters(int arity);
#define RUBY_ATOMIC_H 
typedef unsigned int rb_atomic_t;
#define ATOMIC_SET(var,val) (void)__atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
#define ATOMIC_INC(var) __atomic_fetch_add(&(var), 1, __ATOMIC_SEQ_CST)
#define ATOMIC_DEC(var) __atomic_fetch_sub(&(var), 1, __ATOMIC_SEQ_CST)
#define ATOMIC_OR(var,val) __atomic_fetch_or(&(var), (val), __ATOMIC_SEQ_CST)
#define ATOMIC_EXCHANGE(var,val) __atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
#define ATOMIC_CAS(var,oldval,newval) RB_GNUC_EXTENSION_BLOCK( __typeof__(var) oldvaldup = (oldval); __atomic_compare_exchange_n(&(var), &oldvaldup, (newval), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); oldvaldup )
#define ATOMIC_SIZE_ADD(var,val) __atomic_fetch_add(&(var), (val), __ATOMIC_SEQ_CST)
#define ATOMIC_SIZE_SUB(var,val) __atomic_fetch_sub(&(var), (val), __ATOMIC_SEQ_CST)
#define RUBY_ATOMIC_GENERIC_MACRO 1
#define ATOMIC_SIZE_INC(var) ATOMIC_INC(var)
#define ATOMIC_SIZE_DEC(var) ATOMIC_DEC(var)
#define ATOMIC_SIZE_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
#define ATOMIC_SIZE_CAS(var,oldval,val) ATOMIC_CAS(var, oldval, val)
#define ATOMIC_PTR_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
#define ATOMIC_PTR_CAS(var,oldval,newval) ATOMIC_CAS(var, oldval, newval)
#define ATOMIC_VALUE_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
#define ATOMIC_VALUE_CAS(var,oldval,val) ATOMIC_CAS(var, oldval, val)
#define CCAN_LIST_H 
#undef assert
#define __ASSERT_H_ 
__attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _wassert(const wchar_t *_Message,const wchar_t *_File,unsigned _Line);
__attribute__ ((__dllimport__)) void __attribute__((__cdecl__)) _assert (const char *_Message, const char *_File, unsigned _Line);
#undef static_assert
#define static_assert _Static_assert
#define assert(_Expression) (void) ((!!(_Expression)) || (_assert(#_Expression,__FILE__,__LINE__),0))
#define CCAN_STR_H 
#define stringify(expr) stringify_1(expr)
#define stringify_1(expr) #expr
#define CCAN_CONTAINER_OF_H 
#define CCAN_CHECK_TYPE_H 
#define check_type(expr,type) ((typeof(expr) *)0 != (type *)0)
#define check_types_match(expr1,expr2) ((typeof(expr1) *)0 != (typeof(expr2) *)0)
#define container_of(member_ptr,containing_type,member) ((containing_type *) ((char *)(member_ptr) - container_off(containing_type, member)) + check_types_match(*(member_ptr), ((containing_type *)0)->member))
static inline char *container_of_or_null_(void *member_ptr, size_t offset)
{
 return member_ptr ? (char *)member_ptr - offset : ((void *)0);
}
#define container_of_or_null(member_ptr,containing_type,member) ((containing_type *) container_of_or_null_(member_ptr, container_off(containing_type, member)) + check_types_match(*(member_ptr), ((containing_type *)0)->member))
#define container_off(containing_type,member) offsetof(containing_type, member)
#define container_of_var(member_ptr,container_var,member) container_of(member_ptr, typeof(*container_var), member)
#define container_off_var(var,member) container_off(typeof(*var), member)
struct list_node
{
 struct list_node *next, *prev;
};
struct list_head
{
 struct list_node n;
};
#define LIST_LOC __FILE__ ":" stringify(__LINE__)
#define list_debug(h,loc) ((void)loc, h)
#define list_debug_node(n,loc) ((void)loc, n)
#define LIST_HEAD_INIT(name) { { &(name).n, &(name).n } }
#define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name)
static inline void list_head_init(struct list_head *h)
{
 h->n.next = h->n.prev = &h->n;
}
static inline void list_node_init(struct list_node *n)
{
 n->next = n->prev = n;
}
#define list_add_after(h,p,n) list_add_after_(h, p, n, LIST_LOC)
static inline void list_add_after_(struct list_head *h,
       struct list_node *p,
       struct list_node *n,
       const char *abortstr)
{
 n->next = p->next;
 n->prev = p;
 p->next->prev = n;
 p->next = n;
 (void)((void)abortstr, h);
}
#define list_add(h,n) list_add_(h, n, LIST_LOC)
static inline void list_add_(struct list_head *h,
        struct list_node *n,
        const char *abortstr)
{
 list_add_after_(h, &h->n, n, abortstr);
}
#define list_add_before(h,p,n) list_add_before_(h, p, n, LIST_LOC)
static inline void list_add_before_(struct list_head *h,
        struct list_node *p,
        struct list_node *n,
        const char *abortstr)
{
 n->next = p;
 n->prev = p->prev;
 p->prev->next = n;
 p->prev = n;
 (void)((void)abortstr, h);
}
#define list_add_tail(h,n) list_add_tail_(h, n, LIST_LOC)
static inline void list_add_tail_(struct list_head *h,
      struct list_node *n,
      const char *abortstr)
{
 list_add_before_(h, &h->n, n, abortstr);
}
#define list_empty(h) list_empty_(h, LIST_LOC)
static inline int list_empty_(const struct list_head *h, const char* abortstr)
{
 (void)((void)abortstr, h);
 return h->n.next == &h->n;
}
#define list_empty_nodebug(h) list_empty(h)
static inline _Bool list_empty_nocheck(const struct list_head *h)
{
 return h->n.next == &h->n;
}
#define list_del(n) list_del_(n, LIST_LOC)
static inline void list_del_(struct list_node *n, const char* abortstr)
{
 (void)((void)abortstr, n);
 n->next->prev = n->prev;
 n->prev->next = n->next;
}
#define list_del_init(n) list_del_init_(n, LIST_LOC)
static inline void list_del_init_(struct list_node *n, const char *abortstr)
{
 list_del_(n, abortstr);
 list_node_init(n);
}
static inline void list_del_from(struct list_head *h, struct list_node *n)
{
 (void) ((!!(!list_empty_(h, "../ruby-2.6.9/ccan/list/list.h" ":" "328"))) || (_assert("!list_empty(h)","../ruby-2.6.9/ccan/list/list.h",328),0));
 list_del_(n, "../ruby-2.6.9/ccan/list/list.h" ":" "329");
}
#define list_swap(o,n) list_swap_(o, n, LIST_LOC)
static inline void list_swap_(struct list_node *o,
         struct list_node *n,
         const char* abortstr)
{
 (void)((void)abortstr, o);
 *n = *o;
 n->next->prev = n;
 n->prev->next = n;
}
#define list_entry(n,type,member) container_of(n, type, member)
#define list_top(h,type,member) ((type *)list_top_((h), list_off_(type, member)))
static inline const void *list_top_(const struct list_head *h, size_t off)
{
 if (list_empty_(h, "../ruby-2.6.9/ccan/list/list.h" ":" "399"))
  return ((void *)0);
 return (const char *)h->n.next - off;
}
#define list_pop(h,type,member) ((type *)list_pop_((h), list_off_(type, member)))
static inline const void *list_pop_(const struct list_head *h, size_t off)
{
 struct list_node *n;
 if (list_empty_(h, "../ruby-2.6.9/ccan/list/list.h" ":" "425"))
  return ((void *)0);
 n = h->n.next;
 list_del_(n, "../ruby-2.6.9/ccan/list/list.h" ":" "428");
 return (const char *)n - off;
}
#define list_tail(h,type,member) ((type *)list_tail_((h), list_off_(type, member)))
static inline const void *list_tail_(const struct list_head *h, size_t off)
{
 if (list_empty_(h, "../ruby-2.6.9/ccan/list/list.h" ":" "451"))
  return ((void *)0);
 return (const char *)h->n.prev - off;
}
#define list_for_each(h,i,member) list_for_each_off(h, i, list_off_var_(i, member))
#define list_for_each_rev(h,i,member) list_for_each_rev_off(h, i, list_off_var_(i, member))
#define list_for_each_rev_safe(h,i,nxt,member) list_for_each_rev_safe_off(h, i, nxt, list_off_var_(i, member))
#define list_for_each_safe(h,i,nxt,member) list_for_each_safe_off(h, i, nxt, list_off_var_(i, member))
#define list_next(h,i,member) ((list_typeof(i))list_entry_or_null(list_debug(h, __FILE__ ":" stringify(__LINE__)), (i)->member.next, list_off_var_((i), member)))
#define list_prev(h,i,member) ((list_typeof(i))list_entry_or_null(list_debug(h, __FILE__ ":" stringify(__LINE__)), (i)->member.prev, list_off_var_((i), member)))
#define list_append_list(t,f) list_append_list_(t, f, __FILE__ ":" stringify(__LINE__))
static inline void list_append_list_(struct list_head *to,
         struct list_head *from,
         const char *abortstr)
{
 struct list_node *from_tail = ((void)abortstr, from)->n.prev;
 struct list_node *to_tail = ((void)abortstr, to)->n.prev;
 to->n.prev = from_tail;
 from_tail->next = &to->n;
 to_tail->next = &from->n;
 from->n.prev = to_tail;
 list_del_(&from->n, "../ruby-2.6.9/ccan/list/list.h" ":" "600");
 list_head_init(from);
}
#define list_prepend_list(t,f) list_prepend_list_(t, f, LIST_LOC)
static inline void list_prepend_list_(struct list_head *to,
          struct list_head *from,
          const char *abortstr)
{
 struct list_node *from_tail = ((void)abortstr, from)->n.prev;
 struct list_node *to_head = ((void)abortstr, to)->n.next;
 to->n.next = &from->n;
 from->n.prev = &to->n;
 to_head->prev = from_tail;
 from_tail->next = to_head;
 list_del_(&from->n, "../ruby-2.6.9/ccan/list/list.h" ":" "632");
 list_head_init(from);
}
#define list_for_each_off_dir_(h,i,off,dir) for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, (off)); list_node_from_off_((void *)i, (off)) != &(h)->n; i = list_node_to_off_(list_node_from_off_((void *)i, (off))->dir, (off)))
#define list_for_each_safe_off_dir_(h,i,nxt,off,dir) for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, (off)), nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, (off)); list_node_from_off_(i, (off)) != &(h)->n; i = nxt, nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, (off)))
#define list_for_each_off(h,i,off) list_for_each_off_dir_((h),(i),(off),next)
#define list_for_each_rev_off(h,i,off) list_for_each_off_dir_((h),(i),(off),prev)
#define list_for_each_safe_off(h,i,nxt,off) list_for_each_safe_off_dir_((h),(i),(nxt),(off),next)
#define list_for_each_rev_safe_off(h,i,nxt,off) list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev)
#define list_entry_off(n,type,off) ((type *)list_node_from_off_((n), (off)))
#define list_head_off(h,type,off) ((type *)list_head_off((h), (off)))
#define list_tail_off(h,type,off) ((type *)list_tail_((h), (off)))
#define list_add_off(h,n,off) list_add((h), list_node_from_off_((n), (off)))
#define list_del_off(n,off) list_del(list_node_from_off_((n), (off)))
#define list_del_from_off(h,n,off) list_del_from(h, list_node_from_off_((n), (off)))
static inline void *list_node_to_off_(struct list_node *node, size_t off)
{
 return (void *)((char *)node - off);
}
static inline struct list_node *list_node_from_off_(void *ptr, size_t off)
{
 return (struct list_node *)((char *)ptr + off);
}
#define list_off_(type,member) (container_off(type, member) + check_type(((type *)0)->member, struct list_node))
#define list_off_var_(var,member) (container_off_var(var, member) + check_type(var->member, struct list_node))
#define list_typeof(var) typeof(var)
static inline void *list_entry_or_null(const struct list_head *h,
           const struct list_node *n,
           size_t off)
{
 if (n == &h->n)
  return ((void *)0);
 return (char *)n - off;
}
#define RUBY_THREAD_NATIVE_H 1
typedef HANDLE rb_nativethread_id_t;
typedef union rb_thread_lock_union {
    HANDLE mutex;
    CRITICAL_SECTION crit;
} rb_nativethread_lock_t;

#pragma GCC visibility push(default)

rb_nativethread_id_t rb_nativethread_self();
void rb_nativethread_lock_initialize(rb_nativethread_lock_t *lock);
void rb_nativethread_lock_destroy(rb_nativethread_lock_t *lock);
void rb_nativethread_lock_lock(rb_nativethread_lock_t *lock);
void rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock);

#pragma GCC visibility pop

#define RUBY_THREAD_WIN32_H 
__attribute__((dllimport)) BOOL __attribute__((__stdcall__))
TryEnterCriticalSection( LPCRITICAL_SECTION lpCriticalSection);
typedef struct rb_thread_cond_struct {
    struct cond_event_entry *next;
    struct cond_event_entry *prev;
} rb_nativethread_cond_t;
typedef struct native_thread_data_struct {
    HANDLE interrupt_event;
} native_thread_data_t;
typedef struct rb_global_vm_lock_struct {
    HANDLE lock;
} rb_global_vm_lock_t;
#define _INC_SETJMP 
#pragma pack(push,_CRT_PACKING)
#define _JBLEN 16
#define _JBTYPE int
  typedef struct __JUMP_BUFFER {
    unsigned long Ebp;
    unsigned long Ebx;
    unsigned long Edi;
    unsigned long Esi;
    unsigned long Esp;
    unsigned long Eip;
    unsigned long Registration;
    unsigned long TryLevel;
    unsigned long Cookie;
    unsigned long UnwindFunc;
    unsigned long UnwindData[6];
  } _JUMP_BUFFER;
  typedef int jmp_buf[16];
#define _JMP_BUF_DEFINED 
__attribute__ ((__dllimport__)) __attribute__ ((__noreturn__)) __attribute__ ((__nothrow__)) void __attribute__((__cdecl__)) longjmp(jmp_buf _Buf,int _Value);
void * __attribute__((__cdecl__)) __attribute__ ((__nothrow__)) mingw_getsp (void);
       
#define setjmp(BUF) _setjmp3((BUF), NULL)
  int __attribute__((__cdecl__)) __attribute__ ((__nothrow__,__returns_twice__)) _setjmp(jmp_buf _Buf, void *_Ctx);
  int __attribute__((__cdecl__)) __attribute__ ((__nothrow__,__returns_twice__)) _setjmp3(jmp_buf _Buf, void *_Ctx);
       
#undef __has_builtin
#pragma pack(pop)
#define RUBY_NSIG NSIG
#define RUBY_SIGCHLD (0)
#define SIGCHLD_LOSSY (0)
#define WAITPID_USE_SIGCHLD (RUBY_SIGCHLD || SIGCHLD_LOSSY)
#define va_init_list(a,b) va_start((a),(b))
#define RB_ALTSTACK_INIT(var) 
#define RB_ALTSTACK_FREE(var) 
#define RB_ALTSTACK(var) (0)
void rb_vm_encoded_insn_data_table_init(void);
typedef unsigned long rb_num_t;
typedef signed long rb_snum_t;
enum ruby_tag_type {
    RUBY_TAG_NONE = 0x0,
    RUBY_TAG_RETURN = 0x1,
    RUBY_TAG_BREAK = 0x2,
    RUBY_TAG_NEXT = 0x3,
    RUBY_TAG_RETRY = 0x4,
    RUBY_TAG_REDO = 0x5,
    RUBY_TAG_RAISE = 0x6,
    RUBY_TAG_THROW = 0x7,
    RUBY_TAG_FATAL = 0x8,
    RUBY_TAG_MASK = 0xf
};
#define TAG_NONE RUBY_TAG_NONE
#define TAG_RETURN RUBY_TAG_RETURN
#define TAG_BREAK RUBY_TAG_BREAK
#define TAG_NEXT RUBY_TAG_NEXT
#define TAG_RETRY RUBY_TAG_RETRY
#define TAG_REDO RUBY_TAG_REDO
#define TAG_RAISE RUBY_TAG_RAISE
#define TAG_THROW RUBY_TAG_THROW
#define TAG_FATAL RUBY_TAG_FATAL
#define TAG_MASK RUBY_TAG_MASK
enum ruby_vm_throw_flags {
    VM_THROW_NO_ESCAPE_FLAG = 0x8000,
    VM_THROW_STATE_MASK = 0xff
};
struct rb_thread_struct;
struct rb_control_frame_struct;
typedef struct rb_compile_option_struct rb_compile_option_t;
struct iseq_inline_cache_entry {
    rb_serial_t ic_serial;
    const rb_cref_t *ic_cref;
    union {
 size_t index;
 VALUE value;
    } ic_value;
};
union iseq_inline_storage_entry {
    struct {
 struct rb_thread_struct *running_thread;
 VALUE value;
    } once;
    struct iseq_inline_cache_entry cache;
};
enum method_missing_reason {
    MISSING_NOENTRY = 0x00,
    MISSING_PRIVATE = 0x01,
    MISSING_PROTECTED = 0x02,
    MISSING_FCALL = 0x04,
    MISSING_VCALL = 0x08,
    MISSING_SUPER = 0x10,
    MISSING_MISSING = 0x20,
    MISSING_NONE = 0x40
};
struct rb_call_info {
    ID mid;
    unsigned int flag;
    int orig_argc;
};
struct rb_call_info_kw_arg {
    int keyword_len;
    VALUE keywords[1];
};
struct rb_call_info_with_kwarg {
    struct rb_call_info ci;
    struct rb_call_info_kw_arg *kw_arg;
};
struct rb_calling_info {
    VALUE block_handler;
    VALUE recv;
    int argc;
};
struct rb_call_cache;
struct rb_execution_context_struct;
typedef VALUE (*vm_call_handler)(struct rb_execution_context_struct *ec, struct rb_control_frame_struct *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc);
struct rb_call_cache {
    rb_serial_t method_state;
    rb_serial_t class_serial;
    const rb_callable_method_entry_t *me;
    vm_call_handler call;
    union {
 unsigned int index;
 enum method_missing_reason method_missing_reason;
 int inc_sp;
    } aux;
};
#define CoreDataFromValue(obj,type) (type*)DATA_PTR(obj)
#define GetCoreDataFromValue(obj,type,ptr) ((ptr) = CoreDataFromValue((obj), type))
typedef struct rb_iseq_location_struct {
    VALUE pathobj;
    VALUE base_label;
    VALUE label;
    VALUE first_lineno;
    int node_id;
    rb_code_location_t code_location;
} rb_iseq_location_t;
#define PATHOBJ_PATH 0
#define PATHOBJ_REALPATH 1
static inline VALUE
pathobj_path(VALUE pathobj)
{
    if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(pathobj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((pathobj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((pathobj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((pathobj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((pathobj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(pathobj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_STRING)))) {
 return pathobj;
    }
    else {
 ((void)0);
 return (rb_array_const_ptr_transient(pathobj)[0]);
    }
}
static inline VALUE
pathobj_realpath(VALUE pathobj)
{
    if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(pathobj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((pathobj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((pathobj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((pathobj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((pathobj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(pathobj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_STRING)))) {
 return pathobj;
    }
    else {
 ((void)0);
 return (rb_array_const_ptr_transient(pathobj)[1]);
    }
}
struct rb_mjit_unit;
struct rb_iseq_constant_body {
    enum iseq_type {
 ISEQ_TYPE_TOP,
 ISEQ_TYPE_METHOD,
 ISEQ_TYPE_BLOCK,
 ISEQ_TYPE_CLASS,
 ISEQ_TYPE_RESCUE,
 ISEQ_TYPE_ENSURE,
 ISEQ_TYPE_EVAL,
 ISEQ_TYPE_MAIN,
 ISEQ_TYPE_PLAIN
    } type;
    unsigned int iseq_size;
    const VALUE *iseq_encoded;
    struct {
 struct {
     unsigned int has_lead : 1;
     unsigned int has_opt : 1;
     unsigned int has_rest : 1;
     unsigned int has_post : 1;
     unsigned int has_kw : 1;
     unsigned int has_kwrest : 1;
     unsigned int has_block : 1;
     unsigned int ambiguous_param0 : 1;
 } flags;
 unsigned int size;
 int lead_num;
 int opt_num;
 int rest_start;
 int post_start;
 int post_num;
 int block_start;
 const VALUE *opt_table;
 const struct rb_iseq_param_keyword {
     int num;
     int required_num;
     int bits_start;
     int rest_start;
     const ID *table;
     const VALUE *default_values;
 } *keyword;
    } param;
    rb_iseq_location_t location;
    struct iseq_insn_info {
 const struct iseq_insn_info_entry *body;
 unsigned int *positions;
 unsigned int size;
 struct succ_index_table *succ_index_table;
    } insns_info;
    const ID *local_table;
    const struct iseq_catch_table *catch_table;
    const struct rb_iseq_struct *parent_iseq;
    struct rb_iseq_struct *local_iseq;
    union iseq_inline_storage_entry *is_entries;
    struct rb_call_info *ci_entries;
    struct rb_call_cache *cc_entries;
    struct {
 rb_snum_t flip_count;
 VALUE coverage;
        VALUE pc2branchindex;
 VALUE *original_iseq;
    } variable;
    unsigned int local_table_size;
    unsigned int is_size;
    unsigned int ci_size;
    unsigned int ci_kw_size;
    unsigned int stack_max;
    VALUE (*jit_func)(struct rb_execution_context_struct *,
                      struct rb_control_frame_struct *);
    long unsigned total_calls;
    struct rb_mjit_unit *jit_unit;
    char catch_except_p;
};
struct rb_iseq_struct {
    VALUE flags;
    VALUE wrapper;
    struct rb_iseq_constant_body *body;
    union {
 struct iseq_compile_data *compile_data;
 struct {
     VALUE obj;
     int index;
 } loader;
        struct {
            struct rb_hook_list_struct *local_hooks;
            rb_event_flag_t global_trace_events;
        } exec;
    } aux;
};
#define USE_LAZY_LOAD 0
static inline const rb_iseq_t *
rb_iseq_check(const rb_iseq_t *iseq)
{
    return iseq;
}
static inline const rb_iseq_t *
def_iseq_ptr(rb_method_definition_t *def)
{
    return rb_iseq_check(def->body.iseq.iseqptr);
}
enum ruby_special_exceptions {
    ruby_error_reenter,
    ruby_error_nomemory,
    ruby_error_sysstack,
    ruby_error_stackfatal,
    ruby_error_stream_closed,
    ruby_special_error_count
};
enum ruby_basic_operators {
    BOP_PLUS,
    BOP_MINUS,
    BOP_MULT,
    BOP_DIV,
    BOP_MOD,
    BOP_EQ,
    BOP_EQQ,
    BOP_LT,
    BOP_LE,
    BOP_LTLT,
    BOP_AREF,
    BOP_ASET,
    BOP_LENGTH,
    BOP_SIZE,
    BOP_EMPTY_P,
    BOP_SUCC,
    BOP_GT,
    BOP_GE,
    BOP_NOT,
    BOP_NEQ,
    BOP_MATCH,
    BOP_FREEZE,
    BOP_UMINUS,
    BOP_MAX,
    BOP_MIN,
    BOP_CALL,
    BOP_AND,
    BOP_OR,
    BOP_LAST_
};
#define GetVMPtr(obj,ptr) GetCoreDataFromValue((obj), rb_vm_t, (ptr))
struct rb_vm_struct;
typedef void rb_vm_at_exit_func(struct rb_vm_struct*);
typedef struct rb_at_exit_list {
    rb_vm_at_exit_func *func;
    struct rb_at_exit_list *next;
} rb_at_exit_list;
struct rb_objspace;
struct rb_objspace *rb_objspace_alloc(void);
void rb_objspace_free(struct rb_objspace *);
typedef struct rb_hook_list_struct {
    struct rb_event_hook_struct *hooks;
    rb_event_flag_t events;
    unsigned int need_clean;
    unsigned int running;
} rb_hook_list_t;
typedef struct rb_vm_struct {
    VALUE self;
    rb_global_vm_lock_t gvl;
    struct rb_thread_struct *main_thread;
    const struct rb_thread_struct *running_thread;
    rb_serial_t fork_gen;
    rb_nativethread_lock_t waitpid_lock;
    struct list_head waiting_pids;
    struct list_head waiting_grps;
    struct list_head waiting_fds;
    struct list_head living_threads;
    VALUE thgroup_default;
    int living_thread_num;
    unsigned int running: 1;
    unsigned int thread_abort_on_exception: 1;
    unsigned int thread_report_on_exception: 1;
    unsigned int safe_level_: 1;
    int sleeper;
    VALUE mark_object_ary;
    const VALUE special_exceptions[ruby_special_error_count];
    VALUE top_self;
    VALUE load_path;
    VALUE load_path_snapshot;
    VALUE load_path_check_cache;
    VALUE expanded_load_path;
    VALUE loaded_features;
    VALUE loaded_features_snapshot;
    struct st_table *loaded_features_index;
    struct st_table *loading_table;
    struct {
 VALUE cmd[23];
 unsigned char safe[23];
    } trap_list;
    rb_hook_list_t global_hooks;
    struct st_table *ensure_rollback_table;
    struct rb_postponed_job_struct *postponed_job_buffer;
    int postponed_job_index;
    int src_encoding_index;
    struct list_head workqueue;
    rb_nativethread_lock_t workqueue_lock;
    VALUE verbose, debug, orig_progname, progname;
    VALUE coverages;
    int coverage_mode;
    VALUE defined_module_hash;
    struct rb_objspace *objspace;
    rb_at_exit_list *at_exit;
    VALUE *defined_strings;
    st_table *frozen_strings;
    struct {
 size_t thread_vm_stack_size;
 size_t thread_machine_stack_size;
 size_t fiber_vm_stack_size;
 size_t fiber_machine_stack_size;
    } default_params;
    short redefined_flag[BOP_LAST_];
} rb_vm_t;
#define RUBY_VM_SIZE_ALIGN 4096
#define RUBY_VM_THREAD_VM_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
#define RUBY_VM_THREAD_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
#define RUBY_VM_THREAD_MACHINE_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
#define RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
#define RUBY_VM_FIBER_VM_STACK_SIZE ( 16 * 1024 * sizeof(VALUE))
#define RUBY_VM_FIBER_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
#define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 64 * 1024 * sizeof(VALUE))
#define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
#define INTEGER_REDEFINED_OP_FLAG (1 << 0)
#define FLOAT_REDEFINED_OP_FLAG (1 << 1)
#define STRING_REDEFINED_OP_FLAG (1 << 2)
#define ARRAY_REDEFINED_OP_FLAG (1 << 3)
#define HASH_REDEFINED_OP_FLAG (1 << 4)
#define SYMBOL_REDEFINED_OP_FLAG (1 << 6)
#define TIME_REDEFINED_OP_FLAG (1 << 7)
#define REGEXP_REDEFINED_OP_FLAG (1 << 8)
#define NIL_REDEFINED_OP_FLAG (1 << 9)
#define TRUE_REDEFINED_OP_FLAG (1 << 10)
#define FALSE_REDEFINED_OP_FLAG (1 << 11)
#define PROC_REDEFINED_OP_FLAG (1 << 12)
#define BASIC_OP_UNREDEFINED_P(op,klass) (LIKELY((GET_VM()->redefined_flag[(op)]&(klass)) == 0))
#define VM_DEBUG_BP_CHECK 0
#define VM_DEBUG_VERIFY_METHOD_CACHE (VM_DEBUG_MODE != 0)
struct rb_captured_block {
    VALUE self;
    const VALUE *ep;
    union {
 const rb_iseq_t *iseq;
 const struct vm_ifunc *ifunc;
 VALUE val;
    } code;
};
enum rb_block_handler_type {
    block_handler_type_iseq,
    block_handler_type_ifunc,
    block_handler_type_symbol,
    block_handler_type_proc
};
enum rb_block_type {
    block_type_iseq,
    block_type_ifunc,
    block_type_symbol,
    block_type_proc
};
struct rb_block {
    union {
 struct rb_captured_block captured;
 VALUE symbol;
 VALUE proc;
    } as;
    enum rb_block_type type;
};
typedef struct rb_control_frame_struct {
    const VALUE *pc;
    VALUE *sp;
    const rb_iseq_t *iseq;
    VALUE self;
    const VALUE *ep;
    const void *block_code;
    const VALUE *bp;
} rb_control_frame_t;
extern const rb_data_type_t ruby_threadptr_data_type;
static inline struct rb_thread_struct *
rb_thread_ptr(VALUE thval)
{
    return (struct rb_thread_struct *)rb_check_typeddata(thval, &ruby_threadptr_data_type);
}
enum rb_thread_status {
    THREAD_RUNNABLE,
    THREAD_STOPPED,
    THREAD_STOPPED_FOREVER,
    THREAD_KILLED
};
typedef jmp_buf rb_jmpbuf_t;
struct rb_vm_tag {
    VALUE tag;
    VALUE retval;
    rb_jmpbuf_t buf;
    struct rb_vm_tag *prev;
    enum ruby_tag_type state;
};
_Static_assert(__builtin_offsetof (struct rb_vm_tag, buf) > 0, "rb_vm_tag_buf_offset" ": " "offsetof(struct rb_vm_tag, buf) > 0");
_Static_assert(__builtin_offsetof (struct rb_vm_tag, buf) + sizeof(rb_jmpbuf_t) < sizeof(struct rb_vm_tag), "rb_vm_tag_buf_end" ": " "offsetof(struct rb_vm_tag, buf) + sizeof(rb_jmpbuf_t) < sizeof(struct rb_vm_tag)");
struct rb_vm_protect_tag {
    struct rb_vm_protect_tag *prev;
};
struct rb_unblock_callback {
    rb_unblock_function_t *func;
    void *arg;
};
struct rb_mutex_struct;
typedef struct rb_thread_list_struct{
    struct rb_thread_list_struct *next;
    struct rb_thread_struct *th;
} rb_thread_list_t;
typedef struct rb_ensure_entry {
    VALUE marker;
    VALUE (*e_proc)();
    VALUE data2;
} rb_ensure_entry_t;
typedef struct rb_ensure_list {
    struct rb_ensure_list *next;
    struct rb_ensure_entry entry;
} rb_ensure_list_t;
typedef char rb_thread_id_string_t[sizeof(rb_nativethread_id_t) * 2 + 3];
typedef struct rb_fiber_struct rb_fiber_t;
typedef struct rb_execution_context_struct {
    VALUE *vm_stack;
    size_t vm_stack_size;
    rb_control_frame_t *cfp;
    struct rb_vm_tag *tag;
    struct rb_vm_protect_tag *protect_tag;
    rb_atomic_t interrupt_flag;
    rb_atomic_t interrupt_mask;
    rb_fiber_t *fiber_ptr;
    struct rb_thread_struct *thread_ptr;
    st_table *local_storage;
    VALUE local_storage_recursive_hash;
    VALUE local_storage_recursive_hash_for_trace;
    const VALUE *root_lep;
    VALUE root_svar;
    rb_ensure_list_t *ensure_list;
    struct rb_trace_arg_struct *trace_arg;
    VALUE errinfo;
    VALUE passed_block_handler;
    uint8_t raised_flag;
    enum method_missing_reason method_missing_reason : 8;
    VALUE private_const_reference;
    struct {
 VALUE *stack_start;
 VALUE *stack_end;
 size_t stack_maxsize;
 __attribute__((aligned(4))) jmp_buf regs;
    } machine;
} rb_execution_context_t;
void rb_ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size);
typedef struct rb_thread_struct {
    struct list_node vmlt_node;
    VALUE self;
    rb_vm_t *vm;
    rb_execution_context_t *ec;
    VALUE last_status;
    struct rb_calling_info *calling;
    VALUE top_self;
    VALUE top_wrapper;
    rb_nativethread_id_t thread_id;
    enum rb_thread_status status : 2;
    unsigned int to_kill : 1;
    unsigned int abort_on_exception: 1;
    unsigned int report_on_exception: 1;
    unsigned int pending_interrupt_queue_checked: 1;
    int8_t priority;
    uint32_t running_time_us;
    native_thread_data_t native_thread_data;
    void *blocking_region_buffer;
    VALUE thgroup;
    VALUE value;
    VALUE pending_interrupt_queue;
    VALUE pending_interrupt_mask_stack;
    rb_nativethread_lock_t interrupt_lock;
    struct rb_unblock_callback unblock;
    VALUE locking_mutex;
    struct rb_mutex_struct *keeping_mutexes;
    rb_thread_list_t *join_list;
    union {
        struct {
            VALUE proc;
            VALUE args;
        } proc;
        struct {
            VALUE (*func)();
            void *arg;
        } func;
    } invoke_arg;
    enum {
        thread_invoke_type_none = 0,
        thread_invoke_type_proc,
        thread_invoke_type_func
    } invoke_type;
    VALUE stat_insn_usage;
    rb_fiber_t *root_fiber;
    rb_jmpbuf_t root_jmpbuf;
    VALUE name;
} rb_thread_t;
typedef enum {
    VM_DEFINECLASS_TYPE_CLASS = 0x00,
    VM_DEFINECLASS_TYPE_SINGLETON_CLASS = 0x01,
    VM_DEFINECLASS_TYPE_MODULE = 0x02,
    VM_DEFINECLASS_TYPE_MASK = 0x07
} rb_vm_defineclass_type_t;
#define VM_DEFINECLASS_TYPE(x) ((rb_vm_defineclass_type_t)(x) & VM_DEFINECLASS_TYPE_MASK)
#define VM_DEFINECLASS_FLAG_SCOPED 0x08
#define VM_DEFINECLASS_FLAG_HAS_SUPERCLASS 0x10
#define VM_DEFINECLASS_SCOPED_P(x) ((x) & VM_DEFINECLASS_FLAG_SCOPED)
#define VM_DEFINECLASS_HAS_SUPERCLASS_P(x) ((x) & VM_DEFINECLASS_FLAG_HAS_SUPERCLASS)

#pragma GCC visibility push(default)

rb_iseq_t *rb_iseq_new (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent, enum iseq_type);
rb_iseq_t *rb_iseq_new_top (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent);
rb_iseq_t *rb_iseq_new_main (const rb_ast_body_t *ast, VALUE path, VALUE realpath, const rb_iseq_t *parent);
rb_iseq_t *rb_iseq_new_with_opt(const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, VALUE first_lineno,
    const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t*);
rb_iseq_t *rb_iseq_new_ifunc(const struct vm_ifunc *ifunc, VALUE name, VALUE path, VALUE realpath, VALUE first_lineno,
        const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t*);
rb_iseq_t *rb_iseq_compile(VALUE src, VALUE file, VALUE line);
rb_iseq_t *rb_iseq_compile_on_base(VALUE src, VALUE file, VALUE line, const struct rb_block *base_block);
rb_iseq_t *rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE realpath, VALUE line, const struct rb_block *base_block, VALUE opt);
VALUE rb_iseq_disasm(const rb_iseq_t *iseq);
int rb_iseq_disasm_insn(VALUE str, const VALUE *iseqval, size_t pos, const rb_iseq_t *iseq, VALUE child);
const char *ruby_node_name(int node);
VALUE rb_iseq_coverage(const rb_iseq_t *iseq);
extern __attribute__((dllimport)) VALUE rb_cISeq;
extern __attribute__((dllimport)) VALUE rb_cRubyVM;
extern __attribute__((dllimport)) VALUE rb_mRubyVMFrozenCore;

#pragma GCC visibility pop

#define GetProcPtr(obj,ptr) GetCoreDataFromValue((obj), rb_proc_t, (ptr))
typedef struct {
    const struct rb_block block;
    unsigned int is_from_method: 1;
    unsigned int is_lambda: 1;
} rb_proc_t;
typedef struct {
    VALUE flags;
    const rb_iseq_t *iseq;
    const VALUE *ep;
    const VALUE *env;
    unsigned int env_size;
} rb_env_t;
extern const rb_data_type_t ruby_binding_data_type;
#define GetBindingPtr(obj,ptr) GetCoreDataFromValue((obj), rb_binding_t, (ptr))
typedef struct {
    const struct rb_block block;
    const VALUE pathobj;
    unsigned short first_lineno;
} rb_binding_t;
enum vm_check_match_type {
    VM_CHECKMATCH_TYPE_WHEN = 1,
    VM_CHECKMATCH_TYPE_CASE = 2,
    VM_CHECKMATCH_TYPE_RESCUE = 3
};
#define VM_CHECKMATCH_TYPE_MASK 0x03
#define VM_CHECKMATCH_ARRAY 0x04
enum vm_call_flag_bits {
    VM_CALL_ARGS_SPLAT_bit,
    VM_CALL_ARGS_BLOCKARG_bit,
    VM_CALL_FCALL_bit,
    VM_CALL_VCALL_bit,
    VM_CALL_ARGS_SIMPLE_bit,
    VM_CALL_BLOCKISEQ_bit,
    VM_CALL_KWARG_bit,
    VM_CALL_KW_SPLAT_bit,
    VM_CALL_TAILCALL_bit,
    VM_CALL_SUPER_bit,
    VM_CALL_ZSUPER_bit,
    VM_CALL_OPT_SEND_bit,
    VM_CALL__END
};
#define VM_CALL_ARGS_SPLAT (0x01 << VM_CALL_ARGS_SPLAT_bit)
#define VM_CALL_ARGS_BLOCKARG (0x01 << VM_CALL_ARGS_BLOCKARG_bit)
#define VM_CALL_FCALL (0x01 << VM_CALL_FCALL_bit)
#define VM_CALL_VCALL (0x01 << VM_CALL_VCALL_bit)
#define VM_CALL_ARGS_SIMPLE (0x01 << VM_CALL_ARGS_SIMPLE_bit)
#define VM_CALL_BLOCKISEQ (0x01 << VM_CALL_BLOCKISEQ_bit)
#define VM_CALL_KWARG (0x01 << VM_CALL_KWARG_bit)
#define VM_CALL_KW_SPLAT (0x01 << VM_CALL_KW_SPLAT_bit)
#define VM_CALL_TAILCALL (0x01 << VM_CALL_TAILCALL_bit)
#define VM_CALL_SUPER (0x01 << VM_CALL_SUPER_bit)
#define VM_CALL_ZSUPER (0x01 << VM_CALL_ZSUPER_bit)
#define VM_CALL_OPT_SEND (0x01 << VM_CALL_OPT_SEND_bit)
enum vm_special_object_type {
    VM_SPECIAL_OBJECT_VMCORE = 1,
    VM_SPECIAL_OBJECT_CBASE,
    VM_SPECIAL_OBJECT_CONST_BASE
};
enum vm_svar_index {
    VM_SVAR_LASTLINE = 0,
    VM_SVAR_BACKREF = 1,
    VM_SVAR_EXTRA_START = 2,
    VM_SVAR_FLIPFLOP_START = 2
};
typedef struct iseq_inline_cache_entry *IC;
typedef union iseq_inline_storage_entry *ISE;
typedef struct rb_call_info *CALL_INFO;
typedef struct rb_call_cache *CALL_CACHE;
void rb_vm_change_state(void);
typedef VALUE CDHASH;
typedef rb_control_frame_t *
  (__attribute__ ((__fastcall__)) *rb_insn_func_t)(rb_execution_context_t *, rb_control_frame_t *);
#define VM_TAGGED_PTR_SET(p,tag) ((VALUE)(p) | (tag))
#define VM_TAGGED_PTR_REF(v,mask) ((void *)((v) & ~mask))
#define GC_GUARDED_PTR(p) VM_TAGGED_PTR_SET((p), 0x01)
#define GC_GUARDED_PTR_REF(p) VM_TAGGED_PTR_REF((p), 0x03)
#define GC_GUARDED_PTR_P(p) (((VALUE)(p)) & 0x01)
enum {
    VM_FRAME_MAGIC_METHOD = 0x11110001,
    VM_FRAME_MAGIC_BLOCK = 0x22220001,
    VM_FRAME_MAGIC_CLASS = 0x33330001,
    VM_FRAME_MAGIC_TOP = 0x44440001,
    VM_FRAME_MAGIC_CFUNC = 0x55550001,
    VM_FRAME_MAGIC_IFUNC = 0x66660001,
    VM_FRAME_MAGIC_EVAL = 0x77770001,
    VM_FRAME_MAGIC_RESCUE = 0x78880001,
    VM_FRAME_MAGIC_DUMMY = 0x79990001,
    VM_FRAME_MAGIC_MASK = 0x7fff0001,
    VM_FRAME_FLAG_PASSED = 0x0010,
    VM_FRAME_FLAG_FINISH = 0x0020,
    VM_FRAME_FLAG_BMETHOD = 0x0040,
    VM_FRAME_FLAG_CFRAME = 0x0080,
    VM_FRAME_FLAG_LAMBDA = 0x0100,
    VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM = 0x0200,
    VM_ENV_FLAG_LOCAL = 0x0002,
    VM_ENV_FLAG_ESCAPED = 0x0004,
    VM_ENV_FLAG_WB_REQUIRED = 0x0008
};
#define VM_ENV_DATA_SIZE ( 3)
#define VM_ENV_DATA_INDEX_ME_CREF (-2)
#define VM_ENV_DATA_INDEX_SPECVAL (-1)
#define VM_ENV_DATA_INDEX_FLAGS ( 0)
#define VM_ENV_DATA_INDEX_ENV ( 1)
#define VM_ENV_INDEX_LAST_LVAR (-VM_ENV_DATA_SIZE)
static inline void VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value);
static inline void
VM_ENV_FLAGS_SET(const VALUE *ep, VALUE flag)
{
    VALUE flags = ep[( 0)];
    ((void)0);
    VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags | flag);
}
static inline void
VM_ENV_FLAGS_UNSET(const VALUE *ep, VALUE flag)
{
    VALUE flags = ep[( 0)];
    ((void)0);
    VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags & ~flag);
}
static inline unsigned long
VM_ENV_FLAGS(const VALUE *ep, long flag)
{
    VALUE flags = ep[( 0)];
    ((void)0);
    return flags & flag;
}
static inline unsigned long
VM_FRAME_TYPE(const rb_control_frame_t *cfp)
{
    return VM_ENV_FLAGS(cfp->ep, VM_FRAME_MAGIC_MASK);
}
static inline int
VM_FRAME_LAMBDA_P(const rb_control_frame_t *cfp)
{
    return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_LAMBDA) != 0;
}
static inline int
VM_FRAME_FINISHED_P(const rb_control_frame_t *cfp)
{
    return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_FINISH) != 0;
}
static inline int
VM_FRAME_BMETHOD_P(const rb_control_frame_t *cfp)
{
    return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_BMETHOD) != 0;
}
static inline int
rb_obj_is_iseq(VALUE iseq)
{
    return imemo_type_p(iseq, imemo_iseq);
}
static inline int
VM_FRAME_CFRAME_P(const rb_control_frame_t *cfp)
{
    int cframe_p = VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME) != 0;
    ((void)0);
    return cframe_p;
}
static inline int
VM_FRAME_RUBYFRAME_P(const rb_control_frame_t *cfp)
{
    return !VM_FRAME_CFRAME_P(cfp);
}
#define RUBYVM_CFUNC_FRAME_P(cfp) (VM_FRAME_TYPE(cfp) == VM_FRAME_MAGIC_CFUNC)
#define VM_GUARDED_PREV_EP(ep) GC_GUARDED_PTR(ep)
#define VM_BLOCK_HANDLER_NONE 0
static inline int
VM_ENV_LOCAL_P(const VALUE *ep)
{
    return VM_ENV_FLAGS(ep, VM_ENV_FLAG_LOCAL) ? 1 : 0;
}
static inline const VALUE *
VM_ENV_PREV_EP(const VALUE *ep)
{
    ((void)0);
    return ((void *)(((ep[(-1)])) & ~0x03));
}
static inline VALUE
VM_ENV_BLOCK_HANDLER(const VALUE *ep)
{
    ((void)0);
    return ep[(-1)];
}
static inline int
VM_ENV_ESCAPED_P(const VALUE *ep)
{
    ((void)0);
    return VM_ENV_FLAGS(ep, VM_ENV_FLAG_ESCAPED) ? 1 : 0;
}
static inline VALUE
VM_ENV_ENVVAL(const VALUE *ep)
{
    VALUE envval = ep[( 1)];
    ((void)0);
    ((void)0);
    return envval;
}
static inline const rb_env_t *
VM_ENV_ENVVAL_PTR(const VALUE *ep)
{
    return (const rb_env_t *)VM_ENV_ENVVAL(ep);
}
static inline const rb_env_t *
vm_env_new(VALUE *env_ep, VALUE *env_body, unsigned int env_size, const rb_iseq_t *iseq)
{
    rb_env_t *env = (rb_env_t *)rb_imemo_new(imemo_env, (VALUE)env_ep, (VALUE)env_body, 0, (VALUE)iseq);
    env->env_size = env_size;
    env_ep[( 1)] = (VALUE)env;
    return env;
}
static inline void
VM_FORCE_WRITE(const VALUE *ptr, VALUE v)
{
    *((VALUE *)ptr) = v;
}
static inline void
VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value)
{
    ((void)0);
    VM_FORCE_WRITE(ptr, special_const_value);
}
static inline void
VM_STACK_ENV_WRITE(const VALUE *ep, int index, VALUE v)
{
    ((void)0);
    VM_FORCE_WRITE(&ep[index], v);
}
const VALUE *rb_vm_ep_local_ep(const VALUE *ep);
const VALUE *rb_vm_proc_local_ep(VALUE proc);
void rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep);
void rb_vm_block_copy(VALUE obj, const struct rb_block *dst, const struct rb_block *src);
VALUE rb_vm_frame_block_handler(const rb_control_frame_t *cfp);
#define RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp) ((cfp)+1)
#define RUBY_VM_NEXT_CONTROL_FRAME(cfp) ((cfp)-1)
#define RUBY_VM_VALID_CONTROL_FRAME_P(cfp,ecfp) ((void *)(ecfp) > (void *)(cfp))
static inline const rb_control_frame_t *
RUBY_VM_END_CONTROL_FRAME(const rb_execution_context_t *ec)
{
    return (rb_control_frame_t *)(ec->vm_stack + ec->vm_stack_size);
}
static inline int
RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
{
    return !((void *)(RUBY_VM_END_CONTROL_FRAME(ec)) > (void *)(cfp));
}
static inline int
VM_BH_ISEQ_BLOCK_P(VALUE block_handler)
{
    if ((block_handler & 0x03) == 0x01) {
 return 1;
    }
    else {
 return 0;
    }
}
static inline VALUE
VM_BH_FROM_ISEQ_BLOCK(const struct rb_captured_block *captured)
{
    VALUE block_handler = ((VALUE)(captured) | (0x01));
    ((void)0);
    return block_handler;
}
static inline const struct rb_captured_block *
VM_BH_TO_ISEQ_BLOCK(VALUE block_handler)
{
    struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
    ((void)0);
    return captured;
}
static inline int
VM_BH_IFUNC_P(VALUE block_handler)
{
    if ((block_handler & 0x03) == 0x03) {
 return 1;
    }
    else {
 return 0;
    }
}
static inline VALUE
VM_BH_FROM_IFUNC_BLOCK(const struct rb_captured_block *captured)
{
    VALUE block_handler = ((VALUE)(captured) | (0x03));
    ((void)0);
    return block_handler;
}
static inline const struct rb_captured_block *
VM_BH_TO_IFUNC_BLOCK(VALUE block_handler)
{
    struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
    ((void)0);
    return captured;
}
static inline const struct rb_captured_block *
VM_BH_TO_CAPT_BLOCK(VALUE block_handler)
{
    struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
    ((void)0);
    return captured;
}
static inline enum rb_block_handler_type
vm_block_handler_type(VALUE block_handler)
{
    if (VM_BH_ISEQ_BLOCK_P(block_handler)) {
 return block_handler_type_iseq;
    }
    else if (VM_BH_IFUNC_P(block_handler)) {
 return block_handler_type_ifunc;
    }
    else if (((((VALUE)(block_handler)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(block_handler) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(block_handler) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(block_handler))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL)))) {
 return block_handler_type_symbol;
    }
    else {
 ((void)0);
 return block_handler_type_proc;
    }
}
static inline void
vm_block_handler_verify(__attribute__ ((__unused__)) VALUE block_handler)
{
    ((void)0);
}
static inline enum rb_block_type
vm_block_type(const struct rb_block *block)
{
    return block->type;
}
static inline void
vm_block_type_set(const struct rb_block *block, enum rb_block_type type)
{
    struct rb_block *mb = (struct rb_block *)block;
    mb->type = type;
}
static inline const struct rb_block *
vm_proc_block(VALUE procval)
{
    ((void)0);
    return &((rb_proc_t *)(((struct RTypedData*)(procval))->data))->block;
}
static inline const rb_iseq_t *vm_block_iseq(const struct rb_block *block);
static inline const VALUE *vm_block_ep(const struct rb_block *block);
static inline const rb_iseq_t *
vm_proc_iseq(VALUE procval)
{
    return vm_block_iseq(vm_proc_block(procval));
}
static inline const VALUE *
vm_proc_ep(VALUE procval)
{
    return vm_block_ep(vm_proc_block(procval));
}
static inline const rb_iseq_t *
vm_block_iseq(const struct rb_block *block)
{
    switch (vm_block_type(block)) {
      case block_type_iseq: return rb_iseq_check(block->as.captured.code.iseq);
      case block_type_proc: return vm_proc_iseq(block->as.proc);
      case block_type_ifunc:
      case block_type_symbol: return ((void *)0);
    }
    __builtin_unreachable();
    return ((void *)0);
}
static inline const VALUE *
vm_block_ep(const struct rb_block *block)
{
    switch (vm_block_type(block)) {
      case block_type_iseq:
      case block_type_ifunc: return block->as.captured.ep;
      case block_type_proc: return vm_proc_ep(block->as.proc);
      case block_type_symbol: return ((void *)0);
    }
    __builtin_unreachable();
    return ((void *)0);
}
static inline VALUE
vm_block_self(const struct rb_block *block)
{
    switch (vm_block_type(block)) {
      case block_type_iseq:
      case block_type_ifunc:
 return block->as.captured.self;
      case block_type_proc:
 return vm_block_self(vm_proc_block(block->as.proc));
      case block_type_symbol:
 return ((VALUE)RUBY_Qundef);
    }
    __builtin_unreachable();
    return ((VALUE)RUBY_Qundef);
}
static inline VALUE
VM_BH_TO_SYMBOL(VALUE block_handler)
{
    ((void)0);
    return block_handler;
}
static inline VALUE
VM_BH_FROM_SYMBOL(VALUE symbol)
{
    ((void)0);
    return symbol;
}
static inline VALUE
VM_BH_TO_PROC(VALUE block_handler)
{
    ((void)0);
    return block_handler;
}
static inline VALUE
VM_BH_FROM_PROC(VALUE procval)
{
    ((void)0);
    return procval;
}
VALUE rb_thread_alloc(VALUE klass);
VALUE rb_binding_alloc(VALUE klass);
VALUE rb_proc_alloc(VALUE klass);
VALUE rb_proc_dup(VALUE self);
extern void rb_vmdebug_stack_dump_raw(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
extern void rb_vmdebug_debug_print_pre(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE *_pc);
extern void rb_vmdebug_debug_print_post(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
#define SDR() rb_vmdebug_stack_dump_raw(GET_EC(), GET_EC()->cfp)
#define SDR2(cfp) rb_vmdebug_stack_dump_raw(GET_EC(), (cfp))
void rb_vm_bugreport(const void *);
__attribute__ ((__noreturn__)) void rb_bug_context(const void *, const char *fmt, ...);

#pragma GCC visibility push(default)

VALUE rb_iseq_eval(const rb_iseq_t *iseq);
VALUE rb_iseq_eval_main(const rb_iseq_t *iseq);
VALUE rb_iseq_path(const rb_iseq_t *iseq);
VALUE rb_iseq_realpath(const rb_iseq_t *iseq);

#pragma GCC visibility pop

VALUE rb_iseq_pathobj_new(VALUE path, VALUE realpath);
void rb_iseq_pathobj_set(const rb_iseq_t *iseq, VALUE path, VALUE realpath);
int rb_ec_frame_method_id_and_class(const rb_execution_context_t *ec, ID *idp, ID *called_idp, VALUE *klassp);
void rb_ec_setup_exception(const rb_execution_context_t *ec, VALUE mesg, VALUE cause);
VALUE rb_vm_invoke_proc(rb_execution_context_t *ec, rb_proc_t *proc, int argc, const VALUE *argv, VALUE block_handler);
VALUE rb_vm_make_proc_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass, int8_t is_lambda);
static inline VALUE
rb_vm_make_proc(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass)
{
    return rb_vm_make_proc_lambda(ec, captured, klass, 0);
}
static inline VALUE
rb_vm_make_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass)
{
    return rb_vm_make_proc_lambda(ec, captured, klass, 1);
}
VALUE rb_vm_make_binding(const rb_execution_context_t *ec, const rb_control_frame_t *src_cfp);
VALUE rb_vm_env_local_variables(const rb_env_t *env);
const rb_env_t *rb_vm_env_prev_env(const rb_env_t *env);
const VALUE *rb_binding_add_dynavars(VALUE bindval, rb_binding_t *bind, int dyncount, const ID *dynvars);
void rb_vm_inc_const_missing_count(void);
void rb_vm_gvl_destroy(rb_vm_t *vm);
VALUE rb_vm_call(rb_execution_context_t *ec, VALUE recv, VALUE id, int argc,
   const VALUE *argv, const rb_callable_method_entry_t *me);
static void rb_vm_pop_frame(rb_execution_context_t *ec);
void rb_thread_start_timer_thread(void);
void rb_thread_stop_timer_thread(void);
void rb_thread_reset_timer_thread(void);
void rb_thread_wakeup_timer_thread(int);
static inline void
rb_vm_living_threads_init(rb_vm_t *vm)
{
    list_head_init(&vm->waiting_fds);
    list_head_init(&vm->waiting_pids);
    list_head_init(&vm->workqueue);
    list_head_init(&vm->waiting_grps);
    list_head_init(&vm->living_threads);
    vm->living_thread_num = 0;
}
static inline void
rb_vm_living_threads_insert(rb_vm_t *vm, rb_thread_t *th)
{
    list_add_tail_(&vm->living_threads, &th->vmlt_node, "../ruby-2.6.9/vm_core.h" ":" "1648");
    vm->living_thread_num++;
}
static inline void
rb_vm_living_threads_remove(rb_vm_t *vm, rb_thread_t *th)
{
    list_del_(&th->vmlt_node, "../ruby-2.6.9/vm_core.h" ":" "1655");
    vm->living_thread_num--;
}
typedef int rb_backtrace_iter_func(void *, VALUE, int, VALUE);
rb_control_frame_t *rb_vm_get_ruby_level_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
rb_control_frame_t *rb_vm_get_binding_creatable_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
int rb_vm_get_sourceline(const rb_control_frame_t *);
VALUE rb_name_err_mesg_new(VALUE mesg, VALUE recv, VALUE method);
void rb_vm_stack_to_heap(rb_execution_context_t *ec);
void ruby_thread_init_stack(rb_thread_t *th);
int rb_vm_control_frame_id_and_class(const rb_control_frame_t *cfp, ID *idp, ID *called_idp, VALUE *klassp);
void rb_vm_rewind_cfp(rb_execution_context_t *ec, rb_control_frame_t *cfp);
static VALUE rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler);
void rb_vm_register_special_exception_str(enum ruby_special_exceptions sp, VALUE exception_class, VALUE mesg);
#define rb_vm_register_special_exception(sp,e,m) rb_vm_register_special_exception_str(sp, e, rb_usascii_str_new_static((m), (long)rb_strlen_lit(m)))
void rb_gc_mark_machine_stack(const rb_execution_context_t *ec);
void rb_vm_rewrite_cref(rb_cref_t *node, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr);
static const rb_callable_method_entry_t *rb_vm_frame_method_entry(const rb_control_frame_t *cfp);
#define sysstack_error GET_VM()->special_exceptions[ruby_error_sysstack]
#define RUBY_CONST_ASSERT(expr) (1/!!(expr))
#define VM_STACK_OVERFLOWED_P(cfp,sp,margin) (!RUBY_CONST_ASSERT(sizeof(*(sp)) == sizeof(VALUE)) || !RUBY_CONST_ASSERT(sizeof(*(cfp)) == sizeof(rb_control_frame_t)) || ((rb_control_frame_t *)((sp) + (margin)) + 1) >= (cfp))
#define WHEN_VM_STACK_OVERFLOWED(cfp,sp,margin) if (LIKELY(!VM_STACK_OVERFLOWED_P(cfp, sp, margin))) {(void)0;} else
#define CHECK_VM_STACK_OVERFLOW0(cfp,sp,margin) WHEN_VM_STACK_OVERFLOWED(cfp, sp, margin) vm_stackoverflow()
#define CHECK_VM_STACK_OVERFLOW(cfp,margin) WHEN_VM_STACK_OVERFLOWED(cfp, (cfp)->sp, margin) vm_stackoverflow()
VALUE rb_catch_protect(VALUE t, rb_block_call_func *func, VALUE data, enum ruby_tag_type *stateptr);

#pragma GCC visibility push(default)

extern __attribute__((dllimport)) rb_vm_t *ruby_current_vm_ptr;
extern __attribute__((dllimport)) rb_execution_context_t *ruby_current_execution_context_ptr;
extern __attribute__((dllimport)) rb_event_flag_t ruby_vm_event_flags;
extern __attribute__((dllimport)) rb_event_flag_t ruby_vm_event_enabled_global_flags;
extern __attribute__((dllimport)) unsigned int ruby_vm_event_local_num;

#pragma GCC visibility pop

#define GET_VM() rb_current_vm()
#define GET_THREAD() rb_current_thread()
#define GET_EC() rb_current_execution_context()
static inline rb_thread_t *
rb_ec_thread_ptr(const rb_execution_context_t *ec)
{
    return ec->thread_ptr;
}
static inline rb_vm_t *
rb_ec_vm_ptr(const rb_execution_context_t *ec)
{
    const rb_thread_t *th = rb_ec_thread_ptr(ec);
    if (th) {
 return th->vm;
    }
    else {
 return ((void *)0);
    }
}
static inline rb_execution_context_t *
rb_current_execution_context(void)
{
    return ruby_current_execution_context_ptr;
}
static inline rb_thread_t *
rb_current_thread(void)
{
    const rb_execution_context_t *ec = rb_current_execution_context();
    return rb_ec_thread_ptr(ec);
}
static inline rb_vm_t *
rb_current_vm(void)
{
    ((void)0);
    return ruby_current_vm_ptr;
}
static inline void
rb_thread_set_current_raw(const rb_thread_t *th)
{
    ruby_current_execution_context_ptr = th->ec;
}
static inline void
rb_thread_set_current(rb_thread_t *th)
{
    if (th->vm->running_thread != th) {
        th->running_time_us = 0;
    }
    rb_thread_set_current_raw(th);
    th->vm->running_thread = th;
}
enum {
    TIMER_INTERRUPT_MASK = 0x01,
    PENDING_INTERRUPT_MASK = 0x02,
    POSTPONED_JOB_INTERRUPT_MASK = 0x04,
    TRAP_INTERRUPT_MASK = 0x08
};
#define RUBY_VM_SET_TIMER_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TIMER_INTERRUPT_MASK)
#define RUBY_VM_SET_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, PENDING_INTERRUPT_MASK)
#define RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, POSTPONED_JOB_INTERRUPT_MASK)
#define RUBY_VM_SET_TRAP_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TRAP_INTERRUPT_MASK)
#define RUBY_VM_INTERRUPTED(ec) ((ec)->interrupt_flag & ~(ec)->interrupt_mask & (PENDING_INTERRUPT_MASK|TRAP_INTERRUPT_MASK))
#define RUBY_VM_INTERRUPTED_ANY(ec) ((ec)->interrupt_flag & ~(ec)->interrupt_mask)
VALUE rb_exc_set_backtrace(VALUE exc, VALUE bt);
int rb_signal_buff_size(void);
int rb_signal_exec(rb_thread_t *th, int sig);
void rb_threadptr_check_signal(rb_thread_t *mth);
void rb_threadptr_signal_raise(rb_thread_t *th, int sig);
void rb_threadptr_signal_exit(rb_thread_t *th);
int rb_threadptr_execute_interrupts(rb_thread_t *, int);
void rb_threadptr_interrupt(rb_thread_t *th);
void rb_threadptr_unlock_all_locking_mutexes(rb_thread_t *th);
void rb_threadptr_pending_interrupt_clear(rb_thread_t *th);
void rb_threadptr_pending_interrupt_enque(rb_thread_t *th, VALUE v);
void rb_ec_error_print(rb_execution_context_t * volatile ec, volatile VALUE errinfo);
void rb_execution_context_mark(const rb_execution_context_t *ec);
void rb_fiber_close(rb_fiber_t *fib);
void Init_native_thread(rb_thread_t *th);
#define RUBY_VM_CHECK_INTS(ec) rb_vm_check_ints(ec)
static inline void
rb_vm_check_ints(rb_execution_context_t *ec)
{
    ((void)0);
    if ((__builtin_expect(!!(((ec)->interrupt_flag & ~(ec)->interrupt_mask)), 0))) {
 rb_threadptr_execute_interrupts(rb_ec_thread_ptr(ec), 0);
    }
}
struct rb_trace_arg_struct {
    rb_event_flag_t event;
    rb_execution_context_t *ec;
    const rb_control_frame_t *cfp;
    VALUE self;
    ID id;
    ID called_id;
    VALUE klass;
    VALUE data;
    int klass_solved;
    int lineno;
    VALUE path;
};
void rb_hook_list_mark(rb_hook_list_t *hooks);
void rb_hook_list_free(rb_hook_list_t *hooks);
void rb_hook_list_connect_tracepoint(VALUE target, rb_hook_list_t *list, VALUE tpval, unsigned int target_line);
void rb_hook_list_remove_tracepoint(rb_hook_list_t *list, VALUE tpval);
void rb_exec_event_hooks(struct rb_trace_arg_struct *trace_arg, rb_hook_list_t *hooks, int pop_p);
#define EXEC_EVENT_HOOK_ORIG(ec_,hooks_,flag_,self_,id_,called_id_,klass_,data_,pop_p_) do { const rb_event_flag_t flag_arg_ = (flag_); rb_hook_list_t *hooks_arg_ = (hooks_); if (UNLIKELY((hooks_arg_)->events & (flag_arg_))) { rb_exec_event_hook_orig(ec_, hooks_arg_, flag_arg_, self_, id_, called_id_, klass_, data_, pop_p_); } } while (0)
static inline void
rb_exec_event_hook_orig(rb_execution_context_t *ec, rb_hook_list_t *hooks, rb_event_flag_t flag,
                        VALUE self, ID id, ID called_id, VALUE klass, VALUE data, int pop_p)
{
    struct rb_trace_arg_struct trace_arg;
    ((void)0);
    trace_arg.event = flag;
    trace_arg.ec = ec;
    trace_arg.cfp = ec->cfp;
    trace_arg.self = self;
    trace_arg.id = id;
    trace_arg.called_id = called_id;
    trace_arg.klass = klass;
    trace_arg.data = data;
    trace_arg.path = ((VALUE)RUBY_Qundef);
    trace_arg.klass_solved = 0;
    rb_exec_event_hooks(&trace_arg, hooks, pop_p);
}
static inline rb_hook_list_t *
rb_vm_global_hooks(const rb_execution_context_t *ec)
{
    return &rb_ec_vm_ptr(ec)->global_hooks;
}
#define EXEC_EVENT_HOOK(ec_,flag_,self_,id_,called_id_,klass_,data_) EXEC_EVENT_HOOK_ORIG(ec_, rb_vm_global_hooks(ec_), flag_, self_, id_, called_id_, klass_, data_, 0)
#define EXEC_EVENT_HOOK_AND_POP_FRAME(ec_,flag_,self_,id_,called_id_,klass_,data_) EXEC_EVENT_HOOK_ORIG(ec_, rb_vm_global_hooks(ec_), flag_, self_, id_, called_id_, klass_, data_, 1)
static inline void
rb_exec_event_hook_script_compiled(rb_execution_context_t *ec, const rb_iseq_t *iseq, VALUE eval_script)
{
    do { const rb_event_flag_t flag_arg_ = (0x2000); rb_hook_list_t *hooks_arg_ = (rb_vm_global_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, ec->cfp->self, 0, 0, 0, !((VALUE)(eval_script) != ((VALUE)RUBY_Qnil)) ? (VALUE)iseq : __extension__ ({ const VALUE args_to_new_ary[] = {eval_script, (VALUE)iseq}; if (__builtin_constant_p(2)) { _Static_assert(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))) == (2), "rb_ary_new_from_args" ": " "numberof(args_to_new_ary) == (2)"); } rb_ary_new_from_values(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))), args_to_new_ary); }), 0); } } while (0);
}

#pragma GCC visibility push(default)

int rb_thread_check_trap_pending(void);
#define RUBY_EVENT_COVERAGE_LINE 0x010000
#define RUBY_EVENT_COVERAGE_BRANCH 0x020000
extern VALUE rb_get_coverages(void);
extern void rb_set_coverages(VALUE, int, VALUE);
extern void rb_clear_coverages(void);
extern void rb_reset_coverages(void);
void rb_postponed_job_flush(rb_vm_t *vm);

#pragma GCC visibility pop

#define RUBY_DEBUG_H 

#pragma GCC visibility push(default)

#define dpv(h,v) ruby_debug_print_value(-1, 0, (h), (v))
#define dp(v) ruby_debug_print_value(-1, 0, "", (v))
#define dpi(i) ruby_debug_print_id(-1, 0, "", (i))
#define dpn(n) ruby_debug_print_node(-1, 0, "", (n))
#define bp() ruby_debug_breakpoint()
VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v);
ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id);
NODE *ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node);
int ruby_debug_print_indent(int level, int debug_level, int indent_level);
void ruby_debug_breakpoint(void);
void ruby_debug_gc_check_func(void);
void ruby_set_debug_option(const char *str);

#pragma GCC visibility pop

#define RUBY_ISEQ_H 1
extern __attribute__((dllimport)) const int ruby_api_version[];
#define ISEQ_MAJOR_VERSION ((unsigned int)ruby_api_version[0])
#define ISEQ_MINOR_VERSION ((unsigned int)ruby_api_version[1])
static inline size_t
rb_call_info_kw_arg_bytes(int keyword_len)
{
    return sizeof(struct rb_call_info_kw_arg) + sizeof(VALUE) * (keyword_len - 1);
}
#define ISEQ_COVERAGE(iseq) iseq->body->variable.coverage
#define ISEQ_COVERAGE_SET(iseq,cov) RB_OBJ_WRITE(iseq, &iseq->body->variable.coverage, cov)
#define ISEQ_LINE_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_LINES)
#define ISEQ_BRANCH_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_BRANCHES)
#define ISEQ_PC2BRANCHINDEX(iseq) iseq->body->variable.pc2branchindex
#define ISEQ_PC2BRANCHINDEX_SET(iseq,h) RB_OBJ_WRITE(iseq, &iseq->body->variable.pc2branchindex, h)
#define ISEQ_FLIP_CNT(iseq) (iseq)->body->variable.flip_count
static inline rb_snum_t
ISEQ_FLIP_CNT_INCREMENT(const rb_iseq_t *iseq)
{
    rb_snum_t cnt = iseq->body->variable.flip_count;
    iseq->body->variable.flip_count += 1;
    return cnt;
}
static inline VALUE *
ISEQ_ORIGINAL_ISEQ(const rb_iseq_t *iseq)
{
    return iseq->body->variable.original_iseq;
}
static inline void
ISEQ_ORIGINAL_ISEQ_CLEAR(const rb_iseq_t *iseq)
{
    void *ptr = iseq->body->variable.original_iseq;
    iseq->body->variable.original_iseq = ((void *)0);
    if (ptr) {
        ruby_xfree(ptr);
    }
}
static inline VALUE *
ISEQ_ORIGINAL_ISEQ_ALLOC(const rb_iseq_t *iseq, long size)
{
    return iseq->body->variable.original_iseq =
        ruby_xmalloc2(size, sizeof(VALUE));
}
#define ISEQ_TRACE_EVENTS (RUBY_EVENT_LINE | RUBY_EVENT_CLASS | RUBY_EVENT_END | RUBY_EVENT_CALL | RUBY_EVENT_RETURN| RUBY_EVENT_B_CALL| RUBY_EVENT_B_RETURN| RUBY_EVENT_COVERAGE_LINE| RUBY_EVENT_COVERAGE_BRANCH)
#define ISEQ_NOT_LOADED_YET IMEMO_FL_USER1
#define ISEQ_USE_COMPILE_DATA IMEMO_FL_USER2
#define ISEQ_TRANSLATED IMEMO_FL_USER3
#define ISEQ_MARKABLE_ISEQ IMEMO_FL_USER4
#define ISEQ_EXECUTABLE_P(iseq) (FL_TEST_RAW((iseq), ISEQ_NOT_LOADED_YET | ISEQ_USE_COMPILE_DATA) == 0)
struct iseq_compile_data {
    const VALUE err_info;
    VALUE mark_ary;
    const VALUE catch_table_ary;
    struct iseq_label_data *start_label;
    struct iseq_label_data *end_label;
    struct iseq_label_data *redo_label;
    const rb_iseq_t *current_block;
    VALUE ensure_node;
    VALUE for_iseq;
    struct iseq_compile_data_ensure_node_stack *ensure_node_stack;
    struct iseq_compile_data_storage *storage_head;
    struct iseq_compile_data_storage *storage_current;
    int loopval_popped;
    int last_line;
    int label_no;
    int node_level;
    unsigned int ci_index;
    unsigned int ci_kw_index;
    const rb_compile_option_t *option;
    struct rb_id_table *ivar_cache_table;
};
static inline struct iseq_compile_data *
ISEQ_COMPILE_DATA(const rb_iseq_t *iseq)
{
    if (iseq->flags & ((VALUE)RUBY_FL_USER6)) {
 return iseq->aux.compile_data;
    }
    else {
 return ((void *)0);
    }
}
static inline void
ISEQ_COMPILE_DATA_ALLOC(rb_iseq_t *iseq)
{
    iseq->aux.compile_data = (((struct iseq_compile_data*)ruby_xcalloc((size_t)(1),sizeof(struct iseq_compile_data))));
    iseq->flags |= ((VALUE)RUBY_FL_USER6);
}
static inline void
ISEQ_COMPILE_DATA_CLEAR(rb_iseq_t *iseq)
{
    iseq->flags &= ~((VALUE)RUBY_FL_USER6);
    iseq->aux.compile_data = ((void *)0);
}
static inline rb_iseq_t *
iseq_imemo_alloc(void)
{
    return (rb_iseq_t *)rb_imemo_new(imemo_iseq, 0, 0, 0, 0);
}
VALUE rb_iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt);
void rb_ibf_load_iseq_complete(rb_iseq_t *iseq);
const rb_iseq_t *rb_iseq_ibf_load(VALUE str);
VALUE rb_iseq_ibf_load_extra_data(VALUE str);
void rb_iseq_init_trace(rb_iseq_t *iseq);
int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line);
int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval);
const rb_iseq_t *rb_iseq_load_iseq(VALUE fname);
unsigned int *rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body);

#pragma GCC visibility push(default)

VALUE rb_iseq_compile_node(rb_iseq_t *iseq, const NODE *node);
VALUE rb_iseq_compile_ifunc(rb_iseq_t *iseq, const struct vm_ifunc *ifunc);
int rb_iseq_translate_threaded_code(rb_iseq_t *iseq);
VALUE *rb_iseq_original_iseq(const rb_iseq_t *iseq);
void rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc,
       VALUE locals, VALUE args,
       VALUE exception, VALUE body);
VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt);
VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc);
struct st_table *ruby_insn_make_insn_table(void);
unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos);
void rb_iseq_trace_set(const rb_iseq_t *iseq, rb_event_flag_t turnon_events);
void rb_iseq_trace_set_all(rb_event_flag_t turnon_events);
void rb_iseq_trace_on_all(void);
void rb_iseq_insns_info_encode_positions(const rb_iseq_t *iseq);
VALUE rb_iseqw_new(const rb_iseq_t *iseq);
const rb_iseq_t *rb_iseqw_to_iseq(VALUE iseqw);
VALUE rb_iseq_absolute_path(const rb_iseq_t *iseq);
VALUE rb_iseq_label(const rb_iseq_t *iseq);
VALUE rb_iseq_base_label(const rb_iseq_t *iseq);
VALUE rb_iseq_first_lineno(const rb_iseq_t *iseq);
VALUE rb_iseq_method_name(const rb_iseq_t *iseq);
void rb_iseq_code_location(const rb_iseq_t *iseq, int *first_lineno, int *first_column, int *last_lineno, int *last_column);
void rb_iseq_remove_coverage_all(void);
const rb_iseq_t *rb_method_iseq(VALUE body);
const rb_iseq_t *rb_proc_get_iseq(VALUE proc, int *is_proc);
struct rb_compile_option_struct {
    unsigned int inline_const_cache: 1;
    unsigned int peephole_optimization: 1;
    unsigned int tailcall_optimization: 1;
    unsigned int specialized_instruction: 1;
    unsigned int operands_unification: 1;
    unsigned int instructions_unification: 1;
    unsigned int stack_caching: 1;
    unsigned int frozen_string_literal: 1;
    unsigned int debug_frozen_string_literal: 1;
    unsigned int coverage_enabled: 1;
    int debug_level;
};
struct iseq_insn_info_entry {
    int line_no;
    rb_event_flag_t events;
};
struct iseq_catch_table_entry {
    enum catch_type {
 CATCH_TYPE_RESCUE = (((VALUE)(1))<<1 | RUBY_FIXNUM_FLAG),
 CATCH_TYPE_ENSURE = (((VALUE)(2))<<1 | RUBY_FIXNUM_FLAG),
 CATCH_TYPE_RETRY = (((VALUE)(3))<<1 | RUBY_FIXNUM_FLAG),
 CATCH_TYPE_BREAK = (((VALUE)(4))<<1 | RUBY_FIXNUM_FLAG),
 CATCH_TYPE_REDO = (((VALUE)(5))<<1 | RUBY_FIXNUM_FLAG),
 CATCH_TYPE_NEXT = (((VALUE)(6))<<1 | RUBY_FIXNUM_FLAG)
    } type;
    const rb_iseq_t *iseq;
    unsigned int start;
    unsigned int end;
    unsigned int cont;
    unsigned int sp;
};
struct iseq_catch_table { unsigned int size; struct iseq_catch_table_entry entries[]; } __attribute__((packed));
static inline int
iseq_catch_table_bytes(int n)
{
    enum {
 catch_table_entry_size = sizeof(struct iseq_catch_table_entry),
 catch_table_entries_max = (0x7fffffff - __builtin_offsetof (struct iseq_catch_table, entries)) / catch_table_entry_size
    };
    if (n > catch_table_entries_max) rb_fatal("too large iseq_catch_table - %d", n);
    return (int)(__builtin_offsetof (struct iseq_catch_table, entries) +
   n * catch_table_entry_size);
}
#define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512)
struct iseq_compile_data_storage {
    struct iseq_compile_data_storage *next;
    unsigned int pos;
    unsigned int size;
    char buff[];
};
enum defined_type {
    DEFINED_NOT_DEFINED,
    DEFINED_NIL = 1,
    DEFINED_IVAR,
    DEFINED_LVAR,
    DEFINED_GVAR,
    DEFINED_CVAR,
    DEFINED_CONST,
    DEFINED_METHOD,
    DEFINED_YIELD,
    DEFINED_ZSUPER,
    DEFINED_SELF,
    DEFINED_TRUE,
    DEFINED_FALSE,
    DEFINED_ASGN,
    DEFINED_EXPR,
    DEFINED_IVAR2,
    DEFINED_REF,
    DEFINED_FUNC
};
VALUE rb_iseq_defined_string(enum defined_type type);
void rb_iseq_make_compile_option(struct rb_compile_option_struct *option, VALUE opt);
VALUE rb_iseq_local_variables(const rb_iseq_t *iseq);

#pragma GCC visibility pop

#define RUBY_EVAL_INTERN_H 
static inline void
vm_passed_block_handler_set(rb_execution_context_t *ec, VALUE block_handler)
{
    vm_block_handler_verify(block_handler);
    ec->passed_block_handler = block_handler;
}
static inline void
pass_passed_block_handler(rb_execution_context_t *ec)
{
    VALUE block_handler = rb_vm_frame_block_handler(ec->cfp);
    vm_passed_block_handler_set(ec, block_handler);
    VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_PASSED);
}
#define PASS_PASSED_BLOCK_HANDLER_EC(ec) pass_passed_block_handler(ec)
#define PASS_PASSED_BLOCK_HANDLER() pass_passed_block_handler(GET_EC())
#define ruby_setjmp(env) RUBY_SETJMP(env)
#define ruby_longjmp(env,val) RUBY_LONGJMP((env),(val))
LONG __attribute__((__stdcall__)) rb_w32_stack_overflow_handler(struct _EXCEPTION_POINTERS *);
#define SAVE_ROOT_JMPBUF_BEFORE_STMT do { PVOID _handler = AddVectoredExceptionHandler(1, rb_w32_stack_overflow_handler);
#define SAVE_ROOT_JMPBUF_AFTER_STMT RemoveVectoredExceptionHandler(_handler); } while (0);
#define SAVE_ROOT_JMPBUF(th,stmt) do if (ruby_setjmp((th)->root_jmpbuf) == 0) { SAVE_ROOT_JMPBUF_BEFORE_STMT stmt; SAVE_ROOT_JMPBUF_AFTER_STMT } else { rb_fiber_start(); } while (0)
#define EC_PUSH_TAG(ec) do { rb_execution_context_t * const _ec = (ec); struct rb_vm_tag _tag; _tag.state = TAG_NONE; _tag.tag = Qundef; _tag.prev = _ec->tag;
#define EC_POP_TAG() _ec->tag = _tag.prev; } while (0)
#define EC_TMPPOP_TAG() _ec->tag = _tag.prev
#define EC_REPUSH_TAG() (void)(_ec->tag = &_tag)
#define VAR_FROM_MEMORY(var) (var)
#define VAR_INITIALIZED(var) ((void)&(var))
#define VAR_NOCLOBBERED(var) var
#define UNALIGNED_MEMBER_ACCESS(expr) expr
#define UNALIGNED_MEMBER_PTR(ptr,mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
#undef RB_OBJ_WRITE
#define RB_OBJ_WRITE(a,slot,b) UNALIGNED_MEMBER_ACCESS(rb_obj_write((VALUE)(a), (VALUE *)(slot), (VALUE)(b), __FILE__, __LINE__))
static inline int
rb_ec_tag_state(const rb_execution_context_t *ec)
{
    enum ruby_tag_type state = ec->tag->state;
    ec->tag->state = RUBY_TAG_NONE;
    return state;
}
__attribute__ ((__noreturn__)) static inline void rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st);
static inline void
rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st)
{
    ec->tag->state = st;
    __builtin_longjmp(((ec->tag->buf)),(1));
}
#define EC_EXEC_TAG() (ruby_setjmp(_tag.buf) ? rb_ec_tag_state(VAR_FROM_MEMORY(_ec)) : (EC_REPUSH_TAG(), 0))
#define EC_JUMP_TAG(ec,st) rb_ec_tag_jump(ec, st)
#define INTERNAL_EXCEPTION_P(exc) FIXNUM_P(exc)
#define CREF_FL_PUSHED_BY_EVAL IMEMO_FL_USER1
#define CREF_FL_OMOD_SHARED IMEMO_FL_USER2
static inline VALUE
CREF_CLASS(const rb_cref_t *cref)
{
    return cref->klass;
}
static inline rb_cref_t *
CREF_NEXT(const rb_cref_t *cref)
{
    return cref->next;
}
static inline const rb_scope_visibility_t *
CREF_SCOPE_VISI(const rb_cref_t *cref)
{
    return &cref->scope_visi;
}
static inline VALUE
CREF_REFINEMENTS(const rb_cref_t *cref)
{
    return cref->refinements;
}
static inline void
CREF_REFINEMENTS_SET(rb_cref_t *cref, VALUE refs)
{
    rb_obj_write((VALUE)(cref), (VALUE *)(&cref->refinements), (VALUE)(refs), "../ruby-2.6.9/eval_intern.h", 237);
}
static inline int
CREF_PUSHED_BY_EVAL(const rb_cref_t *cref)
{
    return cref->flags & ((VALUE)RUBY_FL_USER5);
}
static inline void
CREF_PUSHED_BY_EVAL_SET(rb_cref_t *cref)
{
    cref->flags |= ((VALUE)RUBY_FL_USER5);
}
static inline int
CREF_OMOD_SHARED(const rb_cref_t *cref)
{
    return cref->flags & ((VALUE)RUBY_FL_USER6);
}
static inline void
CREF_OMOD_SHARED_SET(rb_cref_t *cref)
{
    cref->flags |= ((VALUE)RUBY_FL_USER6);
}
static inline void
CREF_OMOD_SHARED_UNSET(rb_cref_t *cref)
{
    cref->flags &= ~((VALUE)RUBY_FL_USER6);
}
void rb_thread_cleanup(void);
void rb_thread_wait_other_threads(void);
enum {
    RAISED_EXCEPTION = 1,
    RAISED_STACKOVERFLOW = 2,
    RAISED_NOMEMORY = 4
};
#define rb_ec_raised_set(ec,f) ((ec)->raised_flag |= (f))
#define rb_ec_raised_reset(ec,f) ((ec)->raised_flag &= ~(f))
#define rb_ec_raised_p(ec,f) (((ec)->raised_flag & (f)) != 0)
#define rb_ec_raised_clear(ec) ((ec)->raised_flag = 0)
int rb_ec_set_raised(rb_execution_context_t *ec);
int rb_ec_reset_raised(rb_execution_context_t *ec);
int rb_ec_stack_check(rb_execution_context_t *ec);
VALUE rb_f_eval(int argc, const VALUE *argv, VALUE self);
VALUE rb_make_exception(int argc, const VALUE *argv);
__attribute__ ((__noreturn__)) void rb_method_name_error(VALUE, VALUE);
__attribute__ ((__noreturn__)) void rb_fiber_start(void);
__attribute__ ((__noreturn__)) void rb_print_undef(VALUE, ID, rb_method_visibility_t);
__attribute__ ((__noreturn__)) void rb_print_undef_str(VALUE, VALUE);
__attribute__ ((__noreturn__)) void rb_print_inaccessible(VALUE, ID, rb_method_visibility_t);
__attribute__ ((__noreturn__)) void rb_vm_localjump_error(const char *,VALUE, int);
VALUE rb_vm_make_jump_tag_but_local_jump(int state, VALUE val);
rb_cref_t *rb_vm_cref(void);
rb_cref_t *rb_vm_cref_replace_with_duplicated_cref(void);
VALUE rb_vm_call_cfunc(VALUE recv, VALUE (*func)(VALUE), VALUE arg, VALUE block_handler, VALUE filename);
void rb_vm_set_progname(VALUE filename);
void rb_thread_terminate_all(void);
VALUE rb_vm_cbase(void);
VALUE rb_ec_backtrace_object(const rb_execution_context_t *ec);
VALUE rb_ec_backtrace_str_ary(const rb_execution_context_t *ec, long lev, long n);
static inline void
translit_char(char *p, int from, int to)
{
    while (*p) {
 if ((unsigned char)*p == from)
     *p = to;
 p = CharNextA(p);
    }
}
#define _PROBES_H 
#define DTRACE_PROBES_DISABLED 1
#define RUBY_DTRACE_METHOD_ENTRY_ENABLED() 0
#define RUBY_DTRACE_METHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
#define RUBY_DTRACE_METHOD_RETURN_ENABLED() 0
#define RUBY_DTRACE_METHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
#define RUBY_DTRACE_CMETHOD_ENTRY_ENABLED() 0
#define RUBY_DTRACE_CMETHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
#define RUBY_DTRACE_CMETHOD_RETURN_ENABLED() 0
#define RUBY_DTRACE_CMETHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
#define RUBY_DTRACE_REQUIRE_ENTRY_ENABLED() 0
#define RUBY_DTRACE_REQUIRE_ENTRY(rquiredfile,filename,lineno) do {} while (0)
#define RUBY_DTRACE_REQUIRE_RETURN_ENABLED() 0
#define RUBY_DTRACE_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
#define RUBY_DTRACE_FIND_REQUIRE_ENTRY_ENABLED() 0
#define RUBY_DTRACE_FIND_REQUIRE_ENTRY(requiredfile,filename,lineno) do {} while (0)
#define RUBY_DTRACE_FIND_REQUIRE_RETURN_ENABLED() 0
#define RUBY_DTRACE_FIND_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
#define RUBY_DTRACE_LOAD_ENTRY_ENABLED() 0
#define RUBY_DTRACE_LOAD_ENTRY(loadedfile,filename,lineno) do {} while (0)
#define RUBY_DTRACE_LOAD_RETURN_ENABLED() 0
#define RUBY_DTRACE_LOAD_RETURN(loadedfile,filename,lineno) do {} while (0)
#define RUBY_DTRACE_RAISE_ENABLED() 0
#define RUBY_DTRACE_RAISE(classname,filename,lineno) do {} while (0)
#define RUBY_DTRACE_OBJECT_CREATE_ENABLED() 0
#define RUBY_DTRACE_OBJECT_CREATE(classname,filename,lineno) do {} while (0)
#define RUBY_DTRACE_ARRAY_CREATE_ENABLED() 0
#define RUBY_DTRACE_ARRAY_CREATE(length,filename,lineno) do {} while (0)
#define RUBY_DTRACE_HASH_CREATE_ENABLED() 0
#define RUBY_DTRACE_HASH_CREATE(length,filename,lineno) do {} while (0)
#define RUBY_DTRACE_STRING_CREATE_ENABLED() 0
#define RUBY_DTRACE_STRING_CREATE(length,filename,lineno) do {} while (0)
#define RUBY_DTRACE_SYMBOL_CREATE_ENABLED() 0
#define RUBY_DTRACE_SYMBOL_CREATE(str,filename,lineno) do {} while (0)
#define RUBY_DTRACE_PARSE_BEGIN_ENABLED() 0
#define RUBY_DTRACE_PARSE_BEGIN(sourcefile,lineno) do {} while (0)
#define RUBY_DTRACE_PARSE_END_ENABLED() 0
#define RUBY_DTRACE_PARSE_END(sourcefile,lineno) do {} while (0)
#define RUBY_DTRACE_INSN_ENABLED() 0
#define RUBY_DTRACE_INSN(insns_name) do {} while (0)
#define RUBY_DTRACE_INSN_OPERAND_ENABLED() 0
#define RUBY_DTRACE_INSN_OPERAND(val,insns_name) do {} while (0)
#define RUBY_DTRACE_GC_MARK_BEGIN_ENABLED() 0
#define RUBY_DTRACE_GC_MARK_BEGIN() do {} while (0)
#define RUBY_DTRACE_GC_MARK_END_ENABLED() 0
#define RUBY_DTRACE_GC_MARK_END() do {} while (0)
#define RUBY_DTRACE_GC_SWEEP_BEGIN_ENABLED() 0
#define RUBY_DTRACE_GC_SWEEP_BEGIN() do {} while (0)
#define RUBY_DTRACE_GC_SWEEP_END_ENABLED() 0
#define RUBY_DTRACE_GC_SWEEP_END() do {} while (0)
#define RUBY_DTRACE_METHOD_CACHE_CLEAR_ENABLED() 0
#define RUBY_DTRACE_METHOD_CACHE_CLEAR(class,filename,lineno) do {} while (0)
#define RUBY_PROBES_HELPER_H 
struct ruby_dtrace_method_hook_args {
    const char *classname;
    const char *methodname;
    const char *filename;
    int line_no;
    volatile VALUE klass;
    volatile VALUE name;
};
__attribute__ ((__noinline__)) int rb_dtrace_setup(rb_execution_context_t *, VALUE, ID, struct ruby_dtrace_method_hook_args *);
#define RUBY_DTRACE_METHOD_HOOK(name,ec,klazz,id) do { if (UNLIKELY(RUBY_DTRACE_ ##name ##_ENABLED())) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, klazz, id, &args)) { RUBY_DTRACE_ ##name(args.classname, args.methodname, args.filename, args.line_no); } } } while (0)
#define RUBY_DTRACE_METHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_ENTRY, ec, klass, id)
#define RUBY_DTRACE_METHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_RETURN, ec, klass, id)
#define RUBY_DTRACE_CMETHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_ENTRY, ec, klass, id)
#define RUBY_DTRACE_CMETHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_RETURN, ec, klass, id)
VALUE rb_str_concat_literals(size_t, const VALUE*);
__attribute__ ((__pure__)) static inline const VALUE *VM_EP_LEP(const VALUE *);
static inline const VALUE *
VM_EP_LEP(const VALUE *ep)
{
    while (!VM_ENV_LOCAL_P(ep)) {
 ep = VM_ENV_PREV_EP(ep);
    }
    return ep;
}
static inline const rb_control_frame_t *
rb_vm_search_cf_from_ep(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE * const ep)
{
    if (!ep) {
 return ((void *)0);
    }
    else {
 const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec);
 while (cfp < eocfp) {
     if (cfp->ep == ep) {
  return cfp;
     }
     cfp = ((cfp)+1);
 }
 return ((void *)0);
    }
}
const VALUE *
rb_vm_ep_local_ep(const VALUE *ep)
{
    return VM_EP_LEP(ep);
}
__attribute__ ((__pure__)) static inline const VALUE *VM_CF_LEP(const rb_control_frame_t * const cfp);
static inline const VALUE *
VM_CF_LEP(const rb_control_frame_t * const cfp)
{
    return VM_EP_LEP(cfp->ep);
}
static inline const VALUE *
VM_CF_PREV_EP(const rb_control_frame_t * const cfp)
{
    return VM_ENV_PREV_EP(cfp->ep);
}
__attribute__ ((__pure__)) static inline VALUE VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp);
static inline VALUE
VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp)
{
    const VALUE *ep = VM_CF_LEP(cfp);
    return VM_ENV_BLOCK_HANDLER(ep);
}
VALUE
rb_vm_frame_block_handler(const rb_control_frame_t *cfp)
{
    return VM_CF_BLOCK_HANDLER(cfp);
}
static struct rb_captured_block *
VM_CFP_TO_CAPTURED_BLOCK(const rb_control_frame_t *cfp)
{
    ((void)0);
    return (struct rb_captured_block *)&cfp->self;
}
static rb_control_frame_t *
VM_CAPTURED_BLOCK_TO_CFP(const struct rb_captured_block *captured)
{
    rb_control_frame_t *cfp = ((rb_control_frame_t *)((VALUE *)(captured) - 3));
    ((void)0);
    ((void)0);
    return cfp;
}
static int
VM_BH_FROM_CFP_P(VALUE block_handler, const rb_control_frame_t *cfp)
{
    const struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(cfp);
    return ((void *)((block_handler) & ~0x03)) == captured;
}
static VALUE
vm_passed_block_handler(rb_execution_context_t *ec)
{
    VALUE block_handler = ec->passed_block_handler;
    ec->passed_block_handler = 0;
    vm_block_handler_verify(block_handler);
    return block_handler;
}
static rb_cref_t *
vm_cref_new0(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval, int use_prev_prev)
{
    VALUE refinements = ((VALUE)RUBY_Qnil);
    int omod_shared = 0;
    rb_cref_t *cref;
    union {
 rb_scope_visibility_t visi;
 VALUE value;
    } scope_visi;
    scope_visi.visi.method_visi = visi;
    scope_visi.visi.module_func = module_func;
    if (prev_cref != ((void *)0) && prev_cref != (void *)1 ) {
 refinements = CREF_REFINEMENTS(prev_cref);
 if (!!((VALUE)(refinements) != ((VALUE)RUBY_Qnil))) {
     omod_shared = 1;
     CREF_OMOD_SHARED_SET(prev_cref);
 }
    }
    cref = (rb_cref_t *)rb_imemo_new(imemo_cref, klass, (VALUE)(use_prev_prev ? CREF_NEXT(prev_cref) : prev_cref), scope_visi.value, refinements);
    if (pushed_by_eval) CREF_PUSHED_BY_EVAL_SET(cref);
    if (omod_shared) CREF_OMOD_SHARED_SET(cref);
    return cref;
}
static rb_cref_t *
vm_cref_new(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval)
{
    return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 0);
}
static rb_cref_t *
vm_cref_new_use_prev(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval)
{
    return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 1);
}
static int
ref_delete_symkey(VALUE key, VALUE value, VALUE unused)
{
    return ((((VALUE)(key)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(key) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(key) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(key))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) ? ST_DELETE : ST_CONTINUE;
}
static rb_cref_t *
vm_cref_dup(const rb_cref_t *cref)
{
    VALUE klass = CREF_CLASS(cref);
    const rb_scope_visibility_t *visi = CREF_SCOPE_VISI(cref);
    rb_cref_t *next_cref = CREF_NEXT(cref), *new_cref;
    int pushed_by_eval = CREF_PUSHED_BY_EVAL(cref);
    new_cref = vm_cref_new(klass, visi->method_visi, visi->module_func, next_cref, pushed_by_eval);
    if (!!((VALUE)(CREF_REFINEMENTS(cref)) != ((VALUE)RUBY_Qnil))) {
        VALUE ref = rb_hash_dup(CREF_REFINEMENTS(cref));
        rb_hash_foreach(ref, ref_delete_symkey, ((VALUE)RUBY_Qnil));
        CREF_REFINEMENTS_SET(new_cref, ref);
 CREF_OMOD_SHARED_UNSET(new_cref);
    }
    return new_cref;
}
static rb_cref_t *
vm_cref_new_toplevel(rb_execution_context_t *ec)
{
    rb_cref_t *cref = vm_cref_new(rb_cObject, METHOD_VISI_PRIVATE , 0, ((void *)0), 0);
    VALUE top_wrapper = rb_ec_thread_ptr(ec)->top_wrapper;
    if (top_wrapper) {
 cref = vm_cref_new(top_wrapper, METHOD_VISI_PRIVATE, 0, cref, 0);
    }
    return cref;
}
rb_cref_t *
rb_vm_cref_new_toplevel(void)
{
    return vm_cref_new_toplevel(rb_current_execution_context());
}
static void
vm_cref_dump(const char *mesg, const rb_cref_t *cref)
{
    fprintf((__acrt_iob_func(2)), "vm_cref_dump: %s (%p)\n", mesg, (void *)cref);
    while (cref) {
 fprintf((__acrt_iob_func(2)), "= cref| klass: %s\n", (!(((struct RBasic*)(rb_class_path(CREF_CLASS(cref))))->flags & RSTRING_NOEMBED) ? ((struct RString*)(rb_class_path(CREF_CLASS(cref))))->as.ary : ((struct RString*)(rb_class_path(CREF_CLASS(cref))))->as.heap.ptr));
 cref = CREF_NEXT(cref);
    }
}
void
rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep)
{
    *((const VALUE **)&dst->as.captured.ep) = ep;
    rb_obj_written((VALUE)(obj), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(VM_ENV_ENVVAL(ep)), "../ruby-2.6.9/vm.c", 292);
}
static void
vm_bind_update_env(VALUE bindval, rb_binding_t *bind, VALUE envval)
{
    const rb_env_t *env = (rb_env_t *)envval;
    rb_obj_write((VALUE)(bindval), (VALUE *)(&bind->block.as.captured.code.iseq), (VALUE)(env->iseq), "../ruby-2.6.9/vm.c", 299);
    rb_vm_block_ep_update(bindval, &bind->block, env->ep);
}
static VALUE vm_make_env_object(const rb_execution_context_t *ec, rb_control_frame_t *cfp);
extern VALUE rb_vm_invoke_bmethod(rb_execution_context_t *ec, rb_proc_t *proc, VALUE self,
                                  int argc, const VALUE *argv, VALUE block_handler,
                                  const rb_callable_method_entry_t *me);
static VALUE vm_invoke_proc(rb_execution_context_t *ec, rb_proc_t *proc, VALUE self, int argc, const VALUE *argv, VALUE block_handler);
static VALUE rb_block_param_proxy;
#define RUBY_MJIT_H 1
enum rb_mjit_iseq_func {
    NOT_ADDED_JIT_ISEQ_FUNC = 0,
    NOT_READY_JIT_ISEQ_FUNC = 1,
    NOT_COMPILED_JIT_ISEQ_FUNC = 2,
    LAST_JIT_ISEQ_FUNC = 3
};
struct mjit_options {
    char on;
    char save_temps;
    char warnings;
    char debug;
    unsigned int wait;
    unsigned int min_calls;
    int verbose;
    int max_cache_size;
};
typedef VALUE (*mjit_func_t)(rb_execution_context_t *, rb_control_frame_t *);

#pragma GCC visibility push(default)

extern __attribute__((dllimport)) struct mjit_options mjit_opts;
extern __attribute__((dllimport)) int mjit_call_p;
extern void mjit_add_iseq_to_process(const rb_iseq_t *iseq);
extern VALUE mjit_wait_call(rb_execution_context_t *ec, struct rb_iseq_constant_body *body);

#pragma GCC visibility pop

extern int mjit_compile(FILE *f, const struct rb_iseq_constant_body *body, const char *funcname, struct rb_call_cache *cc_entries, union iseq_inline_storage_entry *is_entries);
extern void mjit_init(struct mjit_options *opts);
extern void mjit_postponed_job_register_start_hook(void);
extern void mjit_postponed_job_register_finish_hook(void);
extern void mjit_gc_start_hook(void);
extern void mjit_gc_finish_hook(void);
extern void mjit_free_iseq(const rb_iseq_t *iseq);
extern void mjit_mark(void);
extern struct mjit_cont *mjit_cont_new(rb_execution_context_t *ec);
extern void mjit_cont_free(struct mjit_cont *cont);
extern void mjit_add_class_serial(rb_serial_t class_serial);
extern void mjit_remove_class_serial(rb_serial_t class_serial);
#define JIT_ISEQ_SIZE_THRESHOLD 1000
static inline int
mjit_target_iseq_p(struct rb_iseq_constant_body *body)
{
    return (body->type == ISEQ_TYPE_METHOD || body->type == ISEQ_TYPE_BLOCK)
        && body->iseq_size < 1000;
}
static inline VALUE
mjit_exec(rb_execution_context_t *ec)
{
    const rb_iseq_t *iseq;
    struct rb_iseq_constant_body *body;
    long unsigned total_calls;
    mjit_func_t func;
    if (!mjit_call_p)
        return ((VALUE)RUBY_Qundef);
    iseq = ec->cfp->iseq;
    body = iseq->body;
    total_calls = ++body->total_calls;
    func = body->jit_func;
    if ((__builtin_expect(!!((uintptr_t)func <= (uintptr_t)LAST_JIT_ISEQ_FUNC), 0))) {
        switch ((enum rb_mjit_iseq_func)func) {
          case NOT_ADDED_JIT_ISEQ_FUNC:
            if (total_calls == mjit_opts.min_calls && mjit_target_iseq_p(body)) {
                mjit_add_iseq_to_process(iseq);
                if ((__builtin_expect(!!(mjit_opts.wait), 0))) {
                    return mjit_wait_call(ec, body);
                }
            }
            return ((VALUE)RUBY_Qundef);
          case NOT_READY_JIT_ISEQ_FUNC:
          case NOT_COMPILED_JIT_ISEQ_FUNC:
            return ((VALUE)RUBY_Qundef);
          default:
            break;
        }
    }
    return func(ec, ec->cfp);
}
void mjit_child_after_fork(void);
#define RUBY_INSNHELPER_H 

#pragma GCC visibility push(default)

extern __attribute__((dllimport)) VALUE ruby_vm_const_missing_count;
extern __attribute__((dllimport)) rb_serial_t ruby_vm_global_method_state;
extern __attribute__((dllimport)) rb_serial_t ruby_vm_global_constant_state;
extern __attribute__((dllimport)) rb_serial_t ruby_vm_class_serial;

#pragma GCC visibility pop

#define COLLECT_USAGE_INSN(insn) 
#define COLLECT_USAGE_OPERAND(insn,n,op) 
#define COLLECT_USAGE_REGISTER(reg,s) 
static inline int
rb_obj_hidden_p(VALUE obj)
{
    if ((((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
        return 0;
    }
    else {
        return (((struct RBasic*)(obj))->klass) ? 0 : 1;
    }
}
#define PUSH(x) (SET_SV(x), INC_SP(1))
#define TOPN(n) (*(GET_SP()-(n)-1))
#define POPN(n) (DEC_SP(n))
#define POP() (DEC_SP(1))
#define STACK_ADDR_FROM_TOP(n) (GET_SP()-(n))
#define GET_TOS() (tos)
#define VM_REG_CFP (reg_cfp)
#define VM_REG_PC (VM_REG_CFP->pc)
#define VM_REG_SP (VM_REG_CFP->sp)
#define VM_REG_EP (VM_REG_CFP->ep)
#define RESTORE_REGS() do { VM_REG_CFP = ec->cfp; } while (0)
#define REG_A reg_a
#define REG_B reg_b
enum vm_regan_regtype {
    VM_REGAN_PC = 0,
    VM_REGAN_SP = 1,
    VM_REGAN_EP = 2,
    VM_REGAN_CFP = 3,
    VM_REGAN_SELF = 4,
    VM_REGAN_ISEQ = 5
};
enum vm_regan_acttype {
    VM_REGAN_ACT_GET = 0,
    VM_REGAN_ACT_SET = 1
};
#define COLLECT_USAGE_REGISTER_HELPER(a,b,v) (v)
#define GET_PC() (COLLECT_USAGE_REGISTER_HELPER(PC, GET, VM_REG_PC))
#define SET_PC(x) (VM_REG_PC = (COLLECT_USAGE_REGISTER_HELPER(PC, SET, (x))))
#define GET_CURRENT_INSN() (*GET_PC())
#define GET_OPERAND(n) (GET_PC()[(n)])
#define ADD_PC(n) (SET_PC(VM_REG_PC + (n)))
#define JUMP(dst) (SET_PC(VM_REG_PC + (dst)))
#define GET_CFP() (COLLECT_USAGE_REGISTER_HELPER(CFP, GET, VM_REG_CFP))
#define GET_EP() (COLLECT_USAGE_REGISTER_HELPER(EP, GET, VM_REG_EP))
#define SET_EP(x) (VM_REG_EP = (COLLECT_USAGE_REGISTER_HELPER(EP, SET, (x))))
#define GET_LEP() (VM_EP_LEP(GET_EP()))
#define GET_SP() (COLLECT_USAGE_REGISTER_HELPER(SP, GET, VM_REG_SP))
#define SET_SP(x) (VM_REG_SP = (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
#define INC_SP(x) (VM_REG_SP += (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
#define DEC_SP(x) (VM_REG_SP -= (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
#define SET_SV(x) (*GET_SP() = (x))
#define GET_ISEQ() (GET_CFP()->iseq)
#define GET_PREV_EP(ep) ((VALUE *)((ep)[VM_ENV_DATA_INDEX_SPECVAL] & ~0x03))
#define GET_GLOBAL(entry) rb_gvar_get((struct rb_global_entry*)(entry))
#define SET_GLOBAL(entry,val) rb_gvar_set((struct rb_global_entry*)(entry), (val))
#define GET_CONST_INLINE_CACHE(dst) ((IC) * (GET_PC() + (dst) + 2))
#define GET_SELF() (COLLECT_USAGE_REGISTER_HELPER(SELF, GET, GET_CFP()->self))
#define EXEC_EC_CFP(val) do { if (ec->cfp->iseq->body->catch_except_p) { VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_FINISH); val = vm_exec(ec, TRUE); } else if ((val = mjit_exec(ec)) == Qundef) { VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_FINISH); val = vm_exec(ec, FALSE); } } while (0)
#define CALL_METHOD(calling,ci,cc) do { VALUE v = (*(cc)->call)(ec, GET_CFP(), (calling), (ci), (cc)); if (v == Qundef) { EXEC_EC_CFP(val); } else { val = v; } } while (0)
#define CC_SET_FASTPATH(cc,func,enabled) do { if (LIKELY(enabled)) ((cc)->call = (func)); } while (0)
#define GET_BLOCK_HANDLER() (GET_LEP()[VM_ENV_DATA_INDEX_SPECVAL])
#define SETUP_CANARY() 
#define CHECK_CANARY() 
#define FIXNUM_2_P(a,b) ((a) & (b) & 1)
#define FLONUM_2_P(a,b) 0
#define FLOAT_HEAP_P(x) (!SPECIAL_CONST_P(x) && RBASIC_CLASS(x) == rb_cFloat)
#define FLOAT_INSTANCE_P(x) (FLONUM_P(x) || FLOAT_HEAP_P(x))
#define USE_IC_FOR_SPECIALIZED_METHOD 1
#define NEXT_CLASS_SERIAL() (++ruby_vm_class_serial)
#define GET_GLOBAL_METHOD_STATE() (ruby_vm_global_method_state)
#define INC_GLOBAL_METHOD_STATE() (++ruby_vm_global_method_state)
#define GET_GLOBAL_CONSTANT_STATE() (ruby_vm_global_constant_state)
#define INC_GLOBAL_CONSTANT_STATE() (++ruby_vm_global_constant_state)
extern rb_method_definition_t *rb_method_definition_create(rb_method_type_t type, ID mid);
extern void rb_method_definition_set(const rb_method_entry_t *me, rb_method_definition_t *def, void *opts);
extern int rb_method_definition_eq(const rb_method_definition_t *d1, const rb_method_definition_t *d2);
extern VALUE rb_make_no_method_exception(VALUE exc, VALUE format, VALUE obj,
      int argc, const VALUE *argv, int priv);
static inline struct vm_throw_data *
THROW_DATA_NEW(VALUE val, const rb_control_frame_t *cf, VALUE st)
{
    return (struct vm_throw_data *)rb_imemo_new(imemo_throw_data, val, (VALUE)cf, st, 0);
}
static inline VALUE
THROW_DATA_VAL(const struct vm_throw_data *obj)
{
    ((void)0);
    return obj->throw_obj;
}
static inline const rb_control_frame_t *
THROW_DATA_CATCH_FRAME(const struct vm_throw_data *obj)
{
    ((void)0);
    return obj->catch_frame;
}
static inline int
THROW_DATA_STATE(const struct vm_throw_data *obj)
{
    ((void)0);
    return (int)obj->throw_state;
}
static inline int
THROW_DATA_CONSUMED_P(const struct vm_throw_data *obj)
{
    ((void)0);
    return obj->flags & ((VALUE)RUBY_FL_USER4);
}
static inline void
THROW_DATA_CATCH_FRAME_SET(struct vm_throw_data *obj, const rb_control_frame_t *cfp)
{
    ((void)0);
    obj->catch_frame = cfp;
}
static inline void
THROW_DATA_STATE_SET(struct vm_throw_data *obj, int st)
{
    ((void)0);
    obj->throw_state = (VALUE)st;
}
static inline void
THROW_DATA_CONSUMED_SET(struct vm_throw_data *obj)
{
    if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)((VALUE)(obj)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)((VALUE)(obj))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((VALUE)(obj)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(obj)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(obj)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)((VALUE)(obj)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(obj)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(obj)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((VALUE)(obj)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(obj)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(obj)))->flags & RUBY_T_MASK) == (RUBY_T_IMEMO))) &&
 THROW_DATA_STATE(obj) == RUBY_TAG_BREAK) {
 obj->flags |= ((VALUE)RUBY_FL_USER4);
    }
}
#define IS_ARGS_SPLAT(ci) ((ci)->flag & VM_CALL_ARGS_SPLAT)
#define IS_ARGS_KEYWORD(ci) ((ci)->flag & VM_CALL_KWARG)
#define CALLER_SETUP_ARG(cfp,calling,ci) do { if (UNLIKELY(IS_ARGS_SPLAT(ci))) vm_caller_setup_arg_splat((cfp), (calling)); if (UNLIKELY(IS_ARGS_KEYWORD(ci))) vm_caller_setup_arg_kw((cfp), (calling), (ci)); } while (0)
#define RUBY_VM_EXEC_H 
typedef long OFFSET;
typedef unsigned long lindex_t;
typedef VALUE GENTRY;
typedef rb_iseq_t *ISEQ;
#define PREFETCH(pc) 
#define debugs 
#define DEBUG_ENTER_INSN(insn) 
#define DEBUG_END_INSN() 
#define throwdebug if(0)printf
#define LABEL(x) INSN_LABEL_ ##x
#define ELABEL(x) INSN_ELABEL_ ##x
#define LABEL_PTR(x) RB_GNUC_EXTENSION(&&LABEL(x))
#define INSN_ENTRY_SIG(insn) if (0) fprintf(stderr, "exec: %s@(%d, %d)@%s:%d\n", #insn, (int)(reg_pc - reg_cfp->iseq->body->iseq_encoded), (int)(reg_cfp->pc - reg_cfp->iseq->body->iseq_encoded), RSTRING_PTR(rb_iseq_path(reg_cfp->iseq)), (int)(rb_iseq_line_no(reg_cfp->iseq, reg_pc - reg_cfp->iseq->body->iseq_encoded)));
#define INSN_DISPATCH_SIG(insn) 
#define INSN_ENTRY(insn) LABEL(insn): INSN_ENTRY_SIG(insn);
#define DISPATCH_ARCH_DEPEND_WAY(addr) 
#define TC_DISPATCH(insn) INSN_DISPATCH_SIG(insn); RB_GNUC_EXTENSION_BLOCK(goto *(void const *)GET_CURRENT_INSN()); ;
#define END_INSN(insn) DEBUG_END_INSN(); TC_DISPATCH(insn);
#define INSN_DISPATCH() TC_DISPATCH(__START__) {
#define END_INSNS_DISPATCH() rb_bug("unknown insn: %"PRIdVALUE, GET_CURRENT_INSN()); }
#define NEXT_INSN() TC_DISPATCH(__NEXT_INSN__)
#define START_OF_ORIGINAL_INSN(x) start_of_ ##x:
#define DISPATCH_ORIGINAL_INSN(x) goto start_of_ ##x;
#define VM_SP_CNT(ec,sp) ((sp) - (ec)->vm_stack)
#define THROW_EXCEPTION(exc) do { ec->errinfo = (VALUE)(exc); EC_JUMP_TAG(ec, ec->tag->state); } while (0)
#define SCREG(r) (reg_ ##r)
#define VM_DEBUG_STACKOVERFLOW 0
#define CHECK_VM_STACK_OVERFLOW_FOR_INSN(cfp,margin) 
#define INSN_LABEL2(insn,name) INSN_LABEL_ ## insn ## _ ## name
#define INSN_LABEL(x) INSN_LABEL2(NAME_OF_CURRENT_INSN, x)
#define BIN(n) YARVINSN_ ##n
enum ruby_vminsn_type {
    YARVINSN_nop,
    YARVINSN_getlocal,
    YARVINSN_setlocal,
    YARVINSN_getblockparam,
    YARVINSN_setblockparam,
    YARVINSN_getblockparamproxy,
    YARVINSN_getspecial,
    YARVINSN_setspecial,
    YARVINSN_getinstancevariable,
    YARVINSN_setinstancevariable,
    YARVINSN_getclassvariable,
    YARVINSN_setclassvariable,
    YARVINSN_getconstant,
    YARVINSN_setconstant,
    YARVINSN_getglobal,
    YARVINSN_setglobal,
    YARVINSN_putnil,
    YARVINSN_putself,
    YARVINSN_putobject,
    YARVINSN_putspecialobject,
    YARVINSN_putiseq,
    YARVINSN_putstring,
    YARVINSN_concatstrings,
    YARVINSN_tostring,
    YARVINSN_freezestring,
    YARVINSN_toregexp,
    YARVINSN_intern,
    YARVINSN_newarray,
    YARVINSN_duparray,
    YARVINSN_duphash,
    YARVINSN_expandarray,
    YARVINSN_concatarray,
    YARVINSN_splatarray,
    YARVINSN_newhash,
    YARVINSN_newrange,
    YARVINSN_pop,
    YARVINSN_dup,
    YARVINSN_dupn,
    YARVINSN_swap,
    YARVINSN_reverse,
    YARVINSN_reput,
    YARVINSN_topn,
    YARVINSN_setn,
    YARVINSN_adjuststack,
    YARVINSN_defined,
    YARVINSN_checkmatch,
    YARVINSN_checkkeyword,
    YARVINSN_checktype,
    YARVINSN_defineclass,
    YARVINSN_send,
    YARVINSN_opt_send_without_block,
    YARVINSN_opt_str_freeze,
    YARVINSN_opt_str_uminus,
    YARVINSN_opt_newarray_max,
    YARVINSN_opt_newarray_min,
    YARVINSN_invokesuper,
    YARVINSN_invokeblock,
    YARVINSN_leave,
    YARVINSN_throw,
    YARVINSN_jump,
    YARVINSN_branchif,
    YARVINSN_branchunless,
    YARVINSN_branchnil,
    YARVINSN_opt_getinlinecache,
    YARVINSN_opt_setinlinecache,
    YARVINSN_once,
    YARVINSN_opt_case_dispatch,
    YARVINSN_opt_plus,
    YARVINSN_opt_minus,
    YARVINSN_opt_mult,
    YARVINSN_opt_div,
    YARVINSN_opt_mod,
    YARVINSN_opt_eq,
    YARVINSN_opt_neq,
    YARVINSN_opt_lt,
    YARVINSN_opt_le,
    YARVINSN_opt_gt,
    YARVINSN_opt_ge,
    YARVINSN_opt_ltlt,
    YARVINSN_opt_and,
    YARVINSN_opt_or,
    YARVINSN_opt_aref,
    YARVINSN_opt_aset,
    YARVINSN_opt_aset_with,
    YARVINSN_opt_aref_with,
    YARVINSN_opt_length,
    YARVINSN_opt_size,
    YARVINSN_opt_empty_p,
    YARVINSN_opt_succ,
    YARVINSN_opt_not,
    YARVINSN_opt_regexpmatch1,
    YARVINSN_opt_regexpmatch2,
    YARVINSN_opt_call_c_function,
    YARVINSN_bitblt,
    YARVINSN_answer,
    YARVINSN_getlocal_WC_0,
    YARVINSN_getlocal_WC_1,
    YARVINSN_setlocal_WC_0,
    YARVINSN_setlocal_WC_1,
    YARVINSN_putobject_INT2FIX_0_,
    YARVINSN_putobject_INT2FIX_1_,
    YARVINSN_trace_nop,
    YARVINSN_trace_getlocal,
    YARVINSN_trace_setlocal,
    YARVINSN_trace_getblockparam,
    YARVINSN_trace_setblockparam,
    YARVINSN_trace_getblockparamproxy,
    YARVINSN_trace_getspecial,
    YARVINSN_trace_setspecial,
    YARVINSN_trace_getinstancevariable,
    YARVINSN_trace_setinstancevariable,
    YARVINSN_trace_getclassvariable,
    YARVINSN_trace_setclassvariable,
    YARVINSN_trace_getconstant,
    YARVINSN_trace_setconstant,
    YARVINSN_trace_getglobal,
    YARVINSN_trace_setglobal,
    YARVINSN_trace_putnil,
    YARVINSN_trace_putself,
    YARVINSN_trace_putobject,
    YARVINSN_trace_putspecialobject,
    YARVINSN_trace_putiseq,
    YARVINSN_trace_putstring,
    YARVINSN_trace_concatstrings,
    YARVINSN_trace_tostring,
    YARVINSN_trace_freezestring,
    YARVINSN_trace_toregexp,
    YARVINSN_trace_intern,
    YARVINSN_trace_newarray,
    YARVINSN_trace_duparray,
    YARVINSN_trace_duphash,
    YARVINSN_trace_expandarray,
    YARVINSN_trace_concatarray,
    YARVINSN_trace_splatarray,
    YARVINSN_trace_newhash,
    YARVINSN_trace_newrange,
    YARVINSN_trace_pop,
    YARVINSN_trace_dup,
    YARVINSN_trace_dupn,
    YARVINSN_trace_swap,
    YARVINSN_trace_reverse,
    YARVINSN_trace_reput,
    YARVINSN_trace_topn,
    YARVINSN_trace_setn,
    YARVINSN_trace_adjuststack,
    YARVINSN_trace_defined,
    YARVINSN_trace_checkmatch,
    YARVINSN_trace_checkkeyword,
    YARVINSN_trace_checktype,
    YARVINSN_trace_defineclass,
    YARVINSN_trace_send,
    YARVINSN_trace_opt_send_without_block,
    YARVINSN_trace_opt_str_freeze,
    YARVINSN_trace_opt_str_uminus,
    YARVINSN_trace_opt_newarray_max,
    YARVINSN_trace_opt_newarray_min,
    YARVINSN_trace_invokesuper,
    YARVINSN_trace_invokeblock,
    YARVINSN_trace_leave,
    YARVINSN_trace_throw,
    YARVINSN_trace_jump,
    YARVINSN_trace_branchif,
    YARVINSN_trace_branchunless,
    YARVINSN_trace_branchnil,
    YARVINSN_trace_opt_getinlinecache,
    YARVINSN_trace_opt_setinlinecache,
    YARVINSN_trace_once,
    YARVINSN_trace_opt_case_dispatch,
    YARVINSN_trace_opt_plus,
    YARVINSN_trace_opt_minus,
    YARVINSN_trace_opt_mult,
    YARVINSN_trace_opt_div,
    YARVINSN_trace_opt_mod,
    YARVINSN_trace_opt_eq,
    YARVINSN_trace_opt_neq,
    YARVINSN_trace_opt_lt,
    YARVINSN_trace_opt_le,
    YARVINSN_trace_opt_gt,
    YARVINSN_trace_opt_ge,
    YARVINSN_trace_opt_ltlt,
    YARVINSN_trace_opt_and,
    YARVINSN_trace_opt_or,
    YARVINSN_trace_opt_aref,
    YARVINSN_trace_opt_aset,
    YARVINSN_trace_opt_aset_with,
    YARVINSN_trace_opt_aref_with,
    YARVINSN_trace_opt_length,
    YARVINSN_trace_opt_size,
    YARVINSN_trace_opt_empty_p,
    YARVINSN_trace_opt_succ,
    YARVINSN_trace_opt_not,
    YARVINSN_trace_opt_regexpmatch1,
    YARVINSN_trace_opt_regexpmatch2,
    YARVINSN_trace_opt_call_c_function,
    YARVINSN_trace_bitblt,
    YARVINSN_trace_answer,
    YARVINSN_trace_getlocal_WC_0,
    YARVINSN_trace_getlocal_WC_1,
    YARVINSN_trace_setlocal_WC_0,
    YARVINSN_trace_setlocal_WC_1,
    YARVINSN_trace_putobject_INT2FIX_0_,
    YARVINSN_trace_putobject_INT2FIX_1_,
    VM_INSTRUCTION_SIZE
};
#define ASSERT_VM_INSTRUCTION_SIZE(array) STATIC_ASSERT(numberof_ ##array, numberof(array) == VM_INSTRUCTION_SIZE)
#define CONSTANT_H 
typedef enum {
    CONST_DEPRECATED = 0x100,
    CONST_VISIBILITY_MASK = 0xff,
    CONST_PUBLIC = 0x00,
    CONST_PRIVATE,
    CONST_VISIBILITY_MAX
} rb_const_flag_t;
#define RB_CONST_PRIVATE_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PRIVATE)
#define RB_CONST_PUBLIC_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PUBLIC)
#define RB_CONST_DEPRECATED_P(ce) ((ce)->flag & CONST_DEPRECATED)
typedef struct rb_const_entry_struct {
    rb_const_flag_t flag;
    int line;
    const VALUE value;
    const VALUE file;
} rb_const_entry_t;
VALUE rb_mod_private_constant(int argc, const VALUE *argv, VALUE obj);
VALUE rb_mod_public_constant(int argc, const VALUE *argv, VALUE obj);
VALUE rb_mod_deprecate_constant(int argc, const VALUE *argv, VALUE obj);
void rb_free_const_table(struct rb_id_table *tbl);
VALUE rb_public_const_get(VALUE klass, ID id);
VALUE rb_public_const_get_at(VALUE klass, ID id);
VALUE rb_public_const_get_from(VALUE klass, ID id);
int rb_public_const_defined(VALUE klass, ID id);
int rb_public_const_defined_at(VALUE klass, ID id);
int rb_public_const_defined_from(VALUE klass, ID id);
rb_const_entry_t *rb_const_lookup(VALUE klass, ID id);
int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag);
#define USE_DEBUG_COUNTER 0
#define RUBY_DEBUG_COUNTER_H 1
enum rb_debug_counter_type {
#define RB_DEBUG_COUNTER(name) RB_DEBUG_COUNTER_ ##name,
RB_DEBUG_COUNTER_mc_inline_hit,
RB_DEBUG_COUNTER_mc_inline_miss,
RB_DEBUG_COUNTER_mc_global_hit,
RB_DEBUG_COUNTER_mc_global_miss,
RB_DEBUG_COUNTER_mc_global_state_miss,
RB_DEBUG_COUNTER_mc_class_serial_miss,
RB_DEBUG_COUNTER_mc_cme_complement,
RB_DEBUG_COUNTER_mc_cme_complement_hit,
RB_DEBUG_COUNTER_mc_search_super,
RB_DEBUG_COUNTER_frame_push,
RB_DEBUG_COUNTER_frame_push_method,
RB_DEBUG_COUNTER_frame_push_block,
RB_DEBUG_COUNTER_frame_push_class,
RB_DEBUG_COUNTER_frame_push_top,
RB_DEBUG_COUNTER_frame_push_cfunc,
RB_DEBUG_COUNTER_frame_push_ifunc,
RB_DEBUG_COUNTER_frame_push_eval,
RB_DEBUG_COUNTER_frame_push_rescue,
RB_DEBUG_COUNTER_frame_push_dummy,
RB_DEBUG_COUNTER_frame_R2R,
RB_DEBUG_COUNTER_frame_R2C,
RB_DEBUG_COUNTER_frame_C2C,
RB_DEBUG_COUNTER_frame_C2R,
RB_DEBUG_COUNTER_ivar_get_ic_hit,
RB_DEBUG_COUNTER_ivar_get_ic_miss,
RB_DEBUG_COUNTER_ivar_get_ic_miss_serial,
RB_DEBUG_COUNTER_ivar_get_ic_miss_unset,
RB_DEBUG_COUNTER_ivar_get_ic_miss_noobject,
RB_DEBUG_COUNTER_ivar_set_ic_hit,
RB_DEBUG_COUNTER_ivar_set_ic_miss,
RB_DEBUG_COUNTER_ivar_set_ic_miss_serial,
RB_DEBUG_COUNTER_ivar_set_ic_miss_unset,
RB_DEBUG_COUNTER_ivar_set_ic_miss_oorange,
RB_DEBUG_COUNTER_ivar_set_ic_miss_noobject,
RB_DEBUG_COUNTER_ivar_get_base,
RB_DEBUG_COUNTER_ivar_set_base,
RB_DEBUG_COUNTER_lvar_get,
RB_DEBUG_COUNTER_lvar_get_dynamic,
RB_DEBUG_COUNTER_lvar_set,
RB_DEBUG_COUNTER_lvar_set_dynamic,
RB_DEBUG_COUNTER_lvar_set_slowpath,
RB_DEBUG_COUNTER_gc_count,
RB_DEBUG_COUNTER_gc_minor_newobj,
RB_DEBUG_COUNTER_gc_minor_malloc,
RB_DEBUG_COUNTER_gc_minor_method,
RB_DEBUG_COUNTER_gc_minor_capi,
RB_DEBUG_COUNTER_gc_minor_stress,
RB_DEBUG_COUNTER_gc_major_nofree,
RB_DEBUG_COUNTER_gc_major_oldgen,
RB_DEBUG_COUNTER_gc_major_shady,
RB_DEBUG_COUNTER_gc_major_force,
RB_DEBUG_COUNTER_gc_major_oldmalloc,
RB_DEBUG_COUNTER_obj_newobj,
RB_DEBUG_COUNTER_obj_newobj_slowpath,
RB_DEBUG_COUNTER_obj_newobj_wb_unprotected,
RB_DEBUG_COUNTER_obj_free,
RB_DEBUG_COUNTER_obj_promote,
RB_DEBUG_COUNTER_obj_wb_unprotect,
RB_DEBUG_COUNTER_obj_obj_embed,
RB_DEBUG_COUNTER_obj_obj_transient,
RB_DEBUG_COUNTER_obj_obj_ptr,
RB_DEBUG_COUNTER_obj_str_ptr,
RB_DEBUG_COUNTER_obj_str_embed,
RB_DEBUG_COUNTER_obj_str_shared,
RB_DEBUG_COUNTER_obj_str_nofree,
RB_DEBUG_COUNTER_obj_str_fstr,
RB_DEBUG_COUNTER_obj_ary_embed,
RB_DEBUG_COUNTER_obj_ary_transient,
RB_DEBUG_COUNTER_obj_ary_ptr,
RB_DEBUG_COUNTER_obj_hash_empty,
RB_DEBUG_COUNTER_obj_hash_under4,
RB_DEBUG_COUNTER_obj_hash_ge4,
RB_DEBUG_COUNTER_obj_hash_ge8,
RB_DEBUG_COUNTER_obj_hash_ar,
RB_DEBUG_COUNTER_obj_hash_st,
RB_DEBUG_COUNTER_obj_hash_transient,
RB_DEBUG_COUNTER_obj_hash_force_convert,
RB_DEBUG_COUNTER_obj_struct_embed,
RB_DEBUG_COUNTER_obj_struct_transient,
RB_DEBUG_COUNTER_obj_struct_ptr,
RB_DEBUG_COUNTER_obj_regexp_ptr,
RB_DEBUG_COUNTER_obj_data_empty,
RB_DEBUG_COUNTER_obj_data_xfree,
RB_DEBUG_COUNTER_obj_data_imm_free,
RB_DEBUG_COUNTER_obj_data_zombie,
RB_DEBUG_COUNTER_obj_match_ptr,
RB_DEBUG_COUNTER_obj_file_ptr,
RB_DEBUG_COUNTER_obj_bignum_ptr,
RB_DEBUG_COUNTER_obj_symbol,
RB_DEBUG_COUNTER_obj_imemo_ment,
RB_DEBUG_COUNTER_obj_imemo_iseq,
RB_DEBUG_COUNTER_obj_imemo_env,
RB_DEBUG_COUNTER_obj_imemo_tmpbuf,
RB_DEBUG_COUNTER_obj_imemo_ast,
RB_DEBUG_COUNTER_obj_imemo_cref,
RB_DEBUG_COUNTER_obj_imemo_svar,
RB_DEBUG_COUNTER_obj_imemo_throw_data,
RB_DEBUG_COUNTER_obj_imemo_ifunc,
RB_DEBUG_COUNTER_obj_imemo_memo,
RB_DEBUG_COUNTER_obj_imemo_parser_strterm,
RB_DEBUG_COUNTER_obj_iclass_ptr,
RB_DEBUG_COUNTER_obj_class_ptr,
RB_DEBUG_COUNTER_obj_module_ptr,
RB_DEBUG_COUNTER_heap_xmalloc,
RB_DEBUG_COUNTER_heap_xrealloc,
RB_DEBUG_COUNTER_heap_xfree,
RB_DEBUG_COUNTER_theap_alloc,
RB_DEBUG_COUNTER_theap_alloc_fail,
RB_DEBUG_COUNTER_theap_evacuate,
    RB_DEBUG_COUNTER_MAX
#undef RB_DEBUG_COUNTER
};
#define RB_DEBUG_COUNTER_INC(type) ((void)0)
#define RB_DEBUG_COUNTER_INC_UNLESS(type,cond) (cond)
#define RB_DEBUG_COUNTER_INC_IF(type,cond) (cond)
void rb_debug_counter_show_results(const char *msg);
static rb_control_frame_t *vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
static VALUE
ruby_vm_special_exception_copy(VALUE exc)
{
    VALUE e = rb_obj_alloc(rb_class_real((((struct RBasic*)(exc))->klass)));
    rb_obj_copy_ivar(e, exc);
    return e;
}
__attribute__ ((__noreturn__)) static void ec_stack_overflow(rb_execution_context_t *ec, int);
static void
ec_stack_overflow(rb_execution_context_t *ec, int setup)
{
    VALUE mesg = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_sysstack];
    ec->raised_flag = RAISED_STACKOVERFLOW;
    if (setup) {
 VALUE at = rb_ec_backtrace_object(ec);
 mesg = ruby_vm_special_exception_copy(mesg);
 rb_ivar_set(mesg, idBt, at);
 rb_ivar_set(mesg, idBt_locations, at);
    }
    ec->errinfo = mesg;
    rb_ec_tag_jump(ec, RUBY_TAG_RAISE);
}
__attribute__ ((__noreturn__)) static void vm_stackoverflow(void);
static void
vm_stackoverflow(void)
{
    ec_stack_overflow(rb_current_execution_context(), 1);
}
__attribute__ ((__noreturn__)) static void rb_ec_stack_overflow(rb_execution_context_t *ec, int crit);
static void
rb_ec_stack_overflow(rb_execution_context_t *ec, int crit)
{
    if (crit || rb_during_gc()) {
 ec->raised_flag = RAISED_STACKOVERFLOW;
 ec->errinfo = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_stackfatal];
 rb_ec_tag_jump(ec, RUBY_TAG_RAISE);
    }
    ec_stack_overflow(ec, 0);
}
#define vm_check_frame(a,b,c,d) 
static inline rb_control_frame_t *
vm_push_frame(rb_execution_context_t *ec,
       const rb_iseq_t *iseq,
       VALUE type,
       VALUE self,
       VALUE specval,
       VALUE cref_or_me,
       const VALUE *pc,
       VALUE *sp,
       int local_size,
       int stack_max)
{
    rb_control_frame_t *const cfp = ec->cfp - 1;
    int i;
    ;
    ((void)0);
    if ((__builtin_expect(!!(!(!(1/!!(sizeof(*(sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)((sp) + (local_size + stack_max)) + 1) >= (cfp))), 1))) {(void)0;} else vm_stackoverflow();
    ec->cfp = cfp;
    cfp->pc = (VALUE *)pc;
    cfp->iseq = (rb_iseq_t *)iseq;
    cfp->self = self;
    cfp->block_code = ((void *)0);
    for (i=0; i < local_size; i++) {
 *sp++ = ((VALUE)RUBY_Qnil);
    }
    ((void)0);
    ((void)0);
    ((void)0);
    *sp++ = cref_or_me;
    *sp++ = specval ;
    *sp = type;
    cfp->ep = cfp->bp = sp;
    cfp->sp = sp + 1;
    if (0 == 2) {
 rb_vmdebug_stack_dump_raw(rb_current_execution_context(), rb_current_execution_context()->cfp);
    }
    return cfp;
}
rb_control_frame_t *
rb_vm_push_frame(rb_execution_context_t *ec,
   const rb_iseq_t *iseq,
   VALUE type,
   VALUE self,
   VALUE specval,
   VALUE cref_or_me,
   const VALUE *pc,
   VALUE *sp,
   int local_size,
   int stack_max)
{
    return vm_push_frame(ec, iseq, type, self, specval, cref_or_me, pc, sp, local_size, stack_max);
}
static inline int
vm_pop_frame(rb_execution_context_t *ec, rb_control_frame_t *cfp, const VALUE *ep)
{
    VALUE flags = ep[( 0)];
    if (0 >= 4) rb_gc_verify_internal_consistency();
    if (0 == 2) rb_vmdebug_stack_dump_raw(rb_current_execution_context(), rb_current_execution_context()->cfp);
    ec->cfp = ((cfp)+1);
    return flags & VM_FRAME_FLAG_FINISH;
}
static void
rb_vm_pop_frame(rb_execution_context_t *ec)
{
    vm_pop_frame(ec, ec->cfp, ec->cfp->ep);
}
static inline VALUE
rb_arity_error_new(int argc, int min, int max)
{
    VALUE err_mess = 0;
    if (min == max) {
 err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d)", argc, min);
    }
    else if (max == (-1)) {
 err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d+)", argc, min);
    }
    else {
 err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d..%d)", argc, min, max);
    }
    return rb_exc_new_str(rb_eArgError, err_mess);
}
static void
rb_error_arity(int argc, int min, int max)
{
    rb_exc_raise(rb_arity_error_new(argc, min, max));
}
__attribute__ ((__noinline__)) static void vm_env_write_slowpath(const VALUE *ep, int index, VALUE v);
static void
vm_env_write_slowpath(const VALUE *ep, int index, VALUE v)
{
    rb_gc_writebarrier_remember(VM_ENV_ENVVAL(ep));
    VM_FORCE_WRITE(&ep[index], v);
    VM_ENV_FLAGS_UNSET(ep, VM_ENV_FLAG_WB_REQUIRED);
    ((void)0);
}
static inline void
vm_env_write(const VALUE *ep, int index, VALUE v)
{
    VALUE flags = ep[( 0)];
    if ((__builtin_expect(!!((flags & VM_ENV_FLAG_WB_REQUIRED) == 0), 1))) {
 VM_STACK_ENV_WRITE(ep, index, v);
    }
    else {
 vm_env_write_slowpath(ep, index, v);
    }
}
static VALUE
rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler)
{
    if (block_handler == 0) {
 return ((VALUE)RUBY_Qnil);
    }
    else {
 switch (vm_block_handler_type(block_handler)) {
   case block_handler_type_iseq:
   case block_handler_type_ifunc:
     return rb_vm_make_proc(ec, VM_BH_TO_CAPT_BLOCK(block_handler), rb_cProc);
   case block_handler_type_symbol:
     return rb_sym_to_proc(VM_BH_TO_SYMBOL(block_handler));
   case block_handler_type_proc:
     return VM_BH_TO_PROC(block_handler);
   default:
     __builtin_unreachable();
 }
    }
}
static inline struct vm_svar *
lep_svar(const rb_execution_context_t *ec, const VALUE *lep)
{
    VALUE svar;
    if (lep && (ec == ((void *)0) || ec->root_lep != lep)) {
 svar = lep[(-2)];
    }
    else {
 svar = ec->root_svar;
    }
    ((void)0);
    return (struct vm_svar *)svar;
}
static inline void
lep_svar_write(const rb_execution_context_t *ec, const VALUE *lep, const struct vm_svar *svar)
{
    ((void)0);
    if (lep && (ec == ((void *)0) || ec->root_lep != lep)) {
 vm_env_write(lep, (-2), (VALUE)svar);
    }
    else {
 rb_obj_write((VALUE)(rb_ec_thread_ptr(ec)->self), (VALUE *)(&ec->root_svar), (VALUE)(svar), "../ruby-2.6.9/vm_insnhelper.c", 441);
    }
}
static VALUE
lep_svar_get(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key)
{
    const struct vm_svar *svar = lep_svar(ec, lep);
    if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) return ((VALUE)RUBY_Qnil);
    switch (key) {
      case VM_SVAR_LASTLINE:
 return svar->lastline;
      case VM_SVAR_BACKREF:
 return svar->backref;
      default: {
 const VALUE ary = svar->others;
 if (!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
     return ((VALUE)RUBY_Qnil);
 }
 else {
     return rb_ary_entry(ary, key - VM_SVAR_EXTRA_START);
 }
      }
    }
}
static struct vm_svar *
svar_new(VALUE obj)
{
    return (struct vm_svar *)rb_imemo_new(imemo_svar, ((VALUE)RUBY_Qnil), ((VALUE)RUBY_Qnil), ((VALUE)RUBY_Qnil), obj);
}
static void
lep_svar_set(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, VALUE val)
{
    struct vm_svar *svar = lep_svar(ec, lep);
    if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) {
 lep_svar_write(ec, lep, svar = svar_new((VALUE)svar));
    }
    switch (key) {
      case VM_SVAR_LASTLINE:
 rb_obj_write((VALUE)(svar), (VALUE *)(&svar->lastline), (VALUE)(val), "../ruby-2.6.9/vm_insnhelper.c", 487);
 return;
      case VM_SVAR_BACKREF:
 rb_obj_write((VALUE)(svar), (VALUE *)(&svar->backref), (VALUE)(val), "../ruby-2.6.9/vm_insnhelper.c", 490);
 return;
      default: {
 VALUE ary = svar->others;
 if (!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
     rb_obj_write((VALUE)(svar), (VALUE *)(&svar->others), (VALUE)(ary = rb_ary_new()), "../ruby-2.6.9/vm_insnhelper.c", 496);
 }
 rb_ary_store(ary, key - VM_SVAR_EXTRA_START, val);
      }
    }
}
static inline VALUE
vm_getspecial(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, rb_num_t type)
{
    VALUE val;
    if (type == 0) {
 val = lep_svar_get(ec, lep, key);
    }
    else {
 VALUE backref = lep_svar_get(ec, lep, VM_SVAR_BACKREF);
 if (type & 0x01) {
     switch (type >> 1) {
       case '&':
  val = rb_reg_last_match(backref);
  break;
       case '`':
  val = rb_reg_match_pre(backref);
  break;
       case '\'':
  val = rb_reg_match_post(backref);
  break;
       case '+':
  val = rb_reg_match_last(backref);
  break;
       default:
  rb_bug("unexpected back-ref");
     }
 }
 else {
     val = rb_reg_nth_match((int)(type >> 1), backref);
 }
    }
    return val;
}
__attribute__ ((__pure__)) static rb_callable_method_entry_t *check_method_entry(VALUE obj, int can_be_svar);
static rb_callable_method_entry_t *
check_method_entry(VALUE obj, int can_be_svar)
{
    if (obj == ((VALUE)RUBY_Qfalse)) return ((void *)0);
    switch (imemo_type(obj)) {
      case imemo_ment:
 return (rb_callable_method_entry_t *)obj;
      case imemo_cref:
 return ((void *)0);
      case imemo_svar:
 if (can_be_svar) {
     return check_method_entry(((struct vm_svar *)obj)->cref_or_me, 0);
 }
      default:
 return ((void *)0);
    }
}
static const rb_callable_method_entry_t *
rb_vm_frame_method_entry(const rb_control_frame_t *cfp)
{
    const VALUE *ep = cfp->ep;
    rb_callable_method_entry_t *me;
    while (!VM_ENV_LOCAL_P(ep)) {
 if ((me = check_method_entry(ep[(-2)], 0)) != ((void *)0)) return me;
 ep = VM_ENV_PREV_EP(ep);
    }
    return check_method_entry(ep[(-2)], 1);
}
static rb_cref_t *
method_entry_cref(rb_callable_method_entry_t *me)
{
    switch (me->def->type) {
      case VM_METHOD_TYPE_ISEQ:
 return me->def->body.iseq.cref;
      default:
 return ((void *)0);
    }
}
__attribute__ ((__pure__)) static rb_cref_t *check_cref(VALUE, int);
static rb_cref_t *
check_cref(VALUE obj, int can_be_svar)
{
    if (obj == ((VALUE)RUBY_Qfalse)) return ((void *)0);
    switch (imemo_type(obj)) {
      case imemo_ment:
 return method_entry_cref((rb_callable_method_entry_t *)obj);
      case imemo_cref:
 return (rb_cref_t *)obj;
      case imemo_svar:
 if (can_be_svar) {
     return check_cref(((struct vm_svar *)obj)->cref_or_me, 0);
 }
      default:
 return ((void *)0);
    }
}
static inline rb_cref_t *
vm_env_cref(const VALUE *ep)
{
    rb_cref_t *cref;
    while (!VM_ENV_LOCAL_P(ep)) {
 if ((cref = check_cref(ep[(-2)], 0)) != ((void *)0)) return cref;
 ep = VM_ENV_PREV_EP(ep);
    }
    return check_cref(ep[(-2)], 1);
}
static int
is_cref(const VALUE v, int can_be_svar)
{
    if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)(v))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? ((v) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? ((v) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? ((v) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? ((v) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)(v)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == (RUBY_T_IMEMO)))) {
 switch (imemo_type(v)) {
   case imemo_cref:
     return 1;
   case imemo_svar:
     if (can_be_svar) return is_cref(((struct vm_svar *)v)->cref_or_me, 0);
   default:
     break;
 }
    }
    return 0;
}
static int
vm_env_cref_by_cref(const VALUE *ep)
{
    while (!VM_ENV_LOCAL_P(ep)) {
 if (is_cref(ep[(-2)], 0)) return 1;
 ep = VM_ENV_PREV_EP(ep);
    }
    return is_cref(ep[(-2)], 1);
}
static rb_cref_t *
cref_replace_with_duplicated_cref_each_frame(const VALUE *vptr, int can_be_svar, VALUE parent)
{
    const VALUE v = *vptr;
    rb_cref_t *cref, *new_cref;
    if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)(v))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? ((v) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? ((v) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? ((v) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? ((v) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)(v)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == (RUBY_T_IMEMO)))) {
 switch (imemo_type(v)) {
   case imemo_cref:
     cref = (rb_cref_t *)v;
     new_cref = vm_cref_dup(cref);
     if (parent) {
  rb_obj_write((VALUE)(parent), (VALUE *)(vptr), (VALUE)(new_cref), "../ruby-2.6.9/vm_insnhelper.c", 671);
     }
     else {
  VM_FORCE_WRITE(vptr, (VALUE)new_cref);
     }
     return (rb_cref_t *)new_cref;
   case imemo_svar:
     if (can_be_svar) {
  return cref_replace_with_duplicated_cref_each_frame((const VALUE *)&((struct vm_svar *)v)->cref_or_me, 0, v);
     }
   case imemo_ment:
     rb_bug("cref_replace_with_duplicated_cref_each_frame: unreachable");
   default:
     break;
 }
    }
    return 0;
}
static rb_cref_t *
vm_cref_replace_with_duplicated_cref(const VALUE *ep)
{
    if (vm_env_cref_by_cref(ep)) {
 rb_cref_t *cref;
 VALUE envval;
 while (!VM_ENV_LOCAL_P(ep)) {
     envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse);
     if ((cref = cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 0, envval)) != ((void *)0)) {
  return cref;
     }
     ep = VM_ENV_PREV_EP(ep);
 }
 envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse);
 return cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 1, envval);
    }
    else {
 rb_bug("vm_cref_dup: unreachable");
    }
}
static rb_cref_t *
rb_vm_get_cref(const VALUE *ep)
{
    rb_cref_t *cref = vm_env_cref(ep);
    if (cref != ((void *)0)) {
 return cref;
    }
    else {
 rb_bug("rb_vm_get_cref: unreachable");
    }
}
static const rb_cref_t *
vm_get_const_key_cref(const VALUE *ep)
{
    const rb_cref_t *cref = rb_vm_get_cref(ep);
    const rb_cref_t *key_cref = cref;
    while (cref) {
 if (((!(((VALUE)(CREF_CLASS(cref)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(CREF_CLASS(cref)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(CREF_CLASS(cref)))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((CREF_CLASS(cref))))->flags&((((VALUE)RUBY_FL_SINGLETON)))):0)) {
     return key_cref;
 }
 cref = CREF_NEXT(cref);
    }
    return ((void *)0);
}
void
rb_vm_rewrite_cref(rb_cref_t *cref, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr)
{
    rb_cref_t *new_cref;
    while (cref) {
 if (CREF_CLASS(cref) == old_klass) {
     new_cref = vm_cref_new_use_prev(new_klass, METHOD_VISI_UNDEF, 0, cref, 0);
     *new_cref_ptr = new_cref;
     return;
 }
 new_cref = vm_cref_new_use_prev(CREF_CLASS(cref), METHOD_VISI_UNDEF, 0, cref, 0);
 cref = CREF_NEXT(cref);
 *new_cref_ptr = new_cref;
 new_cref_ptr = (rb_cref_t **)&new_cref->next;
    }
    *new_cref_ptr = ((void *)0);
}
static rb_cref_t *
vm_cref_push(const rb_execution_context_t *ec, VALUE klass, const VALUE *ep, int pushed_by_eval)
{
    rb_cref_t *prev_cref = ((void *)0);
    if (ep) {
 prev_cref = vm_env_cref(ep);
    }
    else {
 rb_control_frame_t *cfp = vm_get_ruby_level_caller_cfp(ec, ec->cfp);
 if (cfp) {
     prev_cref = vm_env_cref(cfp->ep);
 }
    }
    return vm_cref_new(klass, METHOD_VISI_PUBLIC, 0, prev_cref, pushed_by_eval);
}
static inline VALUE
vm_get_cbase(const VALUE *ep)
{
    const rb_cref_t *cref = rb_vm_get_cref(ep);
    VALUE klass = ((VALUE)RUBY_Qundef);
    while (cref) {
 if ((klass = CREF_CLASS(cref)) != 0) {
     break;
 }
 cref = CREF_NEXT(cref);
    }
    return klass;
}
static inline VALUE
vm_get_const_base(const VALUE *ep)
{
    const rb_cref_t *cref = rb_vm_get_cref(ep);
    VALUE klass = ((VALUE)RUBY_Qundef);
    while (cref) {
 if (!CREF_PUSHED_BY_EVAL(cref) &&
     (klass = CREF_CLASS(cref)) != 0) {
     break;
 }
 cref = CREF_NEXT(cref);
    }
    return klass;
}
static inline void
vm_check_if_namespace(VALUE klass)
{
    if (!( ((RUBY_T_CLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_CLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_CLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_CLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_CLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_CLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_CLASS) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_CLASS))) && !( ((RUBY_T_MODULE) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_MODULE) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_MODULE) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_MODULE) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_MODULE) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_MODULE) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_MODULE) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_MODULE)))) {
 rb_raise(rb_eTypeError, "%+""l""i" "\v"" is not a class/module", klass);
    }
}
static inline void
vm_ensure_not_refinement_module(VALUE self)
{
    if (( ((RUBY_T_MODULE) == RUBY_T_FIXNUM) ? (((int)(long)(self))&RUBY_FIXNUM_FLAG) : ((RUBY_T_MODULE) == RUBY_T_TRUE) ? ((self) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_MODULE) == RUBY_T_FALSE) ? ((self) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_MODULE) == RUBY_T_NIL) ? ((self) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_MODULE) == RUBY_T_UNDEF) ? ((self) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_MODULE) == RUBY_T_SYMBOL) ? ((((VALUE)(self)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_MODULE) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) == (RUBY_T_MODULE))) && ((!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((self)))->flags&((RMODULE_IS_REFINEMENT))):0)) {
 rb_warn("not defined at the refinement, but at the outer class/module");
    }
}
static inline VALUE
vm_get_iclass(rb_control_frame_t *cfp, VALUE klass)
{
    return klass;
}
static inline VALUE
vm_get_ev_const(rb_execution_context_t *ec, VALUE orig_klass, ID id, int is_defined)
{
    void rb_const_warn_if_deprecated(const rb_const_entry_t *ce, VALUE klass, ID id);
    VALUE val;
    if (orig_klass == ((VALUE)RUBY_Qnil)) {
 const rb_cref_t *root_cref = rb_vm_get_cref(ec->cfp->ep);
 const rb_cref_t *cref;
 VALUE klass = ((VALUE)RUBY_Qnil);
 while (root_cref && CREF_PUSHED_BY_EVAL(root_cref)) {
     root_cref = CREF_NEXT(root_cref);
 }
 cref = root_cref;
 while (cref && CREF_NEXT(cref)) {
     if (CREF_PUSHED_BY_EVAL(cref)) {
  klass = ((VALUE)RUBY_Qnil);
     }
     else {
  klass = CREF_CLASS(cref);
     }
     cref = CREF_NEXT(cref);
     if (!!((VALUE)(klass) != ((VALUE)RUBY_Qnil))) {
  VALUE av, am = 0;
  rb_const_entry_t *ce;
       search_continue:
  if ((ce = rb_const_lookup(klass, id))) {
      rb_const_warn_if_deprecated(ce, klass, id);
      val = ce->value;
      if (val == ((VALUE)RUBY_Qundef)) {
   if (am == klass) break;
   am = klass;
   if (is_defined) return 1;
   if (rb_autoloading_value(klass, id, &av, ((void *)0))) return av;
   rb_autoload_load(klass, id);
   goto search_continue;
      }
      else {
   if (is_defined) {
       return 1;
   }
   else {
       return val;
   }
      }
  }
     }
 }
 if (root_cref && !!((VALUE)(CREF_CLASS(root_cref)) != ((VALUE)RUBY_Qnil))) {
     klass = vm_get_iclass(ec->cfp, CREF_CLASS(root_cref));
 }
 else {
     klass = rb_class_of((VALUE)(ec->cfp->self));
 }
 if (is_defined) {
     return rb_const_defined(klass, id);
 }
 else {
     return rb_const_get(klass, id);
 }
    }
    else {
 vm_check_if_namespace(orig_klass);
 if (is_defined) {
     return rb_public_const_defined_from(orig_klass, id);
 }
 else {
     return rb_public_const_get_from(orig_klass, id);
 }
    }
}
static inline VALUE
vm_get_cvar_base(const rb_cref_t *cref, rb_control_frame_t *cfp)
{
    VALUE klass;
    if (!cref) {
 rb_bug("vm_get_cvar_base: no cref");
    }
    while (CREF_NEXT(cref) &&
    (!((VALUE)(CREF_CLASS(cref)) != ((VALUE)RUBY_Qnil)) || ((!(((VALUE)(CREF_CLASS(cref)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(CREF_CLASS(cref)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(CREF_CLASS(cref)))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((CREF_CLASS(cref))))->flags&((((VALUE)RUBY_FL_SINGLETON)))):0) ||
     CREF_PUSHED_BY_EVAL(cref))) {
 cref = CREF_NEXT(cref);
    }
    if (!CREF_NEXT(cref)) {
 rb_warn("class variable access from toplevel");
    }
    klass = vm_get_iclass(cfp, CREF_CLASS(cref));
    if (!((VALUE)(klass) != ((VALUE)RUBY_Qnil))) {
 rb_raise(rb_eTypeError, "no class variables available");
    }
    return klass;
}
static VALUE
vm_search_const_defined_class(const VALUE cbase, ID id)
{
    if (rb_const_defined_at(cbase, id)) return cbase;
    if (cbase == rb_cObject) {
 VALUE tmp = RCLASS_SUPER(cbase);
 while (tmp) {
     if (rb_const_defined_at(tmp, id)) return tmp;
     tmp = RCLASS_SUPER(tmp);
 }
    }
    return 0;
}
__attribute__ ((__always_inline__)) static VALUE vm_getivar(VALUE, ID, IC, struct rb_call_cache *, int);
static inline VALUE
vm_getivar(VALUE obj, ID id, IC ic, struct rb_call_cache *cc, int is_attr)
{
    if ((__builtin_expect(!!(( ((RUBY_T_OBJECT) == RUBY_T_FIXNUM) ? (((int)(long)(obj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_OBJECT) == RUBY_T_TRUE) ? ((obj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_OBJECT) == RUBY_T_FALSE) ? ((obj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_OBJECT) == RUBY_T_NIL) ? ((obj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_OBJECT) == RUBY_T_UNDEF) ? ((obj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_OBJECT) == RUBY_T_SYMBOL) ? ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_OBJECT) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_OBJECT)))), 1))) {
 VALUE val = ((VALUE)RUBY_Qundef);
        if ((__builtin_expect(!!(is_attr ? (cc->aux.index > 0) : (ic->ic_serial == ((((struct RClass*)(((struct RBasic*)(obj))->klass))->ptr)->class_serial))), 1))) {
            st_index_t index = !is_attr ? ic->ic_value.index : (cc->aux.index - 1);
     if ((__builtin_expect(!!(index < ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ((struct RObject*)(obj))->as.heap.numiv)), 1))) {
  val = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((struct RObject*)(obj))->as.ary : ((struct RObject*)(obj))->as.heap.ivptr)[index];
     }
 }
 else {
            st_data_t index;
     struct st_table *iv_index_tbl = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((((struct RClass*)(rb_obj_class(obj)))->ptr)->iv_index_tbl) : ((struct RObject*)(obj))->as.heap.iv_index_tbl);
     if (iv_index_tbl) {
  if (st_lookup(iv_index_tbl, id, &index)) {
      if (index < ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ((struct RObject*)(obj))->as.heap.numiv)) {
   val = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((struct RObject*)(obj))->as.ary : ((struct RObject*)(obj))->as.heap.ivptr)[index];
      }
                    if (!is_attr) {
                        ic->ic_value.index = index;
                        ic->ic_serial = ((((struct RClass*)(((struct RBasic*)(obj))->klass))->ptr)->class_serial);
                    }
                    else {
                        cc->aux.index = (int)index + 1;
                    }
  }
     }
 }
 if ((__builtin_expect(!!(val == ((VALUE)RUBY_Qundef)), 0))) {
     if (!is_attr && !(((VALUE)((*rb_ruby_verbose_ptr())) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))
  rb_warning("instance variable %""l""i" "\v"" not initialized", rb_id_quote_unprintable(id));
     val = ((VALUE)RUBY_Qnil);
 }
 ((void)0);
 return val;
    }
    else {
 ((void)0);
    }
    ((void)0);
    if (is_attr)
 return rb_attr_get(obj, id);
    return rb_ivar_get(obj, id);
}
static inline VALUE
vm_setivar(VALUE obj, ID id, VALUE val, IC ic, struct rb_call_cache *cc, int is_attr)
{
    do { VALUE frozen_obj = (obj); if ((__builtin_expect(!!((!(!(((VALUE)(frozen_obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(frozen_obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(frozen_obj))->flags & RUBY_T_MASK) != RUBY_T_NODE) || (((struct RBasic*)(frozen_obj))->flags&RUBY_FL_FREEZE))), 0))) { rb_error_frozen_object(frozen_obj); } } while (0);
    if ((__builtin_expect(!!(( ((RUBY_T_OBJECT) == RUBY_T_FIXNUM) ? (((int)(long)(obj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_OBJECT) == RUBY_T_TRUE) ? ((obj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_OBJECT) == RUBY_T_FALSE) ? ((obj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_OBJECT) == RUBY_T_NIL) ? ((obj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_OBJECT) == RUBY_T_UNDEF) ? ((obj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_OBJECT) == RUBY_T_SYMBOL) ? ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_OBJECT) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_OBJECT)))), 1))) {
 VALUE klass = ((struct RBasic*)(obj))->klass;
 st_data_t index;
 if ((__builtin_expect(!!((!is_attr && (ic->ic_serial == ((((struct RClass*)(klass))->ptr)->class_serial))) || ( is_attr && (cc->aux.index > 0))), 1))) {
     VALUE *ptr = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((struct RObject*)(obj))->as.ary : ((struct RObject*)(obj))->as.heap.ivptr);
     index = !is_attr ? ic->ic_value.index : cc->aux.index-1;
     if ((index < ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ((struct RObject*)(obj))->as.heap.numiv))) {
  rb_obj_write((VALUE)(obj), (VALUE *)(&ptr[index]), (VALUE)(val), "../ruby-2.6.9/vm_insnhelper.c", 1025);
  ((void)0);
  return val;
     }
 }
 else {
     struct st_table *iv_index_tbl = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((((struct RClass*)(rb_obj_class(obj)))->ptr)->iv_index_tbl) : ((struct RObject*)(obj))->as.heap.iv_index_tbl);
     if (iv_index_tbl && st_lookup(iv_index_tbl, (st_data_t)id, &index)) {
                if (!is_attr) {
                    ic->ic_value.index = index;
                    ic->ic_serial = ((((struct RClass*)(klass))->ptr)->class_serial);
                }
  else if (index >= 0x7fffffff) {
      rb_raise(rb_eArgError, "too many instance variables");
  }
  else {
      cc->aux.index = (int)(index + 1);
  }
     }
 }
    }
    else {
 ((void)0);
    }
    ((void)0);
    return rb_ivar_set(obj, id, val);
}
static inline VALUE
vm_getinstancevariable(VALUE obj, ID id, IC ic)
{
    return vm_getivar(obj, id, ic, ((void *)0), 0);
}
static inline void
vm_setinstancevariable(VALUE obj, ID id, VALUE val, IC ic)
{
    vm_setivar(obj, id, val, ic, 0, 0);
}
static VALUE
vm_throw_continue(const rb_execution_context_t *ec, VALUE err)
{
    if ((((int)(long)(err))&RUBY_FIXNUM_FLAG)) {
 ec->tag->state = ((int)((long)(((long)(err))>>(int)(1))));
    }
    else if (((((VALUE)(err)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(err) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(err) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(err))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL)))) {
 ec->tag->state = RUBY_TAG_THROW;
    }
    else if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)((VALUE)(err)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? (((VALUE)(err)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? (((VALUE)(err)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? (((VALUE)(err)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? (((VALUE)(err)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)((VALUE)(err))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((VALUE)(err)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(err)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(err)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)((VALUE)(err)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(err)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(err)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((VALUE)(err)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(err)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(err)))->flags & RUBY_T_MASK) == (RUBY_T_IMEMO)))) {
 ec->tag->state = THROW_DATA_STATE((struct vm_throw_data *)err);
    }
    else {
 ec->tag->state = RUBY_TAG_RAISE;
    }
    return err;
}
static VALUE
vm_throw_start(const rb_execution_context_t *ec, rb_control_frame_t *const reg_cfp, enum ruby_tag_type state,
               const int flag, const VALUE throwobj)
{
    const rb_control_frame_t *escape_cfp = ((void *)0);
    const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec);
    if (flag != 0) {
    }
    else if (state == RUBY_TAG_BREAK) {
 int is_orphan = 1;
 const VALUE *ep = ((((reg_cfp)->ep)));
 const rb_iseq_t *base_iseq = ((((reg_cfp)))->iseq);
 escape_cfp = reg_cfp;
 while (base_iseq->body->type != ISEQ_TYPE_BLOCK) {
     if (escape_cfp->iseq->body->type == ISEQ_TYPE_CLASS) {
  escape_cfp = ((escape_cfp)+1);
  ep = escape_cfp->ep;
  base_iseq = escape_cfp->iseq;
     }
     else {
  ep = VM_ENV_PREV_EP(ep);
  base_iseq = base_iseq->body->parent_iseq;
  escape_cfp = rb_vm_search_cf_from_ep(ec, escape_cfp, ep);
  ((void)0);
     }
 }
 if (VM_FRAME_LAMBDA_P(escape_cfp)) {
     is_orphan = 0;
     state = RUBY_TAG_RETURN;
 }
 else {
     ep = VM_ENV_PREV_EP(ep);
     while (escape_cfp < eocfp) {
  if (escape_cfp->ep == ep) {
      const rb_iseq_t *const iseq = escape_cfp->iseq;
      const VALUE epc = escape_cfp->pc - iseq->body->iseq_encoded;
      const struct iseq_catch_table *const ct = iseq->body->catch_table;
      unsigned int i;
      if (!ct) break;
      for (i=0; i < ct->size; i++) {
   const struct iseq_catch_table_entry * const entry = &ct->entries[i];
   if (entry->type == CATCH_TYPE_BREAK &&
       entry->iseq == base_iseq &&
       entry->start < epc && entry->end >= epc) {
       if (entry->cont == epc) {
    is_orphan = 0;
       }
       break;
   }
      }
      break;
  }
  escape_cfp = ((escape_cfp)+1);
     }
 }
 if (is_orphan) {
     rb_vm_localjump_error("break from proc-closure", throwobj, RUBY_TAG_BREAK);
 }
    }
    else if (state == RUBY_TAG_RETRY) {
 const VALUE *ep = VM_ENV_PREV_EP(((((reg_cfp)->ep))));
 escape_cfp = rb_vm_search_cf_from_ep(ec, reg_cfp, ep);
    }
    else if (state == RUBY_TAG_RETURN) {
 const VALUE *current_ep = ((((reg_cfp)->ep)));
 const VALUE *target_lep = VM_EP_LEP(current_ep);
 int in_class_frame = 0;
 int toplevel = 1;
 escape_cfp = reg_cfp;
 while (escape_cfp < eocfp) {
     const VALUE *lep = VM_CF_LEP(escape_cfp);
     if (!target_lep) {
  target_lep = lep;
     }
     if (lep == target_lep &&
  VM_FRAME_RUBYFRAME_P(escape_cfp) &&
  escape_cfp->iseq->body->type == ISEQ_TYPE_CLASS) {
  in_class_frame = 1;
  target_lep = 0;
     }
     if (lep == target_lep) {
  if (VM_FRAME_LAMBDA_P(escape_cfp)) {
      toplevel = 0;
      if (in_class_frame) {
   goto valid_return;
      }
      else {
   const VALUE *tep = current_ep;
   while (target_lep != tep) {
       if (escape_cfp->ep == tep) {
    goto valid_return;
       }
       tep = VM_ENV_PREV_EP(tep);
   }
      }
  }
  else if (VM_FRAME_RUBYFRAME_P(escape_cfp)) {
      switch (escape_cfp->iseq->body->type) {
        case ISEQ_TYPE_TOP:
        case ISEQ_TYPE_MAIN:
   if (toplevel) goto valid_return;
   break;
        case ISEQ_TYPE_EVAL:
        case ISEQ_TYPE_CLASS:
   toplevel = 0;
   break;
        default:
   break;
      }
  }
     }
     if (escape_cfp->ep == target_lep && escape_cfp->iseq->body->type == ISEQ_TYPE_METHOD) {
  goto valid_return;
     }
     escape_cfp = ((escape_cfp)+1);
 }
 rb_vm_localjump_error("unexpected return", throwobj, RUBY_TAG_RETURN);
      valid_return:;
    }
    else {
 rb_bug("isns(throw): unsupport throw type");
    }
    ec->tag->state = state;
    return (VALUE)THROW_DATA_NEW(throwobj, escape_cfp, state);
}
static VALUE
vm_throw(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
  rb_num_t throw_state, VALUE throwobj)
{
    const int state = (int)(throw_state & VM_THROW_STATE_MASK);
    const int flag = (int)(throw_state & VM_THROW_NO_ESCAPE_FLAG);
    if (state != 0) {
        return vm_throw_start(ec, reg_cfp, state, flag, throwobj);
    }
    else {
 return vm_throw_continue(ec, throwobj);
    }
}
static inline void
vm_expandarray(VALUE *sp, VALUE ary, rb_num_t num, int flag)
{
    int is_splat = flag & 0x01;
    rb_num_t space_size = num + is_splat;
    VALUE *base = sp - 1;
    const VALUE *ptr;
    rb_num_t len;
    const VALUE obj = ary;
    if (!( ((RUBY_T_ARRAY) == RUBY_T_FIXNUM) ? (((int)(long)(ary))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ARRAY) == RUBY_T_TRUE) ? ((ary) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ARRAY) == RUBY_T_FALSE) ? ((ary) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ARRAY) == RUBY_T_NIL) ? ((ary) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ARRAY) == RUBY_T_UNDEF) ? ((ary) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ARRAY) == RUBY_T_SYMBOL) ? ((((VALUE)(ary)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(ary) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(ary) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(ary))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ARRAY) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(ary) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(ary) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(ary))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(ary) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(ary) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(ary))->flags & RUBY_T_MASK) == (RUBY_T_ARRAY))) && !((VALUE)(ary = rb_check_array_type(ary)) != ((VALUE)RUBY_Qnil))) {
 ary = obj;
 ptr = &ary;
 len = 1;
    }
    else {
        ptr = rb_array_const_ptr_transient(ary);
 len = (rb_num_t)rb_array_len(ary);
    }
    if (space_size == 0) {
    }
    else if (flag & 0x02) {
 rb_num_t i = 0, j;
 if (len < num) {
     for (i=0; i<num-len; i++) {
  *base++ = ((VALUE)RUBY_Qnil);
     }
 }
 for (j=0; i<num; i++, j++) {
     VALUE v = ptr[len - j - 1];
     *base++ = v;
 }
 if (is_splat) {
     *base = rb_ary_new_from_values(len - j, ptr);
 }
    }
    else {
 rb_num_t i;
 VALUE *bptr = &base[space_size - 1];
 for (i=0; i<num; i++) {
     if (len <= i) {
  for (; i<num; i++) {
      *bptr-- = ((VALUE)RUBY_Qnil);
  }
  break;
     }
     *bptr-- = ptr[i];
 }
 if (is_splat) {
     if (num > len) {
  *bptr = rb_ary_new();
     }
     else {
  *bptr = rb_ary_new_from_values(len - num, ptr + num);
     }
 }
    }
    (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(ary); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }));
}
static VALUE vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc);
__attribute__ ((__visibility__("default"))) extern void
rb_vm_search_method_slowpath(const struct rb_call_info *ci, struct rb_call_cache *cc, VALUE klass)
{
    cc->me = rb_callable_method_entry(klass, ci->mid);
    ((void)0);
    cc->call = vm_call_general;
    cc->method_state = (ruby_vm_global_method_state);
    cc->class_serial = ((((struct RClass*)(klass))->ptr)->class_serial);
}
static void
vm_search_method(const struct rb_call_info *ci, struct rb_call_cache *cc, VALUE recv)
{
    VALUE klass = rb_class_of((VALUE)(recv));
    ((void)0);
    ((void)0);
    if ((__builtin_expect(!!(((ruby_vm_global_method_state) == cc->method_state) && (((((struct RClass*)(klass))->ptr)->class_serial) == cc->class_serial)), 1))) {
 ((void)0);
 ((void)0);
 return;
    }
    ((void)0);
    rb_vm_search_method_slowpath(ci, cc, klass);
}
static inline int
check_cfunc(const rb_callable_method_entry_t *me, VALUE (*func)())
{
    if (me && me->def->type == VM_METHOD_TYPE_CFUNC &&
 me->def->body.cfunc.func == func) {
 return 1;
    }
    else {
 return 0;
    }
}
static inline int
vm_method_cfunc_is(CALL_INFO ci, CALL_CACHE cc,
     VALUE recv, VALUE (*func)())
{
    vm_search_method(ci, cc, recv);
    return check_cfunc(cc->me, func);
}
static VALUE
opt_equal_fallback(VALUE recv, VALUE obj, CALL_INFO ci, CALL_CACHE cc)
{
    if (vm_method_cfunc_is(ci, cc, recv, rb_obj_equal)) {
 return recv == obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
    }
    return ((VALUE)RUBY_Qundef);
}
#define BUILTIN_CLASS_P(x,k) (!SPECIAL_CONST_P(x) && RBASIC_CLASS(x) == k)
#define EQ_UNREDEFINED_P(t) BASIC_OP_UNREDEFINED_P(BOP_EQ, t ##_REDEFINED_OP_FLAG)
static inline int
comparable_by_identity(VALUE recv, VALUE obj)
{
    if (((recv) & (obj) & 1)) {
 return (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 0))) == 0), 1))) != 0) * 2 - 1;
    }
    if (0) {
 return (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1))) != 0) * 2 - 1;
    }
    if (((((VALUE)(recv)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(recv))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) && ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL)))) {
 return (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 6))) == 0), 1))) != 0) * 2 - 1;
    }
    return 0;
}
static
inline
VALUE
opt_eq_func(VALUE recv, VALUE obj, CALL_INFO ci, CALL_CACHE cc)
{
    switch (comparable_by_identity(recv, obj)) {
      case 1:
 return (recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
      case -1:
 goto fallback;
    }
    if (0) {
    }
    else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cFloat)) {
 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) {
     return rb_float_equal(recv, obj);
 }
    }
    else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cString)) {
 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 2))) == 0), 1)))) {
     return rb_str_equal(recv, obj);
 }
    }
  fallback:
    return opt_equal_fallback(recv, obj, ci, cc);
}
static
inline
VALUE
opt_eql_func(VALUE recv, VALUE obj, CALL_INFO ci, CALL_CACHE cc)
{
    switch (comparable_by_identity(recv, obj)) {
      case 1:
 return (recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
      case -1:
 goto fallback;
    }
    if (0) {
    }
    else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cFloat)) {
 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) {
     return rb_float_eql(recv, obj);
 }
    }
    else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cString)) {
 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 2))) == 0), 1)))) {
     return rb_str_eql(recv, obj);
 }
    }
  fallback:
    return opt_equal_fallback(recv, obj, ci, cc);
}
#undef BUILTIN_CLASS_P
#undef EQ_UNREDEFINED_P
VALUE
rb_equal_opt(VALUE obj1, VALUE obj2)
{
    struct rb_call_info ci;
    struct rb_call_cache cc;
    ci.mid = idEq;
    cc.method_state = 0;
    cc.class_serial = 0;
    cc.me = ((void *)0);
    return opt_eq_func(obj1, obj2, &ci, &cc);
}
VALUE
rb_eql_opt(VALUE obj1, VALUE obj2)
{
    struct rb_call_info ci;
    struct rb_call_cache cc;
    ci.mid = idEqlP;
    cc.method_state = 0;
    cc.class_serial = 0;
    cc.me = ((void *)0);
    return opt_eql_func(obj1, obj2, &ci, &cc);
}
extern VALUE rb_vm_call0(rb_execution_context_t *ec, VALUE, ID, int, const VALUE*, const rb_callable_method_entry_t *);
static VALUE
check_match(rb_execution_context_t *ec, VALUE pattern, VALUE target, enum vm_check_match_type type)
{
    switch (type) {
      case VM_CHECKMATCH_TYPE_WHEN:
 return pattern;
      case VM_CHECKMATCH_TYPE_RESCUE:
 if (!rb_obj_is_kind_of(pattern, rb_cModule)) {
     rb_raise(rb_eTypeError, "class or module required for rescue clause");
 }
      case VM_CHECKMATCH_TYPE_CASE: {
 const rb_callable_method_entry_t *me =
     rb_callable_method_entry_with_refinements(rb_class_of((VALUE)(pattern)), idEqq, ((void *)0));
 if (me) {
            return rb_vm_call0(ec, pattern, idEqq, 1, &target, me);
 }
 else {
     return rb_funcallv(pattern, idEqq, 1, &target);
 }
      }
      default:
 rb_bug("check_match: unreachable");
    }
}
#define CHECK_CMP_NAN(a,b) 
static inline VALUE
double_cmp_lt(double a, double b)
{
    ;
    return a < b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
}
static inline VALUE
double_cmp_le(double a, double b)
{
    ;
    return a <= b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
}
static inline VALUE
double_cmp_gt(double a, double b)
{
    ;
    return a > b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
}
static inline VALUE
double_cmp_ge(double a, double b)
{
    ;
    return a >= b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
}
static VALUE *
vm_base_ptr(const rb_control_frame_t *cfp)
{
    const rb_control_frame_t *prev_cfp = ((cfp)+1);
    if (cfp->iseq && VM_FRAME_RUBYFRAME_P(cfp)) {
 VALUE *bp = prev_cfp->sp + cfp->iseq->body->local_table_size + ( 3);
 if (cfp->iseq->body->type == ISEQ_TYPE_METHOD) {
     bp += 1;
 }
 return bp;
    }
    else {
 return ((void *)0);
    }
}
__attribute__ ((__noreturn__)) static void raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc);
__attribute__ ((__noreturn__)) static void argument_arity_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int miss_argc, const int min_argc, const int max_argc);
__attribute__ ((__noreturn__)) static void argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys);
VALUE rb_keyword_error_new(const char *error, VALUE keys);
static VALUE method_missing(VALUE obj, ID id, int argc, const VALUE *argv,
       enum method_missing_reason call_status);
struct args_info {
    VALUE *argv;
    int argc;
    int rest_index;
    int rest_dupped;
    const struct rb_call_info_kw_arg *kw_arg;
    VALUE *kw_argv;
    VALUE rest;
};
enum arg_setup_type {
    arg_setup_method,
    arg_setup_block
};
static inline void
arg_rest_dup(struct args_info *args)
{
    if(!args->rest_dupped) {
        args->rest = rb_ary_dup(args->rest);
        args->rest_dupped = 1;
    }
}
static inline int
args_argc(struct args_info *args)
{
    if (args->rest == ((VALUE)RUBY_Qfalse)) {
 return args->argc;
    }
    else {
 return args->argc + ((int)(rb_array_len(args->rest))) - args->rest_index;
    }
}
static inline void
args_extend(struct args_info *args, const int min_argc)
{
    int i;
    if (args->rest) {
        arg_rest_dup(args);
 ((void)0);
 for (i=args->argc + ((int)(rb_array_len(args->rest))); i<min_argc; i++) {
     rb_ary_push(args->rest, ((VALUE)RUBY_Qnil));
 }
    }
    else {
 for (i=args->argc; i<min_argc; i++) {
     args->argv[args->argc++] = ((VALUE)RUBY_Qnil);
 }
    }
}
static inline void
args_reduce(struct args_info *args, int over_argc)
{
    if (args->rest) {
 const long len = rb_array_len(args->rest);
 if (len > over_argc) {
     arg_rest_dup(args);
     rb_ary_resize(args->rest, len - over_argc);
     return;
 }
 else {
     args->rest = ((VALUE)RUBY_Qfalse);
     over_argc -= len;
 }
    }
    ((void)0);
    args->argc -= over_argc;
}
static inline int
args_check_block_arg0(struct args_info *args)
{
    VALUE ary = ((VALUE)RUBY_Qnil);
    if (args->rest && rb_array_len(args->rest) == 1) {
 VALUE arg0 = (rb_array_const_ptr_transient(args->rest)[0]);
 ary = rb_check_array_type(arg0);
    }
    else if (args->argc == 1) {
 VALUE arg0 = args->argv[0];
 ary = rb_check_array_type(arg0);
 args->argv[0] = arg0;
    }
    if (!!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
 args->rest = ary;
 args->rest_index = 0;
 args->argc = 0;
 return 1;
    }
    return 0;
}
static inline void
args_copy(struct args_info *args)
{
    if (args->rest != ((VALUE)RUBY_Qfalse)) {
 int argc = args->argc;
 args->argc = 0;
        arg_rest_dup(args);
 while (args->rest_index > 0 && argc > 0) {
     do { const VALUE _ary = (args->rest); const VALUE _v = (args->argv[--argc]); VALUE *ptr = (VALUE *)rb_array_ptr_use_start(_ary, 1); rb_obj_write((VALUE)(_ary), (VALUE *)(&ptr[--args->rest_index]), (VALUE)(_v), "../ruby-2.6.9/vm_args.c", 150); rb_array_ptr_use_end(_ary, 1); } while (0);
 }
 while (argc > 0) {
     rb_ary_unshift(args->rest, args->argv[--argc]);
 }
    }
    else if (args->argc > 0) {
 args->rest = rb_ary_new_from_values(args->argc, args->argv);
 args->rest_index = 0;
        args->rest_dupped = 1;
 args->argc = 0;
    }
}
static inline const VALUE *
args_rest_argv(struct args_info *args)
{
    return rb_array_const_ptr_transient(args->rest) + args->rest_index;
}
static inline VALUE
args_rest_array(struct args_info *args)
{
    VALUE ary;
    if (args->rest) {
        ary = rb_ary_behead(args->rest, args->rest_index);
        args->rest_index = 0;
 args->rest = 0;
    }
    else {
 ary = rb_ary_new();
    }
    return ary;
}
static int
keyword_hash_p(VALUE *kw_hash_ptr, VALUE *rest_hash_ptr)
{
    *rest_hash_ptr = rb_check_hash_type(*kw_hash_ptr);
    if (!!((VALUE)(*rest_hash_ptr) != ((VALUE)RUBY_Qnil))) {
 VALUE hash = rb_extract_keywords(rest_hash_ptr);
 if (!hash) hash = ((VALUE)RUBY_Qnil);
 *kw_hash_ptr = hash;
 return 1;
    }
    else {
 *kw_hash_ptr = ((VALUE)RUBY_Qnil);
 return 0;
    }
}
static VALUE
args_pop_keyword_hash(struct args_info *args, VALUE *kw_hash_ptr)
{
    VALUE rest_hash;
    if (args->rest == ((VALUE)RUBY_Qfalse)) {
      from_argv:
 ((void)0);
 *kw_hash_ptr = args->argv[args->argc-1];
 if (keyword_hash_p(kw_hash_ptr, &rest_hash)) {
     if (rest_hash) {
  args->argv[args->argc-1] = rest_hash;
     }
     else {
  args->argc--;
  return 1;
     }
 }
    }
    else {
 long len = rb_array_len(args->rest);
 if (len > 0) {
     *kw_hash_ptr = (rb_array_const_ptr_transient(args->rest)[len - 1]);
     if (keyword_hash_p(kw_hash_ptr, &rest_hash)) {
  if (rest_hash) {
      do { const VALUE _ary = (args->rest); const VALUE _v = (rest_hash); VALUE *ptr = (VALUE *)rb_array_ptr_use_start(_ary, 1); rb_obj_write((VALUE)(_ary), (VALUE *)(&ptr[len - 1]), (VALUE)(_v), "../ruby-2.6.9/vm_args.c", 231); rb_array_ptr_use_end(_ary, 1); } while (0);
  }
  else {
      arg_rest_dup(args);
      rb_ary_pop(args->rest);
      return 1;
  }
     }
 }
 else {
     goto from_argv;
 }
    }
    return 0;
}
static int
args_kw_argv_to_hash(struct args_info *args)
{
    const struct rb_call_info_kw_arg *kw_arg = args->kw_arg;
    const VALUE *const passed_keywords = kw_arg->keywords;
    const int kw_len = kw_arg->keyword_len;
    VALUE h = rb_hash_new_with_size(kw_len);
    const int kw_start = args->argc - kw_len;
    const VALUE * const kw_argv = args->argv + kw_start;
    int i;
    args->argc = kw_start + 1;
    for (i=0; i<kw_len; i++) {
 rb_hash_aset(h, passed_keywords[i], kw_argv[i]);
    }
    args->argv[args->argc - 1] = h;
    return args->argc;
}
static void
args_stored_kw_argv_to_hash(struct args_info *args)
{
    int i;
    const struct rb_call_info_kw_arg *kw_arg = args->kw_arg;
    const VALUE *const passed_keywords = kw_arg->keywords;
    const int passed_keyword_len = kw_arg->keyword_len;
    VALUE h = rb_hash_new_with_size(passed_keyword_len);
    for (i=0; i<passed_keyword_len; i++) {
 rb_hash_aset(h, passed_keywords[i], args->kw_argv[i]);
    }
    args->kw_argv = ((void *)0);
    if (args->rest) {
 arg_rest_dup(args);
 rb_ary_push(args->rest, h);
    }
    else {
 args->argv[args->argc++] = h;
    }
}
static inline void
args_setup_lead_parameters(struct args_info *args, int argc, VALUE *locals)
{
    if (args->argc >= argc) {
 args->argc -= argc;
 args->argv += argc;
    }
    else {
 int i, j;
 const VALUE *argv = args_rest_argv(args);
 for (i=args->argc, j=0; i<argc; i++, j++) {
     locals[i] = argv[j];
 }
 args->rest_index += argc - args->argc;
 args->argc = 0;
    }
}
static inline void
args_setup_post_parameters(struct args_info *args, int argc, VALUE *locals)
{
    long len;
    len = rb_array_len(args->rest);
    memcpy((locals), (rb_array_const_ptr_transient(args->rest) + len - argc), sizeof(VALUE)*(size_t)(argc));
    rb_ary_resize(args->rest, len - argc);
}
static inline int
args_setup_opt_parameters(struct args_info *args, int opt_max, VALUE *locals)
{
    int i;
    if (args->argc >= opt_max) {
 args->argc -= opt_max;
 args->argv += opt_max;
 i = opt_max;
    }
    else {
 int j;
 i = args->argc;
 args->argc = 0;
 if (args->rest) {
            int len = ((int)(rb_array_len(args->rest)));
            const VALUE *argv = rb_array_const_ptr_transient(args->rest);
            for (; i<opt_max && args->rest_index < len; i++, args->rest_index++) {
                locals[i] = argv[args->rest_index];
            }
        }
 for (j=i; j<opt_max; j++) {
     locals[j] = ((VALUE)RUBY_Qnil);
 }
    }
    return i;
}
static inline void
args_setup_rest_parameter(struct args_info *args, VALUE *locals)
{
    *locals = args_rest_array(args);
}
static VALUE
make_unknown_kw_hash(const VALUE *passed_keywords, int passed_keyword_len, const VALUE *kw_argv)
{
    int i;
    VALUE obj = rb_ary_tmp_new(1);
    for (i=0; i<passed_keyword_len; i++) {
 if (kw_argv[i] != ((VALUE)RUBY_Qundef)) {
     rb_ary_push(obj, passed_keywords[i]);
 }
    }
    return obj;
}
static VALUE
make_rest_kw_hash(const VALUE *passed_keywords, int passed_keyword_len, const VALUE *kw_argv)
{
    int i;
    VALUE obj = rb_hash_new_with_size(passed_keyword_len);
    for (i=0; i<passed_keyword_len; i++) {
 if (kw_argv[i] != ((VALUE)RUBY_Qundef)) {
     rb_hash_aset(obj, passed_keywords[i], kw_argv[i]);
 }
    }
    return obj;
}
static inline int
args_setup_kw_parameters_lookup(const ID key, VALUE *ptr, const VALUE *const passed_keywords, VALUE *passed_values, const int passed_keyword_len)
{
    int i;
    const VALUE keyname = (rb_id2sym(key));
    for (i=0; i<passed_keyword_len; i++) {
 if (keyname == passed_keywords[i]) {
     *ptr = passed_values[i];
     passed_values[i] = ((VALUE)RUBY_Qundef);
     return 1;
 }
    }
    return 0;
}
#define KW_SPECIFIED_BITS_MAX (32-1)
static void
args_setup_kw_parameters(rb_execution_context_t *const ec, const rb_iseq_t *const iseq,
    VALUE *const passed_values, const int passed_keyword_len, const VALUE *const passed_keywords,
    VALUE *const locals)
{
    const ID *acceptable_keywords = iseq->body->param.keyword->table;
    const int req_key_num = iseq->body->param.keyword->required_num;
    const int key_num = iseq->body->param.keyword->num;
    const VALUE * const default_values = iseq->body->param.keyword->default_values;
    VALUE missing = 0;
    int i, di, found = 0;
    int unspecified_bits = 0;
    VALUE unspecified_bits_value = ((VALUE)RUBY_Qnil);
    for (i=0; i<req_key_num; i++) {
 ID key = acceptable_keywords[i];
 if (args_setup_kw_parameters_lookup(key, &locals[i], passed_keywords, passed_values, passed_keyword_len)) {
     found++;
 }
 else {
     if (!missing) missing = rb_ary_tmp_new(1);
     rb_ary_push(missing, (rb_id2sym(key)));
 }
    }
    if (missing) argument_kw_error(ec, iseq, "missing", missing);
    for (di=0; i<key_num; i++, di++) {
 if (args_setup_kw_parameters_lookup(acceptable_keywords[i], &locals[i], passed_keywords, passed_values, passed_keyword_len)) {
     found++;
 }
 else {
     if (default_values[di] == ((VALUE)RUBY_Qundef)) {
  locals[i] = ((VALUE)RUBY_Qnil);
  if ((__builtin_expect(!!(i < (32-1)), 1))) {
      unspecified_bits |= 0x01 << di;
  }
  else {
      if (!((VALUE)(unspecified_bits_value) != ((VALUE)RUBY_Qnil))) {
   int j;
   unspecified_bits_value = rb_hash_new();
   for (j=0; j<(32-1); j++) {
       if (unspecified_bits & (0x01 << j)) {
    rb_hash_aset(unspecified_bits_value, (((VALUE)(j))<<1 | RUBY_FIXNUM_FLAG), ((VALUE)RUBY_Qtrue));
       }
   }
      }
      rb_hash_aset(unspecified_bits_value, (((VALUE)(di))<<1 | RUBY_FIXNUM_FLAG), ((VALUE)RUBY_Qtrue));
  }
     }
     else {
  locals[i] = default_values[di];
     }
 }
    }
    if (iseq->body->param.flags.has_kwrest) {
 const int rest_hash_index = key_num + 1;
 locals[rest_hash_index] = make_rest_kw_hash(passed_keywords, passed_keyword_len, passed_values);
    }
    else {
 if (found != passed_keyword_len) {
     VALUE keys = make_unknown_kw_hash(passed_keywords, passed_keyword_len, passed_values);
     argument_kw_error(ec, iseq, "unknown", keys);
 }
    }
    if (!((VALUE)(unspecified_bits_value) != ((VALUE)RUBY_Qnil))) {
 unspecified_bits_value = (((VALUE)(unspecified_bits))<<1 | RUBY_FIXNUM_FLAG);
    }
    locals[key_num] = unspecified_bits_value;
}
static inline void
args_setup_kw_rest_parameter(VALUE keyword_hash, VALUE *locals)
{
    locals[0] = !((VALUE)(keyword_hash) != ((VALUE)RUBY_Qnil)) ? rb_hash_new() : rb_hash_dup(keyword_hash);
}
static inline void
args_setup_block_parameter(const rb_execution_context_t *ec, struct rb_calling_info *calling, VALUE *locals)
{
    VALUE block_handler = calling->block_handler;
    *locals = rb_vm_bh_to_procval(ec, block_handler);
}
struct fill_values_arg {
    VALUE *keys;
    VALUE *vals;
    int argc;
};
static int
fill_keys_values(st_data_t key, st_data_t val, st_data_t ptr)
{
    struct fill_values_arg *arg = (struct fill_values_arg *)ptr;
    int i = arg->argc++;
    arg->keys[i] = (VALUE)key;
    arg->vals[i] = (VALUE)val;
    return ST_CONTINUE;
}
static int
setup_parameters_complex(rb_execution_context_t * const ec, const rb_iseq_t * const iseq,
    struct rb_calling_info *const calling,
    const struct rb_call_info *ci,
    VALUE * const locals, const enum arg_setup_type arg_setup_type)
{
    const int min_argc = iseq->body->param.lead_num + iseq->body->param.post_num;
    const int max_argc = (iseq->body->param.flags.has_rest == 0) ? min_argc + iseq->body->param.opt_num : (-1);
    int opt_pc = 0;
    int given_argc;
    int kw_splat = 0;
    struct args_info args_body, *args;
    VALUE keyword_hash = ((VALUE)RUBY_Qnil);
    VALUE * const orig_sp = ec->cfp->sp;
    unsigned int i;
    for (i=calling->argc; i<iseq->body->param.size; i++) {
 locals[i] = ((VALUE)RUBY_Qnil);
    }
    ec->cfp->sp = &locals[i];
    args = &args_body;
    given_argc = args->argc = calling->argc;
    args->argv = locals;
    args->rest_dupped = 0;
    if (ci->flag & (0x01 << VM_CALL_KWARG_bit)) {
 args->kw_arg = ((struct rb_call_info_with_kwarg *)ci)->kw_arg;
 if (iseq->body->param.flags.has_kw) {
     int kw_len = args->kw_arg->keyword_len;
     args->kw_argv = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(kw_len)), _Alignof(VALUE) * 8);
     args->argc -= kw_len;
     given_argc -= kw_len;
     memcpy((args->kw_argv), (locals + args->argc), sizeof(VALUE)*(size_t)(kw_len));
 }
 else {
     args->kw_argv = ((void *)0);
     given_argc = args_kw_argv_to_hash(args);
 }
    }
    else {
 args->kw_arg = ((void *)0);
 args->kw_argv = ((void *)0);
    }
    if (ci->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) {
 args->rest = locals[--args->argc];
 args->rest_index = 0;
 given_argc += ((int)(rb_array_len(args->rest))) - 1;
    }
    else {
 args->rest = ((VALUE)RUBY_Qfalse);
    }
    switch (arg_setup_type) {
      case arg_setup_method:
 break;
      case arg_setup_block:
 if (given_argc == 1 &&
     (min_argc > 0 || iseq->body->param.opt_num > 1 ||
      iseq->body->param.flags.has_kw || iseq->body->param.flags.has_kwrest) &&
     !iseq->body->param.flags.ambiguous_param0 &&
     args_check_block_arg0(args)) {
     given_argc = ((int)(rb_array_len(args->rest)));
 }
 break;
    }
    if (given_argc < min_argc) {
 if (given_argc == min_argc - 1 && args->kw_argv) {
     args_stored_kw_argv_to_hash(args);
     given_argc = args_argc(args);
 }
 else {
     if (arg_setup_type == arg_setup_block) {
  if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((ec->cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(ec->cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((ec->cfp)->sp) + (min_argc)) + 1) >= (ec->cfp))), 1))) {(void)0;} else vm_stackoverflow();
  given_argc = min_argc;
  args_extend(args, min_argc);
     }
     else {
  argument_arity_error(ec, iseq, given_argc, min_argc, max_argc);
     }
 }
    }
    if (ci->flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
 kw_splat = !iseq->body->param.flags.has_rest;
    }
    if (given_argc > min_argc &&
 (iseq->body->param.flags.has_kw || iseq->body->param.flags.has_kwrest ||
  (kw_splat && given_argc > max_argc)) &&
 args->kw_argv == ((void *)0)) {
 if (args_pop_keyword_hash(args, &keyword_hash)) {
     given_argc--;
 }
    }
    if (given_argc > max_argc && max_argc != (-1)) {
 if (arg_setup_type == arg_setup_block) {
     args_reduce(args, given_argc - max_argc);
     given_argc = max_argc;
 }
 else {
     argument_arity_error(ec, iseq, given_argc, min_argc, max_argc);
 }
    }
    if (iseq->body->param.flags.has_lead) {
 args_setup_lead_parameters(args, iseq->body->param.lead_num, locals + 0);
    }
    if (iseq->body->param.flags.has_rest || iseq->body->param.flags.has_post){
        args_copy(args);
    }
    if (iseq->body->param.flags.has_post) {
 args_setup_post_parameters(args, iseq->body->param.post_num, locals + iseq->body->param.post_start);
    }
    if (iseq->body->param.flags.has_opt) {
 int opt = args_setup_opt_parameters(args, iseq->body->param.opt_num, locals + iseq->body->param.lead_num);
 opt_pc = (int)iseq->body->param.opt_table[opt];
    }
    if (iseq->body->param.flags.has_rest) {
 args_setup_rest_parameter(args, locals + iseq->body->param.rest_start);
    }
    if (iseq->body->param.flags.has_kw) {
 VALUE * const klocals = locals + iseq->body->param.keyword->bits_start - iseq->body->param.keyword->num;
 if (args->kw_argv != ((void *)0)) {
     const struct rb_call_info_kw_arg *kw_arg = args->kw_arg;
     args_setup_kw_parameters(ec, iseq, args->kw_argv, kw_arg->keyword_len, kw_arg->keywords, klocals);
 }
 else if (!!((VALUE)(keyword_hash) != ((VALUE)RUBY_Qnil))) {
     int kw_len = ((int)(((!(((struct RBasic*)((keyword_hash)))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(keyword_hash))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(keyword_hash))->as.st)->num_entries))));
     struct fill_values_arg arg;
     arg.keys = args->kw_argv = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(kw_len * 2)), _Alignof(VALUE) * 8);
     arg.vals = arg.keys + kw_len;
     arg.argc = 0;
     rb_hash_foreach(keyword_hash, fill_keys_values, (VALUE)&arg);
     ((void)0);
     args_setup_kw_parameters(ec, iseq, arg.vals, kw_len, arg.keys, klocals);
 }
 else {
     ((void)0);
     args_setup_kw_parameters(ec, iseq, ((void *)0), 0, ((void *)0), klocals);
 }
    }
    else if (iseq->body->param.flags.has_kwrest) {
 args_setup_kw_rest_parameter(keyword_hash, locals + iseq->body->param.keyword->rest_start);
    }
    else if (!!((VALUE)(keyword_hash) != ((VALUE)RUBY_Qnil)) && ((!(((struct RBasic*)((keyword_hash)))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(keyword_hash))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(keyword_hash))->as.st)->num_entries)) > 0) {
 argument_kw_error(ec, iseq, "unknown", rb_hash_keys(keyword_hash));
    }
    if (iseq->body->param.flags.has_block) {
 if (iseq->body->local_iseq == iseq) {
 }
 else {
     args_setup_block_parameter(ec, calling, locals + iseq->body->param.block_start);
 }
    }
    ec->cfp->sp = orig_sp;
    return opt_pc;
}
void rb_backtrace_use_iseq_first_lineno_for_last_location(VALUE self);
static void
raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc)
{
    VALUE at;
    if (iseq) {
 vm_push_frame(ec, iseq, VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL, ((VALUE)RUBY_Qnil) ,
        0 , ((VALUE)RUBY_Qfalse) ,
        iseq->body->iseq_encoded,
        ec->cfp->sp, 0, 0 );
 at = rb_ec_backtrace_object(ec);
 rb_backtrace_use_iseq_first_lineno_for_last_location(at);
 rb_vm_pop_frame(ec);
    }
    else {
 at = rb_ec_backtrace_object(ec);
    }
    rb_ivar_set(exc, idBt_locations, at);
    rb_exc_set_backtrace(exc, at);
    rb_exc_raise(exc);
}
static void
argument_arity_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int miss_argc, const int min_argc, const int max_argc)
{
    VALUE exc = rb_arity_error_new(miss_argc, min_argc, max_argc);
    if (iseq->body->param.flags.has_kw) {
 const struct rb_iseq_param_keyword *const kw = iseq->body->param.keyword;
 const ID *keywords = kw->table;
 int req_key_num = kw->required_num;
 if (req_key_num > 0) {
     static const char required[] = "; required keywords";
     VALUE mesg = rb_attr_get(exc, idMesg);
     rb_str_resize(mesg, (!(((struct RBasic*)(mesg))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(mesg))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(mesg))->as.heap.len)-1);
     rb_str_cat(mesg, required, sizeof(required) - 1 - (req_key_num == 1));
     __extension__ ({ (__builtin_constant_p(":")) ? rb_str_cat((mesg), (":"), (long)strlen(":")) : rb_str_cat_cstr((mesg), (":")); });
     do {
  __extension__ ({ (__builtin_constant_p(" ")) ? rb_str_cat((mesg), (" "), (long)strlen(" ")) : rb_str_cat_cstr((mesg), (" ")); });
  rb_str_append(mesg, rb_id2str(*keywords++));
  __extension__ ({ (__builtin_constant_p(",")) ? rb_str_cat((mesg), (","), (long)strlen(",")) : rb_str_cat_cstr((mesg), (",")); });
     } while (--req_key_num);
     (!(((struct RBasic*)(mesg))->flags & RSTRING_NOEMBED) ? ((struct RString*)(mesg))->as.ary : ((struct RString*)(mesg))->as.heap.ptr)[(!(((struct RBasic*)(mesg))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(mesg))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(mesg))->as.heap.len)-1] = ')';
 }
    }
    raise_argument_error(ec, iseq, exc);
}
static void
argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys)
{
    raise_argument_error(ec, iseq, rb_keyword_error_new(error, keys));
}
static inline void
vm_caller_setup_arg_splat(rb_control_frame_t *cfp, struct rb_calling_info *calling)
{
    int argc = calling->argc;
    VALUE *argv = cfp->sp - argc;
    VALUE ary = argv[argc-1];
    cfp->sp--;
    if (!!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
        const VALUE *ptr = rb_array_const_ptr_transient(ary);
        long len = rb_array_len(ary), i;
        if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((cfp)->sp) + (len)) + 1) >= (cfp))), 1))) {(void)0;} else vm_stackoverflow();
        for (i = 0; i < len; i++) {
            *cfp->sp++ = ptr[i];
        }
        calling->argc += i - 1;
    }
}
static inline void
vm_caller_setup_arg_kw(rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci)
{
    struct rb_call_info_with_kwarg *ci_kw = (struct rb_call_info_with_kwarg *)ci;
    const VALUE *const passed_keywords = ci_kw->kw_arg->keywords;
    const int kw_len = ci_kw->kw_arg->keyword_len;
    const VALUE h = rb_hash_new_with_size(kw_len);
    VALUE *sp = cfp->sp;
    int i;
    for (i=0; i<kw_len; i++) {
 rb_hash_aset(h, passed_keywords[i], (sp - kw_len)[i]);
    }
    (sp-kw_len)[0] = h;
    cfp->sp -= kw_len - 1;
    calling->argc -= kw_len - 1;
}
static VALUE
vm_to_proc(VALUE proc)
{
    if ((__builtin_expect(!!(!rb_obj_is_proc(proc)), 0))) {
 VALUE b;
 const rb_callable_method_entry_t *me =
     rb_callable_method_entry_with_refinements(rb_class_of((VALUE)(proc)), idTo_proc, ((void *)0));
 if (me) {
            b = rb_vm_call0(rb_current_execution_context(), proc, idTo_proc, 0, ((void *)0), me);
 }
 else {
     b = rb_check_convert_type_with_id(proc, RUBY_T_DATA, "Proc", idTo_proc);
 }
 if (!((VALUE)(b) != ((VALUE)RUBY_Qnil)) || !rb_obj_is_proc(b)) {
     rb_raise(rb_eTypeError,
       "wrong argument type %s (expected Proc)",
       rb_obj_classname(proc));
 }
 return b;
    }
    else {
 return proc;
    }
}
static VALUE
refine_sym_proc_call(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg)
{
    VALUE obj;
    ID mid;
    const rb_callable_method_entry_t *me;
    rb_execution_context_t *ec;
    const VALUE symbol = (rb_array_const_ptr_transient(callback_arg)[0]);
    const VALUE refinements = (rb_array_const_ptr_transient(callback_arg)[1]);
    VALUE klass;
    if (argc-- < 1) {
 rb_raise(rb_eArgError, "no receiver given");
    }
    obj = *argv++;
    mid = (rb_sym2id(symbol));
    for (klass = rb_class_of((VALUE)(obj)); klass; klass = RCLASS_SUPER(klass)) {
        me = rb_callable_method_entry(klass, mid);
        if (me) {
            me = rb_resolve_refined_method_callable(refinements, me);
            if (me) break;
        }
    }
    ec = rb_current_execution_context();
    if (!!((VALUE)(blockarg) != ((VALUE)RUBY_Qnil))) {
 vm_passed_block_handler_set(ec, blockarg);
    }
    if (!me) {
 return method_missing(obj, mid, argc, argv, MISSING_NOENTRY);
    }
    return rb_vm_call0(ec, obj, mid, argc, argv, me);
}
static VALUE
vm_caller_setup_arg_block(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
                          const struct rb_call_info *ci, rb_iseq_t *blockiseq, const int is_super)
{
    if (ci->flag & (0x01 << VM_CALL_ARGS_BLOCKARG_bit)) {
 VALUE block_code = *(--reg_cfp->sp);
 if (!((VALUE)(block_code) != ((VALUE)RUBY_Qnil))) {
            return 0;
        }
 else if (block_code == rb_block_param_proxy) {
            return VM_CF_BLOCK_HANDLER(reg_cfp);
        }
 else if (((((VALUE)(block_code)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(block_code) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(block_code) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(block_code))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) && rb_method_basic_definition_p(rb_cSymbol, idTo_proc)) {
     const rb_cref_t *cref = vm_env_cref(reg_cfp->ep);
     if (cref && !!((VALUE)(cref->refinements) != ((VALUE)RUBY_Qnil))) {
  VALUE ref = cref->refinements;
  VALUE func = rb_hash_lookup(ref, block_code);
  if (!((VALUE)(func) != ((VALUE)RUBY_Qnil))) {
                    VALUE callback_arg = rb_ary_tmp_new(2);
                    do { const VALUE _ary = (callback_arg); const VALUE _v = (block_code); VALUE *ptr = (VALUE *)rb_array_ptr_use_start(_ary, 1); rb_obj_write((VALUE)(_ary), (VALUE *)(&ptr[0]), (VALUE)(_v), "../ruby-2.6.9/vm_args.c", 892); rb_array_ptr_use_end(_ary, 1); } while (0);
                    do { const VALUE _ary = (callback_arg); const VALUE _v = (ref); VALUE *ptr = (VALUE *)rb_array_ptr_use_start(_ary, 1); rb_obj_write((VALUE)(_ary), (VALUE *)(&ptr[1]), (VALUE)(_v), "../ruby-2.6.9/vm_args.c", 893); rb_array_ptr_use_end(_ary, 1); } while (0);
                    (void)(((struct RBasic*)(callback_arg))->flags |= RUBY_FL_FREEZE);
                    func = rb_func_proc_new(refine_sym_proc_call, callback_arg);
      rb_hash_aset(ref, block_code, func);
  }
  block_code = func;
     }
            return block_code;
        }
        else {
            return vm_to_proc(block_code);
        }
    }
    else if (blockiseq != ((void *)0)) {
 struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(reg_cfp);
 captured->code.iseq = blockiseq;
        return VM_BH_FROM_ISEQ_BLOCK(captured);
    }
    else {
 if (is_super) {
            return ((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]);
        }
        else {
            return 0;
        }
    }
}
static inline VALUE vm_call_iseq_setup_2(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc, int opt_pc, int param_size, int local_size);
__attribute__ ((__always_inline__)) static VALUE vm_call_iseq_setup_normal(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const rb_callable_method_entry_t *me, int opt_pc, int param_size, int local_size);
static inline VALUE vm_call_iseq_setup_tailcall(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc, int opt_pc);
static VALUE vm_call_super_method(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc);
static VALUE vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc);
static VALUE vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc);
static inline VALUE vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc);
static vm_call_handler vm_call_iseq_setup_func(const struct rb_call_info *ci, const int param_size, const int local_size);
static VALUE
vm_call_iseq_setup_tailcall_0start(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_tailcall(ec, cfp, calling, ci, cc, 0);
}
static VALUE
vm_call_iseq_setup_normal_0start(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
    int param = iseq->body->param.size;
    int local = iseq->body->local_table_size;
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, param, local);
}
static int
rb_simple_iseq_p(const rb_iseq_t *iseq)
{
    return iseq->body->param.flags.has_opt == 0 &&
           iseq->body->param.flags.has_rest == 0 &&
    iseq->body->param.flags.has_post == 0 &&
    iseq->body->param.flags.has_kw == 0 &&
    iseq->body->param.flags.has_kwrest == 0 &&
    iseq->body->param.flags.has_block == 0;
}
static inline int
vm_callee_setup_arg(rb_execution_context_t *ec, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc,
      const rb_iseq_t *iseq, VALUE *argv, int param_size, int local_size)
{
    if ((__builtin_expect(!!(rb_simple_iseq_p(iseq) && !(ci->flag & (0x01 << VM_CALL_KW_SPLAT_bit))), 1))) {
 rb_control_frame_t *cfp = ec->cfp;
 do { if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) vm_caller_setup_arg_splat((cfp), (calling)); if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_KWARG_bit))), 0))) vm_caller_setup_arg_kw((cfp), (calling), (ci)); } while (0);
 if (calling->argc != iseq->body->param.lead_num) {
     argument_arity_error(ec, iseq, calling->argc, iseq->body->param.lead_num, iseq->body->param.lead_num);
 }
        do { if ((__builtin_expect(!!((!((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !((ci)->flag & (0x01 << VM_CALL_KWARG_bit)) && !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED))), 1))) ((cc)->call = (vm_call_iseq_setup_func(ci, param_size, local_size))); } while (0);
 return 0;
    }
    else {
 return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_method);
    }
}
static VALUE
vm_call_iseq_setup(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
    const int param_size = iseq->body->param.size;
    const int local_size = iseq->body->local_table_size;
    const int opt_pc = vm_callee_setup_arg(ec, calling, ci, cc, def_iseq_ptr(cc->me->def), cfp->sp - calling->argc, param_size, local_size);
    return vm_call_iseq_setup_2(ec, cfp, calling, ci, cc, opt_pc, param_size, local_size);
}
static inline VALUE
vm_call_iseq_setup_2(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc,
       int opt_pc, int param_size, int local_size)
{
    if ((__builtin_expect(!!(!(ci->flag & (0x01 << VM_CALL_TAILCALL_bit))), 1))) {
        return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, opt_pc, param_size, local_size);
    }
    else {
 return vm_call_iseq_setup_tailcall(ec, cfp, calling, ci, cc, opt_pc);
    }
}
static inline VALUE
vm_call_iseq_setup_normal(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const rb_callable_method_entry_t *me,
                          int opt_pc, int param_size, int local_size)
{
    const rb_iseq_t *iseq = def_iseq_ptr(me->def);
    VALUE *argv = cfp->sp - calling->argc;
    VALUE *sp = argv + param_size;
    cfp->sp = argv - 1 ;
    vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL, calling->recv,
                  calling->block_handler, (VALUE)me,
                  iseq->body->iseq_encoded + opt_pc, sp,
                  local_size - param_size,
                  iseq->body->stack_max);
    return ((VALUE)RUBY_Qundef);
}
static inline VALUE
vm_call_iseq_setup_tailcall(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc,
       int opt_pc)
{
    unsigned int i;
    VALUE *argv = cfp->sp - calling->argc;
    const rb_callable_method_entry_t *me = cc->me;
    const rb_iseq_t *iseq = def_iseq_ptr(me->def);
    VALUE *src_argv = argv;
    VALUE *sp_orig, *sp;
    VALUE finish_flag = VM_FRAME_FINISHED_P(cfp) ? VM_FRAME_FLAG_FINISH : 0;
    if (VM_BH_FROM_CFP_P(calling->block_handler, cfp)) {
 struct rb_captured_block *dst_captured = VM_CFP_TO_CAPTURED_BLOCK(((cfp)+1));
 const struct rb_captured_block *src_captured = VM_BH_TO_CAPT_BLOCK(calling->block_handler);
 dst_captured->code.val = src_captured->code.val;
 if (VM_BH_ISEQ_BLOCK_P(calling->block_handler)) {
     calling->block_handler = VM_BH_FROM_ISEQ_BLOCK(dst_captured);
 }
 else {
     calling->block_handler = VM_BH_FROM_IFUNC_BLOCK(dst_captured);
 }
    }
    vm_pop_frame(ec, cfp, cfp->ep);
    cfp = ec->cfp;
    sp_orig = sp = cfp->sp;
    sp[0] = calling->recv;
    sp++;
    for (i=0; i < iseq->body->param.size; i++) {
 *sp++ = src_argv[i];
    }
    vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL | finish_flag,
    calling->recv, calling->block_handler, (VALUE)me,
    iseq->body->iseq_encoded + opt_pc, sp,
    iseq->body->local_table_size - iseq->body->param.size,
    iseq->body->stack_max);
    cfp->sp = sp_orig;
    rb_vm_check_ints(ec);
    return ((VALUE)RUBY_Qundef);
}
static VALUE
call_cfunc_m2(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, rb_ary_new_from_values(argc, argv));
}
static VALUE
call_cfunc_m1(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(argc, argv, recv);
}
static VALUE
call_cfunc_0(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv);
}
static VALUE
call_cfunc_1(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0]);
}
static VALUE
call_cfunc_2(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0], argv[1]);
}
static VALUE
call_cfunc_3(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0], argv[1], argv[2]);
}
static VALUE
call_cfunc_4(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0], argv[1], argv[2], argv[3]);
}
static VALUE
call_cfunc_5(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4]);
}
static VALUE
call_cfunc_6(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
}
static VALUE
call_cfunc_7(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
}
static VALUE
call_cfunc_8(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
}
static VALUE
call_cfunc_9(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
}
static VALUE
call_cfunc_10(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
}
static VALUE
call_cfunc_11(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]);
}
static VALUE
call_cfunc_12(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11]);
}
static VALUE
call_cfunc_13(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12]);
}
static VALUE
call_cfunc_14(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]);
}
static VALUE
call_cfunc_15(VALUE (*func)(), VALUE recv, int argc, const VALUE *argv)
{
    return (*func)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14]);
}
static inline int
vm_cfp_consistent_p(rb_execution_context_t *ec, const rb_control_frame_t *reg_cfp)
{
    const int ov_flags = RAISED_STACKOVERFLOW;
    if ((__builtin_expect(!!(reg_cfp == ec->cfp + 1), 1))) return 1;
    if ((((ec)->raised_flag & (ov_flags)) != 0)) {
 ((ec)->raised_flag &= ~(ov_flags));
 return 1;
    }
    return 0;
}
#define CHECK_CFP_CONSISTENCY(func) (LIKELY(vm_cfp_consistent_p(ec, reg_cfp)) ? (void)0 : rb_bug(func ": cfp consistency error (%p, %p)", (void *)reg_cfp, (void *)(ec->cfp+1)))
static inline
const rb_method_cfunc_t *
vm_method_cfunc_entry(const rb_callable_method_entry_t *me)
{
    return &me->def->body.cfunc;
}
static VALUE
vm_call_cfunc_with_frame(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    VALUE val;
    const rb_callable_method_entry_t *me = cc->me;
    const rb_method_cfunc_t *cfunc = vm_method_cfunc_entry(me);
    int len = cfunc->argc;
    VALUE recv = calling->recv;
    VALUE block_handler = calling->block_handler;
    int argc = calling->argc;
    do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
    do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_vm_global_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, recv, me->def->original_id, ci->mid, me->owner, ((VALUE)RUBY_Qundef), 0); } } while (0);
    vm_push_frame(ec, ((void *)0), VM_FRAME_MAGIC_CFUNC | VM_FRAME_FLAG_CFRAME | VM_ENV_FLAG_LOCAL, recv,
    block_handler, (VALUE)me,
    0, ec->cfp->sp, 0, 0);
    if (len >= 0) rb_check_arity(argc, len, len);
    reg_cfp->sp -= argc + 1;
    val = (*cfunc->invoker)(cfunc->func, recv, argc, reg_cfp->sp + 1);
    ((__builtin_expect(!!(vm_cfp_consistent_p(ec, reg_cfp)), 1)) ? (void)0 : rb_bug("vm_call_cfunc" ": cfp consistency error (%p, %p)", (void *)reg_cfp, (void *)(ec->cfp+1)));
    rb_vm_pop_frame(ec);
    do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_vm_global_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, recv, me->def->original_id, ci->mid, me->owner, val, 0); } } while (0);
    do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
    return val;
}
static VALUE
vm_call_cfunc(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    do { if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) vm_caller_setup_arg_splat((reg_cfp), (calling)); if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_KWARG_bit))), 0))) vm_caller_setup_arg_kw((reg_cfp), (calling), (ci)); } while (0);
    return vm_call_cfunc_with_frame(ec, reg_cfp, calling, ci, cc);
}
static VALUE
vm_call_ivar(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    cfp->sp -= 1;
    return vm_getivar(calling->recv, cc->me->def->body.attr.id, ((void *)0), cc, 1);
}
static VALUE
vm_call_attrset(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    VALUE val = *(cfp->sp - 1);
    cfp->sp -= 2;
    return vm_setivar(calling->recv, cc->me->def->body.attr.id, val, ((void *)0), cc, 1);
}
static inline VALUE
vm_call_bmethod_body(rb_execution_context_t *ec, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc, const VALUE *argv)
{
    rb_proc_t *proc;
    VALUE val;
    (((proc)) = (rb_proc_t*)(((struct RData*)(((cc->me->def->body.bmethod.proc))))->data));
    val = rb_vm_invoke_bmethod(ec, proc, calling->recv, calling->argc, argv, calling->block_handler, cc->me);
    return val;
}
static VALUE
vm_call_bmethod(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    VALUE *argv;
    int argc;
    do { if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) vm_caller_setup_arg_splat((cfp), (calling)); if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_KWARG_bit))), 0))) vm_caller_setup_arg_kw((cfp), (calling), (ci)); } while (0);
    argc = calling->argc;
    argv = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(argc)), _Alignof(VALUE) * 8);
    memcpy((argv), (cfp->sp - argc), sizeof(VALUE)*(size_t)(argc));
    cfp->sp += - argc - 1;
    return vm_call_bmethod_body(ec, calling, ci, cc, argv);
}
static enum method_missing_reason
ci_missing_reason(const struct rb_call_info *ci)
{
    enum method_missing_reason stati128 = MISSING_NOENTRY;
    if (ci->flag & (0x01 << VM_CALL_VCALL_bit)) stati128 |= MISSING_VCALL;
    if (ci->flag & (0x01 << VM_CALL_FCALL_bit)) stati128 |= MISSING_FCALL;
    if (ci->flag & (0x01 << VM_CALL_SUPER_bit)) stati128 |= MISSING_SUPER;
    return stati128;
}
static VALUE
vm_call_opt_send(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *orig_ci, struct rb_call_cache *orig_cc)
{
    int i;
    VALUE sym;
    struct rb_call_info *ci;
    struct rb_call_info_with_kwarg ci_entry;
    struct rb_call_cache cc_entry, *cc;
    do { if ((__builtin_expect(!!(((orig_ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) vm_caller_setup_arg_splat((reg_cfp), (calling)); if ((__builtin_expect(!!(((orig_ci)->flag & (0x01 << VM_CALL_KWARG_bit))), 0))) vm_caller_setup_arg_kw((reg_cfp), (calling), (orig_ci)); } while (0);
    i = calling->argc - 1;
    if (calling->argc == 0) {
 rb_raise(rb_eArgError, "no method name given");
    }
    if (orig_ci->flag & (0x01 << VM_CALL_KWARG_bit)) {
 ci = (struct rb_call_info *)&ci_entry;
 ci_entry = *(struct rb_call_info_with_kwarg *)orig_ci;
    }
    else {
 ci = &ci_entry.ci;
 ci_entry.ci = *orig_ci;
    }
    ci->flag = ci->flag & ~(0x01 << VM_CALL_KWARG_bit);
    cc_entry = *orig_cc;
    cc = &cc_entry;
    sym = (*(((((reg_cfp)->sp)))-(i)-1));
    if (!(ci->mid = rb_check_id(&sym))) {
 if (rb_method_basic_definition_p(rb_class_of((VALUE)(calling->recv)), idMethodMissing)) {
     VALUE exc =
  rb_make_no_method_exception(rb_eNoMethodError, 0, calling->recv,
         ((int)(calling->argc)), &(*(((((reg_cfp)->sp)))-(i)-1)),
         ci->flag & ((0x01 << VM_CALL_FCALL_bit)|(0x01 << VM_CALL_VCALL_bit)));
     rb_exc_raise(exc);
 }
 (*(((((reg_cfp)->sp)))-(i)-1)) = rb_str_intern(sym);
 ci->mid = idMethodMissing;
 ec->method_missing_reason = cc->aux.method_missing_reason = ci_missing_reason(ci);
    }
    else {
 if (i > 0) {
     memmove((&(*(((((reg_cfp)->sp)))-(i)-1))), (&(*(((((reg_cfp)->sp)))-(i-1)-1))), sizeof(VALUE)*(size_t)(i));
 }
 calling->argc -= 1;
 (((reg_cfp)->sp) -= (((1))));
    }
    cc->me = rb_callable_method_entry_with_refinements(rb_class_of((VALUE)(calling->recv)), ci->mid, ((void *)0));
    ci->flag = (0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_OPT_SEND_bit);
    return vm_call_method(ec, reg_cfp, calling, ci, cc);
}
static inline VALUE vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler);
__attribute__ ((__noinline__)) static VALUE vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler);
static VALUE
vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
    struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler)
{
    int argc = calling->argc;
    if (argc > 0) memmove((&(*(((((reg_cfp)->sp)))-(argc)-1))), (&(*(((((reg_cfp)->sp)))-(argc-1)-1))), sizeof(VALUE)*(size_t)(argc));
    (((reg_cfp)->sp) -= (((1))));
    return vm_invoke_block(ec, reg_cfp, calling, ci, block_handler);
}
static VALUE
vm_call_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    VALUE procval = calling->recv;
    return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, VM_BH_FROM_PROC(procval));
}
static VALUE
vm_call_opt_block_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    VALUE block_handler = VM_ENV_BLOCK_HANDLER(VM_CF_LEP(reg_cfp));
    if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_CALL)]&((1 << 12))) == 0), 1)))) {
 return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, block_handler);
    }
    else {
 calling->recv = rb_vm_bh_to_procval(ec, block_handler);
 vm_search_method(ci, cc, calling->recv);
 return vm_call_general(ec, reg_cfp, calling, ci, cc);
    }
}
static VALUE
vm_call_method_missing(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *orig_ci, struct rb_call_cache *orig_cc)
{
    VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc));
    struct rb_call_info ci_entry;
    const struct rb_call_info *ci;
    struct rb_call_cache cc_entry, *cc;
    unsigned int argc;
    do { if ((__builtin_expect(!!(((orig_ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) vm_caller_setup_arg_splat((reg_cfp), (calling)); if ((__builtin_expect(!!(((orig_ci)->flag & (0x01 << VM_CALL_KWARG_bit))), 0))) vm_caller_setup_arg_kw((reg_cfp), (calling), (orig_ci)); } while (0);
    argc = calling->argc+1;
    ci_entry.flag = (0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_OPT_SEND_bit);
    ci_entry.mid = idMethodMissing;
    ci_entry.orig_argc = argc;
    ci = &ci_entry;
    cc_entry = *orig_cc;
    cc_entry.me =
 rb_callable_method_entry_without_refinements(rb_class_of((VALUE)(calling->recv)),
           idMethodMissing, ((void *)0));
    cc = &cc_entry;
    calling->argc = argc;
    if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((reg_cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(reg_cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((reg_cfp)->sp) + (1)) + 1) >= (reg_cfp))), 1))) {(void)0;} else vm_stackoverflow();
    if (argc > 1) {
 memmove((argv+1), (argv), sizeof(VALUE)*(size_t)(argc-1));
    }
    argv[0] = (rb_id2sym(orig_ci->mid));
    (((reg_cfp)->sp) += (((1))));
    ec->method_missing_reason = orig_cc->aux.method_missing_reason;
    return vm_call_method(ec, reg_cfp, calling, ci, cc);
}
static const rb_callable_method_entry_t *refined_method_callable_without_refinement(const rb_callable_method_entry_t *me);
static VALUE
vm_call_zsuper(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc, VALUE klass)
{
    klass = RCLASS_SUPER(klass);
    cc->me = klass ? rb_callable_method_entry(klass, ci->mid) : ((void *)0);
    if (!cc->me) {
 return vm_call_method_nome(ec, cfp, calling, ci, cc);
    }
    if (cc->me->def->type == VM_METHOD_TYPE_REFINED &&
 cc->me->def->body.refined.orig_me) {
 cc->me = refined_method_callable_without_refinement(cc->me);
    }
    return vm_call_method_each_type(ec, cfp, calling, ci, cc);
}
static inline VALUE
find_refinement(VALUE refinements, VALUE klass)
{
    if (!((VALUE)(refinements) != ((VALUE)RUBY_Qnil))) {
 return ((VALUE)RUBY_Qnil);
    }
    return rb_hash_lookup(refinements, klass);
}
__attribute__ ((__pure__)) static rb_control_frame_t * current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp);
static rb_control_frame_t *
current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp)
{
    rb_control_frame_t *top_cfp = cfp;
    if (cfp->iseq && cfp->iseq->body->type == ISEQ_TYPE_BLOCK) {
 const rb_iseq_t *local_iseq = cfp->iseq->body->local_iseq;
 do {
     cfp = ((cfp)+1);
     if (RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) {
  return top_cfp;
     }
 } while (cfp->iseq != local_iseq);
    }
    return cfp;
}
__attribute__ ((__visibility__("default"))) extern VALUE
rb_find_defined_class_by_owner(VALUE current_class, VALUE target_owner)
{
    VALUE klass = current_class;
    if (( ((RUBY_T_ICLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ICLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ICLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ICLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ICLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ICLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ICLASS) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_ICLASS))) && ((!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((klass)))->flags&((((VALUE)RUBY_FL_USER5)))):0)) klass = (((struct RBasic*)(klass))->klass);
    while (!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
 VALUE owner = ( ((RUBY_T_ICLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ICLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ICLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ICLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ICLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ICLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ICLASS) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_ICLASS))) ? (((struct RBasic*)(klass))->klass) : klass;
 if (owner == target_owner) {
     return klass;
 }
 klass = RCLASS_SUPER(klass);
    }
    return current_class;
}
static const rb_callable_method_entry_t *
aliased_callable_method_entry(const rb_callable_method_entry_t *me)
{
    const rb_method_entry_t *orig_me = me->def->body.alias.original_me;
    const rb_callable_method_entry_t *cme;
    if (orig_me->defined_class == 0) {
 VALUE defined_class = rb_find_defined_class_by_owner(me->defined_class, orig_me->owner);
 ((void)0);
 cme = rb_method_entry_complement_defined_class(orig_me, me->called_id, defined_class);
 if (me->def->alias_count + me->def->complemented_count == 0) {
     rb_obj_write((VALUE)(me), (VALUE *)(&me->def->body.alias.original_me), (VALUE)(cme), "../ruby-2.6.9/vm_insnhelper.c", 2195);
 }
 else {
     rb_method_definition_t *def =
  rb_method_definition_create(VM_METHOD_TYPE_ALIAS, me->def->original_id);
     rb_method_definition_set((rb_method_entry_t *)me, def, (void *)cme);
 }
    }
    else {
 cme = (const rb_callable_method_entry_t *)orig_me;
    }
    ((void)0);
    return cme;
}
static const rb_callable_method_entry_t *
refined_method_callable_without_refinement(const rb_callable_method_entry_t *me)
{
    const rb_method_entry_t *orig_me = me->def->body.refined.orig_me;
    const rb_callable_method_entry_t *cme;
    if (orig_me->defined_class == 0) {
 cme = ((void *)0);
 rb_notimplement();
    }
    else {
 cme = (const rb_callable_method_entry_t *)orig_me;
    }
    ((void)0);
    if ((!(cme) || !(cme)->def || (cme)->def->type == VM_METHOD_TYPE_UNDEF)) {
 cme = ((void *)0);
    }
    return cme;
}
static VALUE
vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    switch (cc->me->def->type) {
      case VM_METHOD_TYPE_ISEQ:
        do { if ((__builtin_expect(!!(1), 1))) ((cc)->call = (vm_call_iseq_setup)); } while (0);
 return vm_call_iseq_setup(ec, cfp, calling, ci, cc);
      case VM_METHOD_TYPE_NOTIMPLEMENTED:
      case VM_METHOD_TYPE_CFUNC:
        do { if ((__builtin_expect(!!(1), 1))) ((cc)->call = (vm_call_cfunc)); } while (0);
 return vm_call_cfunc(ec, cfp, calling, ci, cc);
      case VM_METHOD_TYPE_ATTRSET:
 do { if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) vm_caller_setup_arg_splat((cfp), (calling)); if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_KWARG_bit))), 0))) vm_caller_setup_arg_kw((cfp), (calling), (ci)); } while (0);
 rb_check_arity(calling->argc, 1, 1);
 cc->aux.index = 0;
        do { if ((__builtin_expect(!!(!((ci->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) || (ci->flag & (0x01 << VM_CALL_KWARG_bit)))), 1))) ((cc)->call = (vm_call_attrset)); } while (0);
 return vm_call_attrset(ec, cfp, calling, ci, cc);
      case VM_METHOD_TYPE_IVAR:
 do { if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) vm_caller_setup_arg_splat((cfp), (calling)); if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_KWARG_bit))), 0))) vm_caller_setup_arg_kw((cfp), (calling), (ci)); } while (0);
 rb_check_arity(calling->argc, 0, 0);
 cc->aux.index = 0;
        do { if ((__builtin_expect(!!(!(ci->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 1))) ((cc)->call = (vm_call_ivar)); } while (0);
 return vm_call_ivar(ec, cfp, calling, ci, cc);
      case VM_METHOD_TYPE_MISSING:
 cc->aux.method_missing_reason = 0;
        do { if ((__builtin_expect(!!(1), 1))) ((cc)->call = (vm_call_method_missing)); } while (0);
 return vm_call_method_missing(ec, cfp, calling, ci, cc);
      case VM_METHOD_TYPE_BMETHOD:
        do { if ((__builtin_expect(!!(1), 1))) ((cc)->call = (vm_call_bmethod)); } while (0);
 return vm_call_bmethod(ec, cfp, calling, ci, cc);
      case VM_METHOD_TYPE_ALIAS:
 cc->me = aliased_callable_method_entry(cc->me);
 ((void)0);
 return vm_call_method_each_type(ec, cfp, calling, ci, cc);
      case VM_METHOD_TYPE_OPTIMIZED:
 switch (cc->me->def->body.optimize_type) {
   case OPTIMIZED_METHOD_TYPE_SEND:
            do { if ((__builtin_expect(!!(1), 1))) ((cc)->call = (vm_call_opt_send)); } while (0);
     return vm_call_opt_send(ec, cfp, calling, ci, cc);
   case OPTIMIZED_METHOD_TYPE_CALL:
            do { if ((__builtin_expect(!!(1), 1))) ((cc)->call = (vm_call_opt_call)); } while (0);
     return vm_call_opt_call(ec, cfp, calling, ci, cc);
   case OPTIMIZED_METHOD_TYPE_BLOCK_CALL:
            do { if ((__builtin_expect(!!(1), 1))) ((cc)->call = (vm_call_opt_block_call)); } while (0);
     return vm_call_opt_block_call(ec, cfp, calling, ci, cc);
   default:
     rb_bug("vm_call_method: unsupported optimized method type (%d)",
     cc->me->def->body.optimize_type);
 }
      case VM_METHOD_TYPE_UNDEF:
 break;
      case VM_METHOD_TYPE_ZSUPER:
        return vm_call_zsuper(ec, cfp, calling, ci, cc, ((((struct RClass*)(cc->me->defined_class))->ptr)->origin_));
      case VM_METHOD_TYPE_REFINED: {
 const rb_cref_t *cref = rb_vm_get_cref(cfp->ep);
 VALUE refinements = cref ? CREF_REFINEMENTS(cref) : ((VALUE)RUBY_Qnil);
 VALUE refinement;
 const rb_callable_method_entry_t *ref_me;
 refinement = find_refinement(refinements, cc->me->owner);
 if (!((VALUE)(refinement) != ((VALUE)RUBY_Qnil))) {
     goto no_refinement_dispatch;
 }
 ref_me = rb_callable_method_entry(refinement, ci->mid);
 if (ref_me) {
     if (cc->call == vm_call_super_method) {
  const rb_control_frame_t *top_cfp = current_method_entry(ec, cfp);
  const rb_callable_method_entry_t *top_me = rb_vm_frame_method_entry(top_cfp);
  if (top_me && rb_method_definition_eq(ref_me->def, top_me->def)) {
      goto no_refinement_dispatch;
  }
     }
            if (cc->me->def->type != VM_METHOD_TYPE_REFINED ||
                 cc->me->def != ref_me->def) {
                 cc->me = ref_me;
            }
     if (ref_me->def->type != VM_METHOD_TYPE_REFINED) {
  return vm_call_method(ec, cfp, calling, ci, cc);
     }
 }
 else {
     cc->me = ((void *)0);
     return vm_call_method_nome(ec, cfp, calling, ci, cc);
 }
      no_refinement_dispatch:
 if (cc->me->def->body.refined.orig_me) {
     cc->me = refined_method_callable_without_refinement(cc->me);
 }
 else {
     VALUE klass = RCLASS_SUPER(cc->me->defined_class);
     cc->me = klass ? rb_callable_method_entry(klass, ci->mid) : ((void *)0);
 }
 return vm_call_method(ec, cfp, calling, ci, cc);
      }
    }
    rb_bug("vm_call_method: unsupported method type (%d)", cc->me->def->type);
}
__attribute__ ((__noreturn__)) static void vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj, int call_status);
static VALUE
vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    const int stati128 = ci_missing_reason(ci);
    if (ci->mid == idMethodMissing) {
 rb_control_frame_t *reg_cfp = cfp;
 VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc));
 vm_raise_method_missing(ec, calling->argc, argv, calling->recv, stati128);
    }
    else {
 cc->aux.method_missing_reason = stati128;
        do { if ((__builtin_expect(!!(1), 1))) ((cc)->call = (vm_call_method_missing)); } while (0);
 return vm_call_method_missing(ec, cfp, calling, ci, cc);
    }
}
static inline VALUE
vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    ((void)0);
    if (cc->me != ((void *)0)) {
 switch ((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
   case METHOD_VISI_PUBLIC:
     return vm_call_method_each_type(ec, cfp, calling, ci, cc);
   case METHOD_VISI_PRIVATE:
     if (!(ci->flag & (0x01 << VM_CALL_FCALL_bit))) {
  enum method_missing_reason stati128 = MISSING_PRIVATE;
  if (ci->flag & (0x01 << VM_CALL_VCALL_bit)) stati128 |= MISSING_VCALL;
  cc->aux.method_missing_reason = stati128;
                do { if ((__builtin_expect(!!(1), 1))) ((cc)->call = (vm_call_method_missing)); } while (0);
  return vm_call_method_missing(ec, cfp, calling, ci, cc);
     }
     return vm_call_method_each_type(ec, cfp, calling, ci, cc);
   case METHOD_VISI_PROTECTED:
     if (!(ci->flag & (0x01 << VM_CALL_OPT_SEND_bit))) {
  if (!rb_obj_is_kind_of(cfp->self, cc->me->defined_class)) {
      cc->aux.method_missing_reason = MISSING_PROTECTED;
      return vm_call_method_missing(ec, cfp, calling, ci, cc);
  }
  else {
      struct rb_call_cache cc_entry;
      cc_entry = *cc;
      cc = &cc_entry;
      ((void)0);
      return vm_call_method_each_type(ec, cfp, calling, ci, cc);
  }
     }
     return vm_call_method_each_type(ec, cfp, calling, ci, cc);
   default:
     rb_bug("unreachable");
 }
    }
    else {
 return vm_call_method_nome(ec, cfp, calling, ci, cc);
    }
}
static VALUE
vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_method(ec, reg_cfp, calling, ci, cc);
}
static VALUE
vm_call_super_method(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    if (cc->call != vm_call_super_method) rb_bug("bug");
    return vm_call_method(ec, reg_cfp, calling, ci, cc);
}
static inline VALUE
vm_search_normal_superclass(VALUE klass)
{
    if ((int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_ICLASS &&
 ((!(((VALUE)(((struct RBasic*)(klass))->klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(((struct RBasic*)(klass))->klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(((struct RBasic*)(klass))->klass))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((((struct RBasic*)(klass))->klass)))->flags&((RMODULE_IS_REFINEMENT))):0)) {
 klass = ((struct RBasic*)(klass))->klass;
    }
    klass = ((((struct RClass*)(klass))->ptr)->origin_);
    return RCLASS_SUPER(klass);
}
__attribute__ ((__noreturn__)) static void vm_super_outside(void);
static void
vm_super_outside(void)
{
    rb_raise(rb_eNoMethodError, "super called outside of method");
}
static void
vm_search_super_method(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
         struct rb_calling_info *calling, struct rb_call_info *ci, struct rb_call_cache *cc)
{
    VALUE current_defined_class, klass;
    const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(reg_cfp);
    if (!me) {
 vm_super_outside();
    }
    current_defined_class = me->defined_class;
    if (!!((VALUE)(((((struct RClass*)(current_defined_class))->ptr)->refined_class)) != ((VALUE)RUBY_Qnil))) {
 current_defined_class = ((((struct RClass*)(current_defined_class))->ptr)->refined_class);
    }
    if ((int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) != RUBY_T_MODULE &&
 (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) != RUBY_T_ICLASS &&
 !((!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((current_defined_class)))->flags&((RMODULE_INCLUDED_INTO_REFINEMENT))):0) &&
 !rb_obj_is_kind_of(calling->recv, current_defined_class)) {
 VALUE m = ( ((RUBY_T_ICLASS) == RUBY_T_FIXNUM) ? (((int)(long)(current_defined_class))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ICLASS) == RUBY_T_TRUE) ? ((current_defined_class) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ICLASS) == RUBY_T_FALSE) ? ((current_defined_class) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ICLASS) == RUBY_T_NIL) ? ((current_defined_class) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ICLASS) == RUBY_T_UNDEF) ? ((current_defined_class) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ICLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(current_defined_class)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ICLASS) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) == (RUBY_T_ICLASS))) ?
     ((struct RBasic*)(current_defined_class))->klass : current_defined_class;
 rb_raise(rb_eTypeError,
   "self has wrong type to call super in this context: "
   "%""l""i" "\v"" (expected %""l""i" "\v"")",
   rb_obj_class(calling->recv), m);
    }
    if (me->def->type == VM_METHOD_TYPE_BMETHOD && (ci->flag & (0x01 << VM_CALL_ZSUPER_bit))) {
 rb_raise(rb_eRuntimeError,
   "implicit argument passing of super from method defined"
   " by define_method() is not supported."
   " Specify all arguments explicitly.");
    }
    ci->mid = me->def->original_id;
    klass = vm_search_normal_superclass(me->defined_class);
    if (!klass) {
 cc->aux.method_missing_reason = MISSING_SUPER;
        do { if ((__builtin_expect(!!(1), 1))) ((cc)->call = (vm_call_method_missing)); } while (0);
    }
    else {
 cc->me = rb_callable_method_entry(klass, ci->mid);
        do { if ((__builtin_expect(!!(1), 1))) ((cc)->call = (vm_call_super_method)); } while (0);
    }
}
static inline int
block_proc_is_lambda(const VALUE procval)
{
    rb_proc_t *proc;
    if (procval) {
 (((proc)) = (rb_proc_t*)(((struct RData*)(((procval))))->data));
 return proc->is_lambda;
    }
    else {
 return 0;
    }
}
static VALUE
vm_yield_with_cfunc(rb_execution_context_t *ec,
      const struct rb_captured_block *captured,
                    VALUE self, int argc, const VALUE *argv, VALUE block_handler,
                    const rb_callable_method_entry_t *me)
{
    int is_lambda = 0;
    VALUE val, arg, blockarg;
    const struct vm_ifunc *ifunc = captured->code.ifunc;
    if (is_lambda) {
 arg = rb_ary_new_from_values(argc, argv);
    }
    else if (argc == 0) {
 arg = ((VALUE)RUBY_Qnil);
    }
    else {
 arg = argv[0];
    }
    blockarg = rb_vm_bh_to_procval(ec, block_handler);
    vm_push_frame(ec, (const rb_iseq_t *)captured->code.ifunc,
                  VM_FRAME_MAGIC_IFUNC | VM_FRAME_FLAG_CFRAME |
                  (me ? VM_FRAME_FLAG_BMETHOD : 0),
    self,
    ((VALUE)((captured->ep)) | (0x01)),
                  (VALUE)me,
    0, ec->cfp->sp, 0, 0);
    val = (*ifunc->func)(arg, ifunc->data, argc, argv, blockarg);
    rb_vm_pop_frame(ec);
    return val;
}
static VALUE
vm_yield_with_symbol(rb_execution_context_t *ec, VALUE symbol, int argc, const VALUE *argv, VALUE block_handler)
{
    return rb_sym_proc_call((rb_sym2id(symbol)), argc, argv, rb_vm_bh_to_procval(ec, block_handler));
}
static inline int
vm_callee_setup_block_arg_arg0_splat(rb_control_frame_t *cfp, const rb_iseq_t *iseq, VALUE *argv, VALUE ary)
{
    int i;
    long len = rb_array_len(ary);
    if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((cfp)->sp) + (iseq->body->param.lead_num)) + 1) >= (cfp))), 1))) {(void)0;} else vm_stackoverflow();
    for (i=0; i<len && i<iseq->body->param.lead_num; i++) {
 argv[i] = (rb_array_const_ptr_transient(ary)[i]);
    }
    return i;
}
static inline VALUE
vm_callee_setup_block_arg_arg0_check(VALUE *argv)
{
    VALUE ary, arg0 = argv[0];
    ary = rb_check_array_type(arg0);
    ((void)0);
    return ary;
}
static int
vm_callee_setup_block_arg(rb_execution_context_t *ec, struct rb_calling_info *calling, const struct rb_call_info *ci, const rb_iseq_t *iseq, VALUE *argv, const enum arg_setup_type arg_setup_type)
{
    if (rb_simple_iseq_p(iseq)) {
 rb_control_frame_t *cfp = ec->cfp;
 VALUE arg0;
 do { if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) vm_caller_setup_arg_splat((cfp), (calling)); if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_KWARG_bit))), 0))) vm_caller_setup_arg_kw((cfp), (calling), (ci)); } while (0);
 if (arg_setup_type == arg_setup_block &&
     calling->argc == 1 &&
     iseq->body->param.flags.has_lead &&
     !iseq->body->param.flags.ambiguous_param0 &&
     !!((VALUE)(arg0 = vm_callee_setup_block_arg_arg0_check(argv)) != ((VALUE)RUBY_Qnil))) {
     calling->argc = vm_callee_setup_block_arg_arg0_splat(cfp, iseq, argv, arg0);
 }
 if (calling->argc != iseq->body->param.lead_num) {
     if (arg_setup_type == arg_setup_block) {
  if (calling->argc < iseq->body->param.lead_num) {
      int i;
      if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((cfp)->sp) + (iseq->body->param.lead_num)) + 1) >= (cfp))), 1))) {(void)0;} else vm_stackoverflow();
      for (i=calling->argc; i<iseq->body->param.lead_num; i++) argv[i] = ((VALUE)RUBY_Qnil);
      calling->argc = iseq->body->param.lead_num;
  }
  else if (calling->argc > iseq->body->param.lead_num) {
      calling->argc = iseq->body->param.lead_num;
  }
     }
     else {
  argument_arity_error(ec, iseq, calling->argc, iseq->body->param.lead_num, iseq->body->param.lead_num);
     }
 }
 return 0;
    }
    else {
 return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_type);
    }
}
static int
vm_yield_setup_args(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int argc, VALUE *argv, VALUE block_handler, enum arg_setup_type arg_setup_type)
{
    struct rb_calling_info calling_entry, *calling;
    struct rb_call_info ci_entry, *ci;
    calling = &calling_entry;
    calling->argc = argc;
    calling->block_handler = block_handler;
    ci_entry.flag = 0;
    ci = &ci_entry;
    return vm_callee_setup_block_arg(ec, calling, ci, iseq, argv, arg_setup_type);
}
static VALUE
vm_invoke_iseq_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
       struct rb_calling_info *calling, const struct rb_call_info *ci,
       int is_lambda, const struct rb_captured_block *captured)
{
    const rb_iseq_t *iseq = rb_iseq_check(captured->code.iseq);
    const int arg_size = iseq->body->param.size;
    VALUE * const rsp = ((((reg_cfp)->sp))) - calling->argc;
    int opt_pc = vm_callee_setup_block_arg(ec, calling, ci, iseq, rsp, is_lambda ? arg_setup_method : arg_setup_block);
    (((reg_cfp)->sp) = (((rsp))));
    vm_push_frame(ec, iseq,
    VM_FRAME_MAGIC_BLOCK | (is_lambda ? VM_FRAME_FLAG_LAMBDA : 0),
    captured->self,
    ((VALUE)((captured->ep)) | (0x01)), 0,
    iseq->body->iseq_encoded + opt_pc,
    rsp + arg_size,
    iseq->body->local_table_size - arg_size, iseq->body->stack_max);
    return ((VALUE)RUBY_Qundef);
}
static VALUE
vm_invoke_symbol_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
         struct rb_calling_info *calling, const struct rb_call_info *ci,
         VALUE symbol)
{
    VALUE val;
    int argc;
    do { if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) vm_caller_setup_arg_splat((ec->cfp), (calling)); if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_KWARG_bit))), 0))) vm_caller_setup_arg_kw((ec->cfp), (calling), (ci)); } while (0);
    argc = calling->argc;
    val = vm_yield_with_symbol(ec, symbol, argc, (((((reg_cfp)->sp)))-(argc)), calling->block_handler);
    ((((reg_cfp)->sp) -= (((argc)))));
    return val;
}
static VALUE
vm_invoke_ifunc_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
        struct rb_calling_info *calling, const struct rb_call_info *ci,
        const struct rb_captured_block *captured)
{
    VALUE val;
    int argc;
    do { if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) vm_caller_setup_arg_splat((ec->cfp), (calling)); if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_KWARG_bit))), 0))) vm_caller_setup_arg_kw((ec->cfp), (calling), (ci)); } while (0);
    argc = calling->argc;
    val = vm_yield_with_cfunc(ec, captured, captured->self, argc, (((((reg_cfp)->sp)))-(argc)), calling->block_handler, ((void *)0));
    ((((reg_cfp)->sp) -= (((argc)))));
    return val;
}
static VALUE
vm_proc_to_block_handler(VALUE procval)
{
    const struct rb_block *block = vm_proc_block(procval);
    switch (vm_block_type(block)) {
      case block_type_iseq:
 return VM_BH_FROM_ISEQ_BLOCK(&block->as.captured);
      case block_type_ifunc:
 return VM_BH_FROM_IFUNC_BLOCK(&block->as.captured);
      case block_type_symbol:
 return VM_BH_FROM_SYMBOL(block->as.symbol);
      case block_type_proc:
 return VM_BH_FROM_PROC(block->as.proc);
    }
    __builtin_unreachable();
    return ((VALUE)RUBY_Qundef);
}
static inline VALUE
vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
  struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler)
{
    int is_lambda = 0;
  again:
    switch (vm_block_handler_type(block_handler)) {
      case block_handler_type_iseq:
 {
     const struct rb_captured_block *captured = VM_BH_TO_ISEQ_BLOCK(block_handler);
     return vm_invoke_iseq_block(ec, reg_cfp, calling, ci, is_lambda, captured);
 }
      case block_handler_type_ifunc:
 {
     const struct rb_captured_block *captured = VM_BH_TO_IFUNC_BLOCK(block_handler);
     return vm_invoke_ifunc_block(ec, reg_cfp, calling, ci, captured);
 }
      case block_handler_type_proc:
 is_lambda = block_proc_is_lambda(VM_BH_TO_PROC(block_handler));
 block_handler = vm_proc_to_block_handler(VM_BH_TO_PROC(block_handler));
 goto again;
      case block_handler_type_symbol:
 return vm_invoke_symbol_block(ec, reg_cfp, calling, ci, VM_BH_TO_SYMBOL(block_handler));
    }
    __builtin_unreachable();
    return ((VALUE)RUBY_Qnil);
}
static VALUE
vm_make_proc_with_iseq(const rb_iseq_t *blockiseq)
{
    const rb_execution_context_t *ec = rb_current_execution_context();
    const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
    struct rb_captured_block *captured;
    if (cfp == 0) {
 rb_bug("vm_make_proc_with_iseq: unreachable");
    }
    captured = VM_CFP_TO_CAPTURED_BLOCK(cfp);
    captured->code.iseq = blockiseq;
    return rb_vm_make_proc(ec, captured, rb_cProc);
}
static VALUE
vm_once_exec(VALUE iseq)
{
    VALUE proc = vm_make_proc_with_iseq((rb_iseq_t *)iseq);
    return rb_proc_call_with_block(proc, 0, 0, ((VALUE)RUBY_Qnil));
}
static VALUE
vm_once_clear(VALUE data)
{
    union iseq_inline_storage_entry *is = (union iseq_inline_storage_entry *)data;
    is->once.running_thread = ((void *)0);
    return ((VALUE)RUBY_Qnil);
}
rb_control_frame_t *
__attribute__ ((__fastcall__)) rb_vm_opt_struct_aref(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp)
{
    (*(((((reg_cfp)->sp)))-(0)-1)) = rb_struct_aref((((((reg_cfp)))->self)), (*(((((reg_cfp)->sp)))-(0)-1)));
    return reg_cfp;
}
rb_control_frame_t *
__attribute__ ((__fastcall__)) rb_vm_opt_struct_aset(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp)
{
    rb_struct_aset((((((reg_cfp)))->self)), (*(((((reg_cfp)->sp)))-(0)-1)), (*(((((reg_cfp)->sp)))-(1)-1)));
    return reg_cfp;
}
static enum defined_type
check_respond_to_missing(VALUE obj, VALUE v)
{
    VALUE args[2];
    VALUE r;
    args[0] = obj; args[1] = ((VALUE)RUBY_Qfalse);
    r = rb_check_funcall(v, idRespond_to_missing, 2, args);
    if (r != ((VALUE)RUBY_Qundef) && !(((VALUE)(r) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
 return DEFINED_METHOD;
    }
    else {
 return DEFINED_NOT_DEFINED;
    }
}
static VALUE
vm_defined(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, rb_num_t op_type, VALUE obj, VALUE needstr, VALUE v)
{
    VALUE klass;
    enum defined_type expr_type = DEFINED_NOT_DEFINED;
    enum defined_type type = (enum defined_type)op_type;
    switch (type) {
      case DEFINED_IVAR:
 if (rb_ivar_defined((((((reg_cfp)))->self)), (rb_sym2id(obj)))) {
     expr_type = DEFINED_IVAR;
 }
 break;
      case DEFINED_IVAR2:
 klass = vm_get_cbase(((((reg_cfp)->ep))));
 break;
      case DEFINED_GVAR:
 if (rb_gvar_defined(rb_global_entry((rb_sym2id(obj))))) {
     expr_type = DEFINED_GVAR;
 }
 break;
      case DEFINED_CVAR: {
 const rb_cref_t *cref = rb_vm_get_cref(((((reg_cfp)->ep))));
 klass = vm_get_cvar_base(cref, (((reg_cfp))));
 if (rb_cvar_defined(klass, (rb_sym2id(obj)))) {
     expr_type = DEFINED_CVAR;
 }
 break;
      }
      case DEFINED_CONST:
 klass = v;
 if (vm_get_ev_const(ec, klass, (rb_sym2id(obj)), 1)) {
     expr_type = DEFINED_CONST;
 }
 break;
      case DEFINED_FUNC:
 klass = rb_class_of((VALUE)(v));
 if (rb_method_boundp(klass, (rb_sym2id(obj)), 0)) {
     expr_type = DEFINED_METHOD;
 }
 else {
     expr_type = check_respond_to_missing(obj, v);
 }
 break;
      case DEFINED_METHOD:{
 VALUE klass = rb_class_of((VALUE)(v));
 const rb_method_entry_t *me = rb_method_entry(klass, (rb_sym2id(obj)));
 if (me) {
     switch ((rb_method_visibility_t)(((me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
       case METHOD_VISI_PRIVATE:
  break;
       case METHOD_VISI_PROTECTED:
  if (!rb_obj_is_kind_of((((((reg_cfp)))->self)), rb_class_real(me->defined_class))) {
      break;
  }
       case METHOD_VISI_PUBLIC:
  expr_type = DEFINED_METHOD;
  break;
       default:
  rb_bug("vm_defined: unreachable: %u", (unsigned int)(rb_method_visibility_t)(((me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)));
     }
 }
 else {
     expr_type = check_respond_to_missing(obj, v);
 }
 break;
      }
      case DEFINED_YIELD:
 if (((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]) != 0) {
     expr_type = DEFINED_YIELD;
 }
 break;
      case DEFINED_ZSUPER:
 {
     const rb_callable_method_entry_t *me = rb_vm_frame_method_entry((((reg_cfp))));
     if (me) {
  VALUE klass = vm_search_normal_superclass(me->defined_class);
  ID id = me->def->original_id;
  if (rb_method_boundp(klass, id, 0)) {
      expr_type = DEFINED_ZSUPER;
  }
     }
 }
 break;
      case DEFINED_REF:{
 if (vm_getspecial(ec, (VM_EP_LEP(((((reg_cfp)->ep))))), ((VALUE)RUBY_Qfalse), ((int)((long)(((long)(obj))>>(int)(1))))) != ((VALUE)RUBY_Qnil)) {
     expr_type = DEFINED_GVAR;
 }
 break;
      }
      default:
 rb_bug("unimplemented defined? type (VM)");
 break;
    }
    if (expr_type != 0) {
 if (needstr != ((VALUE)RUBY_Qfalse)) {
     return rb_iseq_defined_string(expr_type);
 }
 else {
     return ((VALUE)RUBY_Qtrue);
 }
    }
    else {
 return ((VALUE)RUBY_Qnil);
    }
}
static const VALUE *
vm_get_ep(const VALUE *const reg_ep, rb_num_t lv)
{
    rb_num_t i;
    const VALUE *ep = reg_ep;
    for (i = 0; i < lv; i++) {
 ep = ((VALUE *)((ep)[(-1)] & ~0x03));
    }
    return ep;
}
static VALUE
vm_get_special_object(const VALUE *const reg_ep,
        enum vm_special_object_type type)
{
    switch (type) {
      case VM_SPECIAL_OBJECT_VMCORE:
 return rb_mRubyVMFrozenCore;
      case VM_SPECIAL_OBJECT_CBASE:
 return vm_get_cbase(reg_ep);
      case VM_SPECIAL_OBJECT_CONST_BASE:
 return vm_get_const_base(reg_ep);
      default:
 rb_bug("putspecialobject insn: unknown value_type %d", type);
    }
}
static void
vm_freezestring(VALUE str, VALUE debug)
{
    if (!!((VALUE)(debug) != ((VALUE)RUBY_Qnil))) {
 rb_ivar_set(str, id_debug_created_info, debug);
    }
    rb_str_freeze(str);
}
static VALUE
vm_concat_array(VALUE ary1, VALUE ary2st)
{
    const VALUE ary2 = ary2st;
    VALUE tmp1 = rb_check_to_array(ary1);
    VALUE tmp2 = rb_check_to_array(ary2);
    if (!((VALUE)(tmp1) != ((VALUE)RUBY_Qnil))) {
 tmp1 = __extension__ ({ const VALUE args_to_new_ary[] = {ary1}; if (__builtin_constant_p(1)) { _Static_assert(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))) == (1), "rb_ary_new_from_args" ": " "numberof(args_to_new_ary) == (1)"); } rb_ary_new_from_values(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))), args_to_new_ary); });
    }
    if (!((VALUE)(tmp2) != ((VALUE)RUBY_Qnil))) {
 tmp2 = __extension__ ({ const VALUE args_to_new_ary[] = {ary2}; if (__builtin_constant_p(1)) { _Static_assert(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))) == (1), "rb_ary_new_from_args" ": " "numberof(args_to_new_ary) == (1)"); } rb_ary_new_from_values(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))), args_to_new_ary); });
    }
    if (tmp1 == ary1) {
 tmp1 = rb_ary_dup(ary1);
    }
    return rb_ary_concat(tmp1, tmp2);
}
static VALUE
vm_splat_array(VALUE flag, VALUE ary)
{
    VALUE tmp = rb_check_to_array(ary);
    if (!((VALUE)(tmp) != ((VALUE)RUBY_Qnil))) {
 return __extension__ ({ const VALUE args_to_new_ary[] = {ary}; if (__builtin_constant_p(1)) { _Static_assert(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))) == (1), "rb_ary_new_from_args" ": " "numberof(args_to_new_ary) == (1)"); } rb_ary_new_from_values(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))), args_to_new_ary); });
    }
    else if (!(((VALUE)(flag) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
 return rb_ary_dup(tmp);
    }
    else {
 return tmp;
    }
}
static VALUE
vm_check_match(rb_execution_context_t *ec, VALUE target, VALUE pattern, rb_num_t flag)
{
    enum vm_check_match_type type = ((int)flag) & 0x03;
    if (flag & 0x04) {
 long i;
 const long n = rb_array_len(pattern);
 for (i = 0; i < n; i++) {
     VALUE v = (rb_array_const_ptr_transient(pattern)[i]);
     VALUE c = check_match(ec, v, target, type);
     if (!(((VALUE)(c) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
  return c;
     }
 }
 return ((VALUE)RUBY_Qfalse);
    }
    else {
 return check_match(ec, pattern, target, type);
    }
}
static VALUE
vm_check_keyword(lindex_t bits, lindex_t idx, const VALUE *ep)
{
    const VALUE kw_bits = *(ep - bits);
    if ((((int)(long)(kw_bits))&RUBY_FIXNUM_FLAG)) {
 unsigned int b = (unsigned int)((unsigned long)((long)(((long)(kw_bits))>>(int)(1))));
 if ((idx < (32-1)) && (b & (0x01 << idx)))
     return ((VALUE)RUBY_Qfalse);
    }
    else {
 ((void)0);
 if (rb_hash_has_key(kw_bits, (((VALUE)(idx))<<1 | RUBY_FIXNUM_FLAG))) return ((VALUE)RUBY_Qfalse);
    }
    return ((VALUE)RUBY_Qtrue);
}
static void
vm_dtrace(rb_event_flag_t flag, rb_execution_context_t *ec)
{
    if (0 ||
 0 ||
 0 ||
 0) {
 switch (flag) {
   case 0x0008:
     do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
     return;
   case 0x0020:
     do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
     return;
   case 0x0010:
     do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
     return;
   case 0x0040:
     do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
     return;
 }
    }
}
static VALUE
vm_const_get_under(ID id, rb_num_t flags, VALUE cbase)
{
    VALUE ns;
    if ((ns = vm_search_const_defined_class(cbase, id)) == 0) {
 return ns;
    }
    else if (((flags) & 0x08)) {
 return rb_public_const_get_at(ns, id);
    }
    else {
 return rb_const_get_at(ns, id);
    }
}
static VALUE
vm_check_if_class(ID id, rb_num_t flags, VALUE super, VALUE klass)
{
    if (!( ((RUBY_T_CLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_CLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_CLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_CLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_CLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_CLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_CLASS) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_CLASS)))) {
 rb_raise(rb_eTypeError, "%""l""i" "\v"" is not a class", rb_id2str(id));
    }
    else if (((flags) & 0x10)) {
 VALUE tmp = rb_class_real(RCLASS_SUPER(klass));
 if (tmp != super) {
     rb_raise(rb_eTypeError,
       "superclass mismatch for class %""l""i" "\v""",
       rb_id2str(id));
 }
 else {
     return klass;
 }
    }
    else {
 return klass;
    }
}
static VALUE
vm_check_if_module(ID id, VALUE mod)
{
    if (!( ((RUBY_T_MODULE) == RUBY_T_FIXNUM) ? (((int)(long)(mod))&RUBY_FIXNUM_FLAG) : ((RUBY_T_MODULE) == RUBY_T_TRUE) ? ((mod) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_MODULE) == RUBY_T_FALSE) ? ((mod) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_MODULE) == RUBY_T_NIL) ? ((mod) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_MODULE) == RUBY_T_UNDEF) ? ((mod) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_MODULE) == RUBY_T_SYMBOL) ? ((((VALUE)(mod)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(mod) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(mod) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(mod))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_MODULE) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(mod) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(mod) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(mod))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(mod) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(mod) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(mod))->flags & RUBY_T_MASK) == (RUBY_T_MODULE)))) {
 rb_raise(rb_eTypeError, "%""l""i" "\v"" is not a module", rb_id2str(id));
    }
    else {
 return mod;
    }
}
static VALUE
vm_declare_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
{
    VALUE s = ((flags) & 0x10) ? super : rb_cObject;
    VALUE c = rb_define_class_id(id, s);
    rb_set_class_path_string(c, cbase, rb_id2str(id));
    rb_const_set(cbase, id, c);
    rb_class_inherited(s, c);
    return c;
}
static VALUE
vm_declare_module(ID id, VALUE cbase)
{
    VALUE mod = rb_define_module_id(id);
    rb_set_class_path_string(mod, cbase, rb_id2str(id));
    rb_const_set(cbase, id, mod);
    return mod;
}
static VALUE
vm_define_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
{
    VALUE klass;
    if (((flags) & 0x10) && !( ((RUBY_T_CLASS) == RUBY_T_FIXNUM) ? (((int)(long)(super))&RUBY_FIXNUM_FLAG) : ((RUBY_T_CLASS) == RUBY_T_TRUE) ? ((super) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_CLASS) == RUBY_T_FALSE) ? ((super) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_CLASS) == RUBY_T_NIL) ? ((super) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_CLASS) == RUBY_T_UNDEF) ? ((super) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_CLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(super)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(super) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(super) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(super))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_CLASS) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(super) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(super) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(super))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(super) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(super) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(super))->flags & RUBY_T_MASK) == (RUBY_T_CLASS)))) {
 rb_raise(rb_eTypeError,
   "superclass must be a Class (%""l""i" "\v"" given)",
   rb_obj_class(super));
    }
    vm_check_if_namespace(cbase);
    rb_autoload_load(cbase, id);
    if ((klass = vm_const_get_under(id, flags, cbase)) != 0) {
 return vm_check_if_class(id, flags, super, klass);
    }
    else {
 return vm_declare_class(id, flags, cbase, super);
    }
}
static VALUE
vm_define_module(ID id, rb_num_t flags, VALUE cbase)
{
    VALUE mod;
    vm_check_if_namespace(cbase);
    if ((mod = vm_const_get_under(id, flags, cbase)) != 0) {
 return vm_check_if_module(id, mod);
    }
    else {
 return vm_declare_module(id, cbase);
    }
}
static VALUE
vm_find_or_create_class_by_id(ID id,
         rb_num_t flags,
         VALUE cbase,
         VALUE super)
{
    rb_vm_defineclass_type_t type = ((rb_vm_defineclass_type_t)(flags) & VM_DEFINECLASS_TYPE_MASK);
    switch (type) {
      case VM_DEFINECLASS_TYPE_CLASS:
 return vm_define_class(id, flags, cbase, super);
      case VM_DEFINECLASS_TYPE_SINGLETON_CLASS:
 return rb_singleton_class(cbase);
      case VM_DEFINECLASS_TYPE_MODULE:
 return vm_define_module(id, flags, cbase);
      default:
 rb_bug("unknown defineclass type: %d", (int)type);
    }
}
static VALUE
vm_opt_str_freeze(VALUE str, int bop, ID id)
{
    if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
 return str;
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
#define id_cmp idCmp
static VALUE
vm_opt_newarray_max(rb_num_t num, const VALUE *ptr)
{
    if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MAX)]&((1 << 3))) == 0), 1)))) {
 if (num == 0) {
     return ((VALUE)RUBY_Qnil);
 }
 else {
     struct cmp_opt_data cmp_opt = { 0, 0 };
     VALUE result = *ptr;
            rb_snum_t i = num - 1;
     while (i-- > 0) {
  const VALUE v = *++ptr;
  if ((((((int)(long)(v))&RUBY_FIXNUM_FLAG) && (((int)(long)(result))&RUBY_FIXNUM_FLAG) && (((cmp_opt).opt_inited & (1U << cmp_opt_Fixnum)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Fixnum)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Fixnum)), rb_method_basic_definition_p(rb_cInteger, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Fixnum))))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : ((( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)((v)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? (((v)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? (((v)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? (((v)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? (((v)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)((v))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && rb_class_of((VALUE)(v)) == rb_cString) && (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)((result)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? (((result)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? (((result)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? (((result)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? (((result)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)((result))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && rb_class_of((VALUE)(result)) == rb_cString) && (((cmp_opt).opt_inited & (1U << cmp_opt_String)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_String)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_String)), rb_method_basic_definition_p(rb_cString, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_String))))) ? rb_str_cmp(v, result) : (( 0 || (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) && ( 0 || (!(((VALUE)(result) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(result) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(result))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) && (((cmp_opt).opt_inited & (1U << cmp_opt_Float)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Float)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Float)), rb_method_basic_definition_p(rb_cFloat, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Float))))) ? rb_float_cmp(v, result) : rb_cmpint(rb_funcallv(v, idCmp, 1, &result), v, result)) > 0) {
      result = v;
  }
     }
     return result;
 }
    }
    else {
 VALUE ary = rb_ary_new_from_values(num, ptr);
 return __extension__({ const int rb_funcall_argc = (0); const VALUE rb_funcall_args[] = {}; const int rb_funcall_nargs = (int)(sizeof(rb_funcall_args) / sizeof(VALUE)); rb_funcallv(ary, idMax, __builtin_choose_expr(__builtin_constant_p(rb_funcall_argc), (((rb_funcall_argc) == 0 ? (rb_funcall_nargs) <= 1 : (rb_funcall_argc) == (rb_funcall_nargs)) ? (rb_funcall_argc) : rb_varargs_bad_length(rb_funcall_argc, rb_funcall_nargs)), (((rb_funcall_argc) <= (rb_funcall_nargs)) ? (rb_funcall_argc) : (rb_fatal("argc(%d) exceeds actual arguments(%d)", rb_funcall_argc, rb_funcall_nargs), 0))), rb_funcall_nargs ? rb_funcall_args : ((void *)0)); });
    }
}
static VALUE
vm_opt_newarray_min(rb_num_t num, const VALUE *ptr)
{
    if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MIN)]&((1 << 3))) == 0), 1)))) {
 if (num == 0) {
     return ((VALUE)RUBY_Qnil);
 }
 else {
     struct cmp_opt_data cmp_opt = { 0, 0 };
     VALUE result = *ptr;
            rb_snum_t i = num - 1;
     while (i-- > 0) {
  const VALUE v = *++ptr;
  if ((((((int)(long)(v))&RUBY_FIXNUM_FLAG) && (((int)(long)(result))&RUBY_FIXNUM_FLAG) && (((cmp_opt).opt_inited & (1U << cmp_opt_Fixnum)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Fixnum)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Fixnum)), rb_method_basic_definition_p(rb_cInteger, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Fixnum))))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : ((( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)((v)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? (((v)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? (((v)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? (((v)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? (((v)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)((v))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && rb_class_of((VALUE)(v)) == rb_cString) && (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)((result)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? (((result)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? (((result)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? (((result)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? (((result)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)((result))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && rb_class_of((VALUE)(result)) == rb_cString) && (((cmp_opt).opt_inited & (1U << cmp_opt_String)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_String)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_String)), rb_method_basic_definition_p(rb_cString, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_String))))) ? rb_str_cmp(v, result) : (( 0 || (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) && ( 0 || (!(((VALUE)(result) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(result) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(result))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) && (((cmp_opt).opt_inited & (1U << cmp_opt_Float)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Float)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Float)), rb_method_basic_definition_p(rb_cFloat, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Float))))) ? rb_float_cmp(v, result) : rb_cmpint(rb_funcallv(v, idCmp, 1, &result), v, result)) < 0) {
      result = v;
  }
     }
     return result;
 }
    }
    else {
 VALUE ary = rb_ary_new_from_values(num, ptr);
 return __extension__({ const int rb_funcall_argc = (0); const VALUE rb_funcall_args[] = {}; const int rb_funcall_nargs = (int)(sizeof(rb_funcall_args) / sizeof(VALUE)); rb_funcallv(ary, idMin, __builtin_choose_expr(__builtin_constant_p(rb_funcall_argc), (((rb_funcall_argc) == 0 ? (rb_funcall_nargs) <= 1 : (rb_funcall_argc) == (rb_funcall_nargs)) ? (rb_funcall_argc) : rb_varargs_bad_length(rb_funcall_argc, rb_funcall_nargs)), (((rb_funcall_argc) <= (rb_funcall_nargs)) ? (rb_funcall_argc) : (rb_fatal("argc(%d) exceeds actual arguments(%d)", rb_funcall_argc, rb_funcall_nargs), 0))), rb_funcall_nargs ? rb_funcall_args : ((void *)0)); });
    }
}
#undef id_cmp
static int
vm_ic_hit_p(IC ic, const VALUE *reg_ep)
{
    if (ic->ic_serial == (ruby_vm_global_constant_state)) {
 return (ic->ic_cref == ((void *)0) || ic->ic_cref == rb_vm_get_cref(reg_ep));
    }
    return 0;
}
static void
vm_ic_update(IC ic, VALUE val, const VALUE *reg_ep)
{
    ((void)0);
    ic->ic_value.value = val;
    ic->ic_serial = (ruby_vm_global_constant_state) - ruby_vm_const_missing_count;
    ic->ic_cref = vm_get_const_key_cref(reg_ep);
    ruby_vm_const_missing_count = 0;
}
static VALUE
vm_once_dispatch(rb_execution_context_t *ec, ISEQ iseq, ISE is)
{
    rb_thread_t *th = rb_ec_thread_ptr(ec);
    rb_thread_t *const RUNNING_THREAD_ONCE_DONE = (rb_thread_t *)(0x1);
  again:
    if (is->once.running_thread == RUNNING_THREAD_ONCE_DONE) {
 return is->once.value;
    }
    else if (is->once.running_thread == ((void *)0)) {
 VALUE val;
 is->once.running_thread = th;
 val = rb_ensure(vm_once_exec, (VALUE)iseq, vm_once_clear, (VALUE)is);
 rb_obj_write((VALUE)(ec->cfp->iseq), (VALUE *)(&is->once.value), (VALUE)(val), "../ruby-2.6.9/vm_insnhelper.c", 3294);
 is->once.running_thread = RUNNING_THREAD_ONCE_DONE;
 return val;
    }
    else if (is->once.running_thread == th) {
 return vm_once_exec((VALUE)iseq);
    }
    else {
 rb_vm_check_ints(ec);
 rb_thread_schedule();
 goto again;
    }
}
static OFFSET
vm_case_dispatch(CDHASH hash, OFFSET else_offset, VALUE key)
{
    switch (__extension__({ VALUE arg_obj = (key); (((VALUE)(arg_obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(arg_obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) ? -1 : (int)(((struct RBasic*)(arg_obj))->flags & RUBY_T_MASK); })) {
      case -1:
      case RUBY_T_FLOAT:
      case RUBY_T_SYMBOL:
      case RUBY_T_BIGNUM:
      case RUBY_T_STRING:
 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQQ)]&((1 << 6) | (1 << 0) | (1 << 1) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 2))) == 0), 1)))) {
     st_data_t val;
     if (( 0 || (!(((VALUE)(key) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(key) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(key))->flags & RUBY_T_MASK) == RUBY_T_FLOAT))) {
  double kval = rb_float_value_inline(key);
  if (!(__builtin_choose_expr ( __builtin_types_compatible_p (__typeof__ (kval), double), __fpclassify(kval), __builtin_choose_expr ( __builtin_types_compatible_p (__typeof__ (kval), float), __fpclassifyf(kval), __builtin_choose_expr ( __builtin_types_compatible_p (__typeof__ (kval), long double), __fpclassifyl(kval), (__builtin_trap(),0)))) == (0x0100 | 0x0400)) && modf(kval, &kval) == 0.0) {
      key = (((kval) < (0x7fffffffL>>1)+1) && ((kval) >= (((long)(-0x7fffffffL - 1L))>>(int)(1)))) ? (((VALUE)((long)kval))<<1 | RUBY_FIXNUM_FLAG) : rb_dbl2big(kval);
  }
     }
            if (rb_hash_stlike_lookup(hash, key, &val)) {
  return ((long)(((long)((VALUE)val))>>(int)(1)));
     }
     else {
  return else_offset;
     }
 }
    }
    return 0;
}
__attribute__ ((__noreturn__)) static void vm_stack_consistency_error(const rb_execution_context_t *ec, const rb_control_frame_t *, const VALUE *);
static void
vm_stack_consistency_error(const rb_execution_context_t *ec,
      const rb_control_frame_t *cfp,
      const VALUE *bp)
{
    const ptrdiff_t nsp = ((cfp->sp) - (ec)->vm_stack);
    const ptrdiff_t nbp = ((bp) - (ec)->vm_stack);
    static const char stack_consistency_error[] =
 "Stack consistency error (sp: %""t""d"", bp: %""t""d"")";
    rb_bug(stack_consistency_error, nsp, nbp);
}
static VALUE
vm_opt_plus(VALUE recv, VALUE obj)
{
    if (((recv) & (obj) & 1) &&
 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 0))) == 0), 1)))) {
 return rb_fix_plus_fix(recv, obj);
    }
    else if (0 &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) {
 return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj));
    }
    else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 return ((VALUE)RUBY_Qundef);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
      (((struct RBasic*)(obj))->klass) == rb_cFloat &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) {
 return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj));
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
      (((struct RBasic*)(obj))->klass) == rb_cString &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 2))) == 0), 1)))) {
 return rb_str_plus(recv, obj);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 3))) == 0), 1)))) {
 return rb_ary_plus(recv, obj);
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_minus(VALUE recv, VALUE obj)
{
    if (((recv) & (obj) & 1) &&
 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 0))) == 0), 1)))) {
 return rb_fix_minus_fix(recv, obj);
    }
    else if (0 &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) {
 return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj));
    }
    else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 return ((VALUE)RUBY_Qundef);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
      (((struct RBasic*)(obj))->klass) == rb_cFloat &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) {
 return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj));
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_mult(VALUE recv, VALUE obj)
{
    if (((recv) & (obj) & 1) &&
 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 0))) == 0), 1)))) {
 return rb_fix_mul_fix(recv, obj);
    }
    else if (0 &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) {
 return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj));
    }
    else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 return ((VALUE)RUBY_Qundef);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
      (((struct RBasic*)(obj))->klass) == rb_cFloat &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) {
 return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj));
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_div(VALUE recv, VALUE obj)
{
    if (((recv) & (obj) & 1) &&
 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 0))) == 0), 1)))) {
 return (((long)(((long)(obj))>>(int)(1))) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_div_fix(recv, obj);
    }
    else if (0 &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) {
        return rb_flo_div_flo(recv, obj);
    }
    else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 return ((VALUE)RUBY_Qundef);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
      (((struct RBasic*)(obj))->klass) == rb_cFloat &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) {
        return rb_flo_div_flo(recv, obj);
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_mod(VALUE recv, VALUE obj)
{
    if (((recv) & (obj) & 1) &&
 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 0))) == 0), 1)))) {
 return (((long)(((long)(obj))>>(int)(1))) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_mod_fix(recv, obj);
    }
    else if (0 &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) {
 return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj)));
    }
    else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 return ((VALUE)RUBY_Qundef);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
      (((struct RBasic*)(obj))->klass) == rb_cFloat &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) {
 return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj)));
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_neq(CALL_INFO ci, CALL_CACHE cc,
    CALL_INFO ci_eq, CALL_CACHE cc_eq,
    VALUE recv, VALUE obj)
{
    if (vm_method_cfunc_is(ci, cc, recv, rb_obj_not_equal)) {
 VALUE val = opt_eq_func(recv, obj, ci_eq, cc_eq);
 if (val != ((VALUE)RUBY_Qundef)) {
     return !(((VALUE)(val) & (VALUE)~((VALUE)RUBY_Qnil)) == 0) ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
 }
    }
    return ((VALUE)RUBY_Qundef);
}
static VALUE
vm_opt_lt(VALUE recv, VALUE obj)
{
    if (((recv) & (obj) & 1) &&
 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 0))) == 0), 1)))) {
 return (long)recv < (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
    }
    else if (0 &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) {
 return rb_float_value_inline(recv) < rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
    }
    else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 return ((VALUE)RUBY_Qundef);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
      (((struct RBasic*)(obj))->klass) == rb_cFloat &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) {
 ;
 return rb_float_value_inline(recv) < rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_le(VALUE recv, VALUE obj)
{
    if (((recv) & (obj) & 1) &&
 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 0))) == 0), 1)))) {
 return (long)recv <= (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
    }
    else if (0 &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) {
 return rb_float_value_inline(recv) <= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
    }
    else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 return ((VALUE)RUBY_Qundef);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
      (((struct RBasic*)(obj))->klass) == rb_cFloat &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) {
 ;
 return rb_float_value_inline(recv) <= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_gt(VALUE recv, VALUE obj)
{
    if (((recv) & (obj) & 1) &&
 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 0))) == 0), 1)))) {
 return (long)recv > (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
    }
    else if (0 &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) {
 return rb_float_value_inline(recv) > rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
    }
    else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 return ((VALUE)RUBY_Qundef);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
      (((struct RBasic*)(obj))->klass) == rb_cFloat &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) {
 ;
 return rb_float_value_inline(recv) > rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_ge(VALUE recv, VALUE obj)
{
    if (((recv) & (obj) & 1) &&
 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 0))) == 0), 1)))) {
 return (long)recv >= (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
    }
    else if (0 &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) {
 return rb_float_value_inline(recv) >= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
    }
    else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 return ((VALUE)RUBY_Qundef);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
      (((struct RBasic*)(obj))->klass) == rb_cFloat &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) {
 ;
 return rb_float_value_inline(recv) >= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_ltlt(VALUE recv, VALUE obj)
{
    if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 return ((VALUE)RUBY_Qundef);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LTLT)]&((1 << 2))) == 0), 1)))) {
 return rb_str_concat(recv, obj);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LTLT)]&((1 << 3))) == 0), 1)))) {
 return rb_ary_push(recv, obj);
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_and(VALUE recv, VALUE obj)
{
    if (((recv) & (obj) & 1) &&
        ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AND)]&((1 << 0))) == 0), 1)))) {
        return rb_long2num_inline(((long)(((long)(recv))>>(int)(1))) & ((long)(((long)(obj))>>(int)(1))));
    }
    else {
        return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_or(VALUE recv, VALUE obj)
{
    if (((recv) & (obj) & 1) &&
        ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_OR)]&((1 << 0))) == 0), 1)))) {
        return rb_long2num_inline(((long)(((long)(recv))>>(int)(1))) | ((long)(((long)(obj))>>(int)(1))));
    }
    else {
        return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_aref(VALUE recv, VALUE obj)
{
    if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 return ((VALUE)RUBY_Qundef);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 3))) == 0), 1)))) {
        if ((((int)(long)(obj))&RUBY_FIXNUM_FLAG)) {
            return rb_ary_entry_internal(recv, ((long)(((long)(obj))>>(int)(1))));
        }
        else {
            return rb_ary_aref1(recv, obj);
        }
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cHash &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1)))) {
 return rb_hash_aref(recv, obj);
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_aset(VALUE recv, VALUE obj, VALUE set)
{
    if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 return ((VALUE)RUBY_Qundef);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 3))) == 0), 1))) &&
      (((int)(long)(obj))&RUBY_FIXNUM_FLAG)) {
 rb_ary_store(recv, ((long)(((long)(obj))>>(int)(1))), set);
 return set;
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cHash &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1)))) {
 rb_hash_aset(recv, obj, set);
 return set;
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_aref_with(VALUE recv, VALUE key)
{
    if (!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cHash &&
 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1))) &&
 rb_hash_compare_by_id_p(recv) == ((VALUE)RUBY_Qfalse)) {
 return rb_hash_aref(recv, key);
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_aset_with(VALUE recv, VALUE key, VALUE val)
{
    if (!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cHash &&
 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1))) &&
 rb_hash_compare_by_id_p(recv) == ((VALUE)RUBY_Qfalse)) {
 return rb_hash_aset(recv, key, val);
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_length(VALUE recv, int bop)
{
    if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 return ((VALUE)RUBY_Qundef);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
 if (bop == BOP_EMPTY_P) {
     return rb_long2num_inline((!(((struct RBasic*)(recv))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(recv))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(recv))->as.heap.len));
 }
 else {
     return rb_str_length(recv);
 }
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 3))) == 0), 1)))) {
 return rb_long2num_inline(rb_array_len(recv));
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cHash &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 4))) == 0), 1)))) {
 return (((VALUE)(((!(((struct RBasic*)((recv)))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(recv))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(recv))->as.st)->num_entries))))<<1 | RUBY_FIXNUM_FLAG);
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_empty_p(VALUE recv)
{
    switch (vm_opt_length(recv, BOP_EMPTY_P)) {
      case ((VALUE)RUBY_Qundef): return ((VALUE)RUBY_Qundef);
      case (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG): return ((VALUE)RUBY_Qtrue);
      default: return ((VALUE)RUBY_Qfalse);
    }
}
static VALUE
fix_succ(VALUE x)
{
    switch (x) {
      case ~0UL:
        return (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
      case ((~0UL)>>(int)(1)):
        return rb_uint2big(1UL << (4 * 8 - 2));
      default:
        return x + 2;
    }
}
static VALUE
vm_opt_succ(VALUE recv)
{
    if ((((int)(long)(recv))&RUBY_FIXNUM_FLAG) &&
 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_SUCC)]&((1 << 0))) == 0), 1)))) {
        return fix_succ(recv);
    }
    else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
 return ((VALUE)RUBY_Qundef);
    }
    else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
      ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_SUCC)]&((1 << 2))) == 0), 1)))) {
 return rb_str_succ(recv);
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_not(CALL_INFO ci, CALL_CACHE cc, VALUE recv)
{
    if (vm_method_cfunc_is(ci, cc, recv, rb_obj_not)) {
 return !(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0) ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
static VALUE
vm_opt_regexpmatch1(VALUE recv, VALUE obj)
{
    if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MATCH)]&((1 << 8))) == 0), 1)))) {
 return rb_reg_match(recv, obj);
    }
    else {
 return __extension__({ const int rb_funcall_argc = (1); const VALUE rb_funcall_args[] = {obj}; const int rb_funcall_nargs = (int)(sizeof(rb_funcall_args) / sizeof(VALUE)); rb_funcallv(recv, idEqTilde, __builtin_choose_expr(__builtin_constant_p(rb_funcall_argc), (((rb_funcall_argc) == 0 ? (rb_funcall_nargs) <= 1 : (rb_funcall_argc) == (rb_funcall_nargs)) ? (rb_funcall_argc) : rb_varargs_bad_length(rb_funcall_argc, rb_funcall_nargs)), (((rb_funcall_argc) <= (rb_funcall_nargs)) ? (rb_funcall_argc) : (rb_fatal("argc(%d) exceeds actual arguments(%d)", rb_funcall_argc, rb_funcall_nargs), 0))), rb_funcall_nargs ? rb_funcall_args : ((void *)0)); });
    }
}
static VALUE
vm_opt_regexpmatch2(VALUE recv, VALUE obj)
{
    if (rb_class_of((VALUE)(recv)) == rb_cString &&
 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MATCH)]&((1 << 2))) == 0), 1)))) {
 return rb_reg_match(obj, recv);
    }
    else {
 return ((VALUE)RUBY_Qundef);
    }
}
rb_event_flag_t rb_iseq_event_flags(const rb_iseq_t *iseq, size_t pos);
__attribute__ ((__noinline__)) static void vm_trace(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const VALUE *pc);
static inline void
vm_trace_hook(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const VALUE *pc,
              rb_event_flag_t pc_events, rb_event_flag_t target_event,
              rb_hook_list_t *global_hooks, rb_hook_list_t *local_hooks, VALUE val)
{
    rb_event_flag_t event = pc_events & target_event;
    VALUE self = (((((reg_cfp)))->self));
    ((void)0);
    if (event & global_hooks->events) {
        reg_cfp->pc++;
        vm_dtrace(event, ec);
        rb_exec_event_hook_orig(ec, global_hooks, event, self, 0, 0, 0 , val, 0);
        reg_cfp->pc--;
    }
    if (local_hooks != ((void *)0)) {
        if (event & local_hooks->events) {
            reg_cfp->pc++;
            rb_exec_event_hook_orig(ec, local_hooks, event, self, 0, 0, 0 , val, 0);
            reg_cfp->pc--;
        }
    }
}
#define VM_TRACE_HOOK(target_event,val) do { if ((pc_events & (target_event)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (target_event), global_hooks, local_hooks, (val)); } } while (0)
static void
vm_trace(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const VALUE *pc)
{
    rb_event_flag_t enabled_flags = ruby_vm_event_flags & (0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010| 0x0100| 0x0200| 0x010000| 0x020000);
    if (enabled_flags == 0 && ruby_vm_event_local_num == 0) {
        return;
    }
    else {
 const rb_iseq_t *iseq = reg_cfp->iseq;
 size_t pos = pc - iseq->body->iseq_encoded;
        rb_event_flag_t pc_events = rb_iseq_event_flags(iseq, pos);
        rb_hook_list_t *local_hooks = iseq->aux.exec.local_hooks;
        rb_event_flag_t local_hook_events = local_hooks != ((void *)0) ? local_hooks->events : 0;
        enabled_flags |= local_hook_events;
        ((void)0);
        if ((pc_events & enabled_flags) == 0) {
     return;
        }
        else if (ec->trace_arg != ((void *)0)) {
            return;
        }
        else {
            rb_hook_list_t *global_hooks = rb_vm_global_hooks(ec);
            if (0) {
                fprintf((__acrt_iob_func(2)), "vm_trace>>%4d (%4x) - %s:%d %s\n",
                        (int)pos,
                        (int)pc_events,
                        (!(((struct RBasic*)(rb_iseq_path(iseq)))->flags & RSTRING_NOEMBED) ? ((struct RString*)(rb_iseq_path(iseq)))->as.ary : ((struct RString*)(rb_iseq_path(iseq)))->as.heap.ptr),
                        (int)rb_iseq_line_no(iseq, pos),
                        (!(((struct RBasic*)(rb_iseq_label(iseq)))->flags & RSTRING_NOEMBED) ? ((struct RString*)(rb_iseq_label(iseq)))->as.ary : ((struct RString*)(rb_iseq_label(iseq)))->as.heap.ptr));
            }
            ((void)0);
            ((void)0);
            ((void)0);
            do { if ((pc_events & (0x0002 | 0x0008 | 0x0100)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0002 | 0x0008 | 0x0100), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0);
            do { if ((pc_events & (0x0001)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0001), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0);
            do { if ((pc_events & (0x010000)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x010000), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0);
            do { if ((pc_events & (0x020000)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x020000), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0);
            do { if ((pc_events & (0x0004 | 0x0010 | 0x0200)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0004 | 0x0010 | 0x0200), global_hooks, local_hooks, ((*(((((reg_cfp)->sp)))-(0)-1)))); } } while (0);
        }
    }
}
void Init_vm_stack_canary(void) { }
struct local_var_list {
    VALUE tbl;
};
static inline VALUE method_missing(VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status);
static inline VALUE vm_yield_with_cref(rb_execution_context_t *ec, int argc, const VALUE *argv, const rb_cref_t *cref, int is_lambda);
static inline VALUE vm_yield(rb_execution_context_t *ec, int argc, const VALUE *argv);
static inline VALUE vm_yield_with_block(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE block_handler);
static inline VALUE vm_yield_force_blockarg(rb_execution_context_t *ec, VALUE args);
VALUE rb_vm_exec(rb_execution_context_t *ec, int mjit_enable_p);
static void vm_set_eval_stack(rb_execution_context_t * th, const rb_iseq_t *iseq, const rb_cref_t *cref, const struct rb_block *base_block);
static int vm_collect_local_variables_in_heap(const VALUE *dfp, const struct local_var_list *vars);
static VALUE rb_eUncaughtThrow;
static ID id_result, id_tag, id_value;
#define id_mesg idMesg
typedef enum call_type {
    CALL_PUBLIC,
    CALL_FCALL,
    CALL_VCALL,
    CALL_TYPE_MAX
} call_type;
static VALUE send_internal(int argc, const VALUE *argv, VALUE recv, call_type scope);
static VALUE vm_call0_body(rb_execution_context_t* ec, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc, const VALUE *argv);
static inline void
stack_check(rb_execution_context_t *ec)
{
    if (!(((ec)->raised_flag & (RAISED_STACKOVERFLOW)) != 0) &&
 rb_ec_stack_check(ec)) {
 ((ec)->raised_flag |= (RAISED_STACKOVERFLOW));
 rb_ec_stack_overflow(ec, 0);
    }
}
static void
raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj,
       enum method_missing_reason last_call_status)
{
    VALUE exc = rb_eNoMethodError;
    VALUE format = 0;
    if ((__builtin_expect(!!(argc == 0), 0))) {
 rb_raise(rb_eArgError, "no method name given");
    }
    else if ((__builtin_expect(!!(!((((VALUE)(argv[0])&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(argv[0]) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(argv[0]) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(argv[0]))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL)))), 0))) {
 const VALUE e = rb_eArgError;
 rb_raise(e, "method name must be a Symbol but %""l""i" "\v"" is given",
   rb_obj_class(argv[0]));
    }
    stack_check(ec);
    if (last_call_status & MISSING_PRIVATE) {
 format = rb_fstring_new(("private method `%s' called for %s%s%s"), (sizeof("private method `%s' called for %s%s%s" "") - 1));
    }
    else if (last_call_status & MISSING_PROTECTED) {
 format = rb_fstring_new(("protected method `%s' called for %s%s%s"), (sizeof("protected method `%s' called for %s%s%s" "") - 1));
    }
    else if (last_call_status & MISSING_VCALL) {
 format = rb_fstring_new(("undefined local variable or method `%s' for %s%s%s"), (sizeof("undefined local variable or method `%s' for %s%s%s" "") - 1));
 exc = rb_eNameError;
    }
    else if (last_call_status & MISSING_SUPER) {
 format = rb_fstring_new(("super: no superclass method `%s' for %s%s%s"), (sizeof("super: no superclass method `%s' for %s%s%s" "") - 1));
    }
    {
 exc = rb_make_no_method_exception(exc, format, obj, argc, argv,
       last_call_status & (MISSING_FCALL|MISSING_VCALL));
 if (!(last_call_status & MISSING_MISSING)) {
     rb_vm_pop_cfunc_frame();
 }
 rb_exc_raise(exc);
    }
}
static void
vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv,
   VALUE obj, int call_status)
{
    vm_passed_block_handler_set(ec, 0);
    raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING);
}
static inline VALUE
method_missing(VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status)
{
    VALUE *nargv, result, work, klass;
    rb_execution_context_t *ec = rb_current_execution_context();
    VALUE block_handler = vm_passed_block_handler(ec);
    const rb_callable_method_entry_t *me;
    ec->method_missing_reason = call_status;
    if (id == idMethodMissing) {
      missing:
 raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING);
    }
    nargv = ((VALUE*)(((size_t)(argc + 1) < 1024 / sizeof(VALUE)) ? ((work) = 0, __builtin_alloca(((size_t)(argc + 1) * sizeof(VALUE)))) : rb_alloc_tmp_buffer2(&(work), (long)(argc + 1), sizeof(VALUE))));
    nargv[0] = (rb_id2sym(id));
    memcpy((nargv + 1), (argv), sizeof(VALUE)*(size_t)(argc));
    ++argc;
    argv = nargv;
    klass = rb_class_of((VALUE)(obj));
    if (!klass) goto missing;
    me = rb_callable_method_entry(klass, idMethodMissing);
    if (!me || (int) (((me)->flags & (((VALUE)RUBY_FL_USER6) )) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+2))) goto missing;
    vm_passed_block_handler_set(ec, block_handler);
    result = rb_vm_call0(ec, obj, idMethodMissing, argc, argv, me);
    if (work) rb_free_tmp_buffer(&(work));
    return result;
}
static rb_control_frame_t *
vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
{
    if (VM_FRAME_RUBYFRAME_P(cfp)) {
 return (rb_control_frame_t *)cfp;
    }
    cfp = ((cfp)+1);
    while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) {
 if (VM_FRAME_RUBYFRAME_P(cfp)) {
     return (rb_control_frame_t *)cfp;
 }
 if (VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_PASSED) == 0) {
     break;
 }
 cfp = ((cfp)+1);
    }
    return 0;
}
static void
rb_vm_pop_cfunc_frame(void)
{
    rb_execution_context_t *ec = rb_current_execution_context();
    rb_control_frame_t *cfp = ec->cfp;
    const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(cfp);
    do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_vm_global_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, cfp->self, me->def->original_id, me->called_id, me->owner, ((VALUE)RUBY_Qnil), 0); } } while (0);
    do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
    vm_pop_frame(ec, cfp, cfp->ep);
}
static VALUE
vm_call_iseq_setup_normal_0start_0params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 0, 0);
}
static VALUE
vm_call_iseq_setup_normal_0start_0params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 0, 1);
}
static VALUE
vm_call_iseq_setup_normal_0start_0params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 0, 2);
}
static VALUE
vm_call_iseq_setup_normal_0start_0params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 0, 3);
}
static VALUE
vm_call_iseq_setup_normal_0start_0params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 0, 4);
}
static VALUE
vm_call_iseq_setup_normal_0start_0params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 0, 5);
}
static VALUE
vm_call_iseq_setup_normal_0start_1params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 1, 0);
}
static VALUE
vm_call_iseq_setup_normal_0start_1params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 1, 1);
}
static VALUE
vm_call_iseq_setup_normal_0start_1params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 1, 2);
}
static VALUE
vm_call_iseq_setup_normal_0start_1params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 1, 3);
}
static VALUE
vm_call_iseq_setup_normal_0start_1params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 1, 4);
}
static VALUE
vm_call_iseq_setup_normal_0start_1params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 1, 5);
}
static VALUE
vm_call_iseq_setup_normal_0start_2params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 2, 0);
}
static VALUE
vm_call_iseq_setup_normal_0start_2params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 2, 1);
}
static VALUE
vm_call_iseq_setup_normal_0start_2params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 2, 2);
}
static VALUE
vm_call_iseq_setup_normal_0start_2params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 2, 3);
}
static VALUE
vm_call_iseq_setup_normal_0start_2params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 2, 4);
}
static VALUE
vm_call_iseq_setup_normal_0start_2params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 2, 5);
}
static VALUE
vm_call_iseq_setup_normal_0start_3params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 3, 0);
}
static VALUE
vm_call_iseq_setup_normal_0start_3params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 3, 1);
}
static VALUE
vm_call_iseq_setup_normal_0start_3params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 3, 2);
}
static VALUE
vm_call_iseq_setup_normal_0start_3params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 3, 3);
}
static VALUE
vm_call_iseq_setup_normal_0start_3params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 3, 4);
}
static VALUE
vm_call_iseq_setup_normal_0start_3params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
{
    return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, 3, 5);
}
static const vm_call_handler vm_call_iseq_handlers[][6] = {
{vm_call_iseq_setup_normal_0start_0params_0locals,
 vm_call_iseq_setup_normal_0start_0params_1locals,
 vm_call_iseq_setup_normal_0start_0params_2locals,
 vm_call_iseq_setup_normal_0start_0params_3locals,
 vm_call_iseq_setup_normal_0start_0params_4locals,
 vm_call_iseq_setup_normal_0start_0params_5locals},
{vm_call_iseq_setup_normal_0start_1params_0locals,
 vm_call_iseq_setup_normal_0start_1params_1locals,
 vm_call_iseq_setup_normal_0start_1params_2locals,
 vm_call_iseq_setup_normal_0start_1params_3locals,
 vm_call_iseq_setup_normal_0start_1params_4locals,
 vm_call_iseq_setup_normal_0start_1params_5locals},
{vm_call_iseq_setup_normal_0start_2params_0locals,
 vm_call_iseq_setup_normal_0start_2params_1locals,
 vm_call_iseq_setup_normal_0start_2params_2locals,
 vm_call_iseq_setup_normal_0start_2params_3locals,
 vm_call_iseq_setup_normal_0start_2params_4locals,
 vm_call_iseq_setup_normal_0start_2params_5locals},
{vm_call_iseq_setup_normal_0start_3params_0locals,
 vm_call_iseq_setup_normal_0start_3params_1locals,
 vm_call_iseq_setup_normal_0start_3params_2locals,
 vm_call_iseq_setup_normal_0start_3params_3locals,
 vm_call_iseq_setup_normal_0start_3params_4locals,
 vm_call_iseq_setup_normal_0start_3params_5locals}
};
static inline vm_call_handler
vm_call_iseq_setup_func(const struct rb_call_info *ci, const int param_size, const int local_size)
{
    if ((__builtin_expect(!!(ci->flag & (0x01 << VM_CALL_TAILCALL_bit)), 0))) {
 return &vm_call_iseq_setup_tailcall_0start;
    }
    else if (0) {
        return &vm_call_iseq_setup_normal_0start;
    }
    else {
 if (param_size <= 3 &&
     local_size <= 5) {
     ((void)0);
     return vm_call_iseq_handlers[param_size][local_size];
 }
 return &vm_call_iseq_setup_normal_0start;
    }
}
